int echange(int nfcns, int taillegrilledense, int *iExt, double *FreqGrille,
            double *des, double *wt, double *x, double *y, double *ad) {
  double comp = 0.0;
  double deltal = -1;
  double delta = 0.0;
  int nz = nfcns + 1;
  int nzz = nz + 1;
  int iter = 0;
  int luck = 0;
  int jchnge = 1;
  int jet = floor((nfcns - 1) / 15) + 1;
  double y1 = 0.0;
  double E = 0.0;
  double dtemp = 0.0;
  int k1 = 0;
  int knz = 0;
  int klow = 0;
  int kup = 0;
  int nu = 0;
  int nut = 0;
  int nut1 = 0;
  int j = 1;
  int flag = 0;
  int l = 0;
  while (jchnge > 0) {
    iter++;
    if (iter > 250)
      break;
    for (int i = 0; i < nz; i++)
      x[i] = cos(6.2831853071795865 * FreqGrille[iExt[i]]);
    for (int nn = 0; nn < nz; nn++)
      ad[nn] = dd(nn, nz, jet, x);
    {
      double dnum = 0.0;
      double dden = 0.0;
      int add = 1;
      for (int i = 0; i < nz; i++) {
        dnum += ad[i] * des[iExt[i]];
        dden += add * ad[i] / wt[iExt[i]];
        add = -add;
      }
      delta = dnum / dden;
    }
    nu = (delta > 0 ? -1 : 1);
    delta *= -nu;
    {
      int add = 1;
      for (int i = 0; i < nz; i++) {
        y[i] = des[iExt[i]] + nu * delta * add / wt[iExt[i]];
        add = -add;
      }
    }
    if (delta <= deltal) {
      printf("ERROR: remez exchange algorithm do not converge\n");
      printf("ERROR: Filter designed will probably be incorrect\n");
      return -1;
    }
    deltal = delta;
    jchnge = 0;
    k1 = iExt[0];
    knz = iExt[nz - 1];
    klow = -1;
    nut = -nu;
    j = 1;
    while (j < nzz) {
      kup = iExt[j];
      l = iExt[j - 1] + 1;
      nut = -nut;
      if (j == 2)
        y1 = comp;
      comp = delta;
      flag = 1;
      if (l < kup) {
        dtemp = gee(FreqGrille, ad, x, y, des, wt, comp, nut, l, nz, &E);
        if (dtemp > 0) {
          comp = nut * E;
          l++;
          while (l < kup) {
            dtemp = gee(FreqGrille, ad, x, y, des, wt, comp, nut, l, nz, &E);
            if (dtemp <= 0)
              break;
            comp = nut * E;
            l++;
          }
          iExt[j - 1] = l - 1;
          j++;
          klow = l - 1;
          jchnge++;
          flag = 0;
        }
      }
      if (flag) {
        l -= 2;
        while (l > klow) {
          dtemp = gee(FreqGrille, ad, x, y, des, wt, comp, nut, l, nz, &E);
          if (dtemp > 0 || jchnge > 0)
            break;
          l--;
        }
        if (l <= klow) {
          l = iExt[j - 1] + 1;
          if (jchnge > 0) {
            iExt[j - 1] = l - 1;
            j++;
            klow = l - 1;
            jchnge++;
          } else {
            l++;
            while (l < kup) {
              dtemp = gee(FreqGrille, ad, x, y, des, wt, comp, nut, l, nz, &E);
              if (dtemp > 0)
                break;
              l++;
            }
            if (l < kup && dtemp > 0) {
              comp = nut * E;
              l++;
              while (l < kup) {
                dtemp =
                    gee(FreqGrille, ad, x, y, des, wt, comp, nut, l, nz, &E);
                if (dtemp <= 0)
                  break;
                comp = nut * E;
                l++;
              }
              iExt[j - 1] = l - 1;
              j++;
              klow = l - 1;
              jchnge++;
            } else {
              klow = iExt[j - 1];
              j++;
            }
          }
        } else if (dtemp > 0) {
          comp = nut * E;
          l--;
          while (l > klow) {
            dtemp = gee(FreqGrille, ad, x, y, des, wt, comp, nut, l, nz, &E);
            if (dtemp <= 0)
              break;
            comp = nut * E;
            l--;
          }
          klow = iExt[j - 1];
          iExt[j - 1] = l + 1;
          j++;
          jchnge++;
        } else {
          klow = iExt[j - 1];
          j++;
        }
      }
    }
    while (j == nzz) {
      k1 = ((k1) < (iExt[0]) ? (k1) : (iExt[0]));
      knz = ((knz) > (iExt[nz - 1]) ? (knz) : (iExt[nz - 1]));
      nut1 = nut;
      nut = -nu;
      l = 0;
      kup = k1;
      comp = comp * 1.00001;
      luck = 1;
      flag = 1;
      while (l < kup) {
        dtemp = gee(FreqGrille, ad, x, y, des, wt, comp, nut, l, nz, &E);
        if (dtemp > 0) {
          comp = nut * E;
          j = nzz;
          l++;
          while (l < kup) {
            dtemp = gee(FreqGrille, ad, x, y, des, wt, comp, nut, l, nz, &E);
            if (dtemp <= 0)
              break;
            comp = nut * E;
            l++;
          }
          iExt[j - 1] = l - 1;
          j++;
          klow = l - 1;
          jchnge++;
          flag = 0;
          break;
        }
        l++;
      }
      if (flag) {
        luck = 6;
        l = taillegrilledense;
        klow = knz;
        nut = -nut1;
        comp = y1 * 1.00001;
        l--;
        while (l > klow) {
          dtemp = gee(FreqGrille, ad, x, y, des, wt, comp, nut, l, nz, &E);
          if (dtemp > 0) {
            j = nzz;
            comp = nut * E;
            luck += 10;
            l--;
            while (l > klow) {
              dtemp = gee(FreqGrille, ad, x, y, des, wt, comp, nut, l, nz, &E);
              if (dtemp <= 0)
                break;
              comp = nut * E;
              l--;
            }
            klow = iExt[j - 1];
            iExt[j - 1] = l + 1;
            j++;
            jchnge++;
            flag = 0;
            break;
          }
          l--;
        }
        if (flag) {
          if (luck != 6) {
            for (int i = nfcns - 1; i > 0; i--)
              iExt[i] = iExt[i - 1];
            iExt[0] = k1;
            jchnge++;
          }
          break;
        }
      }
    }
    if (j > nzz) {
      if (luck > 9) {
        for (int i = 0; i < nfcns; i++)
          iExt[i] = iExt[i + 1];
        iExt[nfcns] = iExt[nz];
        jchnge++;
      } else {
        y1 = ((y1) > (comp) ? (y1) : (comp));
        k1 = iExt[nzz - 1];
        l = taillegrilledense;
        klow = knz;
        nut = -nut1;
        comp = y1 * 1.00001;
        l--;
        while (l > klow) {
          dtemp = gee(FreqGrille, ad, x, y, des, wt, comp, nut, l, nz, &E);
          if (dtemp > 0) {
            j = nzz;
            comp = nut * E;
            luck += 10;
            l--;
            while (l > klow) {
              dtemp = gee(FreqGrille, ad, x, y, des, wt, comp, nut, l, nz, &E);
              if (dtemp <= 0)
                break;
              comp = nut * E;
              l--;
            }
            klow = iExt[j - 1];
            iExt[j - 1] = l + 1;
            j++;
            jchnge++;
            for (int i = 0; i < nfcns; i++)
              iExt[i] = iExt[i + 1];
            iExt[nfcns] = iExt[nz];
            break;
          }
          l--;
        }
        if (luck != 6) {
          for (int i = nfcns; i > 0; i--)
            iExt[i] = iExt[i - 1];
          iExt[0] = k1;
          jchnge++;
        }
      }
    }
  }
  return 0;
}


x86 assembly (clang, -O0):
<echange>:
push   %rbp
mov    %rsp,%rbp
push   %rbx
sub    $0x108,%rsp
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %edi,-0x10(%rbp)
mov    %esi,-0x14(%rbp)
mov    %rdx,-0x20(%rbp)
mov    %rcx,-0x28(%rbp)
mov    %r8,-0x30(%rbp)
mov    %r9,-0x38(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  0x1e7a(%rip),%xmm0
movsd  %xmm0,-0x48(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x58(%rbp)
movl   $0x0,-0x5c(%rbp)
movl   $0x0,-0x60(%rbp)
movl   $0x1,-0x64(%rbp)
mov    -0x10(%rbp),%eax
sub    $0x1,%eax
mov    $0xf,%ecx
cltd
idiv   %ecx
cvtsi2sd %eax,%xmm0
call   1070 <floor@plt>
movsd  0x1e1f(%rip),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x68(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x70(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x78(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x80(%rbp)
movl   $0x0,-0x84(%rbp)
movl   $0x0,-0x88(%rbp)
movl   $0x0,-0x8c(%rbp)
movl   $0x0,-0x90(%rbp)
movl   $0x0,-0x94(%rbp)
movl   $0x0,-0x98(%rbp)
movl   $0x0,-0x9c(%rbp)
movl   $0x1,-0xa0(%rbp)
movl   $0x0,-0xa4(%rbp)
movl   $0x0,-0xa8(%rbp)
cmpl   $0x0,-0x64(%rbp)
jle    2512 <echange+0x13c2>
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
cmpl   $0xfa,-0x5c(%rbp)
jle    128d <echange+0x13d>
jmp    2512 <echange+0x13c2>
movl   $0x0,-0xac(%rbp)
mov    -0xac(%rbp),%eax
cmp    -0x54(%rbp),%eax
jge    12ef <echange+0x19f>
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%rcx
movslq -0xac(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
movsd  0x1d57(%rip),%xmm0
mulsd  (%rax,%rcx,8),%xmm0
call   1050 <cos@plt>
mov    0x10(%rbp),%rax
movslq -0xac(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0xac(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xac(%rbp)
jmp    1297 <echange+0x147>
movl   $0x0,-0xb0(%rbp)
mov    -0xb0(%rbp),%eax
cmp    -0x54(%rbp),%eax
jge    1347 <echange+0x1f7>
mov    -0xb0(%rbp),%edi
mov    -0x54(%rbp),%esi
mov    -0x68(%rbp),%edx
mov    0x10(%rbp),%rcx
mov    $0x0,%al
call   1060 <dd@plt>
cvtsi2sd %eax,%xmm0
mov    0x20(%rbp),%rax
movslq -0xb0(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0xb0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb0(%rbp)
jmp    12f9 <echange+0x1a9>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movl   $0x1,-0xc4(%rbp)
movl   $0x0,-0xc8(%rbp)
mov    -0xc8(%rbp),%eax
cmp    -0x54(%rbp),%eax
jge    1422 <echange+0x2d2>
mov    0x20(%rbp),%rax
movslq -0xc8(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x30(%rbp),%rax
mov    -0x20(%rbp),%rcx
movslq -0xc8(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
cvtsi2sdl -0xc4(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movslq -0xc8(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
mov    -0x38(%rbp),%rax
mov    -0x20(%rbp),%rcx
movslq -0xc8(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
divsd  (%rax,%rcx,8),%xmm0
addsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
xor    %eax,%eax
sub    -0xc4(%rbp),%eax
mov    %eax,-0xc4(%rbp)
mov    -0xc8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc8(%rbp)
jmp    1371 <echange+0x221>
movsd  -0xb8(%rbp),%xmm0
ff
divsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0x50(%rbp)
movsd  -0x50(%rbp),%xmm0
xorps  %xmm1,%xmm1
mov    $0x1,%eax
mov    $0xffffffff,%ecx
ucomisd %xmm1,%xmm0
cmova  %ecx,%eax
mov    %eax,-0x94(%rbp)
xor    %eax,%eax
sub    -0x94(%rbp),%eax
cvtsi2sd %eax,%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movl   $0x1,-0xcc(%rbp)
movl   $0x0,-0xd0(%rbp)
mov    -0xd0(%rbp),%eax
cmp    -0x54(%rbp),%eax
jge    150e <echange+0x3be>
mov    -0x30(%rbp),%rax
mov    -0x20(%rbp),%rcx
movslq -0xd0(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
movsd  (%rax,%rcx,8),%xmm0
cvtsi2sdl -0x94(%rbp),%xmm1
ff
mulsd  -0x50(%rbp),%xmm1
cvtsi2sdl -0xcc(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
mov    -0x38(%rbp),%rax
mov    -0x20(%rbp),%rcx
movslq -0xd0(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
divsd  (%rax,%rcx,8),%xmm1
addsd  %xmm1,%xmm0
mov    0x18(%rbp),%rax
movslq -0xd0(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
xor    %eax,%eax
sub    -0xcc(%rbp),%eax
mov    %eax,-0xcc(%rbp)
mov    -0xd0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xd0(%rbp)
jmp    1480 <echange+0x330>
movsd  -0x50(%rbp),%xmm1
movsd  -0x48(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jb     154a <echange+0x3fa>
lea    0x1af7(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0x1b1a(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
movl   $0xffffffff,-0xc(%rbp)
jmp    2519 <echange+0x13c9>
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movl   $0x0,-0x64(%rbp)
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x84(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x54(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x88(%rbp)
movl   $0xffffffff,-0x8c(%rbp)
ff ff ff
xor    %eax,%eax
sub    -0x94(%rbp),%eax
mov    %eax,-0x98(%rbp)
movl   $0x1,-0xa0(%rbp)
mov    -0xa0(%rbp),%eax
cmp    -0x58(%rbp),%eax
jge    1c31 <echange+0xae1>
mov    -0x20(%rbp),%rax
movslq -0xa0(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x90(%rbp)
mov    -0x20(%rbp),%rax
mov    -0xa0(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
add    $0x1,%eax
mov    %eax,-0xa8(%rbp)
xor    %eax,%eax
sub    -0x98(%rbp),%eax
mov    %eax,-0x98(%rbp)
cmpl   $0x2,-0xa0(%rbp)
jne    1603 <echange+0x4b3>
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movl   $0x1,-0xa4(%rbp)
mov    -0xa8(%rbp),%eax
cmp    -0x90(%rbp),%eax
jge    17a1 <echange+0x651>
mov    -0x28(%rbp),%rdi
mov    0x20(%rbp),%rsi
mov    0x10(%rbp),%rdx
mov    0x18(%rbp),%rcx
mov    -0x30(%rbp),%r8
mov    -0x38(%rbp),%r9
movsd  -0x40(%rbp),%xmm0
mov    -0x98(%rbp),%ebx
mov    -0xa8(%rbp),%r11d
mov    -0x54(%rbp),%r10d
lea    -0x78(%rbp),%rax
mov    %ebx,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10d,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x1,%al
call   1030 <gee@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    179c <echange+0x64c>
cvtsi2sdl -0x98(%rbp),%xmm0
ff
mulsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0xa8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa8(%rbp)
mov    -0xa8(%rbp),%eax
cmp    -0x90(%rbp),%eax
jge    174f <echange+0x5ff>
mov    -0x28(%rbp),%rdi
mov    0x20(%rbp),%rsi
mov    0x10(%rbp),%rdx
mov    0x18(%rbp),%rcx
mov    -0x30(%rbp),%r8
mov    -0x38(%rbp),%r9
movsd  -0x40(%rbp),%xmm0
mov    -0x98(%rbp),%ebx
mov    -0xa8(%rbp),%r11d
mov    -0x54(%rbp),%r10d
lea    -0x78(%rbp),%rax
mov    %ebx,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10d,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x1,%al
call   1030 <gee@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x80(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x80(%rbp),%xmm0
jb     1729 <echange+0x5d9>
jmp    174f <echange+0x5ff>
cvtsi2sdl -0x98(%rbp),%xmm0
ff
mulsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0xa8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa8(%rbp)
jmp    16b0 <echange+0x560>
mov    -0xa8(%rbp),%edx
sub    $0x1,%edx
mov    -0x20(%rbp),%rax
mov    -0xa0(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0xa0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa0(%rbp)
mov    -0xa8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x8c(%rbp)
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
movl   $0x0,-0xa4(%rbp)
jmp    17a1 <echange+0x651>
cmpl   $0x0,-0xa4(%rbp)
je     1c2c <echange+0xadc>
mov    -0xa8(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0xa8(%rbp)
mov    -0xa8(%rbp),%eax
cmp    -0x8c(%rbp),%eax
jle    1858 <echange+0x708>
mov    -0x28(%rbp),%rdi
mov    0x20(%rbp),%rsi
mov    0x10(%rbp),%rdx
mov    0x18(%rbp),%rcx
mov    -0x30(%rbp),%r8
mov    -0x38(%rbp),%r9
movsd  -0x40(%rbp),%xmm0
mov    -0x98(%rbp),%ebx
mov    -0xa8(%rbp),%r11d
mov    -0x54(%rbp),%r10d
lea    -0x78(%rbp),%rax
mov    %ebx,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10d,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x1,%al
call   1030 <gee@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
ja     183f <echange+0x6ef>
cmpl   $0x0,-0x64(%rbp)
jle    1844 <echange+0x6f4>
jmp    1858 <echange+0x708>
mov    -0xa8(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xa8(%rbp)
jmp    17bd <echange+0x66d>
mov    -0xa8(%rbp),%eax
cmp    -0x8c(%rbp),%eax
jg     1ad6 <echange+0x986>
mov    -0x20(%rbp),%rax
mov    -0xa0(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
add    $0x1,%eax
mov    %eax,-0xa8(%rbp)
cmpl   $0x0,-0x64(%rbp)
jle    18d8 <echange+0x788>
mov    -0xa8(%rbp),%edx
sub    $0x1,%edx
mov    -0x20(%rbp),%rax
mov    -0xa0(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0xa0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa0(%rbp)
mov    -0xa8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x8c(%rbp)
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    1ad1 <echange+0x981>
mov    -0xa8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa8(%rbp)
mov    -0xa8(%rbp),%eax
cmp    -0x90(%rbp),%eax
jge    1978 <echange+0x828>
mov    -0x28(%rbp),%rdi
mov    0x20(%rbp),%rsi
mov    0x10(%rbp),%rdx
mov    0x18(%rbp),%rcx
mov    -0x30(%rbp),%r8
mov    -0x38(%rbp),%r9
movsd  -0x40(%rbp),%xmm0
mov    -0x98(%rbp),%ebx
mov    -0xa8(%rbp),%r11d
mov    -0x54(%rbp),%r10d
lea    -0x78(%rbp),%rax
mov    %ebx,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10d,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x1,%al
call   1030 <gee@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1964 <echange+0x814>
jmp    1978 <echange+0x828>
mov    -0xa8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa8(%rbp)
jmp    18e7 <echange+0x797>
mov    -0xa8(%rbp),%eax
cmp    -0x90(%rbp),%eax
jge    1aa4 <echange+0x954>
movsd  -0x80(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1aa4 <echange+0x954>
cvtsi2sdl -0x98(%rbp),%xmm0
ff
mulsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0xa8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa8(%rbp)
mov    -0xa8(%rbp),%eax
cmp    -0x90(%rbp),%eax
jge    1a5c <echange+0x90c>
mov    -0x28(%rbp),%rdi
mov    0x20(%rbp),%rsi
mov    0x10(%rbp),%rdx
mov    0x18(%rbp),%rcx
mov    -0x30(%rbp),%r8
mov    -0x38(%rbp),%r9
movsd  -0x40(%rbp),%xmm0
mov    -0x98(%rbp),%ebx
mov    -0xa8(%rbp),%r11d
mov    -0x54(%rbp),%r10d
lea    -0x78(%rbp),%rax
mov    %ebx,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10d,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x1,%al
call   1030 <gee@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x80(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x80(%rbp),%xmm0
jb     1a36 <echange+0x8e6>
jmp    1a5c <echange+0x90c>
cvtsi2sdl -0x98(%rbp),%xmm0
ff
mulsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0xa8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa8(%rbp)
jmp    19bd <echange+0x86d>
mov    -0xa8(%rbp),%edx
sub    $0x1,%edx
mov    -0x20(%rbp),%rax
mov    -0xa0(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0xa0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa0(%rbp)
mov    -0xa8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x8c(%rbp)
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    1acc <echange+0x97c>
mov    -0x20(%rbp),%rax
mov    -0xa0(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x8c(%rbp)
mov    -0xa0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa0(%rbp)
jmp    1ad1 <echange+0x981>
jmp    1c27 <echange+0xad7>
movsd  -0x80(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1bfa <echange+0xaaa>
cvtsi2sdl -0x98(%rbp),%xmm0
ff
mulsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0xa8(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xa8(%rbp)
mov    -0xa8(%rbp),%eax
cmp    -0x8c(%rbp),%eax
jle    1ba8 <echange+0xa58>
mov    -0x28(%rbp),%rdi
mov    0x20(%rbp),%rsi
mov    0x10(%rbp),%rdx
mov    0x18(%rbp),%rcx
mov    -0x30(%rbp),%r8
mov    -0x38(%rbp),%r9
movsd  -0x40(%rbp),%xmm0
mov    -0x98(%rbp),%ebx
mov    -0xa8(%rbp),%r11d
mov    -0x54(%rbp),%r10d
lea    -0x78(%rbp),%rax
mov    %ebx,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10d,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x1,%al
call   1030 <gee@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x80(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x80(%rbp),%xmm0
jb     1b82 <echange+0xa32>
jmp    1ba8 <echange+0xa58>
cvtsi2sdl -0x98(%rbp),%xmm0
ff
mulsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0xa8(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xa8(%rbp)
jmp    1b09 <echange+0x9b9>
mov    -0x20(%rbp),%rax
mov    -0xa0(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x8c(%rbp)
mov    -0xa8(%rbp),%edx
add    $0x1,%edx
mov    -0x20(%rbp),%rax
mov    -0xa0(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0xa0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa0(%rbp)
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    1c22 <echange+0xad2>
mov    -0x20(%rbp),%rax
mov    -0xa0(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x8c(%rbp)
mov    -0xa0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa0(%rbp)
jmp    1c27 <echange+0xad7>
jmp    1c2c <echange+0xadc>
jmp    159f <echange+0x44f>
jmp    1c36 <echange+0xae6>
mov    -0xa0(%rbp),%eax
cmp    -0x58(%rbp),%eax
jne    2164 <echange+0x1014>
mov    -0x84(%rbp),%eax
mov    -0x20(%rbp),%rcx
cmp    (%rcx),%eax
jge    1c68 <echange+0xb18>
mov    -0x84(%rbp),%eax
mov    %eax,-0xe4(%rbp)
jmp    1c74 <echange+0xb24>
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xe4(%rbp)
mov    -0xe4(%rbp),%eax
mov    %eax,-0x84(%rbp)
mov    -0x88(%rbp),%eax
mov    -0x20(%rbp),%rcx
mov    -0x54(%rbp),%edx
sub    $0x1,%edx
movslq %edx,%rdx
cmp    (%rcx,%rdx,4),%eax
jle    1cad <echange+0xb5d>
mov    -0x88(%rbp),%eax
mov    %eax,-0xe8(%rbp)
jmp    1cc3 <echange+0xb73>
mov    -0x20(%rbp),%rax
mov    -0x54(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0xe8(%rbp)
mov    -0xe8(%rbp),%eax
mov    %eax,-0x88(%rbp)
mov    -0x98(%rbp),%eax
mov    %eax,-0x9c(%rbp)
xor    %eax,%eax
sub    -0x94(%rbp),%eax
mov    %eax,-0x98(%rbp)
movl   $0x0,-0xa8(%rbp)
mov    -0x84(%rbp),%eax
mov    %eax,-0x90(%rbp)
movsd  0x1309(%rip),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movl   $0x1,-0x60(%rbp)
movl   $0x1,-0xa4(%rbp)
mov    -0xa8(%rbp),%eax
cmp    -0x90(%rbp),%eax
jge    1ec9 <echange+0xd79>
mov    -0x28(%rbp),%rdi
mov    0x20(%rbp),%rsi
mov    0x10(%rbp),%rdx
mov    0x18(%rbp),%rcx
mov    -0x30(%rbp),%r8
mov    -0x38(%rbp),%r9
movsd  -0x40(%rbp),%xmm0
mov    -0x98(%rbp),%ebx
mov    -0xa8(%rbp),%r11d
mov    -0x54(%rbp),%r10d
lea    -0x78(%rbp),%rax
mov    %ebx,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10d,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x1,%al
call   1030 <gee@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1eb5 <echange+0xd65>
cvtsi2sdl -0x98(%rbp),%xmm0
ff
mulsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x58(%rbp),%eax
mov    %eax,-0xa0(%rbp)
mov    -0xa8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa8(%rbp)
mov    -0xa8(%rbp),%eax
cmp    -0x90(%rbp),%eax
jge    1e63 <echange+0xd13>
mov    -0x28(%rbp),%rdi
mov    0x20(%rbp),%rsi
mov    0x10(%rbp),%rdx
mov    0x18(%rbp),%rcx
mov    -0x30(%rbp),%r8
mov    -0x38(%rbp),%r9
movsd  -0x40(%rbp),%xmm0
mov    -0x98(%rbp),%ebx
mov    -0xa8(%rbp),%r11d
mov    -0x54(%rbp),%r10d
lea    -0x78(%rbp),%rax
mov    %ebx,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10d,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x1,%al
call   1030 <gee@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x80(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x80(%rbp),%xmm0
jb     1e3d <echange+0xced>
jmp    1e63 <echange+0xd13>
cvtsi2sdl -0x98(%rbp),%xmm0
ff
mulsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0xa8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa8(%rbp)
jmp    1dc4 <echange+0xc74>
mov    -0xa8(%rbp),%edx
sub    $0x1,%edx
mov    -0x20(%rbp),%rax
mov    -0xa0(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0xa0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa0(%rbp)
mov    -0xa8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x8c(%rbp)
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
movl   $0x0,-0xa4(%rbp)
jmp    1ec9 <echange+0xd79>
mov    -0xa8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa8(%rbp)
jmp    1d22 <echange+0xbd2>
cmpl   $0x0,-0xa4(%rbp)
je     215f <echange+0x100f>
movl   $0x6,-0x60(%rbp)
mov    -0x14(%rbp),%eax
mov    %eax,-0xa8(%rbp)
mov    -0x88(%rbp),%eax
mov    %eax,-0x8c(%rbp)
xor    %eax,%eax
sub    -0x9c(%rbp),%eax
mov    %eax,-0x98(%rbp)
movsd  0x1108(%rip),%xmm0
mulsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0xa8(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xa8(%rbp)
mov    -0xa8(%rbp),%eax
cmp    -0x8c(%rbp),%eax
jle    20db <echange+0xf8b>
mov    -0x28(%rbp),%rdi
mov    0x20(%rbp),%rsi
mov    0x10(%rbp),%rdx
mov    0x18(%rbp),%rcx
mov    -0x30(%rbp),%r8
mov    -0x38(%rbp),%r9
movsd  -0x40(%rbp),%xmm0
mov    -0x98(%rbp),%ebx
mov    -0xa8(%rbp),%r11d
mov    -0x54(%rbp),%r10d
lea    -0x78(%rbp),%rax
mov    %ebx,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10d,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x1,%al
call   1030 <gee@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    20c7 <echange+0xf77>
mov    -0x58(%rbp),%eax
mov    %eax,-0xa0(%rbp)
cvtsi2sdl -0x98(%rbp),%xmm0
ff
mulsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x60(%rbp),%eax
add    $0xa,%eax
mov    %eax,-0x60(%rbp)
mov    -0xa8(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xa8(%rbp)
mov    -0xa8(%rbp),%eax
cmp    -0x8c(%rbp),%eax
jle    206b <echange+0xf1b>
mov    -0x28(%rbp),%rdi
mov    0x20(%rbp),%rsi
mov    0x10(%rbp),%rdx
mov    0x18(%rbp),%rcx
mov    -0x30(%rbp),%r8
mov    -0x38(%rbp),%r9
movsd  -0x40(%rbp),%xmm0
mov    -0x98(%rbp),%ebx
mov    -0xa8(%rbp),%r11d
mov    -0x54(%rbp),%r10d
lea    -0x78(%rbp),%rax
mov    %ebx,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10d,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x1,%al
call   1030 <gee@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x80(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x80(%rbp),%xmm0
jb     2045 <echange+0xef5>
jmp    206b <echange+0xf1b>
cvtsi2sdl -0x98(%rbp),%xmm0
ff
mulsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0xa8(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xa8(%rbp)
jmp    1fcc <echange+0xe7c>
mov    -0x20(%rbp),%rax
mov    -0xa0(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x8c(%rbp)
mov    -0xa8(%rbp),%edx
add    $0x1,%edx
mov    -0x20(%rbp),%rax
mov    -0xa0(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0xa0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa0(%rbp)
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
movl   $0x0,-0xa4(%rbp)
jmp    20db <echange+0xf8b>
mov    -0xa8(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xa8(%rbp)
jmp    1f21 <echange+0xdd1>
cmpl   $0x0,-0xa4(%rbp)
je     215a <echange+0x100a>
cmpl   $0x6,-0x60(%rbp)
je     2155 <echange+0x1005>
mov    -0x10(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0xd4(%rbp)
cmpl   $0x0,-0xd4(%rbp)
jle    2140 <echange+0xff0>
mov    -0x20(%rbp),%rax
mov    -0xd4(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x20(%rbp),%rax
movslq -0xd4(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0xd4(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xd4(%rbp)
jmp    20fe <echange+0xfae>
mov    -0x84(%rbp),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    2164 <echange+0x1014>
jmp    215f <echange+0x100f>
jmp    1c36 <echange+0xae6>
mov    -0xa0(%rbp),%eax
cmp    -0x58(%rbp),%eax
jle    250d <echange+0x13bd>
cmpl   $0x9,-0x60(%rbp)
jle    21ef <echange+0x109f>
movl   $0x0,-0xd8(%rbp)
mov    -0xd8(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    21cb <echange+0x107b>
mov    -0x20(%rbp),%rax
mov    -0xd8(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x20(%rbp),%rax
movslq -0xd8(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0xd8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xd8(%rbp)
jmp    2187 <echange+0x1037>
mov    -0x20(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x20(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    2508 <echange+0x13b8>
movsd  -0x70(%rbp),%xmm0
ucomisd -0x40(%rbp),%xmm0
jbe    2211 <echange+0x10c1>
movsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
jmp    221e <echange+0x10ce>
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x70(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x58(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x84(%rbp)
mov    -0x14(%rbp),%eax
mov    %eax,-0xa8(%rbp)
mov    -0x88(%rbp),%eax
mov    %eax,-0x8c(%rbp)
xor    %eax,%eax
sub    -0x9c(%rbp),%eax
mov    %eax,-0x98(%rbp)
movsd  0xda4(%rip),%xmm0
mulsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0xa8(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xa8(%rbp)
mov    -0xa8(%rbp),%eax
cmp    -0x8c(%rbp),%eax
jle    2499 <echange+0x1349>
mov    -0x28(%rbp),%rdi
mov    0x20(%rbp),%rsi
mov    0x10(%rbp),%rdx
mov    0x18(%rbp),%rcx
mov    -0x30(%rbp),%r8
mov    -0x38(%rbp),%r9
movsd  -0x40(%rbp),%xmm0
mov    -0x98(%rbp),%ebx
mov    -0xa8(%rbp),%r11d
mov    -0x54(%rbp),%r10d
lea    -0x78(%rbp),%rax
mov    %ebx,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10d,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x1,%al
call   1030 <gee@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    2485 <echange+0x1335>
mov    -0x58(%rbp),%eax
mov    %eax,-0xa0(%rbp)
cvtsi2sdl -0x98(%rbp),%xmm0
ff
mulsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x60(%rbp),%eax
add    $0xa,%eax
mov    %eax,-0x60(%rbp)
mov    -0xa8(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xa8(%rbp)
mov    -0xa8(%rbp),%eax
cmp    -0x8c(%rbp),%eax
jle    23cf <echange+0x127f>
mov    -0x28(%rbp),%rdi
mov    0x20(%rbp),%rsi
mov    0x10(%rbp),%rdx
mov    0x18(%rbp),%rcx
mov    -0x30(%rbp),%r8
mov    -0x38(%rbp),%r9
movsd  -0x40(%rbp),%xmm0
mov    -0x98(%rbp),%ebx
mov    -0xa8(%rbp),%r11d
mov    -0x54(%rbp),%r10d
lea    -0x78(%rbp),%rax
mov    %ebx,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10d,0x10(%rsp)
mov    %rax,0x18(%rsp)
mov    $0x1,%al
call   1030 <gee@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x80(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x80(%rbp),%xmm0
jb     23a9 <echange+0x1259>
jmp    23cf <echange+0x127f>
cvtsi2sdl -0x98(%rbp),%xmm0
ff
mulsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0xa8(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xa8(%rbp)
jmp    2330 <echange+0x11e0>
mov    -0x20(%rbp),%rax
mov    -0xa0(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x8c(%rbp)
mov    -0xa8(%rbp),%edx
add    $0x1,%edx
mov    -0x20(%rbp),%rax
mov    -0xa0(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0xa0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa0(%rbp)
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
movl   $0x0,-0xdc(%rbp)
mov    -0xdc(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    246a <echange+0x131a>
mov    -0x20(%rbp),%rax
mov    -0xdc(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x20(%rbp),%rax
movslq -0xdc(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0xdc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xdc(%rbp)
jmp    2426 <echange+0x12d6>
mov    -0x20(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x20(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    2499 <echange+0x1349>
mov    -0xa8(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xa8(%rbp)
jmp    2285 <echange+0x1135>
cmpl   $0x6,-0x60(%rbp)
je     2503 <echange+0x13b3>
mov    -0x10(%rbp),%eax
mov    %eax,-0xe0(%rbp)
cmpl   $0x0,-0xe0(%rbp)
jle    24ee <echange+0x139e>
mov    -0x20(%rbp),%rax
mov    -0xe0(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x20(%rbp),%rax
movslq -0xe0(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0xe0(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xe0(%rbp)
jmp    24ac <echange+0x135c>
mov    -0x84(%rbp),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    2508 <echange+0x13b8>
jmp    250d <echange+0x13bd>
jmp    1268 <echange+0x118>
movl   $0x0,-0xc(%rbp)
mov    -0xc(%rbp),%eax
add    $0x108,%rsp
pop    %rbx
pop    %rbp
ret

x86 assembly (clang, -O2):
<echange>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x158,%rsp
mov    %rdx,%r11
lea    0x2(%rdi),%ebx
mov    %ebx,0x30(%rsp)
lea    -0x1(%rdi),%r15d
movslq %r15d,%r14
imul   $0xffffffff88888889,%r14,%rax
shr    $0x20,%rax
lea    (%rax,%rdi,1),%ebp
add    $0xffffffff,%ebp
mov    %ebp,%eax
sar    $0x3,%eax
mov    %rax,0x80(%rsp)
shr    $0x1f,%ebp
mov    %rbp,0x8(%rsp)
movslq %edi,%rbp
mov    %rbp,0xb8(%rsp)
cmp    $0x3,%ebx
mov    $0x2,%eax
cmovge %ebx,%eax
mov    %rax,0x108(%rsp)
mov    %ebp,%r12d
lea    0x1(%r15),%rax
sub    %r12,%rax
mov    %rax,0x40(%rsp)
mov    %r12d,%eax
and    $0xfffffff8,%eax
mov    %rax,0x148(%rsp)
lea    -0x8(%rax),%r13
mov    %r13,0x140(%rsp)
shr    $0x3,%r13
add    $0x1,%r13
mov    %rdi,0xc0(%rsp)
lea    0x1(%rdi),%r10d
mov    %r10d,%eax
and    $0xfffffffe,%eax
mov    %rax,0x150(%rsp)
lea    -0x1(%r12),%rax
cmp    %eax,%r14d
setb   %dl
mov    %rax,%rdi
shr    $0x20,%rdi
setne  %bl
or     %dl,%bl
mov    $0x4,%edx
mul    %rdx
seto   %dl
mov    %r11,%r14
lea    (%r11,%r12,4),%rbp
mov    %rbp,%rdi
sub    %rax,%rdi
mov    %rbp,0x128(%rsp)
cmp    %rbp,%rdi
seta   %r11b
lea    (%r14,%r15,4),%rbp
mov    %rbp,%rdi
sub    %rax,%rdi
or     %dl,%r11b
cmp    %rbp,%rdi
seta   %al
mov    %rcx,0x38(%rsp)
mov    %r9,0x50(%rsp)
mov    %r8,0x48(%rsp)
or     %dl,%al
or     %bl,%r11b
mov    %r14,%r9
or     %al,%r11b
mov    %r11b,0x5b(%rsp)
lea    (%r14,%r15,4),%rax
add    $0x4,%rax
lea    0x4(%r14),%rcx
mov    %rcx,0xf8(%rsp)
cmp    %rax,%rcx
mov    0x40(%rsp),%rax
lea    (%r14,%rax,4),%rax
setb   %cl
lea    (%r14,%r12,4),%rdx
add    $0x4,%rdx
cmp    %rdx,%rax
mov    0x80(%rsp),%rax
mov    0x8(%rsp),%rdx
lea    0x1(%rax,%rdx,1),%eax
mov    %eax,0xe4(%rsp)
setb   %al
and    %cl,%al
mov    %al,0x5a(%rsp)
movq   $0x0,0x18(%rsp)
mov    %r12d,%eax
and    $0x7,%eax
mov    %rax,0x130(%rsp)
mov    %r13,%rax
mov    %r13,0x138(%rsp)
and    $0xfffffffffffffffe,%r13
mov    %r13,0x120(%rsp)
mov    0x30(%rsp),%r13d
movsd  0x1d05(%rip),%xmm0
movsd  0x1d0d(%rip),%xmm5
xorpd  %xmm7,%xmm7
xorpd  %xmm6,%xmm6
movapd %xmm0,0x80(%rsp)
mov    $0xffffffff,%ecx
movslq %r10d,%rax
mov    %rax,0xb0(%rsp)
mov    0xb8(%rsp),%rax
lea    0x3(%rax),%eax
mov    %eax,0xa4(%rsp)
mov    %rsi,0xd0(%rsp)
lea    -0x1(%rsi),%eax
mov    %rax,0x100(%rsp)
lea    0x0(,%r12,4),%rax
mov    %rax,0xf0(%rsp)
lea    -0x8(%r12,%rcx,1),%rax
mov    %rax,0x118(%rsp)
mov    %r12,0xd8(%rsp)
lea    (%r12,%rcx,1),%rax
xor    %esi,%esi
xor    %r15d,%r15d
xor    %ecx,%ecx
mov    %r14,0x28(%rsp)
mov    %r10,0x8(%rsp)
mov    %rax,0x110(%rsp)
jmp    13b6 <echange+0x266>
mov    $0x6,%r15d
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    0x74(%rsp),%ecx
mov    0x40(%rsp),%edx
add    $0x1,%ecx
mov    %r11d,%esi
test   %edx,%edx
jle    272e <echange+0x15de>
movapd 0x80(%rsp),%xmm0
cmp    $0xfa,%ecx
je     272e <echange+0x15de>
mov    %esi,0xec(%rsp)
mov    %ecx,0x74(%rsp)
mov    $0xffffffff,%eax
mov    %rax,0x98(%rsp)
mov    $0x1,%r14d
mov    0xc0(%rsp),%r12
test   %r12d,%r12d
mov    %r15d,0x5c(%rsp)
js     1490 <echange+0x340>
mov    0x150(%rsp),%r14
movsd  %xmm6,0x10(%rsp)
movsd  %xmm7,0x20(%rsp)
movsd  %xmm0,0x40(%rsp)
mov    %r13d,%r12d
je     14c0 <echange+0x370>
mov    %r9,%r13
mov    0x190(%rsp),%r15
xor    %ebx,%ebx
mov    0x38(%rsp),%rbp
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movslq 0x0(%r13,%rbx,4),%rax
movsd  0x0(%rbp,%rax,8),%xmm0
mulsd  %xmm5,%xmm0
call   1060 <cos@plt>
movsd  %xmm0,(%r15,%rbx,8)
movslq 0x4(%r13,%rbx,4),%rax
movsd  0x0(%rbp,%rax,8),%xmm0
mulsd  0x1ba3(%rip),%xmm0
call   1060 <cos@plt>
movsd  0x1b96(%rip),%xmm5
movsd  %xmm0,0x8(%r15,%rbx,8)
add    $0x2,%rbx
cmp    %rbx,%r14
jne    1440 <echange+0x2f0>
jmp    14c2 <echange+0x372>
nopl   0x0(%rax)
mov    $0x1,%eax
movsd  0x1b63(%rip),%xmm0
movsd  %xmm0,0xa8(%rsp)
movsd  0x1b5a(%rip),%xmm0
movapd %xmm0,0x80(%rsp)
jmp    1743 <echange+0x5f3>
nopl   0x0(%rax)
xor    %ebx,%ebx
mov    0x8(%rsp),%r10
test   $0x1,%r10b
je     1500 <echange+0x3b0>
mov    0x28(%rsp),%rax
movslq (%rax,%rbx,4),%rax
mov    0x38(%rsp),%rcx
movsd  (%rcx,%rax,8),%xmm0
mulsd  0x1b28(%rip),%xmm0
mov    %r10,%rbp
call   1060 <cos@plt>
mov    %rbp,%r10
mov    0x190(%rsp),%rax
movsd  %xmm0,(%rax,%rbx,8)
cmpl   $0x0,0xc0(%rsp)
mov    0xe4(%rsp),%ebx
mov    %r12d,%r13d
js     16f0 <echange+0x5a0>
xor    %r14d,%r14d
mov    0x1a0(%rsp),%r15
mov    0x190(%rsp),%r12
nopl   0x0(%rax,%rax,1)
mov    %r14d,%edi
mov    %r10d,%esi
mov    %ebx,%edx
mov    %r12,%rcx
xor    %eax,%eax
mov    %r10,%rbp
call   1070 <dd@plt>
mov    %rbp,%r10
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,(%r15,%r14,8)
add    $0x1,%r14
cmp    %r14,%rbp
jne    1530 <echange+0x3e0>
mov    $0x1,%eax
movsd  0x1a95(%rip),%xmm0
movsd  %xmm0,0xa8(%rsp)
movsd  0x1a8c(%rip),%xmm0
movapd %xmm0,0x80(%rsp)
mov    0xc0(%rsp),%r12
test   %r12d,%r12d
mov    0x28(%rsp),%r9
movsd  0x1a73(%rip),%xmm5
movsd  0x10(%rsp),%xmm6
mov    0x5c(%rsp),%r15d
movsd  0x20(%rsp),%xmm7
mov    $0x1,%r14d
js     1743 <echange+0x5f3>
xorpd  %xmm1,%xmm1
mov    $0x1,%eax
xor    %ecx,%ecx
xorpd  %xmm0,%xmm0
mov    0x50(%rsp),%rbp
mov    0x1a0(%rsp),%rsi
mov    0x48(%rsp),%rbx
nopl   0x0(%rax,%rax,1)
movsd  (%rsi,%rcx,8),%xmm2
movslq (%r9,%rcx,4),%rdx
movsd  (%rbx,%rdx,8),%xmm3
mulsd  %xmm2,%xmm3
xorps  %xmm4,%xmm4
cvtsi2sd %eax,%xmm4
addsd  %xmm3,%xmm0
mulsd  %xmm2,%xmm4
divsd  0x0(%rbp,%rdx,8),%xmm4
addsd  %xmm4,%xmm1
neg    %eax
add    $0x1,%rcx
cmp    %rcx,%r10
jne    15e0 <echange+0x490>
divsd  %xmm1,%xmm0
xor    %edx,%edx
xor    %eax,%eax
ucomisd 0x19fa(%rip),%xmm0
seta   %dl
setbe  %r8b
lea    -0x1(%rdx,%rdx,1),%ecx
mov    %rcx,0x98(%rsp)
xorps  %xmm2,%xmm2
cvtsi2sd %ecx,%xmm2
movapd %xmm0,%xmm1
movsd  %xmm2,0xa8(%rsp)
mulsd  %xmm2,%xmm1
movapd %xmm1,0x80(%rsp)
test   %r12d,%r12d
mov    0x198(%rsp),%rcx
js     16ca <echange+0x57a>
movapd 0x80(%rsp),%xmm3
movapd %xmm3,%xmm2
xorpd  0x19b4(%rip),%xmm2
xorpd  %xmm1,%xmm1
cmpltsd %xmm0,%xmm1
andpd  %xmm1,%xmm2
andnpd %xmm3,%xmm1
orpd   %xmm2,%xmm1
mov    $0x1,%edx
xor    %esi,%esi
nopl   0x0(%rax,%rax,1)
movslq (%r9,%rsi,4),%rdi
xorps  %xmm0,%xmm0
cvtsi2sd %edx,%xmm0
mulsd  %xmm1,%xmm0
divsd  0x0(%rbp,%rdi,8),%xmm0
addsd  (%rbx,%rdi,8),%xmm0
movsd  %xmm0,(%rcx,%rsi,8)
neg    %edx
add    $0x1,%rsi
cmp    %rsi,%r10
jne    16a0 <echange+0x550>
movsd  0x40(%rsp),%xmm0
ucomisd 0x80(%rsp),%xmm0
jae    2742 <echange+0x15f2>
mov    %r8b,%al
add    %eax,%eax
add    $0xffffffff,%eax
jmp    1743 <echange+0x5f3>
nopl   0x0(%rax)
mov    $0x1,%eax
movsd  0x1903(%rip),%xmm0
movsd  %xmm0,0xa8(%rsp)
movsd  0x18fa(%rip),%xmm0
movapd %xmm0,0x80(%rsp)
mov    0x28(%rsp),%r9
movsd  0x18ec(%rip),%xmm5
movsd  0x10(%rsp),%xmm6
mov    0x5c(%rsp),%r15d
movsd  0x20(%rsp),%xmm7
mov    0xc0(%rsp),%r12
mov    $0x1,%r14d
mov    (%r9),%edx
mov    0xb8(%rsp),%rcx
mov    (%r9,%rcx,4),%ecx
mov    %ecx,0x34(%rsp)
test   %r12d,%r12d
mov    %edx,0xe8(%rsp)
js     2050 <echange+0xf00>
movl   $0x0,0x40(%rsp)
mov    $0xffffffff,%r15d
mov    $0x1,%esi
mov    %edx,%r12d
mov    0x98(%rsp),%rcx
mov    %ecx,0xcc(%rsp)
nopl   0x0(%rax,%rax,1)
mov    %eax,%r11d
lea    0x1(%r12),%ebp
movapd %xmm6,%xmm1
cmp    $0x2,%rsi
je     17a6 <echange+0x656>
movapd %xmm7,%xmm1
mov    (%r9,%rsi,4),%r13d
cmp    %r13d,%ebp
mov    %r11,%r14
mov    %rsi,0x60(%rsp)
movsd  %xmm1,0x68(%rsp)
jge    1900 <echange+0x7b0>
mov    0x38(%rsp),%rdi
mov    0x1a0(%rsp),%rsi
mov    0x190(%rsp),%rdx
mov    0x198(%rsp),%rcx
mov    0x48(%rsp),%r8
mov    0x50(%rsp),%r9
movapd 0x80(%rsp),%xmm0
mov    $0x1,%al
lea    0x18(%rsp),%rbx
push   %rbx
push   0x10(%rsp)
push   %rbp
push   %r11
call   1040 <gee@plt>
movsd  0x88(%rsp),%xmm1
mov    0x80(%rsp),%rsi
mov    0x48(%rsp),%r9
mov    %r14,%r11
movsd  0x17ea(%rip),%xmm5
add    $0x20,%rsp
test   %eax,%eax
jle    1900 <echange+0x7b0>
xorps  %xmm0,%xmm0
cvtsi2sd %r11d,%xmm0
add    $0x2,%r12d
movsd  0x18(%rsp),%xmm6
mulsd  %xmm0,%xmm6
cmp    %r13d,%r12d
jge    1afd <echange+0x9ad>
mov    0x8(%rsp),%r10
mov    0x48(%rsp),%rbp
movsd  %xmm0,0x20(%rsp)
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movsd  %xmm6,0x10(%rsp)
mov    0x38(%rsp),%rdi
mov    0x1a0(%rsp),%rsi
mov    0x190(%rsp),%rdx
mov    0x198(%rsp),%rcx
mov    %rbp,%r8
mov    0x50(%rsp),%r9
movapd %xmm6,%xmm0
mov    $0x1,%al
lea    0x18(%rsp),%rbx
push   %rbx
mov    %r10,%r15
push   %r10
push   %r12
push   %r11
call   1040 <gee@plt>
add    $0x20,%rsp
test   %eax,%eax
jle    1bbd <echange+0xa6d>
add    $0x1,%r12d
movsd  0x18(%rsp),%xmm6
movsd  0x20(%rsp),%xmm0
mulsd  %xmm0,%xmm6
cmp    %r12d,%r13d
mov    %r14,%r11
mov    %r15,%r10
jne    1870 <echange+0x720>
mov    %r13d,%r12d
movsd  0x1725(%rip),%xmm5
mov    0x28(%rsp),%r9
jmp    1bd6 <echange+0xa86>
cs nopw 0x0(%rax,%rax,1)
nop
lea    -0x1(%r12),%ebp
cmp    %r15d,%ebp
jle    19b0 <echange+0x860>
add    $0xfffffffd,%r12d
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    0x38(%rsp),%rdi
mov    0x1a0(%rsp),%rsi
mov    0x190(%rsp),%rdx
mov    0x198(%rsp),%rcx
mov    0x48(%rsp),%r8
mov    0x50(%rsp),%r9
movapd 0x80(%rsp),%xmm0
mov    $0x1,%al
lea    0x18(%rsp),%rbx
push   %rbx
push   0x10(%rsp)
push   %rbp
push   %r11
call   1040 <gee@plt>
add    $0x20,%rsp
test   %eax,%eax
jg     19db <echange+0x88b>
cmpl   $0x0,0x40(%rsp)
jg     19db <echange+0x88b>
add    $0xffffffff,%ebp
add    $0xffffffff,%r12d
cmp    %r15d,%ebp
mov    %r14,%r11
jg     1920 <echange+0x7d0>
mov    0x28(%rsp),%rax
mov    0x60(%rsp),%rsi
mov    -0x4(%rax,%rsi,4),%r15d
mov    0x8(%rsp),%r10
mov    0x50(%rsp),%r12
movsd  0x166d(%rip),%xmm5
movsd  0x68(%rsp),%xmm1
jmp    1b11 <echange+0x9c1>
xchg   %ax,%ax
mov    -0x4(%r9,%rsi,4),%r15d
mov    0x40(%rsp),%eax
test   %eax,%eax
jle    1b07 <echange+0x9b7>
add    $0x1,%eax
mov    %eax,0x40(%rsp)
movapd 0x80(%rsp),%xmm6
mov    0x8(%rsp),%r10
jmp    1d80 <echange+0xc30>
test   %eax,%eax
jle    1d09 <echange+0xbb9>
mov    %r14,%r11
xorps  %xmm0,%xmm0
cvtsi2sd %r11d,%xmm0
movsd  0x18(%rsp),%xmm6
mulsd  %xmm0,%xmm6
lea    -0x1(%rbp),%r10d
cmp    %r15d,%r10d
jle    1d33 <echange+0xbe3>
movsd  %xmm0,0x20(%rsp)
mov    0x38(%rsp),%rdi
mov    0x1a0(%rsp),%rsi
mov    0x190(%rsp),%rdx
mov    0x198(%rsp),%rcx
mov    0x48(%rsp),%r8
mov    0x50(%rsp),%r9
movapd %xmm6,%xmm0
mov    $0x1,%al
lea    0x18(%rsp),%rbx
push   %rbx
push   0x10(%rsp)
push   %r10
push   %r11
movsd  %xmm6,0x30(%rsp)
call   1040 <gee@plt>
mov    %r14,%r11
movsd  0x30(%rsp),%xmm6
add    $0x20,%rsp
test   %eax,%eax
mov    0x28(%rsp),%r9
jle    1d38 <echange+0xbe8>
mov    %r9,%r13
movsd  0x20(%rsp),%xmm0
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    %r12d,%ebp
movsd  0x18(%rsp),%xmm6
mulsd  %xmm0,%xmm6
cmp    %r15d,%r12d
jle    1af2 <echange+0x9a2>
mov    0x38(%rsp),%rdi
mov    0x1a0(%rsp),%rsi
mov    0x190(%rsp),%rdx
mov    0x198(%rsp),%rcx
mov    0x48(%rsp),%r8
mov    0x50(%rsp),%r9
movapd %xmm6,%xmm0
mov    $0x1,%al
lea    0x18(%rsp),%rbx
push   %rbx
push   0x10(%rsp)
push   %rbp
push   %r11
movsd  %xmm6,0x30(%rsp)
call   1040 <gee@plt>
movsd  0x40(%rsp),%xmm0
mov    %r14,%r11
movsd  0x30(%rsp),%xmm6
add    $0x20,%rsp
lea    -0x1(%rbp),%r12d
test   %eax,%eax
jg     1a80 <echange+0x930>
add    $0x1,%ebp
mov    %r13,%r9
jmp    1d38 <echange+0xbe8>
mov    0x8(%rsp),%r10
jmp    1be1 <echange+0xa91>
mov    0x8(%rsp),%r10
mov    0x50(%rsp),%r12
lea    0x2(%r15),%ebx
cmp    %r13d,%ebx
jge    1baa <echange+0xa5a>
add    $0x4,%r15d
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    0x38(%rsp),%rdi
mov    0x1a0(%rsp),%rsi
mov    0x190(%rsp),%rdx
mov    0x198(%rsp),%rcx
mov    0x48(%rsp),%r8
mov    %r12,%r9
movapd 0x80(%rsp),%xmm0
mov    $0x1,%al
lea    0x18(%rsp),%rbp
push   %rbp
mov    %r10,%rbp
push   %r10
push   %rbx
push   %r11
call   1040 <gee@plt>
add    $0x20,%rsp
test   %eax,%eax
jg     1bf7 <echange+0xaa7>
add    $0x1,%ebx
add    $0x1,%r15d
cmp    %ebx,%r13d
mov    %r14,%r11
mov    %rbp,%r10
jne    1b30 <echange+0x9e0>
mov    0x28(%rsp),%r9
mov    0x60(%rsp),%rsi
mov    -0x4(%r9,%rsi,4),%r15d
movapd 0x80(%rsp),%xmm6
jmp    1d72 <echange+0xc22>
movapd 0x80(%rsp),%xmm6
mov    0x28(%rsp),%r9
jmp    1d80 <echange+0xc30>
movsd  0x144b(%rip),%xmm5
movsd  0x10(%rsp),%xmm6
mov    %r14,%r11
mov    0x28(%rsp),%r9
mov    %r15,%r10
mov    0x60(%rsp),%rsi
movsd  0x68(%rsp),%xmm1
add    $0xffffffff,%r12d
mov    %r12d,-0x4(%r9,%rsi,4)
addl   $0x1,0x40(%rsp)
mov    %r12d,%r15d
jmp    1d80 <echange+0xc30>
mov    %r14,%rax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0x18(%rsp),%xmm6
mulsd  %xmm0,%xmm6
lea    0x1(%rbx),%r11d
cmp    %r13d,%r11d
jge    1d53 <echange+0xc03>
movsd  %xmm0,0x20(%rsp)
mov    0x38(%rsp),%rdi
mov    0x1a0(%rsp),%rsi
mov    0x190(%rsp),%rdx
mov    0x198(%rsp),%rcx
mov    0x48(%rsp),%r8
mov    %r12,%r9
movapd %xmm6,%xmm0
mov    %rax,0x78(%rsp)
mov    $0x1,%al
lea    0x18(%rsp),%rbp
push   %rbp
push   0x10(%rsp)
push   %r11
mov    0x90(%rsp),%rbp
push   %rbp
movsd  %xmm6,0x30(%rsp)
call   1040 <gee@plt>
mov    0x28(%rsp),%r10
movsd  0x30(%rsp),%xmm6
add    $0x20,%rsp
test   %eax,%eax
mov    %rbp,%r11
jle    1d5b <echange+0xc0b>
movsd  0x20(%rsp),%xmm0
xchg   %ax,%ax
mov    %r15d,%ebx
movsd  0x18(%rsp),%xmm6
mulsd  %xmm0,%xmm6
cmp    %r15d,%r13d
je     1d04 <echange+0xbb4>
mov    0x38(%rsp),%rdi
mov    0x1a0(%rsp),%rsi
mov    0x190(%rsp),%rdx
mov    0x198(%rsp),%rcx
mov    0x48(%rsp),%r8
mov    %r12,%r9
movapd %xmm6,%xmm0
mov    $0x1,%al
lea    0x18(%rsp),%rbp
push   %rbp
push   %r10
push   %rbx
push   %r11
movsd  %xmm6,0x30(%rsp)
mov    %r10,%rbp
call   1040 <gee@plt>
movsd  0x40(%rsp),%xmm0
mov    %rbp,%r10
mov    %r14,%r11
movsd  0x30(%rsp),%xmm6
add    $0x20,%rsp
lea    0x1(%rbx),%r15d
test   %eax,%eax
jg     1c90 <echange+0xb40>
add    $0xffffffff,%ebx
jmp    1d5b <echange+0xc0b>
mov    0x28(%rsp),%r9
mov    0x60(%rsp),%rsi
mov    -0x4(%r9,%rsi,4),%r15d
movapd 0x80(%rsp),%xmm6
mov    0x8(%rsp),%r10
movsd  0x12e2(%rip),%xmm5
mov    %r14,%r11
jmp    1d7a <echange+0xc2a>
mov    0x28(%rsp),%r9
mov    0x60(%rsp),%rsi
mov    -0x4(%r9,%rsi,4),%r15d
mov    %ebp,-0x4(%r9,%rsi,4)
addl   $0x1,0x40(%rsp)
mov    0x8(%rsp),%r10
jmp    1d72 <echange+0xc22>
mov    0x8(%rsp),%r10
mov    %rax,%r11
mov    0x28(%rsp),%r9
mov    0x60(%rsp),%rsi
mov    %ebx,-0x4(%r9,%rsi,4)
addl   $0x1,0x40(%rsp)
mov    %ebx,%r15d
movsd  0x1296(%rip),%xmm5
movsd  0x68(%rsp),%xmm1
lea    0x1(%rsi),%rax
cmp    0x108(%rsp),%rax
je     1db0 <echange+0xc60>
mov    (%r9,%rsi,4),%r12d
mov    %rax,%rsi
mov    0xcc(%rsp),%eax
mov    %r11d,%ecx
mov    %r11d,0xcc(%rsp)
movapd %xmm1,%xmm7
jmp    1790 <echange+0x640>
movapd %xmm1,%xmm7
mov    0x108(%rsp),%rax
mov    %eax,%r14d
mov    0xc0(%rsp),%r12
mov    0x30(%rsp),%r13d
mov    0x5c(%rsp),%r15d
cmp    %r13d,%r14d
jne    2069 <echange+0xf19>
mov    (%r9),%r15d
mov    0xe8(%rsp),%eax
cmp    %r15d,%eax
cmovl  %eax,%r15d
mov    0xb8(%rsp),%rax
mov    (%r9,%rax,4),%eax
mov    0x34(%rsp),%ecx
cmp    %eax,%ecx
cmovle %eax,%ecx
mov    %ecx,0x34(%rsp)
test   %r15d,%r15d
mov    %r11,0x78(%rsp)
movsd  %xmm7,0x20(%rsp)
jle    2078 <echange+0xf28>
mulsd  0x11f8(%rip),%xmm6
movsd  %xmm6,0x10(%rsp)
mov    $0x1,%r13b
mov    0x38(%rsp),%rdi
mov    0x1a0(%rsp),%rsi
mov    0x190(%rsp),%rdx
mov    0x198(%rsp),%rcx
mov    0x48(%rsp),%r8
mov    0x50(%rsp),%r9
movapd %xmm6,%xmm0
mov    $0x1,%al
lea    0x18(%rsp),%rbx
push   %rbx
push   0x10(%rsp)
push   $0x0
push   0xb0(%rsp)
call   1040 <gee@plt>
add    $0x20,%rsp
xor    %ebx,%ebx
test   %eax,%eax
mov    0xb0(%rsp),%r14
jg     1ef4 <echange+0xda4>
mov    $0x1,%ebx
mov    0x30(%rsp),%r13d
nopw   0x0(%rax,%rax,1)
cmp    %ebx,%r15d
je     2082 <echange+0xf32>
mov    0x38(%rsp),%rdi
mov    0x1a0(%rsp),%rsi
mov    0x190(%rsp),%rdx
mov    0x198(%rsp),%rcx
mov    0x48(%rsp),%r8
mov    0x50(%rsp),%r9
movsd  0x10(%rsp),%xmm0
mov    $0x1,%al
lea    0x18(%rsp),%rbp
push   %rbp
push   0x10(%rsp)
push   %rbx
push   0xb0(%rsp)
call   1040 <gee@plt>
add    $0x20,%rsp
add    $0x1,%ebx
test   %eax,%eax
jle    1e90 <echange+0xd40>
add    $0xffffffff,%ebx
cmp    %r15d,%ebx
setl   %r13b
movsd  0x18(%rsp),%xmm6
mulsd  0xa8(%rsp),%xmm6
lea    0x1(%rbx),%r10d
cmp    %r15d,%r10d
jge    1ff8 <echange+0xea8>
mov    0x38(%rsp),%rdi
mov    0x1a0(%rsp),%rsi
mov    0x190(%rsp),%rdx
mov    0x198(%rsp),%rcx
mov    0x48(%rsp),%r8
mov    0x50(%rsp),%r9
movapd %xmm6,%xmm0
mov    $0x1,%al
lea    0x18(%rsp),%rbp
push   %rbp
push   0x10(%rsp)
push   %r10
push   0xb0(%rsp)
movsd  %xmm6,0x30(%rsp)
call   1040 <gee@plt>
add    $0x20,%rsp
test   %eax,%eax
jle    223e <echange+0x10ee>
add    $0x2,%ebx
mov    %ebx,%ecx
movsd  0xa8(%rsp),%xmm0
cs nopw 0x0(%rax,%rax,1)
nop
mov    %ecx,%ebx
movsd  0x18(%rsp),%xmm6
mulsd  %xmm0,%xmm6
cmp    %ecx,%r15d
je     1ff5 <echange+0xea5>
mov    0x38(%rsp),%rdi
mov    0x1a0(%rsp),%rsi
mov    0x190(%rsp),%rdx
mov    0x198(%rsp),%rcx
mov    0x48(%rsp),%r8
mov    0x50(%rsp),%r9
movapd %xmm6,%xmm0
mov    $0x1,%al
lea    0x18(%rsp),%rbp
push   %rbp
push   0x10(%rsp)
push   %rbx
push   0xb0(%rsp)
movsd  %xmm6,0x30(%rsp)
call   1040 <gee@plt>
movsd  0xc8(%rsp),%xmm0
movsd  0x30(%rsp),%xmm6
add    $0x20,%rsp
lea    0x1(%rbx),%ecx
test   %eax,%eax
jg     1f80 <echange+0xe30>
add    $0xffffffff,%ebx
mov    0x8(%rsp),%r10
movsd  0x100b(%rip),%xmm5
mov    0x78(%rsp),%r11
movsd  0x20(%rsp),%xmm7
mov    0x28(%rsp),%r9
mov    %ebx,(%r9,%r14,4)
addl   $0x1,0x40(%rsp)
mov    $0x1,%r15d
mov    0xa4(%rsp),%r14d
test   %r13b,%r13b
mov    0x30(%rsp),%r13d
je     20b0 <echange+0xf60>
mov    0xa4(%rsp),%r14d
jmp    22e0 <echange+0x1190>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movl   $0x0,0x40(%rsp)
mov    0x98(%rsp),%r11
cmp    %r13d,%r14d
je     1dda <echange+0xc8a>
mov    0xec(%rsp),%eax
mov    %eax,%r11d
jmp    22e0 <echange+0x1190>
mov    %r13d,%r14d
mov    0x8(%rsp),%r10
jmp    20b0 <echange+0xf60>
mov    %r13d,%r14d
mov    0x28(%rsp),%r9
mov    0x8(%rsp),%r10
movsd  0xf79(%rip),%xmm5
mov    0x78(%rsp),%r11
movsd  0x20(%rsp),%xmm7
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movapd %xmm7,%xmm6
mulsd  0xf5c(%rip),%xmm6
mov    $0x6,%r15d
mov    0x100(%rsp),%rbp
cmp    0x34(%rsp),%ebp
jle    22e0 <echange+0x1190>
mov    %r11d,%r13d
neg    %r13d
mov    0x38(%rsp),%rdi
mov    0x1a0(%rsp),%rsi
mov    0x190(%rsp),%rdx
mov    0x198(%rsp),%rcx
mov    0x48(%rsp),%r8
mov    0x50(%rsp),%r9
movsd  %xmm6,0x10(%rsp)
movapd %xmm6,%xmm0
mov    $0x1,%al
lea    0x18(%rsp),%rbx
push   %rbx
push   %r10
push   %rbp
push   %r13
call   1040 <gee@plt>
add    $0x20,%rsp
mov    0xd0(%rsp),%rbp
test   %eax,%eax
jg     219c <echange+0x104c>
mov    0xd0(%rsp),%rbp
cs nopw 0x0(%rax,%rax,1)
nop
lea    -0x2(%rbp),%r10d
cmp    0x34(%rsp),%r10d
jle    22a9 <echange+0x1159>
mov    0x38(%rsp),%rdi
mov    0x1a0(%rsp),%rsi
mov    0x190(%rsp),%rdx
mov    0x198(%rsp),%rcx
mov    0x48(%rsp),%r8
mov    0x50(%rsp),%r9
movsd  0x10(%rsp),%xmm0
mov    $0x1,%al
lea    0x18(%rsp),%rbx
push   %rbx
push   0x10(%rsp)
push   %r10
push   %r13
call   1040 <gee@plt>
add    $0x20,%rsp
add    $0xffffffff,%ebp
test   %eax,%eax
jle    2140 <echange+0xff0>
xorps  %xmm0,%xmm0
cvtsi2sd %r13d,%xmm0
add    $0xfffffffe,%ebp
movsd  0x18(%rsp),%xmm6
mulsd  %xmm0,%xmm6
mov    0x34(%rsp),%r15d
mov    %r12,%r14
cmp    %r15d,%ebp
jle    2237 <echange+0x10e7>
mov    0x28(%rsp),%r12
movsd  %xmm0,0x60(%rsp)
nopl   0x0(%rax)
movsd  %xmm6,0x10(%rsp)
mov    0x38(%rsp),%rdi
mov    0x1a0(%rsp),%rsi
mov    0x190(%rsp),%rdx
mov    0x198(%rsp),%rcx
mov    0x48(%rsp),%r8
mov    0x50(%rsp),%r9
movapd %xmm6,%xmm0
mov    $0x1,%al
lea    0x18(%rsp),%rbx
push   %rbx
push   0x10(%rsp)
push   %rbp
push   %r13
call   1040 <gee@plt>
add    $0x20,%rsp
test   %eax,%eax
jle    2256 <echange+0x1106>
add    $0xffffffff,%ebp
movsd  0x18(%rsp),%xmm6
movsd  0x60(%rsp),%xmm0
mulsd  %xmm0,%xmm6
cmp    %r15d,%ebp
jg     21d0 <echange+0x1080>
jmp    225c <echange+0x110c>
mov    0x28(%rsp),%r12
jmp    225c <echange+0x110c>
mov    0x8(%rsp),%r10
movsd  0xdc5(%rip),%xmm5
movsd  0x10(%rsp),%xmm6
jmp    2005 <echange+0xeb5>
movsd  0x10(%rsp),%xmm6
add    $0x1,%ebp
addl   $0x1,0x40(%rsp)
mov    0xb0(%rsp),%rax
mov    %r12,%r9
mov    %ebp,(%r12,%rax,4)
mov    $0x10,%r15d
mov    0x30(%rsp),%r13d
cmp    %r13d,0xa4(%rsp)
mov    0x8(%rsp),%r10
movsd  0xd7d(%rip),%xmm5
mov    0x78(%rsp),%r11
movsd  0x20(%rsp),%xmm7
mov    %r14,%r12
jle    13a0 <echange+0x250>
jmp    22ef <echange+0x119f>
mov    0x28(%rsp),%r9
mov    0x8(%rsp),%r10
movsd  0xd55(%rip),%xmm5
movsd  0x10(%rsp),%xmm6
mov    0x78(%rsp),%r11
movsd  0x20(%rsp),%xmm7
mov    0x30(%rsp),%r13d
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
cmp    %r13d,%r14d
jle    13a0 <echange+0x250>
cmp    $0xa,%r15d
jl     2360 <echange+0x1210>
test   %r12d,%r12d
jle    233e <echange+0x11ee>
mov    %r9,%rdi
mov    0xf8(%rsp),%rsi
mov    0xf0(%rsp),%rdx
movsd  %xmm6,0x10(%rsp)
mov    %r11,%r14
movsd  %xmm7,0x20(%rsp)
mov    %r9,%rbp
mov    %r10,%rbx
call   1050 <memmove@plt>
mov    %rbx,%r10
mov    %rbp,%r9
movsd  0x20(%rsp),%xmm7
mov    %r14,%r11
movsd  0x10(%rsp),%xmm6
movsd  0xcd2(%rip),%xmm5
mov    0xb0(%rsp),%rax
mov    (%r9,%rax,4),%eax
mov    0xb8(%rsp),%rcx
mov    %eax,(%r9,%rcx,4)
jmp    26d9 <echange+0x1589>
nopl   0x0(%rax,%rax,1)
mov    0xb0(%rsp),%rax
mov    (%r9,%rax,4),%ebx
maxsd  %xmm6,%xmm7
movapd %xmm7,%xmm6
mulsd  0xc9c(%rip),%xmm6
mov    0x100(%rsp),%rbp
cmp    0x34(%rsp),%ebp
jle    25b7 <echange+0x1467>
mov    %ebx,0x68(%rsp)
movsd  %xmm7,0x20(%rsp)
mov    %r15d,0x5c(%rsp)
mov    %r11,%r14
mov    %r11d,%r15d
neg    %r15d
mov    0x38(%rsp),%rdi
mov    0x1a0(%rsp),%rsi
mov    0x190(%rsp),%rdx
mov    0x198(%rsp),%rcx
mov    0x48(%rsp),%r8
mov    0x50(%rsp),%r9
movsd  %xmm6,0x10(%rsp)
movapd %xmm6,%xmm0
mov    $0x1,%al
lea    0x18(%rsp),%rbx
push   %rbx
push   %r10
push   %rbp
push   %r15
call   1040 <gee@plt>
add    $0x20,%rsp
mov    0xd0(%rsp),%rbp
test   %eax,%eax
jg     246c <echange+0x131c>
mov    0xd0(%rsp),%rbp
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
lea    -0x2(%rbp),%r10d
cmp    0x34(%rsp),%r10d
jle    26e9 <echange+0x1599>
mov    0x38(%rsp),%rdi
mov    0x1a0(%rsp),%rsi
mov    0x190(%rsp),%rdx
mov    0x198(%rsp),%rcx
mov    0x48(%rsp),%r8
mov    0x50(%rsp),%r9
movsd  0x10(%rsp),%xmm0
mov    $0x1,%al
lea    0x18(%rsp),%rbx
push   %rbx
push   0x10(%rsp)
push   %r10
push   %r15
call   1040 <gee@plt>
add    $0x20,%rsp
add    $0xffffffff,%ebp
test   %eax,%eax
jle    2410 <echange+0x12c0>
xorps  %xmm0,%xmm0
cvtsi2sd %r15d,%xmm0
add    $0xfffffffe,%ebp
movsd  0x18(%rsp),%xmm6
mulsd  %xmm0,%xmm6
cmp    0x34(%rsp),%ebp
jle    2513 <echange+0x13c3>
movsd  %xmm0,0x60(%rsp)
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movsd  %xmm6,0x10(%rsp)
mov    0x38(%rsp),%rdi
mov    0x1a0(%rsp),%rsi
mov    0x190(%rsp),%rdx
mov    0x198(%rsp),%rcx
mov    0x48(%rsp),%r8
mov    0x50(%rsp),%r9
movapd %xmm6,%xmm0
mov    $0x1,%al
lea    0x18(%rsp),%rbx
push   %rbx
push   0x10(%rsp)
push   %rbp
push   %r15
call   1040 <gee@plt>
add    $0x20,%rsp
test   %eax,%eax
jle    2528 <echange+0x13d8>
add    $0xffffffff,%ebp
movsd  0x18(%rsp),%xmm6
movsd  0x60(%rsp),%xmm0
mulsd  %xmm0,%xmm6
cmp    0x34(%rsp),%ebp
jg     24a0 <echange+0x1350>
mov    0x34(%rsp),%eax
mov    %eax,%ebp
mov    0x30(%rsp),%r13d
jmp    2533 <echange+0x13e3>
mov    0x28(%rsp),%r9
mov    0x30(%rsp),%r13d
mov    %r14,%r11
movsd  0x20(%rsp),%xmm7
jmp    2541 <echange+0x13f1>
mov    0x30(%rsp),%r13d
movsd  0x10(%rsp),%xmm6
mov    %r14,%r11
movsd  0x20(%rsp),%xmm7
mov    0x28(%rsp),%r9
add    $0x1,%ebp
mov    0xb0(%rsp),%r15
mov    %ebp,(%r9,%r15,4)
test   %r12d,%r12d
jle    258c <echange+0x143c>
mov    %r9,%rdi
mov    0xf8(%rsp),%rsi
mov    0xf0(%rsp),%rdx
movsd  %xmm6,0x10(%rsp)
mov    %r9,%rbx
call   1050 <memmove@plt>
mov    %rbx,%r9
movsd  0x20(%rsp),%xmm7
mov    %r14,%r11
movsd  0x10(%rsp),%xmm6
mov    (%rbx,%r15,4),%ebp
mov    0x5c(%rsp),%r15d
add    $0xa,%r15d
addl   $0x1,0x40(%rsp)
mov    0xb8(%rsp),%rax
mov    %ebp,(%r9,%rax,4)
mov    0x8(%rsp),%r10
movsd  0xa5d(%rip),%xmm5
mov    0x68(%rsp),%ebx
cmp    $0x6,%r15d
je     138d <echange+0x23d>
test   %r12d,%r12d
jle    26d6 <echange+0x1586>
cmp    $0x8,%r12d
setb   %al
or     0x5b(%rsp),%al
or     0x5a(%rsp),%al
mov    0xd8(%rsp),%rax
jne    26b5 <echange+0x1565>
cmpq   $0x0,0x140(%rsp)
je     2719 <echange+0x15c9>
mov    0x120(%rsp),%rcx
xor    %eax,%eax
mov    0x128(%rsp),%rsi
mov    0x118(%rsp),%rdi
mov    0x110(%rsp),%rbp
nopl   0x0(%rax,%rax,1)
lea    (%rax,%rbp,1),%edx
movups -0x1c(%r9,%rdx,4),%xmm0
movups -0xc(%r9,%rdx,4),%xmm1
movups %xmm1,-0xc(%rsi,%rax,4)
movups %xmm0,-0x1c(%rsi,%rax,4)
lea    (%rdi,%rax,1),%edx
movupd -0x1c(%r9,%rdx,4),%xmm0
movupd -0xc(%r9,%rdx,4),%xmm1
movupd %xmm1,-0x2c(%rsi,%rax,4)
movupd %xmm0,-0x3c(%rsi,%rax,4)
add    $0xfffffffffffffff0,%rax
add    $0xfffffffffffffffe,%rcx
jne    2620 <echange+0x14d0>
neg    %rax
testb  $0x1,0x138(%rsp)
01
je     269b <echange+0x154b>
mov    0xd8(%rsp),%rcx
sub    %rax,%rcx
mov    $0xffffffff,%eax
add    %ecx,%eax
movupd -0x1c(%r9,%rax,4),%xmm0
movupd -0xc(%r9,%rax,4),%xmm1
movupd %xmm1,-0xc(%r9,%rcx,4)
movupd %xmm0,-0x1c(%r9,%rcx,4)
mov    0x130(%rsp),%rax
mov    0x148(%rsp),%rcx
cmp    0xd8(%rsp),%rcx
je     26d6 <echange+0x1586>
add    $0x1,%rax
nopl   0x0(%rax)
lea    -0x2(%rax),%ecx
mov    (%r9,%rcx,4),%ecx
mov    %ecx,-0x4(%r9,%rax,4)
add    $0xffffffffffffffff,%rax
cmp    $0x1,%rax
jg     26c0 <echange+0x1570>
mov    %ebx,(%r9)
mov    0x40(%rsp),%edx
add    $0x1,%edx
mov    0x74(%rsp),%ecx
jmp    13a8 <echange+0x258>
mov    0x28(%rsp),%r9
mov    0x30(%rsp),%r13d
mov    0x8(%rsp),%r10
movsd  0x910(%rip),%xmm5
movsd  0x10(%rsp),%xmm6
mov    %r14,%r11
mov    0x5c(%rsp),%r15d
movsd  0x20(%rsp),%xmm7
jmp    25b3 <echange+0x1463>
xor    %eax,%eax
testb  $0x1,0x138(%rsp)
01
jne    266d <echange+0x151d>
jmp    269b <echange+0x154b>
xor    %eax,%eax
add    $0x158,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
lea    0x8f7(%rip),%rdi
call   1030 <puts@plt>
lea    0x91b(%rip),%rdi
call   1030 <puts@plt>
mov    $0xffffffff,%eax
jmp    2730 <echange+0x15e0>

LLVM IR (-O0):
@.str = [49 x i8] c"ERROR: remez exchange algorithm do not converge\0A\00"
@.str.1 = [51 x i8] c"ERROR: Filter designed will probably be incorrect\0A\00"
define i32 @echange(i32 %0, i32 %1, i32* %2, double* %3, double* %4, double* %5, double* %6, double* %7, double* %8) {
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32*
%14 = alloca double*
%15 = alloca double*
%16 = alloca double*
%17 = alloca double*
%18 = alloca double*
%19 = alloca double*
%20 = alloca double
%21 = alloca double
%22 = alloca double
%23 = alloca i32
%24 = alloca i32
%25 = alloca i32
%26 = alloca i32
%27 = alloca i32
%28 = alloca i32
%29 = alloca double
%30 = alloca double
%31 = alloca double
%32 = alloca i32
%33 = alloca i32
%34 = alloca i32
%35 = alloca i32
%36 = alloca i32
%37 = alloca i32
%38 = alloca i32
%39 = alloca i32
%40 = alloca i32
%41 = alloca i32
%42 = alloca i32
%43 = alloca i32
%44 = alloca double
%45 = alloca double
%46 = alloca i32
%47 = alloca i32
%48 = alloca i32
%49 = alloca i32
%50 = alloca i32
%51 = alloca i32
%52 = alloca i32
%53 = alloca i32
store i32 %0, i32* %11
store i32 %1, i32* %12
store i32* %2, i32** %13
store double* %3, double** %14
store double* %4, double** %15
store double* %5, double** %16
store double* %6, double** %17
store double* %7, double** %18
store double* %8, double** %19
store double 0.000000e+00, double* %20
store double -1.000000e+00, double* %21
store double 0.000000e+00, double* %22
%54 = load i32, i32* %11
%55 = add nsw i32 %54, 1
store i32 %55, i32* %23
%56 = load i32, i32* %23
%57 = add nsw i32 %56, 1
store i32 %57, i32* %24
store i32 0, i32* %25
store i32 0, i32* %26
store i32 1, i32* %27
%58 = load i32, i32* %11
%59 = sub nsw i32 %58, 1
%60 = sdiv i32 %59, 15
%61 = sitofp i32 %60 to double
%62 = call double @llvm.floor.f64(double %61)
%63 = fadd double %62, 1.000000e+00
%64 = fptosi double %63 to i32
store i32 %64, i32* %28
store double 0.000000e+00, double* %29
store double 0.000000e+00, double* %30
store double 0.000000e+00, double* %31
store i32 0, i32* %32
store i32 0, i32* %33
store i32 0, i32* %34
store i32 0, i32* %35
store i32 0, i32* %36
store i32 0, i32* %37
store i32 0, i32* %38
store i32 1, i32* %39
store i32 0, i32* %40
store i32 0, i32* %41
br label %65
65: ; preds = %985, %9
%66 = load i32, i32* %27
%67 = icmp sgt i32 %66, 0
br i1 %67, label %68, label %986
68: ; preds = %65
%69 = load i32, i32* %25
%70 = add nsw i32 %69, 1
store i32 %70, i32* %25
%71 = load i32, i32* %25
%72 = icmp sgt i32 %71, 250
br i1 %72, label %73, label %74
73: ; preds = %68
br label %986
74: ; preds = %68
store i32 0, i32* %42
br label %75
75: ; preds = %95, %74
%76 = load i32, i32* %42
%77 = load i32, i32* %23
%78 = icmp slt i32 %76, %77
br i1 %78, label %79, label %98
79: ; preds = %75
%80 = load double*, double** %14
%81 = load i32*, i32** %13
%82 = load i32, i32* %42
%83 = sext i32 %82 to i64
%84 = getelementptr inbounds i32, i32* %81, i64 %83
%85 = load i32, i32* %84
%86 = sext i32 %85 to i64
%87 = getelementptr inbounds double, double* %80, i64 %86
%88 = load double, double* %87
%89 = fmul double 0x401921FB54442D18, %88
%90 = call double @cos(double %89)
%91 = load double*, double** %17
%92 = load i32, i32* %42
%93 = sext i32 %92 to i64
%94 = getelementptr inbounds double, double* %91, i64 %93
store double %90, double* %94
br label %95
95: ; preds = %79
%96 = load i32, i32* %42
%97 = add nsw i32 %96, 1
store i32 %97, i32* %42
br label %75
98: ; preds = %75
store i32 0, i32* %43
br label %99
99: ; preds = %114, %98
%100 = load i32, i32* %43
%101 = load i32, i32* %23
%102 = icmp slt i32 %100, %101
br i1 %102, label %103, label %117
103: ; preds = %99
%104 = load i32, i32* %43
%105 = load i32, i32* %23
%106 = load i32, i32* %28
%107 = load double*, double** %17
%108 = call i32 (i32, i32, i32, double*, ...) bitcast (i32 (...)* @dd to i32 (i32, i32, i32, double*, ...)*)(i32 %104, i32 %105, i32 %106, double* %107)
%109 = sitofp i32 %108 to double
%110 = load double*, double** %19
%111 = load i32, i32* %43
%112 = sext i32 %111 to i64
%113 = getelementptr inbounds double, double* %110, i64 %112
store double %109, double* %113
br label %114
114: ; preds = %103
%115 = load i32, i32* %43
%116 = add nsw i32 %115, 1
store i32 %116, i32* %43
br label %99
117: ; preds = %99
store double 0.000000e+00, double* %44
store double 0.000000e+00, double* %45
store i32 1, i32* %46
store i32 0, i32* %47
br label %118
118: ; preds = %161, %117
%119 = load i32, i32* %47
%120 = load i32, i32* %23
%121 = icmp slt i32 %119, %120
br i1 %121, label %122, label %164
122: ; preds = %118
%123 = load double*, double** %19
%124 = load i32, i32* %47
%125 = sext i32 %124 to i64
%126 = getelementptr inbounds double, double* %123, i64 %125
%127 = load double, double* %126
%128 = load double*, double** %15
%129 = load i32*, i32** %13
%130 = load i32, i32* %47
%131 = sext i32 %130 to i64
%132 = getelementptr inbounds i32, i32* %129, i64 %131
%133 = load i32, i32* %132
%134 = sext i32 %133 to i64
%135 = getelementptr inbounds double, double* %128, i64 %134
%136 = load double, double* %135
%137 = load double, double* %44
%138 = call double @llvm.fmuladd.f64(double %127, double %136, double %137)
store double %138, double* %44
%139 = load i32, i32* %46
%140 = sitofp i32 %139 to double
%141 = load double*, double** %19
%142 = load i32, i32* %47
%143 = sext i32 %142 to i64
%144 = getelementptr inbounds double, double* %141, i64 %143
%145 = load double, double* %144
%146 = fmul double %140, %145
%147 = load double*, double** %16
%148 = load i32*, i32** %13
%149 = load i32, i32* %47
%150 = sext i32 %149 to i64
%151 = getelementptr inbounds i32, i32* %148, i64 %150
%152 = load i32, i32* %151
%153 = sext i32 %152 to i64
%154 = getelementptr inbounds double, double* %147, i64 %153
%155 = load double, double* %154
%156 = fdiv double %146, %155
%157 = load double, double* %45
%158 = fadd double %157, %156
store double %158, double* %45
%159 = load i32, i32* %46
%160 = sub nsw i32 0, %159
store i32 %160, i32* %46
br label %161
161: ; preds = %122
%162 = load i32, i32* %47
%163 = add nsw i32 %162, 1
store i32 %163, i32* %47
br label %118
164: ; preds = %118
%165 = load double, double* %44
%166 = load double, double* %45
%167 = fdiv double %165, %166
store double %167, double* %22
%168 = load double, double* %22
%169 = fcmp ogt double %168, 0.000000e+00
%170 = zext i1 %169 to i64
%171 = select i1 %169, i32 -1, i32 1
store i32 %171, i32* %36
%172 = load i32, i32* %36
%173 = sub nsw i32 0, %172
%174 = sitofp i32 %173 to double
%175 = load double, double* %22
%176 = fmul double %175, %174
store double %176, double* %22
store i32 1, i32* %48
store i32 0, i32* %49
br label %177
177: ; preds = %215, %164
%178 = load i32, i32* %49
%179 = load i32, i32* %23
%180 = icmp slt i32 %178, %179
br i1 %180, label %181, label %218
181: ; preds = %177
%182 = load double*, double** %15
%183 = load i32*, i32** %13
%184 = load i32, i32* %49
%185 = sext i32 %184 to i64
%186 = getelementptr inbounds i32, i32* %183, i64 %185
%187 = load i32, i32* %186
%188 = sext i32 %187 to i64
%189 = getelementptr inbounds double, double* %182, i64 %188
%190 = load double, double* %189
%191 = load i32, i32* %36
%192 = sitofp i32 %191 to double
%193 = load double, double* %22
%194 = fmul double %192, %193
%195 = load i32, i32* %48
%196 = sitofp i32 %195 to double
%197 = fmul double %194, %196
%198 = load double*, double** %16
%199 = load i32*, i32** %13
%200 = load i32, i32* %49
%201 = sext i32 %200 to i64
%202 = getelementptr inbounds i32, i32* %199, i64 %201
%203 = load i32, i32* %202
%204 = sext i32 %203 to i64
%205 = getelementptr inbounds double, double* %198, i64 %204
%206 = load double, double* %205
%207 = fdiv double %197, %206
%208 = fadd double %190, %207
%209 = load double*, double** %18
%210 = load i32, i32* %49
%211 = sext i32 %210 to i64
%212 = getelementptr inbounds double, double* %209, i64 %211
store double %208, double* %212
%213 = load i32, i32* %48
%214 = sub nsw i32 0, %213
store i32 %214, i32* %48
br label %215
215: ; preds = %181
%216 = load i32, i32* %49
%217 = add nsw i32 %216, 1
store i32 %217, i32* %49
br label %177
218: ; preds = %177
%219 = load double, double* %22
%220 = load double, double* %21
%221 = fcmp ole double %219, %220
br i1 %221, label %222, label %225
222: ; preds = %218
%223 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str, i64 0, i64 0))
%224 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.1, i64 0, i64 0))
store i32 -1, i32* %10
br label %987
225: ; preds = %218
%226 = load double, double* %22
store double %226, double* %21
store i32 0, i32* %27
%227 = load i32*, i32** %13
%228 = getelementptr inbounds i32, i32* %227, i64 0
%229 = load i32, i32* %228
store i32 %229, i32* %32
%230 = load i32*, i32** %13
%231 = load i32, i32* %23
%232 = sub nsw i32 %231, 1
%233 = sext i32 %232 to i64
%234 = getelementptr inbounds i32, i32* %230, i64 %233
%235 = load i32, i32* %234
store i32 %235, i32* %33
store i32 -1, i32* %34
%236 = load i32, i32* %36
%237 = sub nsw i32 0, %236
store i32 %237, i32* %37
store i32 1, i32* %39
br label %238
238: ; preds = %548, %225
%239 = load i32, i32* %39
%240 = load i32, i32* %24
%241 = icmp slt i32 %239, %240
br i1 %241, label %242, label %549
242: ; preds = %238
%243 = load i32*, i32** %13
%244 = load i32, i32* %39
%245 = sext i32 %244 to i64
%246 = getelementptr inbounds i32, i32* %243, i64 %245
%247 = load i32, i32* %246
store i32 %247, i32* %35
%248 = load i32*, i32** %13
%249 = load i32, i32* %39
%250 = sub nsw i32 %249, 1
%251 = sext i32 %250 to i64
%252 = getelementptr inbounds i32, i32* %248, i64 %251
%253 = load i32, i32* %252
%254 = add nsw i32 %253, 1
store i32 %254, i32* %41
%255 = load i32, i32* %37
%256 = sub nsw i32 0, %255
store i32 %256, i32* %37
%257 = load i32, i32* %39
%258 = icmp eq i32 %257, 2
br i1 %258, label %259, label %261
259: ; preds = %242
%260 = load double, double* %20
store double %260, double* %29
br label %261
261: ; preds = %259, %242
%262 = load double, double* %22
store double %262, double* %20
store i32 1, i32* %40
%263 = load i32, i32* %41
%264 = load i32, i32* %35
%265 = icmp slt i32 %263, %264
br i1 %265, label %266, label %330
266: ; preds = %261
%267 = load double*, double** %14
%268 = load double*, double** %19
%269 = load double*, double** %17
%270 = load double*, double** %18
%271 = load double*, double** %15
%272 = load double*, double** %16
%273 = load double, double* %20
%274 = load i32, i32* %37
%275 = load i32, i32* %41
%276 = load i32, i32* %23
%277 = call i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...) bitcast (i32 (...)* @gee to i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...)*)(double* %267, double* %268, double* %269, double* %270, double* %271, double* %272, double %273, i32 %274, i32 %275, i32 %276, double* %30)
%278 = sitofp i32 %277 to double
store double %278, double* %31
%279 = load double, double* %31
%280 = fcmp ogt double %279, 0.000000e+00
br i1 %280, label %281, label %329
281: ; preds = %266
%282 = load i32, i32* %37
%283 = sitofp i32 %282 to double
%284 = load double, double* %30
%285 = fmul double %283, %284
store double %285, double* %20
%286 = load i32, i32* %41
%287 = add nsw i32 %286, 1
store i32 %287, i32* %41
br label %288
288: ; preds = %308, %281
%289 = load i32, i32* %41
%290 = load i32, i32* %35
%291 = icmp slt i32 %289, %290
br i1 %291, label %292, label %315
292: ; preds = %288
%293 = load double*, double** %14
%294 = load double*, double** %19
%295 = load double*, double** %17
%296 = load double*, double** %18
%297 = load double*, double** %15
%298 = load double*, double** %16
%299 = load double, double* %20
%300 = load i32, i32* %37
%301 = load i32, i32* %41
%302 = load i32, i32* %23
%303 = call i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...) bitcast (i32 (...)* @gee to i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...)*)(double* %293, double* %294, double* %295, double* %296, double* %297, double* %298, double %299, i32 %300, i32 %301, i32 %302, double* %30)
%304 = sitofp i32 %303 to double
store double %304, double* %31
%305 = load double, double* %31
%306 = fcmp ole double %305, 0.000000e+00
br i1 %306, label %307, label %308
307: ; preds = %292
br label %315
308: ; preds = %292
%309 = load i32, i32* %37
%310 = sitofp i32 %309 to double
%311 = load double, double* %30
%312 = fmul double %310, %311
store double %312, double* %20
%313 = load i32, i32* %41
%314 = add nsw i32 %313, 1
store i32 %314, i32* %41
br label %288
315: ; preds = %307, %288
%316 = load i32, i32* %41
%317 = sub nsw i32 %316, 1
%318 = load i32*, i32** %13
%319 = load i32, i32* %39
%320 = sub nsw i32 %319, 1
%321 = sext i32 %320 to i64
%322 = getelementptr inbounds i32, i32* %318, i64 %321
store i32 %317, i32* %322
%323 = load i32, i32* %39
%324 = add nsw i32 %323, 1
store i32 %324, i32* %39
%325 = load i32, i32* %41
%326 = sub nsw i32 %325, 1
store i32 %326, i32* %34
%327 = load i32, i32* %27
%328 = add nsw i32 %327, 1
store i32 %328, i32* %27
store i32 0, i32* %40
br label %329
329: ; preds = %315, %266
br label %330
330: ; preds = %329, %261
%331 = load i32, i32* %40
%332 = icmp ne i32 %331, 0
br i1 %332, label %333, label %548
333: ; preds = %330
%334 = load i32, i32* %41
%335 = sub nsw i32 %334, 2
store i32 %335, i32* %41
br label %336
336: ; preds = %359, %333
%337 = load i32, i32* %41
%338 = load i32, i32* %34
%339 = icmp sgt i32 %337, %338
br i1 %339, label %340, label %362
340: ; preds = %336
%341 = load double*, double** %14
%342 = load double*, double** %19
%343 = load double*, double** %17
%344 = load double*, double** %18
%345 = load double*, double** %15
%346 = load double*, double** %16
%347 = load double, double* %20
%348 = load i32, i32* %37
%349 = load i32, i32* %41
%350 = load i32, i32* %23
%351 = call i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...) bitcast (i32 (...)* @gee to i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...)*)(double* %341, double* %342, double* %343, double* %344, double* %345, double* %346, double %347, i32 %348, i32 %349, i32 %350, double* %30)
%352 = sitofp i32 %351 to double
store double %352, double* %31
%353 = load double, double* %31
%354 = fcmp ogt double %353, 0.000000e+00
br i1 %354, label %358, label %355
355: ; preds = %340
%356 = load i32, i32* %27
%357 = icmp sgt i32 %356, 0
br i1 %357, label %358, label %359
358: ; preds = %355, %340
br label %362
359: ; preds = %355
%360 = load i32, i32* %41
%361 = add nsw i32 %360, -1
store i32 %361, i32* %41
br label %336
362: ; preds = %358, %336
%363 = load i32, i32* %41
%364 = load i32, i32* %34
%365 = icmp sle i32 %363, %364
br i1 %365, label %366, label %482
366: ; preds = %362
%367 = load i32*, i32** %13
%368 = load i32, i32* %39
%369 = sub nsw i32 %368, 1
%370 = sext i32 %369 to i64
%371 = getelementptr inbounds i32, i32* %367, i64 %370
%372 = load i32, i32* %371
%373 = add nsw i32 %372, 1
store i32 %373, i32* %41
%374 = load i32, i32* %27
%375 = icmp sgt i32 %374, 0
br i1 %375, label %376, label %390
376: ; preds = %366
%377 = load i32, i32* %41
%378 = sub nsw i32 %377, 1
%379 = load i32*, i32** %13
%380 = load i32, i32* %39
%381 = sub nsw i32 %380, 1
%382 = sext i32 %381 to i64
%383 = getelementptr inbounds i32, i32* %379, i64 %382
store i32 %378, i32* %383
%384 = load i32, i32* %39
%385 = add nsw i32 %384, 1
store i32 %385, i32* %39
%386 = load i32, i32* %41
%387 = sub nsw i32 %386, 1
store i32 %387, i32* %34
%388 = load i32, i32* %27
%389 = add nsw i32 %388, 1
store i32 %389, i32* %27
br label %481
390: ; preds = %366
%391 = load i32, i32* %41
%392 = add nsw i32 %391, 1
store i32 %392, i32* %41
br label %393
393: ; preds = %413, %390
%394 = load i32, i32* %41
%395 = load i32, i32* %35
%396 = icmp slt i32 %394, %395
br i1 %396, label %397, label %416
397: ; preds = %393
%398 = load double*, double** %14
%399 = load double*, double** %19
%400 = load double*, double** %17
%401 = load double*, double** %18
%402 = load double*, double** %15
%403 = load double*, double** %16
%404 = load double, double* %20
%405 = load i32, i32* %37
%406 = load i32, i32* %41
%407 = load i32, i32* %23
%408 = call i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...) bitcast (i32 (...)* @gee to i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...)*)(double* %398, double* %399, double* %400, double* %401, double* %402, double* %403, double %404, i32 %405, i32 %406, i32 %407, double* %30)
%409 = sitofp i32 %408 to double
store double %409, double* %31
%410 = load double, double* %31
%411 = fcmp ogt double %410, 0.000000e+00
br i1 %411, label %412, label %413
412: ; preds = %397
br label %416
413: ; preds = %397
%414 = load i32, i32* %41
%415 = add nsw i32 %414, 1
store i32 %415, i32* %41
br label %393
416: ; preds = %412, %393
%417 = load i32, i32* %41
%418 = load i32, i32* %35
%419 = icmp slt i32 %417, %418
br i1 %419, label %420, label %471
420: ; preds = %416
%421 = load double, double* %31
%422 = fcmp ogt double %421, 0.000000e+00
br i1 %422, label %423, label %471
423: ; preds = %420
%424 = load i32, i32* %37
%425 = sitofp i32 %424 to double
%426 = load double, double* %30
%427 = fmul double %425, %426
store double %427, double* %20
%428 = load i32, i32* %41
%429 = add nsw i32 %428, 1
store i32 %429, i32* %41
br label %430
430: ; preds = %450, %423
%431 = load i32, i32* %41
%432 = load i32, i32* %35
%433 = icmp slt i32 %431, %432
br i1 %433, label %434, label %457
434: ; preds = %430
%435 = load double*, double** %14
%436 = load double*, double** %19
%437 = load double*, double** %17
%438 = load double*, double** %18
%439 = load double*, double** %15
%440 = load double*, double** %16
%441 = load double, double* %20
%442 = load i32, i32* %37
%443 = load i32, i32* %41
%444 = load i32, i32* %23
%445 = call i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...) bitcast (i32 (...)* @gee to i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...)*)(double* %435, double* %436, double* %437, double* %438, double* %439, double* %440, double %441, i32 %442, i32 %443, i32 %444, double* %30)
%446 = sitofp i32 %445 to double
store double %446, double* %31
%447 = load double, double* %31
%448 = fcmp ole double %447, 0.000000e+00
br i1 %448, label %449, label %450
449: ; preds = %434
br label %457
450: ; preds = %434
%451 = load i32, i32* %37
%452 = sitofp i32 %451 to double
%453 = load double, double* %30
%454 = fmul double %452, %453
store double %454, double* %20
%455 = load i32, i32* %41
%456 = add nsw i32 %455, 1
store i32 %456, i32* %41
br label %430
457: ; preds = %449, %430
%458 = load i32, i32* %41
%459 = sub nsw i32 %458, 1
%460 = load i32*, i32** %13
%461 = load i32, i32* %39
%462 = sub nsw i32 %461, 1
%463 = sext i32 %462 to i64
%464 = getelementptr inbounds i32, i32* %460, i64 %463
store i32 %459, i32* %464
%465 = load i32, i32* %39
%466 = add nsw i32 %465, 1
store i32 %466, i32* %39
%467 = load i32, i32* %41
%468 = sub nsw i32 %467, 1
store i32 %468, i32* %34
%469 = load i32, i32* %27
%470 = add nsw i32 %469, 1
store i32 %470, i32* %27
br label %480
471: ; preds = %420, %416
%472 = load i32*, i32** %13
%473 = load i32, i32* %39
%474 = sub nsw i32 %473, 1
%475 = sext i32 %474 to i64
%476 = getelementptr inbounds i32, i32* %472, i64 %475
%477 = load i32, i32* %476
store i32 %477, i32* %34
%478 = load i32, i32* %39
%479 = add nsw i32 %478, 1
store i32 %479, i32* %39
br label %480
480: ; preds = %471, %457
br label %481
481: ; preds = %480, %376
br label %547
482: ; preds = %362
%483 = load double, double* %31
%484 = fcmp ogt double %483, 0.000000e+00
br i1 %484, label %485, label %537
485: ; preds = %482
%486 = load i32, i32* %37
%487 = sitofp i32 %486 to double
%488 = load double, double* %30
%489 = fmul double %487, %488
store double %489, double* %20
%490 = load i32, i32* %41
%491 = add nsw i32 %490, -1
store i32 %491, i32* %41
br label %492
492: ; preds = %512, %485
%493 = load i32, i32* %41
%494 = load i32, i32* %34
%495 = icmp sgt i32 %493, %494
br i1 %495, label %496, label %519
496: ; preds = %492
%497 = load double*, double** %14
%498 = load double*, double** %19
%499 = load double*, double** %17
%500 = load double*, double** %18
%501 = load double*, double** %15
%502 = load double*, double** %16
%503 = load double, double* %20
%504 = load i32, i32* %37
%505 = load i32, i32* %41
%506 = load i32, i32* %23
%507 = call i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...) bitcast (i32 (...)* @gee to i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...)*)(double* %497, double* %498, double* %499, double* %500, double* %501, double* %502, double %503, i32 %504, i32 %505, i32 %506, double* %30)
%508 = sitofp i32 %507 to double
store double %508, double* %31
%509 = load double, double* %31
%510 = fcmp ole double %509, 0.000000e+00
br i1 %510, label %511, label %512
511: ; preds = %496
br label %519
512: ; preds = %496
%513 = load i32, i32* %37
%514 = sitofp i32 %513 to double
%515 = load double, double* %30
%516 = fmul double %514, %515
store double %516, double* %20
%517 = load i32, i32* %41
%518 = add nsw i32 %517, -1
store i32 %518, i32* %41
br label %492
519: ; preds = %511, %492
%520 = load i32*, i32** %13
%521 = load i32, i32* %39
%522 = sub nsw i32 %521, 1
%523 = sext i32 %522 to i64
%524 = getelementptr inbounds i32, i32* %520, i64 %523
%525 = load i32, i32* %524
store i32 %525, i32* %34
%526 = load i32, i32* %41
%527 = add nsw i32 %526, 1
%528 = load i32*, i32** %13
%529 = load i32, i32* %39
%530 = sub nsw i32 %529, 1
%531 = sext i32 %530 to i64
%532 = getelementptr inbounds i32, i32* %528, i64 %531
store i32 %527, i32* %532
%533 = load i32, i32* %39
%534 = add nsw i32 %533, 1
store i32 %534, i32* %39
%535 = load i32, i32* %27
%536 = add nsw i32 %535, 1
store i32 %536, i32* %27
br label %546
537: ; preds = %482
%538 = load i32*, i32** %13
%539 = load i32, i32* %39
%540 = sub nsw i32 %539, 1
%541 = sext i32 %540 to i64
%542 = getelementptr inbounds i32, i32* %538, i64 %541
%543 = load i32, i32* %542
store i32 %543, i32* %34
%544 = load i32, i32* %39
%545 = add nsw i32 %544, 1
store i32 %545, i32* %39
br label %546
546: ; preds = %537, %519
br label %547
547: ; preds = %546, %481
br label %548
548: ; preds = %547, %330
br label %238
549: ; preds = %238
br label %550
550: ; preds = %787, %549
%551 = load i32, i32* %39
%552 = load i32, i32* %24
%553 = icmp eq i32 %551, %552
br i1 %553, label %554, label %788
554: ; preds = %550
%555 = load i32, i32* %32
%556 = load i32*, i32** %13
%557 = getelementptr inbounds i32, i32* %556, i64 0
%558 = load i32, i32* %557
%559 = icmp slt i32 %555, %558
br i1 %559, label %560, label %562
560: ; preds = %554
%561 = load i32, i32* %32
br label %566
562: ; preds = %554
%563 = load i32*, i32** %13
%564 = getelementptr inbounds i32, i32* %563, i64 0
%565 = load i32, i32* %564
br label %566
566: ; preds = %562, %560
%567 = phi i32 [ %561, %560 ], [ %565, %562 ]
store i32 %567, i32* %32
%568 = load i32, i32* %33
%569 = load i32*, i32** %13
%570 = load i32, i32* %23
%571 = sub nsw i32 %570, 1
%572 = sext i32 %571 to i64
%573 = getelementptr inbounds i32, i32* %569, i64 %572
%574 = load i32, i32* %573
%575 = icmp sgt i32 %568, %574
br i1 %575, label %576, label %578
576: ; preds = %566
%577 = load i32, i32* %33
br label %585
578: ; preds = %566
%579 = load i32*, i32** %13
%580 = load i32, i32* %23
%581 = sub nsw i32 %580, 1
%582 = sext i32 %581 to i64
%583 = getelementptr inbounds i32, i32* %579, i64 %582
%584 = load i32, i32* %583
br label %585
585: ; preds = %578, %576
%586 = phi i32 [ %577, %576 ], [ %584, %578 ]
store i32 %586, i32* %33
%587 = load i32, i32* %37
store i32 %587, i32* %38
%588 = load i32, i32* %36
%589 = sub nsw i32 0, %588
store i32 %589, i32* %37
store i32 0, i32* %41
%590 = load i32, i32* %32
store i32 %590, i32* %35
%591 = load double, double* %20
%592 = fmul double %591, 1.000010e+00
store double %592, double* %20
store i32 1, i32* %26
store i32 1, i32* %40
br label %593
593: ; preds = %661, %585
%594 = load i32, i32* %41
%595 = load i32, i32* %35
%596 = icmp slt i32 %594, %595
br i1 %596, label %597, label %664
597: ; preds = %593
%598 = load double*, double** %14
%599 = load double*, double** %19
%600 = load double*, double** %17
%601 = load double*, double** %18
%602 = load double*, double** %15
%603 = load double*, double** %16
%604 = load double, double* %20
%605 = load i32, i32* %37
%606 = load i32, i32* %41
%607 = load i32, i32* %23
%608 = call i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...) bitcast (i32 (...)* @gee to i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...)*)(double* %598, double* %599, double* %600, double* %601, double* %602, double* %603, double %604, i32 %605, i32 %606, i32 %607, double* %30)
%609 = sitofp i32 %608 to double
store double %609, double* %31
%610 = load double, double* %31
%611 = fcmp ogt double %610, 0.000000e+00
br i1 %611, label %612, label %661
612: ; preds = %597
%613 = load i32, i32* %37
%614 = sitofp i32 %613 to double
%615 = load double, double* %30
%616 = fmul double %614, %615
store double %616, double* %20
%617 = load i32, i32* %24
store i32 %617, i32* %39
%618 = load i32, i32* %41
%619 = add nsw i32 %618, 1
store i32 %619, i32* %41
br label %620
620: ; preds = %640, %612
%621 = load i32, i32* %41
%622 = load i32, i32* %35
%623 = icmp slt i32 %621, %622
br i1 %623, label %624, label %647
624: ; preds = %620
%625 = load double*, double** %14
%626 = load double*, double** %19
%627 = load double*, double** %17
%628 = load double*, double** %18
%629 = load double*, double** %15
%630 = load double*, double** %16
%631 = load double, double* %20
%632 = load i32, i32* %37
%633 = load i32, i32* %41
%634 = load i32, i32* %23
%635 = call i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...) bitcast (i32 (...)* @gee to i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...)*)(double* %625, double* %626, double* %627, double* %628, double* %629, double* %630, double %631, i32 %632, i32 %633, i32 %634, double* %30)
%636 = sitofp i32 %635 to double
store double %636, double* %31
%637 = load double, double* %31
%638 = fcmp ole double %637, 0.000000e+00
br i1 %638, label %639, label %640
639: ; preds = %624
br label %647
640: ; preds = %624
%641 = load i32, i32* %37
%642 = sitofp i32 %641 to double
%643 = load double, double* %30
%644 = fmul double %642, %643
store double %644, double* %20
%645 = load i32, i32* %41
%646 = add nsw i32 %645, 1
store i32 %646, i32* %41
br label %620
647: ; preds = %639, %620
%648 = load i32, i32* %41
%649 = sub nsw i32 %648, 1
%650 = load i32*, i32** %13
%651 = load i32, i32* %39
%652 = sub nsw i32 %651, 1
%653 = sext i32 %652 to i64
%654 = getelementptr inbounds i32, i32* %650, i64 %653
store i32 %649, i32* %654
%655 = load i32, i32* %39
%656 = add nsw i32 %655, 1
store i32 %656, i32* %39
%657 = load i32, i32* %41
%658 = sub nsw i32 %657, 1
store i32 %658, i32* %34
%659 = load i32, i32* %27
%660 = add nsw i32 %659, 1
store i32 %660, i32* %27
store i32 0, i32* %40
br label %664
661: ; preds = %597
%662 = load i32, i32* %41
%663 = add nsw i32 %662, 1
store i32 %663, i32* %41
br label %593
664: ; preds = %647, %593
%665 = load i32, i32* %40
%666 = icmp ne i32 %665, 0
br i1 %666, label %667, label %787
667: ; preds = %664
store i32 6, i32* %26
%668 = load i32, i32* %12
store i32 %668, i32* %41
%669 = load i32, i32* %33
store i32 %669, i32* %34
%670 = load i32, i32* %38
%671 = sub nsw i32 0, %670
store i32 %671, i32* %37
%672 = load double, double* %29
%673 = fmul double %672, 1.000010e+00
store double %673, double* %20
%674 = load i32, i32* %41
%675 = add nsw i32 %674, -1
store i32 %675, i32* %41
br label %676
676: ; preds = %750, %667
%677 = load i32, i32* %41
%678 = load i32, i32* %34
%679 = icmp sgt i32 %677, %678
br i1 %679, label %680, label %753
680: ; preds = %676
%681 = load double*, double** %14
%682 = load double*, double** %19
%683 = load double*, double** %17
%684 = load double*, double** %18
%685 = load double*, double** %15
%686 = load double*, double** %16
%687 = load double, double* %20
%688 = load i32, i32* %37
%689 = load i32, i32* %41
%690 = load i32, i32* %23
%691 = call i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...) bitcast (i32 (...)* @gee to i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...)*)(double* %681, double* %682, double* %683, double* %684, double* %685, double* %686, double %687, i32 %688, i32 %689, i32 %690, double* %30)
%692 = sitofp i32 %691 to double
store double %692, double* %31
%693 = load double, double* %31
%694 = fcmp ogt double %693, 0.000000e+00
br i1 %694, label %695, label %750
695: ; preds = %680
%696 = load i32, i32* %24
store i32 %696, i32* %39
%697 = load i32, i32* %37
%698 = sitofp i32 %697 to double
%699 = load double, double* %30
%700 = fmul double %698, %699
store double %700, double* %20
%701 = load i32, i32* %26
%702 = add nsw i32 %701, 10
store i32 %702, i32* %26
%703 = load i32, i32* %41
%704 = add nsw i32 %703, -1
store i32 %704, i32* %41
br label %705
705: ; preds = %725, %695
%706 = load i32, i32* %41
%707 = load i32, i32* %34
%708 = icmp sgt i32 %706, %707
br i1 %708, label %709, label %732
709: ; preds = %705
%710 = load double*, double** %14
%711 = load double*, double** %19
%712 = load double*, double** %17
%713 = load double*, double** %18
%714 = load double*, double** %15
%715 = load double*, double** %16
%716 = load double, double* %20
%717 = load i32, i32* %37
%718 = load i32, i32* %41
%719 = load i32, i32* %23
%720 = call i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...) bitcast (i32 (...)* @gee to i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...)*)(double* %710, double* %711, double* %712, double* %713, double* %714, double* %715, double %716, i32 %717, i32 %718, i32 %719, double* %30)
%721 = sitofp i32 %720 to double
store double %721, double* %31
%722 = load double, double* %31
%723 = fcmp ole double %722, 0.000000e+00
br i1 %723, label %724, label %725
724: ; preds = %709
br label %732
725: ; preds = %709
%726 = load i32, i32* %37
%727 = sitofp i32 %726 to double
%728 = load double, double* %30
%729 = fmul double %727, %728
store double %729, double* %20
%730 = load i32, i32* %41
%731 = add nsw i32 %730, -1
store i32 %731, i32* %41
br label %705
732: ; preds = %724, %705
%733 = load i32*, i32** %13
%734 = load i32, i32* %39
%735 = sub nsw i32 %734, 1
%736 = sext i32 %735 to i64
%737 = getelementptr inbounds i32, i32* %733, i64 %736
%738 = load i32, i32* %737
store i32 %738, i32* %34
%739 = load i32, i32* %41
%740 = add nsw i32 %739, 1
%741 = load i32*, i32** %13
%742 = load i32, i32* %39
%743 = sub nsw i32 %742, 1
%744 = sext i32 %743 to i64
%745 = getelementptr inbounds i32, i32* %741, i64 %744
store i32 %740, i32* %745
%746 = load i32, i32* %39
%747 = add nsw i32 %746, 1
store i32 %747, i32* %39
%748 = load i32, i32* %27
%749 = add nsw i32 %748, 1
store i32 %749, i32* %27
store i32 0, i32* %40
br label %753
750: ; preds = %680
%751 = load i32, i32* %41
%752 = add nsw i32 %751, -1
store i32 %752, i32* %41
br label %676
753: ; preds = %732, %676
%754 = load i32, i32* %40
%755 = icmp ne i32 %754, 0
br i1 %755, label %756, label %786
756: ; preds = %753
%757 = load i32, i32* %26
%758 = icmp ne i32 %757, 6
br i1 %758, label %759, label %785
759: ; preds = %756
%760 = load i32, i32* %11
%761 = sub nsw i32 %760, 1
store i32 %761, i32* %50
br label %762
762: ; preds = %776, %759
%763 = load i32, i32* %50
%764 = icmp sgt i32 %763, 0
br i1 %764, label %765, label %779
765: ; preds = %762
%766 = load i32*, i32** %13
%767 = load i32, i32* %50
%768 = sub nsw i32 %767, 1
%769 = sext i32 %768 to i64
%770 = getelementptr inbounds i32, i32* %766, i64 %769
%771 = load i32, i32* %770
%772 = load i32*, i32** %13
%773 = load i32, i32* %50
%774 = sext i32 %773 to i64
%775 = getelementptr inbounds i32, i32* %772, i64 %774
store i32 %771, i32* %775
br label %776
776: ; preds = %765
%777 = load i32, i32* %50
%778 = add nsw i32 %777, -1
store i32 %778, i32* %50
br label %762
779: ; preds = %762
%780 = load i32, i32* %32
%781 = load i32*, i32** %13
%782 = getelementptr inbounds i32, i32* %781, i64 0
store i32 %780, i32* %782
%783 = load i32, i32* %27
%784 = add nsw i32 %783, 1
store i32 %784, i32* %27
br label %785
785: ; preds = %779, %756
br label %788
786: ; preds = %753
br label %787
787: ; preds = %786, %664
br label %550
788: ; preds = %785, %550
%789 = load i32, i32* %39
%790 = load i32, i32* %24
%791 = icmp sgt i32 %789, %790
br i1 %791, label %792, label %985
792: ; preds = %788
%793 = load i32, i32* %26
%794 = icmp sgt i32 %793, 9
br i1 %794, label %795, label %826
795: ; preds = %792
store i32 0, i32* %51
br label %796
796: ; preds = %811, %795
%797 = load i32, i32* %51
%798 = load i32, i32* %11
%799 = icmp slt i32 %797, %798
br i1 %799, label %800, label %814
800: ; preds = %796
%801 = load i32*, i32** %13
%802 = load i32, i32* %51
%803 = add nsw i32 %802, 1
%804 = sext i32 %803 to i64
%805 = getelementptr inbounds i32, i32* %801, i64 %804
%806 = load i32, i32* %805
%807 = load i32*, i32** %13
%808 = load i32, i32* %51
%809 = sext i32 %808 to i64
%810 = getelementptr inbounds i32, i32* %807, i64 %809
store i32 %806, i32* %810
br label %811
811: ; preds = %800
%812 = load i32, i32* %51
%813 = add nsw i32 %812, 1
store i32 %813, i32* %51
br label %796
814: ; preds = %796
%815 = load i32*, i32** %13
%816 = load i32, i32* %23
%817 = sext i32 %816 to i64
%818 = getelementptr inbounds i32, i32* %815, i64 %817
%819 = load i32, i32* %818
%820 = load i32*, i32** %13
%821 = load i32, i32* %11
%822 = sext i32 %821 to i64
%823 = getelementptr inbounds i32, i32* %820, i64 %822
store i32 %819, i32* %823
%824 = load i32, i32* %27
%825 = add nsw i32 %824, 1
store i32 %825, i32* %27
br label %984
826: ; preds = %792
%827 = load double, double* %29
%828 = load double, double* %20
%829 = fcmp ogt double %827, %828
br i1 %829, label %830, label %832
830: ; preds = %826
%831 = load double, double* %29
br label %834
832: ; preds = %826
%833 = load double, double* %20
br label %834
834: ; preds = %832, %830
%835 = phi double [ %831, %830 ], [ %833, %832 ]
store double %835, double* %29
%836 = load i32*, i32** %13
%837 = load i32, i32* %24
%838 = sub nsw i32 %837, 1
%839 = sext i32 %838 to i64
%840 = getelementptr inbounds i32, i32* %836, i64 %839
%841 = load i32, i32* %840
store i32 %841, i32* %32
%842 = load i32, i32* %12
store i32 %842, i32* %41
%843 = load i32, i32* %33
store i32 %843, i32* %34
%844 = load i32, i32* %38
%845 = sub nsw i32 0, %844
store i32 %845, i32* %37
%846 = load double, double* %29
%847 = fmul double %846, 1.000010e+00
store double %847, double* %20
%848 = load i32, i32* %41
%849 = add nsw i32 %848, -1
store i32 %849, i32* %41
br label %850
850: ; preds = %952, %834
%851 = load i32, i32* %41
%852 = load i32, i32* %34
%853 = icmp sgt i32 %851, %852
br i1 %853, label %854, label %955
854: ; preds = %850
%855 = load double*, double** %14
%856 = load double*, double** %19
%857 = load double*, double** %17
%858 = load double*, double** %18
%859 = load double*, double** %15
%860 = load double*, double** %16
%861 = load double, double* %20
%862 = load i32, i32* %37
%863 = load i32, i32* %41
%864 = load i32, i32* %23
%865 = call i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...) bitcast (i32 (...)* @gee to i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...)*)(double* %855, double* %856, double* %857, double* %858, double* %859, double* %860, double %861, i32 %862, i32 %863, i32 %864, double* %30)
%866 = sitofp i32 %865 to double
store double %866, double* %31
%867 = load double, double* %31
%868 = fcmp ogt double %867, 0.000000e+00
br i1 %868, label %869, label %952
869: ; preds = %854
%870 = load i32, i32* %24
store i32 %870, i32* %39
%871 = load i32, i32* %37
%872 = sitofp i32 %871 to double
%873 = load double, double* %30
%874 = fmul double %872, %873
store double %874, double* %20
%875 = load i32, i32* %26
%876 = add nsw i32 %875, 10
store i32 %876, i32* %26
%877 = load i32, i32* %41
%878 = add nsw i32 %877, -1
store i32 %878, i32* %41
br label %879
879: ; preds = %899, %869
%880 = load i32, i32* %41
%881 = load i32, i32* %34
%882 = icmp sgt i32 %880, %881
br i1 %882, label %883, label %906
883: ; preds = %879
%884 = load double*, double** %14
%885 = load double*, double** %19
%886 = load double*, double** %17
%887 = load double*, double** %18
%888 = load double*, double** %15
%889 = load double*, double** %16
%890 = load double, double* %20
%891 = load i32, i32* %37
%892 = load i32, i32* %41
%893 = load i32, i32* %23
%894 = call i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...) bitcast (i32 (...)* @gee to i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...)*)(double* %884, double* %885, double* %886, double* %887, double* %888, double* %889, double %890, i32 %891, i32 %892, i32 %893, double* %30)
%895 = sitofp i32 %894 to double
store double %895, double* %31
%896 = load double, double* %31
%897 = fcmp ole double %896, 0.000000e+00
br i1 %897, label %898, label %899
898: ; preds = %883
br label %906
899: ; preds = %883
%900 = load i32, i32* %37
%901 = sitofp i32 %900 to double
%902 = load double, double* %30
%903 = fmul double %901, %902
store double %903, double* %20
%904 = load i32, i32* %41
%905 = add nsw i32 %904, -1
store i32 %905, i32* %41
br label %879
906: ; preds = %898, %879
%907 = load i32*, i32** %13
%908 = load i32, i32* %39
%909 = sub nsw i32 %908, 1
%910 = sext i32 %909 to i64
%911 = getelementptr inbounds i32, i32* %907, i64 %910
%912 = load i32, i32* %911
store i32 %912, i32* %34
%913 = load i32, i32* %41
%914 = add nsw i32 %913, 1
%915 = load i32*, i32** %13
%916 = load i32, i32* %39
%917 = sub nsw i32 %916, 1
%918 = sext i32 %917 to i64
%919 = getelementptr inbounds i32, i32* %915, i64 %918
store i32 %914, i32* %919
%920 = load i32, i32* %39
%921 = add nsw i32 %920, 1
store i32 %921, i32* %39
%922 = load i32, i32* %27
%923 = add nsw i32 %922, 1
store i32 %923, i32* %27
store i32 0, i32* %52
br label %924
924: ; preds = %939, %906
%925 = load i32, i32* %52
%926 = load i32, i32* %11
%927 = icmp slt i32 %925, %926
br i1 %927, label %928, label %942
928: ; preds = %924
%929 = load i32*, i32** %13
%930 = load i32, i32* %52
%931 = add nsw i32 %930, 1
%932 = sext i32 %931 to i64
%933 = getelementptr inbounds i32, i32* %929, i64 %932
%934 = load i32, i32* %933
%935 = load i32*, i32** %13
%936 = load i32, i32* %52
%937 = sext i32 %936 to i64
%938 = getelementptr inbounds i32, i32* %935, i64 %937
store i32 %934, i32* %938
br label %939
939: ; preds = %928
%940 = load i32, i32* %52
%941 = add nsw i32 %940, 1
store i32 %941, i32* %52
br label %924
942: ; preds = %924
%943 = load i32*, i32** %13
%944 = load i32, i32* %23
%945 = sext i32 %944 to i64
%946 = getelementptr inbounds i32, i32* %943, i64 %945
%947 = load i32, i32* %946
%948 = load i32*, i32** %13
%949 = load i32, i32* %11
%950 = sext i32 %949 to i64
%951 = getelementptr inbounds i32, i32* %948, i64 %950
store i32 %947, i32* %951
br label %955
952: ; preds = %854
%953 = load i32, i32* %41
%954 = add nsw i32 %953, -1
store i32 %954, i32* %41
br label %850
955: ; preds = %942, %850
%956 = load i32, i32* %26
%957 = icmp ne i32 %956, 6
br i1 %957, label %958, label %983
958: ; preds = %955
%959 = load i32, i32* %11
store i32 %959, i32* %53
br label %960
960: ; preds = %974, %958
%961 = load i32, i32* %53
%962 = icmp sgt i32 %961, 0
br i1 %962, label %963, label %977
963: ; preds = %960
%964 = load i32*, i32** %13
%965 = load i32, i32* %53
%966 = sub nsw i32 %965, 1
%967 = sext i32 %966 to i64
%968 = getelementptr inbounds i32, i32* %964, i64 %967
%969 = load i32, i32* %968
%970 = load i32*, i32** %13
%971 = load i32, i32* %53
%972 = sext i32 %971 to i64
%973 = getelementptr inbounds i32, i32* %970, i64 %972
store i32 %969, i32* %973
br label %974
974: ; preds = %963
%975 = load i32, i32* %53
%976 = add nsw i32 %975, -1
store i32 %976, i32* %53
br label %960
977: ; preds = %960
%978 = load i32, i32* %32
%979 = load i32*, i32** %13
%980 = getelementptr inbounds i32, i32* %979, i64 0
store i32 %978, i32* %980
%981 = load i32, i32* %27
%982 = add nsw i32 %981, 1
store i32 %982, i32* %27
br label %983
983: ; preds = %977, %955
br label %984
984: ; preds = %983, %814
br label %985
985: ; preds = %984, %788
br label %65
986: ; preds = %73, %65
store i32 0, i32* %10
br label %987
987: ; preds = %986, %222
%988 = load i32, i32* %10
ret i32 %988
}

LLVM IR (-O2):
@str = [48 x i8] c"ERROR: remez exchange algorithm do not converge\00"
@str.2 = [50 x i8] c"ERROR: Filter designed will probably be incorrect\00"
define i32 @echange(i32 %0, i32 %1, i32* %2, double* %3, double* %4, double* %5, double* %6, double* %7, double* %8) {
%10 = bitcast i32* %2 to i8*
%11 = alloca double
%12 = add i32 %0, 1
%13 = add i32 %0, 2
%14 = add nsw i32 %0, -1
%15 = sdiv i32 %14, 15
%16 = add nsw i32 %15, 1
%17 = bitcast double* %11 to i8*
store double 0.000000e+00, double* %11
%18 = icmp slt i32 %0, 0
%19 = sext i32 %0 to i64
%20 = getelementptr inbounds i32, i32* %2, i64 %19
%21 = icmp sgt i32 %0, -1
%22 = sext i32 %12 to i64
%23 = getelementptr inbounds i32, i32* %2, i64 %22
%24 = add nsw i32 %0, 3
%25 = add nsw i32 %1, -1
%26 = icmp sgt i32 %0, 0
%27 = call i32 @llvm.smax.i32(i32 %13, i32 2)
%28 = getelementptr i32, i32* %2, i64 1
%29 = bitcast i32* %28 to i8*
%30 = zext i32 %0 to i64
%31 = shl nuw nsw i64 %30, 2
%32 = zext i32 %12 to i64
%33 = zext i32 %12 to i64
%34 = zext i32 %12 to i64
%35 = zext i32 %12 to i64
%36 = zext i32 %27 to i64
%37 = icmp sgt i32 %24, %13
%38 = add nsw i64 %30, -1
%39 = add i32 %0, -1
%40 = getelementptr i32, i32* %2, i64 %30
%41 = bitcast i32* %40 to i8*
%42 = zext i32 %39 to i64
%43 = getelementptr i32, i32* %2, i64 %42
%44 = bitcast i32* %43 to i8*
%45 = getelementptr i32, i32* %2, i64 1
%46 = add nuw nsw i64 %30, 1
%47 = getelementptr i32, i32* %2, i64 %46
%48 = add i32 %0, -1
%49 = zext i32 %48 to i64
%50 = add nuw nsw i64 %49, 1
%51 = sub nsw i64 %50, %30
%52 = getelementptr i32, i32* %2, i64 %51
%53 = add nuw nsw i64 %49, 1
%54 = getelementptr i32, i32* %2, i64 %53
%55 = and i64 %30, 4294967288
%56 = add nsw i64 %55, -8
%57 = lshr exact i64 %56, 3
%58 = add nuw nsw i64 %57, 1
%59 = and i64 %32, 1
%60 = icmp eq i32 %0, 0
%61 = and i64 %32, 4294967294
%62 = icmp eq i64 %59, 0
%63 = icmp ult i32 %0, 8
%64 = trunc i64 %38 to i32
%65 = icmp ult i32 %39, %64
%66 = icmp ugt i64 %38, 4294967295
%67 = or i1 %65, %66
%68 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %38, i64 4)
%69 = extractvalue { i64, i1 } %68, 0
%70 = extractvalue { i64, i1 } %68, 1
%71 = sub i64 0, %69
%72 = getelementptr i8, i8* %41, i64 %71
%73 = icmp ugt i8* %72, %41
%74 = or i1 %73, %70
%75 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %38, i64 4)
%76 = extractvalue { i64, i1 } %75, 0
%77 = extractvalue { i64, i1 } %75, 1
%78 = sub i64 0, %76
%79 = getelementptr i8, i8* %44, i64 %78
%80 = icmp ugt i8* %79, %44
%81 = or i1 %80, %77
%82 = or i1 %67, %74
%83 = or i1 %82, %81
%84 = icmp ult i32* %45, %54
%85 = icmp ult i32* %52, %47
%86 = and i1 %84, %85
%87 = and i64 %30, 4294967288
%88 = and i64 %30, 7
%89 = and i64 %58, 1
%90 = icmp eq i64 %56, 0
%91 = and i64 %58, 4611686018427387902
%92 = icmp eq i64 %89, 0
%93 = icmp eq i64 %87, %30
br label %94
94: ; preds = %9, %577
%95 = phi i32 [ 0, %9 ], [ %578, %577 ]
%96 = phi double [ 0.000000e+00, %9 ], [ %582, %577 ]
%97 = phi i32 [ 0, %9 ], [ %580, %577 ]
%98 = phi i32 [ 0, %9 ], [ %101, %577 ]
%99 = phi double [ 0.000000e+00, %9 ], [ %579, %577 ]
%100 = phi double [ -1.000000e+00, %9 ], [ %208, %577 ]
%101 = add nuw nsw i32 %98, 1
%102 = icmp eq i32 %98, 250
br i1 %102, label %584, label %103
103: ; preds = %94
br i1 %18, label %204, label %104
104: ; preds = %103
br i1 %60, label %105, label %117
105: ; preds = %117, %104
%106 = phi i64 [ 0, %104 ], [ %137, %117 ]
br i1 %62, label %116, label %107
107: ; preds = %105
%108 = getelementptr inbounds i32, i32* %2, i64 %106
%109 = load i32, i32* %108
%110 = sext i32 %109 to i64
%111 = getelementptr inbounds double, double* %3, i64 %110
%112 = load double, double* %111
%113 = fmul double %112, 0x401921FB54442D18
%114 = call double @cos(double %113)
%115 = getelementptr inbounds double, double* %6, i64 %106
store double %114, double* %115
br label %116
116: ; preds = %105, %107
br i1 %18, label %204, label %141
117: ; preds = %104, %117
%118 = phi i64 [ %137, %117 ], [ 0, %104 ]
%119 = phi i64 [ %138, %117 ], [ 0, %104 ]
%120 = getelementptr inbounds i32, i32* %2, i64 %118
%121 = load i32, i32* %120
%122 = sext i32 %121 to i64
%123 = getelementptr inbounds double, double* %3, i64 %122
%124 = load double, double* %123
%125 = fmul double %124, 0x401921FB54442D18
%126 = call double @cos(double %125)
%127 = getelementptr inbounds double, double* %6, i64 %118
store double %126, double* %127
%128 = or i64 %118, 1
%129 = getelementptr inbounds i32, i32* %2, i64 %128
%130 = load i32, i32* %129
%131 = sext i32 %130 to i64
%132 = getelementptr inbounds double, double* %3, i64 %131
%133 = load double, double* %132
%134 = fmul double %133, 0x401921FB54442D18
%135 = call double @cos(double %134)
%136 = getelementptr inbounds double, double* %6, i64 %128
store double %135, double* %136
%137 = add nuw nsw i64 %118, 2
%138 = add i64 %119, 2
%139 = icmp eq i64 %138, %61
br i1 %139, label %105, label %117
140: ; preds = %141
br i1 %18, label %204, label %159
141: ; preds = %116, %141
%142 = phi i64 [ %147, %141 ], [ 0, %116 ]
%143 = trunc i64 %142 to i32
%144 = call i32 (i32, i32, i32, double*, ...) bitcast (i32 (...)* @dd to i32 (i32, i32, i32, double*, ...)*)(i32 %143, i32 %12, i32 %16, double* %6)
%145 = sitofp i32 %144 to double
%146 = getelementptr inbounds double, double* %8, i64 %142
store double %145, double* %146
%147 = add nuw nsw i64 %142, 1
%148 = icmp eq i64 %147, %33
br i1 %148, label %140, label %141
149: ; preds = %159
%150 = fdiv double %171, %177
%151 = fcmp ogt double %150, 0.000000e+00
%152 = select i1 %151, i32 -1, i32 1
%153 = select i1 %151, i32 1, i32 -1
%154 = sitofp i32 %153 to double
%155 = fmul double %150, %154
br i1 %18, label %181, label %156
156: ; preds = %149
%157 = fneg double %155
%158 = select i1 %151, double %157, double %155
br label %183
159: ; preds = %140, %159
%160 = phi i64 [ %179, %159 ], [ 0, %140 ]
%161 = phi i32 [ %178, %159 ], [ 1, %140 ]
%162 = phi double [ %177, %159 ], [ 0.000000e+00, %140 ]
%163 = phi double [ %171, %159 ], [ 0.000000e+00, %140 ]
%164 = getelementptr inbounds double, double* %8, i64 %160
%165 = load double, double* %164
%166 = getelementptr inbounds i32, i32* %2, i64 %160
%167 = load i32, i32* %166
%168 = sext i32 %167 to i64
%169 = getelementptr inbounds double, double* %4, i64 %168
%170 = load double, double* %169
%171 = call double @llvm.fmuladd.f64(double %165, double %170, double %163)
%172 = sitofp i32 %161 to double
%173 = fmul double %165, %172
%174 = getelementptr inbounds double, double* %5, i64 %168
%175 = load double, double* %174
%176 = fdiv double %173, %175
%177 = fadd double %162, %176
%178 = sub nsw i32 0, %161
%179 = add nuw nsw i64 %160, 1
%180 = icmp eq i64 %179, %34
br i1 %180, label %149, label %159
181: ; preds = %183, %149
%182 = fcmp ugt double %155, %100
br i1 %182, label %204, label %201
183: ; preds = %156, %183
%184 = phi i64 [ 0, %156 ], [ %199, %183 ]
%185 = phi i32 [ 1, %156 ], [ %198, %183 ]
%186 = getelementptr inbounds i32, i32* %2, i64 %184
%187 = load i32, i32* %186
%188 = sext i32 %187 to i64
%189 = getelementptr inbounds double, double* %4, i64 %188
%190 = load double, double* %189
%191 = sitofp i32 %185 to double
%192 = fmul double %158, %191
%193 = getelementptr inbounds double, double* %5, i64 %188
%194 = load double, double* %193
%195 = fdiv double %192, %194
%196 = fadd double %190, %195
%197 = getelementptr inbounds double, double* %7, i64 %184
store double %196, double* %197
%198 = sub nsw i32 0, %185
%199 = add nuw nsw i64 %184, 1
%200 = icmp eq i64 %199, %35
br i1 %200, label %181, label %183
201: ; preds = %181
%202 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([48 x i8], [48 x i8]* @str, i64 0, i64 0))
%203 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([50 x i8], [50 x i8]* @str.2, i64 0, i64 0))
br label %584
204: ; preds = %140, %116, %103, %181
%205 = phi i32 [ %152, %181 ], [ 1, %103 ], [ 1, %116 ], [ 1, %140 ]
%206 = phi i32 [ %153, %181 ], [ -1, %103 ], [ -1, %116 ], [ -1, %140 ]
%207 = phi double [ %154, %181 ], [ -1.000000e+00, %103 ], [ -1.000000e+00, %116 ], [ -1.000000e+00, %140 ]
%208 = phi double [ %155, %181 ], [ 0x7FF8000000000000, %103 ], [ 0x7FF8000000000000, %116 ], [ 0x7FF8000000000000, %140 ]
%209 = load i32, i32* %2
%210 = load i32, i32* %20
br i1 %21, label %231, label %211
211: ; preds = %353, %204
%212 = phi double [ %99, %204 ], [ %354, %353 ]
%213 = phi i32 [ 0, %204 ], [ %355, %353 ]
%214 = phi double [ %96, %204 ], [ %246, %353 ]
%215 = phi i32 [ %206, %204 ], [ %234, %353 ]
%216 = phi i32 [ 1, %204 ], [ %27, %353 ]
%217 = icmp eq i32 %216, %13
br i1 %217, label %218, label %425
218: ; preds = %211
%219 = fmul double %214, 1.000010e+00
%220 = load i32, i32* %2
%221 = icmp slt i32 %209, %220
%222 = select i1 %221, i32 %209, i32 %220
%223 = load i32, i32* %20
%224 = icmp sgt i32 %210, %223
%225 = select i1 %224, i32 %210, i32 %223
%226 = fmul double %212, 1.000010e+00
%227 = icmp sgt i32 %222, 0
br i1 %227, label %228, label %393
228: ; preds = %218
%229 = call i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...) bitcast (i32 (...)* @gee to i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...)*)(double* %3, double* %8, double* %6, double* %7, double* %4, double* %5, double %226, i32 %206, i32 0, i32 %12, double* %11)
%230 = icmp sgt i32 %229, 0
br i1 %230, label %366, label %385
231: ; preds = %204, %359
%232 = phi i32 [ %360, %359 ], [ %209, %204 ]
%233 = phi i64 [ %357, %359 ], [ 1, %204 ]
%234 = phi i32 [ %235, %359 ], [ %205, %204 ]
%235 = phi i32 [ %234, %359 ], [ %206, %204 ]
%236 = phi i32 [ %356, %359 ], [ -1, %204 ]
%237 = phi double [ %246, %359 ], [ %96, %204 ]
%238 = phi i32 [ %355, %359 ], [ 0, %204 ]
%239 = phi double [ %354, %359 ], [ %99, %204 ]
%240 = getelementptr inbounds i32, i32* %2, i64 %233
%241 = load i32, i32* %240
%242 = add nsw i64 %233, -1
%243 = getelementptr inbounds i32, i32* %2, i64 %242
%244 = add nsw i32 %232, 1
%245 = icmp eq i64 %233, 2
%246 = select i1 %245, double %239, double %237
%247 = icmp slt i32 %244, %241
br i1 %247, label %248, label %272
248: ; preds = %231
%249 = call i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...) bitcast (i32 (...)* @gee to i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...)*)(double* %3, double* %8, double* %6, double* %7, double* %4, double* %5, double %208, i32 %234, i32 %244, i32 %12, double* %11)
%250 = icmp sgt i32 %249, 0
br i1 %250, label %251, label %272
251: ; preds = %248
%252 = sitofp i32 %234 to double
%253 = add nsw i32 %232, 2
%254 = load double, double* %11
%255 = fmul double %254, %252
%256 = icmp slt i32 %253, %241
br i1 %256, label %257, label %267
257: ; preds = %251, %262
%258 = phi double [ %265, %262 ], [ %255, %251 ]
%259 = phi i32 [ %263, %262 ], [ %253, %251 ]
%260 = call i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...) bitcast (i32 (...)* @gee to i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...)*)(double* %3, double* %8, double* %6, double* %7, double* %4, double* %5, double %258, i32 %234, i32 %259, i32 %12, double* %11)
%261 = icmp slt i32 %260, 1
br i1 %261, label %267, label %262
262: ; preds = %257
%263 = add i32 %259, 1
%264 = load double, double* %11
%265 = fmul double %264, %252
%266 = icmp eq i32 %263, %241
br i1 %266, label %267, label %257
267: ; preds = %257, %262, %251
%268 = phi i32 [ %253, %251 ], [ %259, %257 ], [ %241, %262 ]
%269 = phi double [ %255, %251 ], [ %258, %257 ], [ %265, %262 ]
%270 = add nsw i32 %268, -1
store i32 %270, i32* %243
%271 = add nsw i32 %238, 1
br label %353
272: ; preds = %248, %231
%273 = add nsw i32 %232, -1
%274 = icmp sgt i32 %273, %236
br i1 %274, label %275, label %287
275: ; preds = %272
%276 = icmp sgt i32 %238, 0
br label %282
277: ; preds = %282
%278 = add nsw i32 %283, -1
%279 = icmp sgt i32 %278, %236
br i1 %279, label %282, label %280
280: ; preds = %277
%281 = load i32, i32* %243
br label %292
282: ; preds = %275, %277
%283 = phi i32 [ %273, %275 ], [ %278, %277 ]
%284 = call i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...) bitcast (i32 (...)* @gee to i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...)*)(double* %3, double* %8, double* %6, double* %7, double* %4, double* %5, double %208, i32 %234, i32 %283, i32 %12, double* %11)
%285 = icmp sgt i32 %284, 0
%286 = select i1 %285, i1 true, i1 %276
br i1 %286, label %327, label %277
287: ; preds = %272
%288 = load i32, i32* %243
%289 = icmp sgt i32 %238, 0
br i1 %289, label %290, label %292
290: ; preds = %287
%291 = add nuw nsw i32 %238, 1
br label %353
292: ; preds = %280, %287
%293 = phi i32 [ %281, %280 ], [ %288, %287 ]
%294 = add nsw i32 %293, 2
%295 = icmp slt i32 %294, %241
br i1 %295, label %296, label %353
296: ; preds = %292, %300
%297 = phi i32 [ %301, %300 ], [ %294, %292 ]
%298 = call i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...) bitcast (i32 (...)* @gee to i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...)*)(double* %3, double* %8, double* %6, double* %7, double* %4, double* %5, double %208, i32 %234, i32 %297, i32 %12, double* %11)
%299 = icmp sgt i32 %298, 0
br i1 %299, label %303, label %300
300: ; preds = %296
%301 = add i32 %297, 1
%302 = icmp eq i32 %301, %241
br i1 %302, label %325, label %296
303: ; preds = %296
%304 = sitofp i32 %234 to double
%305 = load double, double* %11
%306 = fmul double %305, %304
%307 = add nsw i32 %297, 1
%308 = icmp slt i32 %307, %241
br i1 %308, label %309, label %321
309: ; preds = %303
%310 = call i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...) bitcast (i32 (...)* @gee to i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...)*)(double* %3, double* %8, double* %6, double* %7, double* %4, double* %5, double %306, i32 %234, i32 %307, i32 %12, double* %11)
%311 = icmp slt i32 %310, 1
br i1 %311, label %321, label %312
312: ; preds = %309, %318
%313 = phi i32 [ %316, %318 ], [ %307, %309 ]
%314 = load double, double* %11
%315 = fmul double %314, %304
%316 = add i32 %313, 1
%317 = icmp eq i32 %316, %241
br i1 %317, label %321, label %318
318: ; preds = %312
%319 = call i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...) bitcast (i32 (...)* @gee to i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...)*)(double* %3, double* %8, double* %6, double* %7, double* %4, double* %5, double %315, i32 %234, i32 %316, i32 %12, double* %11)
%320 = icmp slt i32 %319, 1
br i1 %320, label %321, label %312
321: ; preds = %318, %312, %309, %303
%322 = phi i32 [ %297, %303 ], [ %297, %309 ], [ %313, %312 ], [ %313, %318 ]
%323 = phi double [ %306, %303 ], [ %306, %309 ], [ %315, %312 ], [ %315, %318 ]
store i32 %322, i32* %243
%324 = add nsw i32 %238, 1
br label %353
325: ; preds = %300
%326 = load i32, i32* %243
br label %353
327: ; preds = %282
br i1 %285, label %328, label %351
328: ; preds = %327
%329 = sitofp i32 %234 to double
%330 = load double, double* %11
%331 = fmul double %330, %329
%332 = add nsw i32 %283, -1
%333 = icmp sgt i32 %332, %236
br i1 %333, label %334, label %346
334: ; preds = %328
%335 = call i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...) bitcast (i32 (...)* @gee to i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...)*)(double* %3, double* %8, double* %6, double* %7, double* %4, double* %5, double %331, i32 %234, i32 %332, i32 %12, double* %11)
%336 = icmp slt i32 %335, 1
br i1 %336, label %346, label %337
337: ; preds = %334, %343
%338 = phi i32 [ %341, %343 ], [ %332, %334 ]
%339 = load double, double* %11
%340 = fmul double %339, %329
%341 = add nsw i32 %338, -1
%342 = icmp sgt i32 %341, %236
br i1 %342, label %343, label %346
343: ; preds = %337
%344 = call i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...) bitcast (i32 (...)* @gee to i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...)*)(double* %3, double* %8, double* %6, double* %7, double* %4, double* %5, double %340, i32 %234, i32 %341, i32 %12, double* %11)
%345 = icmp slt i32 %344, 1
br i1 %345, label %346, label %337
346: ; preds = %343, %337, %334, %328
%347 = phi i32 [ %283, %328 ], [ %283, %334 ], [ %338, %337 ], [ %338, %343 ]
%348 = phi double [ %331, %328 ], [ %331, %334 ], [ %340, %337 ], [ %340, %343 ]
%349 = load i32, i32* %243
store i32 %347, i32* %243
%350 = add nsw i32 %238, 1
br label %353
351: ; preds = %327
%352 = load i32, i32* %243
br label %353
353: ; preds = %292, %325, %267, %321, %290, %351, %346
%354 = phi double [ %208, %290 ], [ %323, %321 ], [ %348, %346 ], [ %208, %351 ], [ %269, %267 ], [ %208, %325 ], [ %208, %292 ]
%355 = phi i32 [ %291, %290 ], [ %324, %321 ], [ %350, %346 ], [ %238, %351 ], [ %271, %267 ], [ %238, %325 ], [ %238, %292 ]
%356 = phi i32 [ %288, %290 ], [ %322, %321 ], [ %349, %346 ], [ %352, %351 ], [ %270, %267 ], [ %326, %325 ], [ %293, %292 ]
%357 = add nuw nsw i64 %233, 1
%358 = icmp eq i64 %357, %36
br i1 %358, label %211, label %359
359: ; preds = %353
%360 = load i32, i32* %240
br label %231
361: ; preds = %385
%362 = call i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...) bitcast (i32 (...)* @gee to i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...)*)(double* %3, double* %8, double* %6, double* %7, double* %4, double* %5, double %226, i32 %206, i32 %387, i32 %12, double* %11)
%363 = icmp sgt i32 %362, 0
br i1 %363, label %364, label %385
364: ; preds = %361
%365 = icmp slt i32 %387, %222
br label %366
366: ; preds = %364, %228
%367 = phi i1 [ %365, %364 ], [ true, %228 ]
%368 = phi i32 [ %387, %364 ], [ 0, %228 ]
%369 = load double, double* %11
%370 = fmul double %369, %207
%371 = add nuw nsw i32 %368, 1
%372 = icmp slt i32 %371, %222
br i1 %372, label %373, label %389
373: ; preds = %366
%374 = call i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...) bitcast (i32 (...)* @gee to i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...)*)(double* %3, double* %8, double* %6, double* %7, double* %4, double* %5, double %370, i32 %206, i32 %371, i32 %12, double* %11)
%375 = icmp slt i32 %374, 1
br i1 %375, label %389, label %376
376: ; preds = %373, %382
%377 = phi i32 [ %380, %382 ], [ %371, %373 ]
%378 = load double, double* %11
%379 = fmul double %378, %207
%380 = add nuw i32 %377, 1
%381 = icmp eq i32 %380, %222
br i1 %381, label %389, label %382
382: ; preds = %376
%383 = call i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...) bitcast (i32 (...)* @gee to i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...)*)(double* %3, double* %8, double* %6, double* %7, double* %4, double* %5, double %379, i32 %206, i32 %380, i32 %12, double* %11)
%384 = icmp slt i32 %383, 1
br i1 %384, label %389, label %376
385: ; preds = %228, %361
%386 = phi i32 [ %387, %361 ], [ 0, %228 ]
%387 = add nuw nsw i32 %386, 1
%388 = icmp eq i32 %387, %222
br i1 %388, label %393, label %361
389: ; preds = %376, %382, %373, %366
%390 = phi i32 [ %368, %366 ], [ %368, %373 ], [ %377, %382 ], [ %377, %376 ]
%391 = phi double [ %370, %366 ], [ %370, %373 ], [ %379, %382 ], [ %379, %376 ]
store i32 %390, i32* %23
%392 = add nsw i32 %213, 1
br i1 %367, label %425, label %393
393: ; preds = %385, %218, %389
%394 = phi i32 [ %24, %389 ], [ %13, %218 ], [ %13, %385 ]
%395 = phi i32 [ %392, %389 ], [ %213, %218 ], [ %213, %385 ]
%396 = sub nsw i32 0, %215
%397 = icmp sgt i32 %25, %225
br i1 %397, label %398, label %425
398: ; preds = %393
%399 = call i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...) bitcast (i32 (...)* @gee to i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...)*)(double* %3, double* %8, double* %6, double* %7, double* %4, double* %5, double %219, i32 %396, i32 %25, i32 %12, double* %11)
%400 = icmp sgt i32 %399, 0
br i1 %400, label %408, label %401
401: ; preds = %398, %405
%402 = phi i32 [ %403, %405 ], [ %25, %398 ]
%403 = add nsw i32 %402, -1
%404 = icmp sgt i32 %403, %225
br i1 %404, label %405, label %425
405: ; preds = %401
%406 = call i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...) bitcast (i32 (...)* @gee to i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...)*)(double* %3, double* %8, double* %6, double* %7, double* %4, double* %5, double %219, i32 %396, i32 %403, i32 %12, double* %11)
%407 = icmp sgt i32 %406, 0
br i1 %407, label %408, label %401
408: ; preds = %405, %398
%409 = phi i32 [ %1, %398 ], [ %402, %405 ]
%410 = sitofp i32 %396 to double
%411 = add nsw i32 %409, -2
%412 = load double, double* %11
%413 = fmul double %412, %410
%414 = icmp sgt i32 %411, %225
br i1 %414, label %415, label %433
415: ; preds = %408, %420
%416 = phi double [ %423, %420 ], [ %413, %408 ]
%417 = phi i32 [ %421, %420 ], [ %411, %408 ]
%418 = call i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...) bitcast (i32 (...)* @gee to i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...)*)(double* %3, double* %8, double* %6, double* %7, double* %4, double* %5, double %416, i32 %396, i32 %417, i32 %12, double* %11)
%419 = icmp slt i32 %418, 1
br i1 %419, label %433, label %420
420: ; preds = %415
%421 = add nsw i32 %417, -1
%422 = load double, double* %11
%423 = fmul double %422, %410
%424 = icmp sgt i32 %421, %225
br i1 %424, label %415, label %433
425: ; preds = %401, %211, %389, %393
%426 = phi double [ %219, %393 ], [ %212, %211 ], [ %391, %389 ], [ %219, %401 ]
%427 = phi i32 [ 6, %393 ], [ %97, %211 ], [ 1, %389 ], [ 6, %401 ]
%428 = phi i32 [ %395, %393 ], [ %213, %211 ], [ %392, %389 ], [ %395, %401 ]
%429 = phi i32 [ %225, %393 ], [ %210, %211 ], [ %225, %389 ], [ %225, %401 ]
%430 = phi i32 [ %215, %393 ], [ %95, %211 ], [ %215, %389 ], [ %215, %401 ]
%431 = phi i32 [ %394, %393 ], [ %216, %211 ], [ %24, %389 ], [ %394, %401 ]
%432 = icmp sgt i32 %431, %13
br i1 %432, label %438, label %577
433: ; preds = %420, %415, %408
%434 = phi i32 [ %411, %408 ], [ %417, %415 ], [ %421, %420 ]
%435 = phi double [ %413, %408 ], [ %416, %415 ], [ %423, %420 ]
%436 = add nsw i32 %434, 1
store i32 %436, i32* %23
%437 = add nsw i32 %395, 1
br i1 %37, label %440, label %577
438: ; preds = %425
%439 = icmp sgt i32 %427, 9
br i1 %439, label %440, label %449
440: ; preds = %433, %438
%441 = phi double [ %426, %438 ], [ %435, %433 ]
%442 = phi i32 [ %427, %438 ], [ 16, %433 ]
%443 = phi i32 [ %428, %438 ], [ %437, %433 ]
%444 = phi i32 [ %430, %438 ], [ %215, %433 ]
br i1 %26, label %445, label %446
445: ; preds = %440
br label %446
446: ; preds = %445, %440
%447 = load i32, i32* %23
store i32 %447, i32* %20
%448 = add nsw i32 %443, 1
br label %577
449: ; preds = %438
%450 = load i32, i32* %23
%451 = fcmp ogt double %214, %426
%452 = select i1 %451, double %214, double %426
%453 = sub nsw i32 0, %430
%454 = fmul double %452, 1.000010e+00
%455 = icmp sgt i32 %25, %429
br i1 %455, label %456, label %493
456: ; preds = %449
%457 = call i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...) bitcast (i32 (...)* @gee to i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...)*)(double* %3, double* %8, double* %6, double* %7, double* %4, double* %5, double %454, i32 %453, i32 %25, i32 %12, double* %11)
%458 = icmp sgt i32 %457, 0
br i1 %458, label %466, label %459
459: ; preds = %456, %463
%460 = phi i32 [ %461, %463 ], [ %25, %456 ]
%461 = add nsw i32 %460, -1
%462 = icmp sgt i32 %461, %429
br i1 %462, label %463, label %493
463: ; preds = %459
%464 = call i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...) bitcast (i32 (...)* @gee to i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...)*)(double* %3, double* %8, double* %6, double* %7, double* %4, double* %5, double %454, i32 %453, i32 %461, i32 %12, double* %11)
%465 = icmp sgt i32 %464, 0
br i1 %465, label %466, label %459
466: ; preds = %463, %456
%467 = phi i32 [ %1, %456 ], [ %460, %463 ]
%468 = sitofp i32 %453 to double
%469 = add nsw i32 %427, 10
%470 = add nsw i32 %467, -2
%471 = load double, double* %11
%472 = fmul double %471, %468
%473 = icmp sgt i32 %470, %429
br i1 %473, label %474, label %484
474: ; preds = %466, %479
%475 = phi double [ %482, %479 ], [ %472, %466 ]
%476 = phi i32 [ %480, %479 ], [ %470, %466 ]
%477 = call i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...) bitcast (i32 (...)* @gee to i32 (double*, double*, double*, double*, double*, double*, double, i32, i32, i32, double*, ...)*)(double* %3, double* %8, double* %6, double* %7, double* %4, double* %5, double %475, i32 %453, i32 %476, i32 %12, double* %11)
%478 = icmp slt i32 %477, 1
br i1 %478, label %484, label %479
479: ; preds = %474
%480 = add nsw i32 %476, -1
%481 = load double, double* %11
%482 = fmul double %481, %468
%483 = icmp sgt i32 %480, %429
br i1 %483, label %474, label %484
484: ; preds = %479, %474, %466
%485 = phi i32 [ %470, %466 ], [ %429, %479 ], [ %476, %474 ]
%486 = phi double [ %472, %466 ], [ %482, %479 ], [ %475, %474 ]
%487 = add nsw i32 %485, 1
store i32 %487, i32* %23
%488 = add nsw i32 %428, 1
br i1 %26, label %489, label %491
489: ; preds = %484
%490 = load i32, i32* %23
br label %491
491: ; preds = %489, %484
%492 = phi i32 [ %490, %489 ], [ %487, %484 ]
store i32 %492, i32* %20
br label %493
493: ; preds = %459, %449, %491
%494 = phi double [ %486, %491 ], [ %454, %449 ], [ %454, %459 ]
%495 = phi i32 [ %469, %491 ], [ %427, %449 ], [ %427, %459 ]
%496 = phi i32 [ %488, %491 ], [ %428, %449 ], [ %428, %459 ]
%497 = icmp eq i32 %495, 6
br i1 %497, label %577, label %498
498: ; preds = %493
br i1 %26, label %499, label %567
499: ; preds = %498
%500 = select i1 %63, i1 true, i1 %83
%501 = select i1 %500, i1 true, i1 %86
br i1 %501, label %565, label %502
502: ; preds = %499
br i1 %90, label %544, label %503
503: ; preds = %502, %503
%504 = phi i64 [ %541, %503 ], [ 0, %502 ]
%505 = phi i64 [ %542, %503 ], [ 0, %502 ]
%506 = sub i64 %30, %504
%507 = add i64 %506, 4294967295
%508 = and i64 %507, 4294967295
%509 = getelementptr inbounds i32, i32* %2, i64 %508
%510 = getelementptr inbounds i32, i32* %509, i64 -3
%511 = bitcast i32* %510 to <4 x i32>*
%512 = load <4 x i32>, <4 x i32>* %511
%513 = getelementptr inbounds i32, i32* %509, i64 -4
%514 = getelementptr inbounds i32, i32* %513, i64 -3
%515 = bitcast i32* %514 to <4 x i32>*
%516 = load <4 x i32>, <4 x i32>* %515
%517 = getelementptr inbounds i32, i32* %2, i64 %506
%518 = getelementptr inbounds i32, i32* %517, i64 -3
%519 = bitcast i32* %518 to <4 x i32>*
store <4 x i32> %512, <4 x i32>* %519
%520 = getelementptr inbounds i32, i32* %517, i64 -4
%521 = getelementptr inbounds i32, i32* %520, i64 -3
%522 = bitcast i32* %521 to <4 x i32>*
store <4 x i32> %516, <4 x i32>* %522
%523 = or i64 %504, 8
%524 = sub i64 %30, %523
%525 = add i64 %524, 4294967295
%526 = and i64 %525, 4294967295
%527 = getelementptr inbounds i32, i32* %2, i64 %526
%528 = getelementptr inbounds i32, i32* %527, i64 -3
%529 = bitcast i32* %528 to <4 x i32>*
%530 = load <4 x i32>, <4 x i32>* %529
%531 = getelementptr inbounds i32, i32* %527, i64 -4
%532 = getelementptr inbounds i32, i32* %531, i64 -3
%533 = bitcast i32* %532 to <4 x i32>*
%534 = load <4 x i32>, <4 x i32>* %533
%535 = getelementptr inbounds i32, i32* %2, i64 %524
%536 = getelementptr inbounds i32, i32* %535, i64 -3
%537 = bitcast i32* %536 to <4 x i32>*
store <4 x i32> %530, <4 x i32>* %537
%538 = getelementptr inbounds i32, i32* %535, i64 -4
%539 = getelementptr inbounds i32, i32* %538, i64 -3
%540 = bitcast i32* %539 to <4 x i32>*
store <4 x i32> %534, <4 x i32>* %540
%541 = add nuw i64 %504, 16
%542 = add i64 %505, 2
%543 = icmp eq i64 %542, %91
br i1 %543, label %544, label %503
544: ; preds = %503, %502
%545 = phi i64 [ 0, %502 ], [ %541, %503 ]
br i1 %92, label %564, label %546
546: ; preds = %544
%547 = sub i64 %30, %545
%548 = add i64 %547, 4294967295
%549 = and i64 %548, 4294967295
%550 = getelementptr inbounds i32, i32* %2, i64 %549
%551 = getelementptr inbounds i32, i32* %550, i64 -3
%552 = bitcast i32* %551 to <4 x i32>*
%553 = load <4 x i32>, <4 x i32>* %552
%554 = getelementptr inbounds i32, i32* %550, i64 -4
%555 = getelementptr inbounds i32, i32* %554, i64 -3
%556 = bitcast i32* %555 to <4 x i32>*
%557 = load <4 x i32>, <4 x i32>* %556
%558 = getelementptr inbounds i32, i32* %2, i64 %547
%559 = getelementptr inbounds i32, i32* %558, i64 -3
%560 = bitcast i32* %559 to <4 x i32>*
store <4 x i32> %553, <4 x i32>* %560
%561 = getelementptr inbounds i32, i32* %558, i64 -4
%562 = getelementptr inbounds i32, i32* %561, i64 -3
%563 = bitcast i32* %562 to <4 x i32>*
store <4 x i32> %557, <4 x i32>* %563
br label %564
564: ; preds = %544, %546
br i1 %93, label %567, label %565
565: ; preds = %499, %564
%566 = phi i64 [ %30, %499 ], [ %88, %564 ]
br label %569
567: ; preds = %569, %564, %498
store i32 %450, i32* %2
%568 = add nsw i32 %496, 1
br label %577
569: ; preds = %565, %569
%570 = phi i64 [ %571, %569 ], [ %566, %565 ]
%571 = add nsw i64 %570, -1
%572 = and i64 %571, 4294967295
%573 = getelementptr inbounds i32, i32* %2, i64 %572
%574 = load i32, i32* %573
%575 = getelementptr inbounds i32, i32* %2, i64 %570
store i32 %574, i32* %575
%576 = icmp sgt i64 %570, 1
br i1 %576, label %569, label %567
577: ; preds = %433, %446, %567, %493, %425
%578 = phi i32 [ %444, %446 ], [ %430, %567 ], [ %430, %493 ], [ %430, %425 ], [ %215, %433 ]
%579 = phi double [ %441, %446 ], [ %494, %567 ], [ %494, %493 ], [ %426, %425 ], [ %435, %433 ]
%580 = phi i32 [ %442, %446 ], [ %495, %567 ], [ 6, %493 ], [ %427, %425 ], [ 16, %433 ]
%581 = phi i32 [ %448, %446 ], [ %568, %567 ], [ %496, %493 ], [ %428, %425 ], [ %437, %433 ]
%582 = phi double [ %214, %446 ], [ %452, %567 ], [ %452, %493 ], [ %214, %425 ], [ %214, %433 ]
%583 = icmp sgt i32 %581, 0
br i1 %583, label %94, label %584
584: ; preds = %577, %94, %201
%585 = phi i32 [ -1, %201 ], [ 0, %94 ], [ 0, %577 ]
ret i32 %585
}