;int mv2(ch * a, state * b){return c+*a + b->j;} .section __TEXT,__text,regular,pure_instructions .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32 .section __TEXT,__text,regular,pure_instructions .align 2 .globl _mv2 .section __TEXT,__text,regular,pure_instructions .align 2 _mv2: addi r6,r4,0 lbz r7,256(r4) subi r3,r3,1 ;out in r3, s in r4, n in r5, &s[i] in r6, j in r7 li r5,255 mtctr r5 ; move n to CTR lbzu r0,1(r6) ; s[i] add r7,r7,r0 ; j andi. r7,r7,255 lbzx r5,r4,r7 ; s[j] lp: stbx r0,r4,r7 add r2,r0,r5 stb r5,0(r6) lbzu r0,1(r6) ; s[i] boli andi. r2,r2,255 add r7,r7,r0 ; j boli lbzx r2,r4,r2 andi. r7,r7,255 ; boli stbu r2,1(r3) lbzx r5,r4,r7 ; s[j] boli bc 17,0,lp sub r7,r7,r0 ; Undo bogus add above lbz r0,0(r4) ; s[0] add r7,r7,r0 ; redo it right! andi. r7,r7,255 lbzx r5,r4,r7 ; s[j] stbx r0,r4,r7 stb r5,0(r4) add r2,r0,r5 andi. r2,r2,255 lbzx r2,r4,r2 stbu r2,1(r3) stb r7,256(r4) blr ; "boli" means Bogus On Last Iteration.