R12+0x40=IISFIFO_WR R9=p (pointer to sample) R10=working register "ldr r10, [r9], #4 \n\t" /* load two samples */ "mov r10, r10, ror #16\n\t" /* put left sample at the top bits */ "str r10, [r12, #0x40]\n\t" /* write top sample, lower sample ignored */ "mov r10, r10, lsl #16\n\t" /* shift lower sample up */ "str r10, [r12, #0x40]\n\t" /* then write it */