stmdb sp!, {r4, r5, r6, r7, r8, r9, r10, r11} ldmia r0, {r1, r2, r3, r4, r5, r6, r7, r8} sub r9, r1, r3 ;t3 = z[0].re - z[1].re; add r10, r3, r1 ;t1 = z[0].re + z[1].re; ;r1, r3 now free sub r1, r6, r8 ;t7 = z[2].im - z[3].im; add r3, r6, r8 ;t5 = z[2].im + z[3].im; ;r6, r8 now free sub r11, r7, r5 ;t8 = z[3].re - z[2].re; add r12, r7, r5 ;t6 = z[3].re + z[2].re; ;r7, r5 now free sub r5, r2, r4 ;t4 = z[0].im - z[1].im add r7, r2, r4 ;t2 = z[0].im + z[1].im; ;r2, r4 now free ;have r2,r4,r6,r8 free sub r8, r5, r11 ;r8 = t4 - t8; sub r6, r7, r3 ;r6 = t2 - t5; add r4, r5, r11 ;r4 = t4 + t8; add r2, r7, r3 ;r2 = t2 + t5; ;have r3, r7, r5, r11 free sub r5, r10, r12 ;r5 = t1 - t6; sub r7, r9, r1 ;r7 = t3 - t7; add r3, r9, r1 ;r3 = t3 + t7; add r1, r10, r12 ;r1 = t1 + t6; stmia r0, {r1, r2, r3, r4, r5, r6, r7, r8} ldmia sp!, {r4, r5, r6, r7, r8, r9, r10, r11}