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}