void cftleaf(int n, int isplt, double *a, int nw, double *w) {
  void cftmdl1(int n, double *a, double *w);
  void cftmdl2(int n, double *a, double *w);
  void cftf161(double *a, double *w);
  void cftf162(double *a, double *w);
  void cftf081(double *a, double *w);
  void cftf082(double *a, double *w);
  if (n == 512) {
    cftmdl1(128, a, &w[nw - 64]);
    cftf161(a, &w[nw - 8]);
    cftf162(&a[32], &w[nw - 32]);
    cftf161(&a[64], &w[nw - 8]);
    cftf161(&a[96], &w[nw - 8]);
    cftmdl2(128, &a[128], &w[nw - 128]);
    cftf161(&a[128], &w[nw - 8]);
    cftf162(&a[160], &w[nw - 32]);
    cftf161(&a[192], &w[nw - 8]);
    cftf162(&a[224], &w[nw - 32]);
    cftmdl1(128, &a[256], &w[nw - 64]);
    cftf161(&a[256], &w[nw - 8]);
    cftf162(&a[288], &w[nw - 32]);
    cftf161(&a[320], &w[nw - 8]);
    cftf161(&a[352], &w[nw - 8]);
    if (isplt != 0) {
      cftmdl1(128, &a[384], &w[nw - 64]);
      cftf161(&a[480], &w[nw - 8]);
    } else {
      cftmdl2(128, &a[384], &w[nw - 128]);
      cftf162(&a[480], &w[nw - 32]);
    }
    cftf161(&a[384], &w[nw - 8]);
    cftf162(&a[416], &w[nw - 32]);
    cftf161(&a[448], &w[nw - 8]);
  } else {
    cftmdl1(64, a, &w[nw - 32]);
    cftf081(a, &w[nw - 8]);
    cftf082(&a[16], &w[nw - 8]);
    cftf081(&a[32], &w[nw - 8]);
    cftf081(&a[48], &w[nw - 8]);
    cftmdl2(64, &a[64], &w[nw - 64]);
    cftf081(&a[64], &w[nw - 8]);
    cftf082(&a[80], &w[nw - 8]);
    cftf081(&a[96], &w[nw - 8]);
    cftf082(&a[112], &w[nw - 8]);
    cftmdl1(64, &a[128], &w[nw - 32]);
    cftf081(&a[128], &w[nw - 8]);
    cftf082(&a[144], &w[nw - 8]);
    cftf081(&a[160], &w[nw - 8]);
    cftf081(&a[176], &w[nw - 8]);
    if (isplt != 0) {
      cftmdl1(64, &a[192], &w[nw - 32]);
      cftf081(&a[240], &w[nw - 8]);
    } else {
      cftmdl2(64, &a[192], &w[nw - 64]);
      cftf082(&a[240], &w[nw - 8]);
    }
    cftf081(&a[192], &w[nw - 8]);
    cftf082(&a[208], &w[nw - 8]);
    cftf081(&a[224], &w[nw - 8]);
  }
}


x86 assembly (clang, -O0):
<cftleaf>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %rdx,-0x10(%rbp)
mov    %ecx,-0x14(%rbp)
mov    %r8,-0x20(%rbp)
cmpl   $0x200,-0x4(%rbp)
jne    14ab <cftleaf+0x34b>
mov    -0x10(%rbp),%rsi
mov    -0x20(%rbp),%rdx
mov    -0x14(%rbp),%eax
sub    $0x40,%eax
cltq
shl    $0x3,%rax
add    %rax,%rdx
mov    $0x80,%edi
call   1060 <cftmdl1@plt>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x8,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1040 <cftf161@plt>
mov    -0x10(%rbp),%rdi
add    $0x100,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x20,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1070 <cftf162@plt>
mov    -0x10(%rbp),%rdi
add    $0x200,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x8,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1040 <cftf161@plt>
mov    -0x10(%rbp),%rdi
add    $0x300,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x8,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1040 <cftf161@plt>
mov    -0x10(%rbp),%rsi
add    $0x400,%rsi
mov    -0x20(%rbp),%rdx
mov    -0x14(%rbp),%eax
sub    $0x80,%eax
cltq
shl    $0x3,%rax
add    %rax,%rdx
mov    $0x80,%edi
call   1030 <cftmdl2@plt>
mov    -0x10(%rbp),%rdi
add    $0x400,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x8,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1040 <cftf161@plt>
mov    -0x10(%rbp),%rdi
add    $0x500,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x20,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1070 <cftf162@plt>
mov    -0x10(%rbp),%rdi
add    $0x600,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x8,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1040 <cftf161@plt>
mov    -0x10(%rbp),%rdi
add    $0x700,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x20,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1070 <cftf162@plt>
mov    -0x10(%rbp),%rsi
add    $0x800,%rsi
mov    -0x20(%rbp),%rdx
mov    -0x14(%rbp),%eax
sub    $0x40,%eax
cltq
shl    $0x3,%rax
add    %rax,%rdx
mov    $0x80,%edi
call   1060 <cftmdl1@plt>
mov    -0x10(%rbp),%rdi
add    $0x800,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x8,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1040 <cftf161@plt>
mov    -0x10(%rbp),%rdi
add    $0x900,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x20,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1070 <cftf162@plt>
mov    -0x10(%rbp),%rdi
add    $0xa00,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x8,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1040 <cftf161@plt>
mov    -0x10(%rbp),%rdi
add    $0xb00,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x8,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1040 <cftf161@plt>
cmpl   $0x0,-0x8(%rbp)
je     13f0 <cftleaf+0x290>
mov    -0x10(%rbp),%rsi
add    $0xc00,%rsi
mov    -0x20(%rbp),%rdx
mov    -0x14(%rbp),%eax
sub    $0x40,%eax
cltq
shl    $0x3,%rax
add    %rax,%rdx
mov    $0x80,%edi
call   1060 <cftmdl1@plt>
mov    -0x10(%rbp),%rdi
add    $0xf00,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x8,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1040 <cftf161@plt>
jmp    143d <cftleaf+0x2dd>
mov    -0x10(%rbp),%rsi
add    $0xc00,%rsi
mov    -0x20(%rbp),%rdx
mov    -0x14(%rbp),%eax
sub    $0x80,%eax
cltq
shl    $0x3,%rax
add    %rax,%rdx
mov    $0x80,%edi
call   1030 <cftmdl2@plt>
mov    -0x10(%rbp),%rdi
add    $0xf00,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x20,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1070 <cftf162@plt>
mov    -0x10(%rbp),%rdi
add    $0xc00,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x8,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1040 <cftf161@plt>
mov    -0x10(%rbp),%rdi
add    $0xd00,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x20,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1070 <cftf162@plt>
mov    -0x10(%rbp),%rdi
add    $0xe00,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x8,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1040 <cftf161@plt>
jmp    17c7 <cftleaf+0x667>
mov    -0x10(%rbp),%rsi
mov    -0x20(%rbp),%rdx
mov    -0x14(%rbp),%eax
sub    $0x20,%eax
cltq
shl    $0x3,%rax
add    %rax,%rdx
mov    $0x40,%edi
call   1060 <cftmdl1@plt>
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x8,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1050 <cftf081@plt>
mov    -0x10(%rbp),%rdi
add    $0x80,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x8,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1080 <cftf082@plt>
mov    -0x10(%rbp),%rdi
add    $0x100,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x8,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1050 <cftf081@plt>
mov    -0x10(%rbp),%rdi
add    $0x180,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x8,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1050 <cftf081@plt>
mov    -0x10(%rbp),%rsi
add    $0x200,%rsi
mov    -0x20(%rbp),%rdx
mov    -0x14(%rbp),%eax
sub    $0x40,%eax
cltq
shl    $0x3,%rax
add    %rax,%rdx
mov    $0x40,%edi
call   1030 <cftmdl2@plt>
mov    -0x10(%rbp),%rdi
add    $0x200,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x8,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1050 <cftf081@plt>
mov    -0x10(%rbp),%rdi
add    $0x280,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x8,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1080 <cftf082@plt>
mov    -0x10(%rbp),%rdi
add    $0x300,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x8,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1050 <cftf081@plt>
mov    -0x10(%rbp),%rdi
add    $0x380,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x8,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1080 <cftf082@plt>
mov    -0x10(%rbp),%rsi
add    $0x400,%rsi
mov    -0x20(%rbp),%rdx
mov    -0x14(%rbp),%eax
sub    $0x20,%eax
cltq
shl    $0x3,%rax
add    %rax,%rdx
mov    $0x40,%edi
call   1060 <cftmdl1@plt>
mov    -0x10(%rbp),%rdi
add    $0x400,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x8,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1050 <cftf081@plt>
mov    -0x10(%rbp),%rdi
add    $0x480,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x8,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1080 <cftf082@plt>
mov    -0x10(%rbp),%rdi
add    $0x500,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x8,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1050 <cftf081@plt>
mov    -0x10(%rbp),%rdi
add    $0x580,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x8,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1050 <cftf081@plt>
cmpl   $0x0,-0x8(%rbp)
je     1713 <cftleaf+0x5b3>
mov    -0x10(%rbp),%rsi
add    $0x600,%rsi
mov    -0x20(%rbp),%rdx
mov    -0x14(%rbp),%eax
sub    $0x20,%eax
cltq
shl    $0x3,%rax
add    %rax,%rdx
mov    $0x40,%edi
call   1060 <cftmdl1@plt>
mov    -0x10(%rbp),%rdi
add    $0x780,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x8,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1050 <cftf081@plt>
jmp    175e <cftleaf+0x5fe>
mov    -0x10(%rbp),%rsi
add    $0x600,%rsi
mov    -0x20(%rbp),%rdx
mov    -0x14(%rbp),%eax
sub    $0x40,%eax
cltq
shl    $0x3,%rax
add    %rax,%rdx
mov    $0x40,%edi
call   1030 <cftmdl2@plt>
mov    -0x10(%rbp),%rdi
add    $0x780,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x8,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1080 <cftf082@plt>
mov    -0x10(%rbp),%rdi
add    $0x600,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x8,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1050 <cftf081@plt>
mov    -0x10(%rbp),%rdi
add    $0x680,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x8,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1080 <cftf082@plt>
mov    -0x10(%rbp),%rdi
add    $0x700,%rdi
mov    -0x20(%rbp),%rsi
mov    -0x14(%rbp),%eax
sub    $0x8,%eax
cltq
shl    $0x3,%rax
add    %rax,%rsi
call   1050 <cftf081@plt>
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<cftleaf>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
mov    %r8,%r13
mov    %rdx,%rbx
mov    %esi,0x4(%rsp)
cmp    $0x200,%edi
jne    12d8 <cftleaf+0x178>
movslq %ecx,%r14
lea    -0x200(,%r14,8),%rdx
ff
add    %r13,%rdx
mov    %rdx,0x10(%rsp)
mov    $0x80,%edi
mov    %rbx,%rsi
call   1060 <cftmdl1@plt>
lea    -0x40(,%r14,8),%r12
ff
add    %r13,%r12
mov    %rbx,%rdi
mov    %r12,%rsi
call   1040 <cftf161@plt>
lea    0x100(%rbx),%rdi
lea    -0x100(,%r14,8),%r15
ff
add    %r13,%r15
mov    %r15,%rsi
call   1070 <cftf162@plt>
lea    0x200(%rbx),%rdi
mov    %r12,%rsi
call   1040 <cftf161@plt>
lea    0x300(%rbx),%rdi
mov    %r12,%rsi
call   1040 <cftf161@plt>
lea    0x400(%rbx),%rbp
lea    -0x400(,%r14,8),%rdx
add    %r13,%rdx
mov    $0x80,%edi
mov    %rbp,%rsi
mov    %rdx,0x8(%rsp)
call   1030 <cftmdl2@plt>
mov    %rbp,%rdi
mov    %r12,%rsi
call   1040 <cftf161@plt>
lea    0x500(%rbx),%rdi
mov    %r15,%rsi
call   1070 <cftf162@plt>
lea    0x600(%rbx),%rdi
mov    %r12,%rsi
call   1040 <cftf161@plt>
lea    0x700(%rbx),%rdi
mov    %r15,%rsi
call   1070 <cftf162@plt>
lea    0x800(%rbx),%rbp
mov    $0x80,%edi
mov    %rbp,%rsi
mov    0x10(%rsp),%rdx
mov    %rdx,%r13
call   1060 <cftmdl1@plt>
mov    %rbp,%rdi
mov    %r12,%rsi
call   1040 <cftf161@plt>
lea    0x900(%rbx),%rdi
mov    %r15,%rsi
call   1070 <cftf162@plt>
lea    0xa00(%rbx),%rdi
mov    %r12,%rsi
call   1040 <cftf161@plt>
lea    0xb00(%rbx),%rdi
mov    %r12,%rsi
call   1040 <cftf161@plt>
lea    0xc00(%rbx),%r14
cmpl   $0x0,0x4(%rsp)
je     1411 <cftleaf+0x2b1>
mov    $0x80,%edi
mov    %r14,%rsi
mov    %r13,%rdx
call   1060 <cftmdl1@plt>
lea    0xf00(%rbx),%rdi
mov    %r12,%rsi
call   1040 <cftf161@plt>
jmp    1432 <cftleaf+0x2d2>
movslq %ecx,%r12
lea    -0x100(,%r12,8),%r15
ff
add    %r13,%r15
mov    $0x40,%edi
mov    %rbx,%rsi
mov    %r15,%rdx
call   1060 <cftmdl1@plt>
lea    -0x40(,%r12,8),%rbp
ff
add    %r13,%rbp
mov    %rbx,%rdi
mov    %rbp,%rsi
call   1050 <cftf081@plt>
lea    0x80(%rbx),%rdi
mov    %rbp,%rsi
call   1080 <cftf082@plt>
lea    0x100(%rbx),%rdi
mov    %rbp,%rsi
call   1050 <cftf081@plt>
lea    0x180(%rbx),%rdi
mov    %rbp,%rsi
call   1050 <cftf081@plt>
lea    0x200(%rbx),%r14
lea    -0x200(,%r12,8),%r12
ff
add    %r13,%r12
mov    $0x40,%edi
mov    %r14,%rsi
mov    %r12,%rdx
call   1030 <cftmdl2@plt>
mov    %r14,%rdi
mov    %rbp,%rsi
call   1050 <cftf081@plt>
lea    0x280(%rbx),%rdi
mov    %rbp,%rsi
call   1080 <cftf082@plt>
lea    0x300(%rbx),%rdi
mov    %rbp,%rsi
call   1050 <cftf081@plt>
lea    0x380(%rbx),%rdi
mov    %rbp,%rsi
call   1080 <cftf082@plt>
lea    0x400(%rbx),%r14
mov    $0x40,%edi
mov    %r14,%rsi
mov    %r15,%rdx
call   1060 <cftmdl1@plt>
mov    %r14,%rdi
mov    %rbp,%rsi
call   1050 <cftf081@plt>
lea    0x480(%rbx),%rdi
mov    %rbp,%rsi
call   1080 <cftf082@plt>
lea    0x500(%rbx),%rdi
mov    %rbp,%rsi
call   1050 <cftf081@plt>
lea    0x580(%rbx),%rdi
mov    %rbp,%rsi
call   1050 <cftf081@plt>
lea    0x600(%rbx),%r14
cmpl   $0x0,0x4(%rsp)
je     146c <cftleaf+0x30c>
mov    $0x40,%edi
mov    %r14,%rsi
mov    %r15,%rdx
call   1060 <cftmdl1@plt>
lea    0x780(%rbx),%rdi
mov    %rbp,%rsi
call   1050 <cftf081@plt>
jmp    148b <cftleaf+0x32b>
mov    $0x80,%edi
mov    %r14,%rsi
mov    0x8(%rsp),%rdx
call   1030 <cftmdl2@plt>
lea    0xf00(%rbx),%rdi
mov    %r15,%rsi
call   1070 <cftf162@plt>
mov    %r14,%rdi
mov    %r12,%rsi
call   1040 <cftf161@plt>
lea    0xd00(%rbx),%rdi
mov    %r15,%rsi
call   1070 <cftf162@plt>
add    $0xe00,%rbx
mov    %rbx,%rdi
mov    %r12,%rsi
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1040 <cftf161@plt>
mov    $0x40,%edi
mov    %r14,%rsi
mov    %r12,%rdx
call   1030 <cftmdl2@plt>
lea    0x780(%rbx),%rdi
mov    %rbp,%rsi
call   1080 <cftf082@plt>
mov    %r14,%rdi
mov    %rbp,%rsi
call   1050 <cftf081@plt>
lea    0x680(%rbx),%rdi
mov    %rbp,%rsi
call   1080 <cftf082@plt>
add    $0x700,%rbx
mov    %rbx,%rdi
mov    %rbp,%rsi
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1050 <cftf081@plt>

LLVM IR (-O0):
define void @cftleaf(i32 %0, i32 %1, double* %2, i32 %3, double* %4) {
%6 = alloca i32
%7 = alloca i32
%8 = alloca double*
%9 = alloca i32
%10 = alloca double*
store i32 %0, i32* %6
store i32 %1, i32* %7
store double* %2, double** %8
store i32 %3, i32* %9
store double* %4, double** %10
%11 = load i32, i32* %6
%12 = icmp eq i32 %11, 512
br i1 %12, label %13, label %171
13: ; preds = %5
%14 = load double*, double** %8
%15 = load double*, double** %10
%16 = load i32, i32* %9
%17 = sub nsw i32 %16, 64
%18 = sext i32 %17 to i64
%19 = getelementptr inbounds double, double* %15, i64 %18
%20 = load double*, double** %8
%21 = load double*, double** %10
%22 = load i32, i32* %9
%23 = sub nsw i32 %22, 8
%24 = sext i32 %23 to i64
%25 = getelementptr inbounds double, double* %21, i64 %24
%26 = load double*, double** %8
%27 = getelementptr inbounds double, double* %26, i64 32
%28 = load double*, double** %10
%29 = load i32, i32* %9
%30 = sub nsw i32 %29, 32
%31 = sext i32 %30 to i64
%32 = getelementptr inbounds double, double* %28, i64 %31
%33 = load double*, double** %8
%34 = getelementptr inbounds double, double* %33, i64 64
%35 = load double*, double** %10
%36 = load i32, i32* %9
%37 = sub nsw i32 %36, 8
%38 = sext i32 %37 to i64
%39 = getelementptr inbounds double, double* %35, i64 %38
%40 = load double*, double** %8
%41 = getelementptr inbounds double, double* %40, i64 96
%42 = load double*, double** %10
%43 = load i32, i32* %9
%44 = sub nsw i32 %43, 8
%45 = sext i32 %44 to i64
%46 = getelementptr inbounds double, double* %42, i64 %45
%47 = load double*, double** %8
%48 = getelementptr inbounds double, double* %47, i64 128
%49 = load double*, double** %10
%50 = load i32, i32* %9
%51 = sub nsw i32 %50, 128
%52 = sext i32 %51 to i64
%53 = getelementptr inbounds double, double* %49, i64 %52
%54 = load double*, double** %8
%55 = getelementptr inbounds double, double* %54, i64 128
%56 = load double*, double** %10
%57 = load i32, i32* %9
%58 = sub nsw i32 %57, 8
%59 = sext i32 %58 to i64
%60 = getelementptr inbounds double, double* %56, i64 %59
%61 = load double*, double** %8
%62 = getelementptr inbounds double, double* %61, i64 160
%63 = load double*, double** %10
%64 = load i32, i32* %9
%65 = sub nsw i32 %64, 32
%66 = sext i32 %65 to i64
%67 = getelementptr inbounds double, double* %63, i64 %66
%68 = load double*, double** %8
%69 = getelementptr inbounds double, double* %68, i64 192
%70 = load double*, double** %10
%71 = load i32, i32* %9
%72 = sub nsw i32 %71, 8
%73 = sext i32 %72 to i64
%74 = getelementptr inbounds double, double* %70, i64 %73
%75 = load double*, double** %8
%76 = getelementptr inbounds double, double* %75, i64 224
%77 = load double*, double** %10
%78 = load i32, i32* %9
%79 = sub nsw i32 %78, 32
%80 = sext i32 %79 to i64
%81 = getelementptr inbounds double, double* %77, i64 %80
%82 = load double*, double** %8
%83 = getelementptr inbounds double, double* %82, i64 256
%84 = load double*, double** %10
%85 = load i32, i32* %9
%86 = sub nsw i32 %85, 64
%87 = sext i32 %86 to i64
%88 = getelementptr inbounds double, double* %84, i64 %87
%89 = load double*, double** %8
%90 = getelementptr inbounds double, double* %89, i64 256
%91 = load double*, double** %10
%92 = load i32, i32* %9
%93 = sub nsw i32 %92, 8
%94 = sext i32 %93 to i64
%95 = getelementptr inbounds double, double* %91, i64 %94
%96 = load double*, double** %8
%97 = getelementptr inbounds double, double* %96, i64 288
%98 = load double*, double** %10
%99 = load i32, i32* %9
%100 = sub nsw i32 %99, 32
%101 = sext i32 %100 to i64
%102 = getelementptr inbounds double, double* %98, i64 %101
%103 = load double*, double** %8
%104 = getelementptr inbounds double, double* %103, i64 320
%105 = load double*, double** %10
%106 = load i32, i32* %9
%107 = sub nsw i32 %106, 8
%108 = sext i32 %107 to i64
%109 = getelementptr inbounds double, double* %105, i64 %108
%110 = load double*, double** %8
%111 = getelementptr inbounds double, double* %110, i64 352
%112 = load double*, double** %10
%113 = load i32, i32* %9
%114 = sub nsw i32 %113, 8
%115 = sext i32 %114 to i64
%116 = getelementptr inbounds double, double* %112, i64 %115
%117 = load i32, i32* %7
%118 = icmp ne i32 %117, 0
br i1 %118, label %119, label %134
119: ; preds = %13
%120 = load double*, double** %8
%121 = getelementptr inbounds double, double* %120, i64 384
%122 = load double*, double** %10
%123 = load i32, i32* %9
%124 = sub nsw i32 %123, 64
%125 = sext i32 %124 to i64
%126 = getelementptr inbounds double, double* %122, i64 %125
%127 = load double*, double** %8
%128 = getelementptr inbounds double, double* %127, i64 480
%129 = load double*, double** %10
%130 = load i32, i32* %9
%131 = sub nsw i32 %130, 8
%132 = sext i32 %131 to i64
%133 = getelementptr inbounds double, double* %129, i64 %132
br label %149
134: ; preds = %13
%135 = load double*, double** %8
%136 = getelementptr inbounds double, double* %135, i64 384
%137 = load double*, double** %10
%138 = load i32, i32* %9
%139 = sub nsw i32 %138, 128
%140 = sext i32 %139 to i64
%141 = getelementptr inbounds double, double* %137, i64 %140
%142 = load double*, double** %8
%143 = getelementptr inbounds double, double* %142, i64 480
%144 = load double*, double** %10
%145 = load i32, i32* %9
%146 = sub nsw i32 %145, 32
%147 = sext i32 %146 to i64
%148 = getelementptr inbounds double, double* %144, i64 %147
br label %149
149: ; preds = %134, %119
%150 = load double*, double** %8
%151 = getelementptr inbounds double, double* %150, i64 384
%152 = load double*, double** %10
%153 = load i32, i32* %9
%154 = sub nsw i32 %153, 8
%155 = sext i32 %154 to i64
%156 = getelementptr inbounds double, double* %152, i64 %155
%157 = load double*, double** %8
%158 = getelementptr inbounds double, double* %157, i64 416
%159 = load double*, double** %10
%160 = load i32, i32* %9
%161 = sub nsw i32 %160, 32
%162 = sext i32 %161 to i64
%163 = getelementptr inbounds double, double* %159, i64 %162
%164 = load double*, double** %8
%165 = getelementptr inbounds double, double* %164, i64 448
%166 = load double*, double** %10
%167 = load i32, i32* %9
%168 = sub nsw i32 %167, 8
%169 = sext i32 %168 to i64
%170 = getelementptr inbounds double, double* %166, i64 %169
br label %329
171: ; preds = %5
%172 = load double*, double** %8
%173 = load double*, double** %10
%174 = load i32, i32* %9
%175 = sub nsw i32 %174, 32
%176 = sext i32 %175 to i64
%177 = getelementptr inbounds double, double* %173, i64 %176
%178 = load double*, double** %8
%179 = load double*, double** %10
%180 = load i32, i32* %9
%181 = sub nsw i32 %180, 8
%182 = sext i32 %181 to i64
%183 = getelementptr inbounds double, double* %179, i64 %182
%184 = load double*, double** %8
%185 = getelementptr inbounds double, double* %184, i64 16
%186 = load double*, double** %10
%187 = load i32, i32* %9
%188 = sub nsw i32 %187, 8
%189 = sext i32 %188 to i64
%190 = getelementptr inbounds double, double* %186, i64 %189
%191 = load double*, double** %8
%192 = getelementptr inbounds double, double* %191, i64 32
%193 = load double*, double** %10
%194 = load i32, i32* %9
%195 = sub nsw i32 %194, 8
%196 = sext i32 %195 to i64
%197 = getelementptr inbounds double, double* %193, i64 %196
%198 = load double*, double** %8
%199 = getelementptr inbounds double, double* %198, i64 48
%200 = load double*, double** %10
%201 = load i32, i32* %9
%202 = sub nsw i32 %201, 8
%203 = sext i32 %202 to i64
%204 = getelementptr inbounds double, double* %200, i64 %203
%205 = load double*, double** %8
%206 = getelementptr inbounds double, double* %205, i64 64
%207 = load double*, double** %10
%208 = load i32, i32* %9
%209 = sub nsw i32 %208, 64
%210 = sext i32 %209 to i64
%211 = getelementptr inbounds double, double* %207, i64 %210
%212 = load double*, double** %8
%213 = getelementptr inbounds double, double* %212, i64 64
%214 = load double*, double** %10
%215 = load i32, i32* %9
%216 = sub nsw i32 %215, 8
%217 = sext i32 %216 to i64
%218 = getelementptr inbounds double, double* %214, i64 %217
%219 = load double*, double** %8
%220 = getelementptr inbounds double, double* %219, i64 80
%221 = load double*, double** %10
%222 = load i32, i32* %9
%223 = sub nsw i32 %222, 8
%224 = sext i32 %223 to i64
%225 = getelementptr inbounds double, double* %221, i64 %224
%226 = load double*, double** %8
%227 = getelementptr inbounds double, double* %226, i64 96
%228 = load double*, double** %10
%229 = load i32, i32* %9
%230 = sub nsw i32 %229, 8
%231 = sext i32 %230 to i64
%232 = getelementptr inbounds double, double* %228, i64 %231
%233 = load double*, double** %8
%234 = getelementptr inbounds double, double* %233, i64 112
%235 = load double*, double** %10
%236 = load i32, i32* %9
%237 = sub nsw i32 %236, 8
%238 = sext i32 %237 to i64
%239 = getelementptr inbounds double, double* %235, i64 %238
%240 = load double*, double** %8
%241 = getelementptr inbounds double, double* %240, i64 128
%242 = load double*, double** %10
%243 = load i32, i32* %9
%244 = sub nsw i32 %243, 32
%245 = sext i32 %244 to i64
%246 = getelementptr inbounds double, double* %242, i64 %245
%247 = load double*, double** %8
%248 = getelementptr inbounds double, double* %247, i64 128
%249 = load double*, double** %10
%250 = load i32, i32* %9
%251 = sub nsw i32 %250, 8
%252 = sext i32 %251 to i64
%253 = getelementptr inbounds double, double* %249, i64 %252
%254 = load double*, double** %8
%255 = getelementptr inbounds double, double* %254, i64 144
%256 = load double*, double** %10
%257 = load i32, i32* %9
%258 = sub nsw i32 %257, 8
%259 = sext i32 %258 to i64
%260 = getelementptr inbounds double, double* %256, i64 %259
%261 = load double*, double** %8
%262 = getelementptr inbounds double, double* %261, i64 160
%263 = load double*, double** %10
%264 = load i32, i32* %9
%265 = sub nsw i32 %264, 8
%266 = sext i32 %265 to i64
%267 = getelementptr inbounds double, double* %263, i64 %266
%268 = load double*, double** %8
%269 = getelementptr inbounds double, double* %268, i64 176
%270 = load double*, double** %10
%271 = load i32, i32* %9
%272 = sub nsw i32 %271, 8
%273 = sext i32 %272 to i64
%274 = getelementptr inbounds double, double* %270, i64 %273
%275 = load i32, i32* %7
%276 = icmp ne i32 %275, 0
br i1 %276, label %277, label %292
277: ; preds = %171
%278 = load double*, double** %8
%279 = getelementptr inbounds double, double* %278, i64 192
%280 = load double*, double** %10
%281 = load i32, i32* %9
%282 = sub nsw i32 %281, 32
%283 = sext i32 %282 to i64
%284 = getelementptr inbounds double, double* %280, i64 %283
%285 = load double*, double** %8
%286 = getelementptr inbounds double, double* %285, i64 240
%287 = load double*, double** %10
%288 = load i32, i32* %9
%289 = sub nsw i32 %288, 8
%290 = sext i32 %289 to i64
%291 = getelementptr inbounds double, double* %287, i64 %290
br label %307
292: ; preds = %171
%293 = load double*, double** %8
%294 = getelementptr inbounds double, double* %293, i64 192
%295 = load double*, double** %10
%296 = load i32, i32* %9
%297 = sub nsw i32 %296, 64
%298 = sext i32 %297 to i64
%299 = getelementptr inbounds double, double* %295, i64 %298
%300 = load double*, double** %8
%301 = getelementptr inbounds double, double* %300, i64 240
%302 = load double*, double** %10
%303 = load i32, i32* %9
%304 = sub nsw i32 %303, 8
%305 = sext i32 %304 to i64
%306 = getelementptr inbounds double, double* %302, i64 %305
br label %307
307: ; preds = %292, %277
%308 = load double*, double** %8
%309 = getelementptr inbounds double, double* %308, i64 192
%310 = load double*, double** %10
%311 = load i32, i32* %9
%312 = sub nsw i32 %311, 8
%313 = sext i32 %312 to i64
%314 = getelementptr inbounds double, double* %310, i64 %313
%315 = load double*, double** %8
%316 = getelementptr inbounds double, double* %315, i64 208
%317 = load double*, double** %10
%318 = load i32, i32* %9
%319 = sub nsw i32 %318, 8
%320 = sext i32 %319 to i64
%321 = getelementptr inbounds double, double* %317, i64 %320
%322 = load double*, double** %8
%323 = getelementptr inbounds double, double* %322, i64 224
%324 = load double*, double** %10
%325 = load i32, i32* %9
%326 = sub nsw i32 %325, 8
%327 = sext i32 %326 to i64
%328 = getelementptr inbounds double, double* %324, i64 %327
br label %329
329: ; preds = %307, %149
ret void
}

LLVM IR (-O2):
define void @cftleaf(i32 %0, i32 %1, double* %2, i32 %3, double* %4) {
%6 = icmp eq i32 %0, 512
br i1 %6, label %7, label %41
7: ; preds = %5
%8 = add nsw i32 %3, -64
%9 = sext i32 %8 to i64
%10 = getelementptr inbounds double, double* %4, i64 %9
tail call void @cftmdl1(i32 128, double* %2, double* %10)
%11 = add nsw i32 %3, -8
%12 = sext i32 %11 to i64
%13 = getelementptr inbounds double, double* %4, i64 %12
tail call void @cftf161(double* %2, double* %13)
%14 = getelementptr inbounds double, double* %2, i64 32
%15 = add nsw i32 %3, -32
%16 = sext i32 %15 to i64
%17 = getelementptr inbounds double, double* %4, i64 %16
tail call void @cftf162(double* %14, double* %17)
%18 = getelementptr inbounds double, double* %2, i64 64
tail call void @cftf161(double* %18, double* %13)
%19 = getelementptr inbounds double, double* %2, i64 96
tail call void @cftf161(double* %19, double* %13)
%20 = getelementptr inbounds double, double* %2, i64 128
%21 = add nsw i32 %3, -128
%22 = sext i32 %21 to i64
%23 = getelementptr inbounds double, double* %4, i64 %22
tail call void @cftmdl2(i32 128, double* %20, double* %23)
tail call void @cftf161(double* %20, double* %13)
%24 = getelementptr inbounds double, double* %2, i64 160
tail call void @cftf162(double* %24, double* %17)
%25 = getelementptr inbounds double, double* %2, i64 192
tail call void @cftf161(double* %25, double* %13)
%26 = getelementptr inbounds double, double* %2, i64 224
tail call void @cftf162(double* %26, double* %17)
%27 = getelementptr inbounds double, double* %2, i64 256
tail call void @cftmdl1(i32 128, double* %27, double* %10)
tail call void @cftf161(double* %27, double* %13)
%28 = getelementptr inbounds double, double* %2, i64 288
tail call void @cftf162(double* %28, double* %17)
%29 = getelementptr inbounds double, double* %2, i64 320
tail call void @cftf161(double* %29, double* %13)
%30 = getelementptr inbounds double, double* %2, i64 352
tail call void @cftf161(double* %30, double* %13)
%31 = icmp eq i32 %1, 0
%32 = getelementptr inbounds double, double* %2, i64 384
br i1 %31, label %35, label %33
33: ; preds = %7
tail call void @cftmdl1(i32 128, double* %32, double* %10)
%34 = getelementptr inbounds double, double* %2, i64 480
tail call void @cftf161(double* %34, double* %13)
br label %37
35: ; preds = %7
tail call void @cftmdl2(i32 128, double* %32, double* %23)
%36 = getelementptr inbounds double, double* %2, i64 480
tail call void @cftf162(double* %36, double* %17)
br label %37
37: ; preds = %35, %33
%38 = getelementptr inbounds double, double* %2, i64 384
tail call void @cftf161(double* %38, double* %13)
%39 = getelementptr inbounds double, double* %2, i64 416
tail call void @cftf162(double* %39, double* %17)
%40 = getelementptr inbounds double, double* %2, i64 448
tail call void @cftf161(double* %40, double* %13)
br label %72
41: ; preds = %5
%42 = add nsw i32 %3, -32
%43 = sext i32 %42 to i64
%44 = getelementptr inbounds double, double* %4, i64 %43
tail call void @cftmdl1(i32 64, double* %2, double* %44)
%45 = add nsw i32 %3, -8
%46 = sext i32 %45 to i64
%47 = getelementptr inbounds double, double* %4, i64 %46
tail call void @cftf081(double* %2, double* %47)
%48 = getelementptr inbounds double, double* %2, i64 16
tail call void @cftf082(double* %48, double* %47)
%49 = getelementptr inbounds double, double* %2, i64 32
tail call void @cftf081(double* %49, double* %47)
%50 = getelementptr inbounds double, double* %2, i64 48
tail call void @cftf081(double* %50, double* %47)
%51 = getelementptr inbounds double, double* %2, i64 64
%52 = add nsw i32 %3, -64
%53 = sext i32 %52 to i64
%54 = getelementptr inbounds double, double* %4, i64 %53
tail call void @cftmdl2(i32 64, double* %51, double* %54)
tail call void @cftf081(double* %51, double* %47)
%55 = getelementptr inbounds double, double* %2, i64 80
tail call void @cftf082(double* %55, double* %47)
%56 = getelementptr inbounds double, double* %2, i64 96
tail call void @cftf081(double* %56, double* %47)
%57 = getelementptr inbounds double, double* %2, i64 112
tail call void @cftf082(double* %57, double* %47)
%58 = getelementptr inbounds double, double* %2, i64 128
tail call void @cftmdl1(i32 64, double* %58, double* %44)
tail call void @cftf081(double* %58, double* %47)
%59 = getelementptr inbounds double, double* %2, i64 144
tail call void @cftf082(double* %59, double* %47)
%60 = getelementptr inbounds double, double* %2, i64 160
tail call void @cftf081(double* %60, double* %47)
%61 = getelementptr inbounds double, double* %2, i64 176
tail call void @cftf081(double* %61, double* %47)
%62 = icmp eq i32 %1, 0
%63 = getelementptr inbounds double, double* %2, i64 192
br i1 %62, label %66, label %64
64: ; preds = %41
tail call void @cftmdl1(i32 64, double* %63, double* %44)
%65 = getelementptr inbounds double, double* %2, i64 240
tail call void @cftf081(double* %65, double* %47)
br label %68
66: ; preds = %41
tail call void @cftmdl2(i32 64, double* %63, double* %54)
%67 = getelementptr inbounds double, double* %2, i64 240
tail call void @cftf082(double* %67, double* %47)
br label %68
68: ; preds = %66, %64
%69 = getelementptr inbounds double, double* %2, i64 192
tail call void @cftf081(double* %69, double* %47)
%70 = getelementptr inbounds double, double* %2, i64 208
tail call void @cftf082(double* %70, double* %47)
%71 = getelementptr inbounds double, double* %2, i64 224
tail call void @cftf081(double* %71, double* %47)
br label %72
72: ; preds = %68, %37
ret void
}