void Cutdata_te(double *gpo, int ox, int oy, double *gpn, int nx, int ny,
                double xofs, double yofs) {
  int x, y, cmxI, cmyI;
  double cmx, cmy, *gppo;
  gppo = gpo;
  cmxI = floor(xofs);
  cmyI = floor(yofs);
  cmx = xofs - cmxI;
  cmy = yofs - cmyI;
  for (x = 0; x < nx; x++)
    for (y = 0; y < ny; y++) {
      gpn[(x * ny + y) * 3] =
          +(1 - cmx) * (1 - cmy) *
              gpo[(((x + cmxI - nx / 2 + ox) % ox) * oy +
                   (y + cmyI - ny / 2 + oy) % oy) *
                  3] +
          cmx * (1 - cmy) *
              gpo[(((x + 1 + cmxI - nx / 2 + ox) % ox) * oy +
                   (y + cmyI - ny / 2 + oy) % oy) *
                  3] +
          (1 - cmx) * cmy *
              gpo[(((x + cmxI - nx / 2 + ox) % ox) * oy +
                   (y + 1 + cmyI - ny / 2 + oy) % oy) *
                  3] +
          cmx * cmy *
              gpo[(((x + 1 + cmxI - nx / 2 + ox) % ox) * oy +
                   (y + 1 + cmyI - ny / 2 + oy) % oy) *
                  3];
      gpn[(x * ny + y) * 3 + 1] =
          +(1 - cmx) * (1 - cmy) *
              gpo[(((x + cmxI - nx / 2 + ox) % ox) * oy +
                   (y + cmyI - ny / 2 + oy) % oy) *
                      3 +
                  1] +
          cmx * (1 - cmy) *
              gpo[(((x + 1 + cmxI - nx / 2 + ox) % ox) * oy +
                   (y + cmyI - ny / 2 + oy) % oy) *
                      3 +
                  1] +
          (1 - cmx) * cmy *
              gpo[(((x + cmxI - nx / 2 + ox) % ox) * oy +
                   (y + 1 + cmyI - ny / 2 + oy) % oy) *
                      3 +
                  1] +
          cmx * cmy *
              gpo[(((x + 1 + cmxI - nx / 2 + ox) % ox) * oy +
                   (y + 1 + cmyI - ny / 2 + oy) % oy) *
                      3 +
                  1];
      gpn[(x * ny + y) * 3 + 2] =
          +(1 - cmx) * (1 - cmy) *
              gpo[(((x + cmxI - nx / 2 + ox) % ox) * oy +
                   (y + cmyI - ny / 2 + oy) % oy) *
                      3 +
                  2] +
          cmx * (1 - cmy) *
              gpo[(((x + 1 + cmxI - nx / 2 + ox) % ox) * oy +
                   (y + cmyI - ny / 2 + oy) % oy) *
                      3 +
                  2] +
          (1 - cmx) * cmy *
              gpo[(((x + cmxI - nx / 2 + ox) % ox) * oy +
                   (y + 1 + cmyI - ny / 2 + oy) % oy) *
                      3 +
                  2] +
          cmx * cmy *
              gpo[(((x + 1 + cmxI - nx / 2 + ox) % ox) * oy +
                   (y + 1 + cmyI - ny / 2 + oy) % oy) *
                      3 +
                  2];
    }
}


x86 assembly (clang, -O0):
<Cutdata_te>:
push   %rbp
mov    %rsp,%rbp
sub    $0x120,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %rcx,-0x18(%rbp)
mov    %r8d,-0x1c(%rbp)
mov    %r9d,-0x20(%rbp)
movsd  %xmm0,-0x28(%rbp)
movsd  %xmm1,-0x30(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0x58(%rbp)
movsd  -0x28(%rbp),%xmm0
call   1030 <floor@plt>
cvttsd2si %xmm0,%eax
mov    %eax,-0x3c(%rbp)
movsd  -0x30(%rbp),%xmm0
call   1030 <floor@plt>
cvttsd2si %xmm0,%eax
mov    %eax,-0x40(%rbp)
movsd  -0x28(%rbp),%xmm0
cvtsi2sdl -0x3c(%rbp),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x30(%rbp),%xmm0
cvtsi2sdl -0x40(%rbp),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movl   $0x0,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    18e9 <Cutdata_te+0x7d9>
movl   $0x0,-0x38(%rbp)
mov    -0x38(%rbp),%eax
cmp    -0x20(%rbp),%eax
jge    18d6 <Cutdata_te+0x7c6>
movsd  0xe47(%rip),%xmm0
subsd  -0x48(%rbp),%xmm0
movsd  0xe3a(%rip),%xmm1
subsd  -0x50(%rbp),%xmm1
mulsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
mov    %rax,-0x110(%rbp)
mov    -0x34(%rbp),%eax
add    -0x3c(%rbp),%eax
mov    %eax,-0x118(%rbp)
mov    -0x1c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x118(%rbp),%eax
sub    %ecx,%eax
add    -0xc(%rbp),%eax
cltd
idivl  -0xc(%rbp)
mov    %edx,%ecx
imul   -0x10(%rbp),%ecx
mov    -0x38(%rbp),%eax
add    -0x40(%rbp),%eax
mov    %eax,-0x114(%rbp)
mov    -0x20(%rbp),%eax
mov    $0x2,%esi
cltd
idiv   %esi
mov    %eax,%edx
mov    -0x114(%rbp),%eax
sub    %edx,%eax
add    -0x10(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    -0x110(%rbp),%rax
add    %edx,%ecx
imul   $0x3,%ecx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x48(%rbp),%xmm1
movsd  0xdaf(%rip),%xmm3
subsd  -0x50(%rbp),%xmm3
mulsd  %xmm3,%xmm1
mov    -0x8(%rbp),%rax
mov    %rax,-0x100(%rbp)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
add    -0x3c(%rbp),%eax
mov    %eax,-0x108(%rbp)
mov    -0x1c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x108(%rbp),%eax
sub    %ecx,%eax
add    -0xc(%rbp),%eax
cltd
idivl  -0xc(%rbp)
mov    %edx,%ecx
imul   -0x10(%rbp),%ecx
mov    -0x38(%rbp),%eax
add    -0x40(%rbp),%eax
mov    %eax,-0x104(%rbp)
mov    -0x20(%rbp),%eax
mov    $0x2,%esi
cltd
idiv   %esi
mov    %eax,%edx
mov    -0x104(%rbp),%eax
sub    %edx,%eax
add    -0x10(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    -0x100(%rbp),%rax
add    %edx,%ecx
imul   $0x3,%ecx,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xd1e(%rip),%xmm1
subsd  -0x48(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
mov    -0x8(%rbp),%rax
mov    %rax,-0xf0(%rbp)
mov    -0x34(%rbp),%eax
add    -0x3c(%rbp),%eax
mov    %eax,-0xf8(%rbp)
mov    -0x1c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0xf8(%rbp),%eax
sub    %ecx,%eax
add    -0xc(%rbp),%eax
cltd
idivl  -0xc(%rbp)
mov    %edx,%ecx
imul   -0x10(%rbp),%ecx
mov    -0x38(%rbp),%eax
add    $0x1,%eax
add    -0x40(%rbp),%eax
mov    %eax,-0xf4(%rbp)
mov    -0x20(%rbp),%eax
mov    $0x2,%esi
cltd
idiv   %esi
mov    %eax,%edx
mov    -0xf4(%rbp),%eax
sub    %edx,%eax
add    -0x10(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    -0xf0(%rbp),%rax
add    %edx,%ecx
imul   $0x3,%ecx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x48(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    %rax,-0xe0(%rbp)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
add    -0x3c(%rbp),%eax
mov    %eax,-0xe8(%rbp)
mov    -0x1c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0xe8(%rbp),%eax
sub    %ecx,%eax
add    -0xc(%rbp),%eax
cltd
idivl  -0xc(%rbp)
mov    %edx,%ecx
imul   -0x10(%rbp),%ecx
mov    -0x38(%rbp),%eax
add    $0x1,%eax
add    -0x40(%rbp),%eax
mov    %eax,-0xe4(%rbp)
mov    -0x20(%rbp),%eax
mov    $0x2,%esi
cltd
idiv   %esi
mov    %eax,%edx
mov    -0xe4(%rbp),%eax
sub    %edx,%eax
add    -0x10(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    -0xe0(%rbp),%rax
add    %edx,%ecx
imul   $0x3,%ecx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
mov    -0x34(%rbp),%ecx
imul   -0x20(%rbp),%ecx
add    -0x38(%rbp),%ecx
imul   $0x3,%ecx,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  0xbe6(%rip),%xmm0
subsd  -0x48(%rbp),%xmm0
movsd  0xbd9(%rip),%xmm1
subsd  -0x50(%rbp),%xmm1
mulsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
mov    %rax,-0xd0(%rbp)
mov    -0x34(%rbp),%eax
add    -0x3c(%rbp),%eax
mov    %eax,-0xd8(%rbp)
mov    -0x1c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0xd8(%rbp),%eax
sub    %ecx,%eax
add    -0xc(%rbp),%eax
cltd
idivl  -0xc(%rbp)
mov    %edx,%ecx
imul   -0x10(%rbp),%ecx
mov    -0x38(%rbp),%eax
add    -0x40(%rbp),%eax
mov    %eax,-0xd4(%rbp)
mov    -0x20(%rbp),%eax
mov    $0x2,%esi
cltd
idiv   %esi
mov    %eax,%edx
mov    -0xd4(%rbp),%eax
sub    %edx,%eax
add    -0x10(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    -0xd0(%rbp),%rax
add    %edx,%ecx
imul   $0x3,%ecx,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x48(%rbp),%xmm1
movsd  0xb4b(%rip),%xmm3
subsd  -0x50(%rbp),%xmm3
mulsd  %xmm3,%xmm1
mov    -0x8(%rbp),%rax
mov    %rax,-0xc0(%rbp)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
add    -0x3c(%rbp),%eax
mov    %eax,-0xc8(%rbp)
mov    -0x1c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0xc8(%rbp),%eax
sub    %ecx,%eax
add    -0xc(%rbp),%eax
cltd
idivl  -0xc(%rbp)
mov    %edx,%ecx
imul   -0x10(%rbp),%ecx
mov    -0x38(%rbp),%eax
add    -0x40(%rbp),%eax
mov    %eax,-0xc4(%rbp)
mov    -0x20(%rbp),%eax
mov    $0x2,%esi
cltd
idiv   %esi
mov    %eax,%edx
mov    -0xc4(%rbp),%eax
sub    %edx,%eax
add    -0x10(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    -0xc0(%rbp),%rax
add    %edx,%ecx
imul   $0x3,%ecx,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xab7(%rip),%xmm1
subsd  -0x48(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
mov    -0x8(%rbp),%rax
mov    %rax,-0xb0(%rbp)
mov    -0x34(%rbp),%eax
add    -0x3c(%rbp),%eax
mov    %eax,-0xb8(%rbp)
mov    -0x1c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0xb8(%rbp),%eax
sub    %ecx,%eax
add    -0xc(%rbp),%eax
cltd
idivl  -0xc(%rbp)
mov    %edx,%ecx
imul   -0x10(%rbp),%ecx
mov    -0x38(%rbp),%eax
add    $0x1,%eax
add    -0x40(%rbp),%eax
mov    %eax,-0xb4(%rbp)
mov    -0x20(%rbp),%eax
mov    $0x2,%esi
cltd
idiv   %esi
mov    %eax,%edx
mov    -0xb4(%rbp),%eax
sub    %edx,%eax
add    -0x10(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    -0xb0(%rbp),%rax
add    %edx,%ecx
imul   $0x3,%ecx,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x48(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    %rax,-0xa0(%rbp)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
add    -0x3c(%rbp),%eax
mov    %eax,-0xa8(%rbp)
mov    -0x1c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0xa8(%rbp),%eax
sub    %ecx,%eax
add    -0xc(%rbp),%eax
cltd
idivl  -0xc(%rbp)
mov    %edx,%ecx
imul   -0x10(%rbp),%ecx
mov    -0x38(%rbp),%eax
add    $0x1,%eax
add    -0x40(%rbp),%eax
mov    %eax,-0xa4(%rbp)
mov    -0x20(%rbp),%eax
mov    $0x2,%esi
cltd
idiv   %esi
mov    %eax,%edx
mov    -0xa4(%rbp),%eax
sub    %edx,%eax
add    -0x10(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    -0xa0(%rbp),%rax
add    %edx,%ecx
imul   $0x3,%ecx,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
mov    -0x34(%rbp),%ecx
imul   -0x20(%rbp),%ecx
add    -0x38(%rbp),%ecx
imul   $0x3,%ecx,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  0x976(%rip),%xmm0
subsd  -0x48(%rbp),%xmm0
movsd  0x969(%rip),%xmm1
subsd  -0x50(%rbp),%xmm1
mulsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
mov    %rax,-0x90(%rbp)
mov    -0x34(%rbp),%eax
add    -0x3c(%rbp),%eax
mov    %eax,-0x98(%rbp)
mov    -0x1c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x98(%rbp),%eax
sub    %ecx,%eax
add    -0xc(%rbp),%eax
cltd
idivl  -0xc(%rbp)
mov    %edx,%ecx
imul   -0x10(%rbp),%ecx
mov    -0x38(%rbp),%eax
add    -0x40(%rbp),%eax
mov    %eax,-0x94(%rbp)
mov    -0x20(%rbp),%eax
mov    $0x2,%esi
cltd
idiv   %esi
mov    %eax,%edx
mov    -0x94(%rbp),%eax
sub    %edx,%eax
add    -0x10(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    -0x90(%rbp),%rax
add    %edx,%ecx
imul   $0x3,%ecx,%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x48(%rbp),%xmm1
movsd  0x8db(%rip),%xmm3
subsd  -0x50(%rbp),%xmm3
mulsd  %xmm3,%xmm1
mov    -0x8(%rbp),%rax
mov    %rax,-0x80(%rbp)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
add    -0x3c(%rbp),%eax
mov    %eax,-0x88(%rbp)
mov    -0x1c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x88(%rbp),%eax
sub    %ecx,%eax
add    -0xc(%rbp),%eax
cltd
idivl  -0xc(%rbp)
mov    %edx,%ecx
imul   -0x10(%rbp),%ecx
mov    -0x38(%rbp),%eax
add    -0x40(%rbp),%eax
mov    %eax,-0x84(%rbp)
mov    -0x20(%rbp),%eax
mov    $0x2,%esi
cltd
idiv   %esi
mov    %eax,%edx
mov    -0x84(%rbp),%eax
sub    %edx,%eax
add    -0x10(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    -0x80(%rbp),%rax
add    %edx,%ecx
imul   $0x3,%ecx,%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x84d(%rip),%xmm1
subsd  -0x48(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
mov    -0x8(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    -0x34(%rbp),%eax
add    -0x3c(%rbp),%eax
mov    %eax,-0x78(%rbp)
mov    -0x1c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x78(%rbp),%eax
sub    %ecx,%eax
add    -0xc(%rbp),%eax
cltd
idivl  -0xc(%rbp)
mov    %edx,%ecx
imul   -0x10(%rbp),%ecx
mov    -0x38(%rbp),%eax
add    $0x1,%eax
add    -0x40(%rbp),%eax
mov    %eax,-0x74(%rbp)
mov    -0x20(%rbp),%eax
mov    $0x2,%esi
cltd
idiv   %esi
mov    %eax,%edx
mov    -0x74(%rbp),%eax
sub    %edx,%eax
add    -0x10(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    -0x70(%rbp),%rax
add    %edx,%ecx
imul   $0x3,%ecx,%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x48(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
add    -0x3c(%rbp),%eax
mov    %eax,-0x68(%rbp)
mov    -0x1c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x68(%rbp),%eax
sub    %ecx,%eax
add    -0xc(%rbp),%eax
cltd
idivl  -0xc(%rbp)
mov    %edx,%ecx
imul   -0x10(%rbp),%ecx
mov    -0x38(%rbp),%eax
add    $0x1,%eax
add    -0x40(%rbp),%eax
mov    %eax,-0x64(%rbp)
mov    -0x20(%rbp),%eax
mov    $0x2,%esi
cltd
idiv   %esi
mov    %eax,%edx
mov    -0x64(%rbp),%eax
sub    %edx,%eax
add    -0x10(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    -0x60(%rbp),%rax
add    %edx,%ecx
imul   $0x3,%ecx,%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
mov    -0x34(%rbp),%ecx
imul   -0x20(%rbp),%ecx
add    -0x38(%rbp),%ecx
imul   $0x3,%ecx,%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    11a5 <Cutdata_te+0x95>
jmp    18db <Cutdata_te+0x7cb>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1192 <Cutdata_te+0x82>
add    $0x120,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<Cutdata_te>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x38,%rsp
movsd  %xmm1,0x10(%rsp)
mov    %r9d,0xc(%rsp)
mov    %r8d,%r14d
mov    %rcx,%rbp
mov    %edx,%r13d
mov    %esi,%r12d
mov    %rdi,%rbx
movsd  %xmm0,0x18(%rsp)
call   1030 <floor@plt>
movaps %xmm0,0x20(%rsp)
movsd  0x10(%rsp),%xmm0
call   1030 <floor@plt>
movsd  0x10(%rsp),%xmm5
test   %r14d,%r14d
jle    1345 <Cutdata_te+0x235>
mov    %r14d,%edx
movapd 0x20(%rsp),%xmm1
cvttsd2si %xmm1,%eax
mov    %rax,0x30(%rsp)
cvttsd2si %xmm0,%esi
cvttpd2dq %xmm1,%xmm1
cvtdq2pd %xmm1,%xmm1
cvttpd2dq %xmm0,%xmm0
cvtdq2pd %xmm0,%xmm0
movsd  0x18(%rsp),%xmm3
subsd  %xmm1,%xmm3
subsd  %xmm0,%xmm5
movsd  0xe62(%rip),%xmm0
movapd %xmm0,%xmm1
subsd  %xmm3,%xmm1
subsd  %xmm5,%xmm0
movapd %xmm1,%xmm2
mulsd  %xmm0,%xmm2
mov    0xc(%rsp),%ecx
mov    %ecx,%eax
shr    $0x1f,%eax
add    %ecx,%eax
sar    %eax
sub    %eax,%esi
mulsd  %xmm3,%xmm0
mulsd  %xmm5,%xmm1
mulsd  %xmm3,%xmm5
movslq %ecx,%rax
mov    %r14d,%ecx
mov    %rcx,0x10(%rsp)
shr    %edx
mov    %edx,0x18(%rsp)
mov    %eax,%ecx
add    $0x10,%rbp
shl    $0x3,%rax
lea    (%rax,%rax,2),%r11
add    %r13d,%esi
mov    %esi,0x20(%rsp)
shl    $0x3,%rcx
lea    (%rcx,%rcx,2),%r8
xor    %r14d,%r14d
jmp    1212 <Cutdata_te+0x102>
add    $0x1,%r14
add    %r11,%rbp
cmp    0x10(%rsp),%r14
je     1345 <Cutdata_te+0x235>
cmpl   $0x0,0xc(%rsp)
jle    1200 <Cutdata_te+0xf0>
mov    0x30(%rsp),%rax
lea    (%r14,%rax,1),%esi
add    %r12d,%esi
sub    0x18(%rsp),%esi
mov    %esi,%eax
cltd
idiv   %r12d
mov    %edx,%ecx
imul   %r13d,%ecx
add    $0x1,%esi
mov    %esi,%eax
cltd
idiv   %r12d
mov    %edx,%esi
imul   %r13d,%esi
mov    0x20(%rsp),%edi
xor    %r9d,%r9d
nopl   0x0(%rax,%rax,1)
mov    %edi,%eax
cltd
idiv   %r13d
lea    (%rcx,%rdx,1),%eax
lea    (%rax,%rax,2),%eax
movslq %eax,%r15
add    %esi,%edx
lea    (%rdx,%rdx,2),%eax
movslq %eax,%r10
movsd  (%rbx,%r10,8),%xmm3
mulsd  %xmm0,%xmm3
movsd  (%rbx,%r15,8),%xmm4
mulsd  %xmm2,%xmm4
addsd  %xmm3,%xmm4
add    $0x1,%edi
mov    %edi,%eax
cltd
idiv   %r13d
lea    (%rdx,%rcx,1),%eax
lea    (%rax,%rax,2),%eax
cltq
movsd  (%rbx,%rax,8),%xmm3
mulsd  %xmm1,%xmm3
addsd  %xmm4,%xmm3
add    %esi,%edx
lea    (%rdx,%rdx,2),%edx
movslq %edx,%rdx
movsd  (%rbx,%rdx,8),%xmm4
mulsd  %xmm5,%xmm4
addsd  %xmm3,%xmm4
movsd  %xmm4,-0x10(%rbp,%r9,1)
movsd  0x8(%rbx,%r10,8),%xmm3
mulsd  %xmm0,%xmm3
movsd  0x8(%rbx,%r15,8),%xmm4
mulsd  %xmm2,%xmm4
addsd  %xmm3,%xmm4
movsd  0x8(%rbx,%rax,8),%xmm3
mulsd  %xmm1,%xmm3
addsd  %xmm4,%xmm3
movsd  0x8(%rbx,%rdx,8),%xmm4
mulsd  %xmm5,%xmm4
addsd  %xmm3,%xmm4
movsd  %xmm4,-0x8(%rbp,%r9,1)
movsd  0x10(%rbx,%r10,8),%xmm3
mulsd  %xmm0,%xmm3
movsd  0x10(%rbx,%r15,8),%xmm4
mulsd  %xmm2,%xmm4
addsd  %xmm3,%xmm4
movsd  0x10(%rbx,%rax,8),%xmm3
mulsd  %xmm1,%xmm3
addsd  %xmm4,%xmm3
movsd  0x10(%rbx,%rdx,8),%xmm4
mulsd  %xmm5,%xmm4
addsd  %xmm3,%xmm4
movsd  %xmm4,0x0(%rbp,%r9,1)
add    $0x18,%r9
cmp    %r9,%r8
jne    1250 <Cutdata_te+0x140>
jmp    1200 <Cutdata_te+0xf0>
add    $0x38,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @Cutdata_te(double* %0, i32 %1, i32 %2, double* %3, i32 %4, i32 %5, double %6, double %7) {
%9 = alloca double*
%10 = alloca i32
%11 = alloca i32
%12 = alloca double*
%13 = alloca i32
%14 = alloca i32
%15 = alloca double
%16 = alloca double
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca double
%22 = alloca double
%23 = alloca double*
store double* %0, double** %9
store i32 %1, i32* %10
store i32 %2, i32* %11
store double* %3, double** %12
store i32 %4, i32* %13
store i32 %5, i32* %14
store double %6, double* %15
store double %7, double* %16
%24 = load double*, double** %9
store double* %24, double** %23
%25 = load double, double* %15
%26 = call double @llvm.floor.f64(double %25)
%27 = fptosi double %26 to i32
store i32 %27, i32* %19
%28 = load double, double* %16
%29 = call double @llvm.floor.f64(double %28)
%30 = fptosi double %29 to i32
store i32 %30, i32* %20
%31 = load double, double* %15
%32 = load i32, i32* %19
%33 = sitofp i32 %32 to double
%34 = fsub double %31, %33
store double %34, double* %21
%35 = load double, double* %16
%36 = load i32, i32* %20
%37 = sitofp i32 %36 to double
%38 = fsub double %35, %37
store double %38, double* %22
store i32 0, i32* %17
br label %39
39: ; preds = %498, %8
%40 = load i32, i32* %17
%41 = load i32, i32* %13
%42 = icmp slt i32 %40, %41
br i1 %42, label %43, label %501
43: ; preds = %39
store i32 0, i32* %18
br label %44
44: ; preds = %494, %43
%45 = load i32, i32* %18
%46 = load i32, i32* %14
%47 = icmp slt i32 %45, %46
br i1 %47, label %48, label %497
48: ; preds = %44
%49 = load double, double* %21
%50 = fsub double 1.000000e+00, %49
%51 = load double, double* %22
%52 = fsub double 1.000000e+00, %51
%53 = fmul double %50, %52
%54 = load double*, double** %9
%55 = load i32, i32* %17
%56 = load i32, i32* %19
%57 = add nsw i32 %55, %56
%58 = load i32, i32* %13
%59 = sdiv i32 %58, 2
%60 = sub nsw i32 %57, %59
%61 = load i32, i32* %10
%62 = add nsw i32 %60, %61
%63 = load i32, i32* %10
%64 = srem i32 %62, %63
%65 = load i32, i32* %11
%66 = mul nsw i32 %64, %65
%67 = load i32, i32* %18
%68 = load i32, i32* %20
%69 = add nsw i32 %67, %68
%70 = load i32, i32* %14
%71 = sdiv i32 %70, 2
%72 = sub nsw i32 %69, %71
%73 = load i32, i32* %11
%74 = add nsw i32 %72, %73
%75 = load i32, i32* %11
%76 = srem i32 %74, %75
%77 = add nsw i32 %66, %76
%78 = mul nsw i32 %77, 3
%79 = sext i32 %78 to i64
%80 = getelementptr inbounds double, double* %54, i64 %79
%81 = load double, double* %80
%82 = load double, double* %21
%83 = load double, double* %22
%84 = fsub double 1.000000e+00, %83
%85 = fmul double %82, %84
%86 = load double*, double** %9
%87 = load i32, i32* %17
%88 = add nsw i32 %87, 1
%89 = load i32, i32* %19
%90 = add nsw i32 %88, %89
%91 = load i32, i32* %13
%92 = sdiv i32 %91, 2
%93 = sub nsw i32 %90, %92
%94 = load i32, i32* %10
%95 = add nsw i32 %93, %94
%96 = load i32, i32* %10
%97 = srem i32 %95, %96
%98 = load i32, i32* %11
%99 = mul nsw i32 %97, %98
%100 = load i32, i32* %18
%101 = load i32, i32* %20
%102 = add nsw i32 %100, %101
%103 = load i32, i32* %14
%104 = sdiv i32 %103, 2
%105 = sub nsw i32 %102, %104
%106 = load i32, i32* %11
%107 = add nsw i32 %105, %106
%108 = load i32, i32* %11
%109 = srem i32 %107, %108
%110 = add nsw i32 %99, %109
%111 = mul nsw i32 %110, 3
%112 = sext i32 %111 to i64
%113 = getelementptr inbounds double, double* %86, i64 %112
%114 = load double, double* %113
%115 = fmul double %85, %114
%116 = call double @llvm.fmuladd.f64(double %53, double %81, double %115)
%117 = load double, double* %21
%118 = fsub double 1.000000e+00, %117
%119 = load double, double* %22
%120 = fmul double %118, %119
%121 = load double*, double** %9
%122 = load i32, i32* %17
%123 = load i32, i32* %19
%124 = add nsw i32 %122, %123
%125 = load i32, i32* %13
%126 = sdiv i32 %125, 2
%127 = sub nsw i32 %124, %126
%128 = load i32, i32* %10
%129 = add nsw i32 %127, %128
%130 = load i32, i32* %10
%131 = srem i32 %129, %130
%132 = load i32, i32* %11
%133 = mul nsw i32 %131, %132
%134 = load i32, i32* %18
%135 = add nsw i32 %134, 1
%136 = load i32, i32* %20
%137 = add nsw i32 %135, %136
%138 = load i32, i32* %14
%139 = sdiv i32 %138, 2
%140 = sub nsw i32 %137, %139
%141 = load i32, i32* %11
%142 = add nsw i32 %140, %141
%143 = load i32, i32* %11
%144 = srem i32 %142, %143
%145 = add nsw i32 %133, %144
%146 = mul nsw i32 %145, 3
%147 = sext i32 %146 to i64
%148 = getelementptr inbounds double, double* %121, i64 %147
%149 = load double, double* %148
%150 = call double @llvm.fmuladd.f64(double %120, double %149, double %116)
%151 = load double, double* %21
%152 = load double, double* %22
%153 = fmul double %151, %152
%154 = load double*, double** %9
%155 = load i32, i32* %17
%156 = add nsw i32 %155, 1
%157 = load i32, i32* %19
%158 = add nsw i32 %156, %157
%159 = load i32, i32* %13
%160 = sdiv i32 %159, 2
%161 = sub nsw i32 %158, %160
%162 = load i32, i32* %10
%163 = add nsw i32 %161, %162
%164 = load i32, i32* %10
%165 = srem i32 %163, %164
%166 = load i32, i32* %11
%167 = mul nsw i32 %165, %166
%168 = load i32, i32* %18
%169 = add nsw i32 %168, 1
%170 = load i32, i32* %20
%171 = add nsw i32 %169, %170
%172 = load i32, i32* %14
%173 = sdiv i32 %172, 2
%174 = sub nsw i32 %171, %173
%175 = load i32, i32* %11
%176 = add nsw i32 %174, %175
%177 = load i32, i32* %11
%178 = srem i32 %176, %177
%179 = add nsw i32 %167, %178
%180 = mul nsw i32 %179, 3
%181 = sext i32 %180 to i64
%182 = getelementptr inbounds double, double* %154, i64 %181
%183 = load double, double* %182
%184 = call double @llvm.fmuladd.f64(double %153, double %183, double %150)
%185 = load double*, double** %12
%186 = load i32, i32* %17
%187 = load i32, i32* %14
%188 = mul nsw i32 %186, %187
%189 = load i32, i32* %18
%190 = add nsw i32 %188, %189
%191 = mul nsw i32 %190, 3
%192 = sext i32 %191 to i64
%193 = getelementptr inbounds double, double* %185, i64 %192
store double %184, double* %193
%194 = load double, double* %21
%195 = fsub double 1.000000e+00, %194
%196 = load double, double* %22
%197 = fsub double 1.000000e+00, %196
%198 = fmul double %195, %197
%199 = load double*, double** %9
%200 = load i32, i32* %17
%201 = load i32, i32* %19
%202 = add nsw i32 %200, %201
%203 = load i32, i32* %13
%204 = sdiv i32 %203, 2
%205 = sub nsw i32 %202, %204
%206 = load i32, i32* %10
%207 = add nsw i32 %205, %206
%208 = load i32, i32* %10
%209 = srem i32 %207, %208
%210 = load i32, i32* %11
%211 = mul nsw i32 %209, %210
%212 = load i32, i32* %18
%213 = load i32, i32* %20
%214 = add nsw i32 %212, %213
%215 = load i32, i32* %14
%216 = sdiv i32 %215, 2
%217 = sub nsw i32 %214, %216
%218 = load i32, i32* %11
%219 = add nsw i32 %217, %218
%220 = load i32, i32* %11
%221 = srem i32 %219, %220
%222 = add nsw i32 %211, %221
%223 = mul nsw i32 %222, 3
%224 = add nsw i32 %223, 1
%225 = sext i32 %224 to i64
%226 = getelementptr inbounds double, double* %199, i64 %225
%227 = load double, double* %226
%228 = load double, double* %21
%229 = load double, double* %22
%230 = fsub double 1.000000e+00, %229
%231 = fmul double %228, %230
%232 = load double*, double** %9
%233 = load i32, i32* %17
%234 = add nsw i32 %233, 1
%235 = load i32, i32* %19
%236 = add nsw i32 %234, %235
%237 = load i32, i32* %13
%238 = sdiv i32 %237, 2
%239 = sub nsw i32 %236, %238
%240 = load i32, i32* %10
%241 = add nsw i32 %239, %240
%242 = load i32, i32* %10
%243 = srem i32 %241, %242
%244 = load i32, i32* %11
%245 = mul nsw i32 %243, %244
%246 = load i32, i32* %18
%247 = load i32, i32* %20
%248 = add nsw i32 %246, %247
%249 = load i32, i32* %14
%250 = sdiv i32 %249, 2
%251 = sub nsw i32 %248, %250
%252 = load i32, i32* %11
%253 = add nsw i32 %251, %252
%254 = load i32, i32* %11
%255 = srem i32 %253, %254
%256 = add nsw i32 %245, %255
%257 = mul nsw i32 %256, 3
%258 = add nsw i32 %257, 1
%259 = sext i32 %258 to i64
%260 = getelementptr inbounds double, double* %232, i64 %259
%261 = load double, double* %260
%262 = fmul double %231, %261
%263 = call double @llvm.fmuladd.f64(double %198, double %227, double %262)
%264 = load double, double* %21
%265 = fsub double 1.000000e+00, %264
%266 = load double, double* %22
%267 = fmul double %265, %266
%268 = load double*, double** %9
%269 = load i32, i32* %17
%270 = load i32, i32* %19
%271 = add nsw i32 %269, %270
%272 = load i32, i32* %13
%273 = sdiv i32 %272, 2
%274 = sub nsw i32 %271, %273
%275 = load i32, i32* %10
%276 = add nsw i32 %274, %275
%277 = load i32, i32* %10
%278 = srem i32 %276, %277
%279 = load i32, i32* %11
%280 = mul nsw i32 %278, %279
%281 = load i32, i32* %18
%282 = add nsw i32 %281, 1
%283 = load i32, i32* %20
%284 = add nsw i32 %282, %283
%285 = load i32, i32* %14
%286 = sdiv i32 %285, 2
%287 = sub nsw i32 %284, %286
%288 = load i32, i32* %11
%289 = add nsw i32 %287, %288
%290 = load i32, i32* %11
%291 = srem i32 %289, %290
%292 = add nsw i32 %280, %291
%293 = mul nsw i32 %292, 3
%294 = add nsw i32 %293, 1
%295 = sext i32 %294 to i64
%296 = getelementptr inbounds double, double* %268, i64 %295
%297 = load double, double* %296
%298 = call double @llvm.fmuladd.f64(double %267, double %297, double %263)
%299 = load double, double* %21
%300 = load double, double* %22
%301 = fmul double %299, %300
%302 = load double*, double** %9
%303 = load i32, i32* %17
%304 = add nsw i32 %303, 1
%305 = load i32, i32* %19
%306 = add nsw i32 %304, %305
%307 = load i32, i32* %13
%308 = sdiv i32 %307, 2
%309 = sub nsw i32 %306, %308
%310 = load i32, i32* %10
%311 = add nsw i32 %309, %310
%312 = load i32, i32* %10
%313 = srem i32 %311, %312
%314 = load i32, i32* %11
%315 = mul nsw i32 %313, %314
%316 = load i32, i32* %18
%317 = add nsw i32 %316, 1
%318 = load i32, i32* %20
%319 = add nsw i32 %317, %318
%320 = load i32, i32* %14
%321 = sdiv i32 %320, 2
%322 = sub nsw i32 %319, %321
%323 = load i32, i32* %11
%324 = add nsw i32 %322, %323
%325 = load i32, i32* %11
%326 = srem i32 %324, %325
%327 = add nsw i32 %315, %326
%328 = mul nsw i32 %327, 3
%329 = add nsw i32 %328, 1
%330 = sext i32 %329 to i64
%331 = getelementptr inbounds double, double* %302, i64 %330
%332 = load double, double* %331
%333 = call double @llvm.fmuladd.f64(double %301, double %332, double %298)
%334 = load double*, double** %12
%335 = load i32, i32* %17
%336 = load i32, i32* %14
%337 = mul nsw i32 %335, %336
%338 = load i32, i32* %18
%339 = add nsw i32 %337, %338
%340 = mul nsw i32 %339, 3
%341 = add nsw i32 %340, 1
%342 = sext i32 %341 to i64
%343 = getelementptr inbounds double, double* %334, i64 %342
store double %333, double* %343
%344 = load double, double* %21
%345 = fsub double 1.000000e+00, %344
%346 = load double, double* %22
%347 = fsub double 1.000000e+00, %346
%348 = fmul double %345, %347
%349 = load double*, double** %9
%350 = load i32, i32* %17
%351 = load i32, i32* %19
%352 = add nsw i32 %350, %351
%353 = load i32, i32* %13
%354 = sdiv i32 %353, 2
%355 = sub nsw i32 %352, %354
%356 = load i32, i32* %10
%357 = add nsw i32 %355, %356
%358 = load i32, i32* %10
%359 = srem i32 %357, %358
%360 = load i32, i32* %11
%361 = mul nsw i32 %359, %360
%362 = load i32, i32* %18
%363 = load i32, i32* %20
%364 = add nsw i32 %362, %363
%365 = load i32, i32* %14
%366 = sdiv i32 %365, 2
%367 = sub nsw i32 %364, %366
%368 = load i32, i32* %11
%369 = add nsw i32 %367, %368
%370 = load i32, i32* %11
%371 = srem i32 %369, %370
%372 = add nsw i32 %361, %371
%373 = mul nsw i32 %372, 3
%374 = add nsw i32 %373, 2
%375 = sext i32 %374 to i64
%376 = getelementptr inbounds double, double* %349, i64 %375
%377 = load double, double* %376
%378 = load double, double* %21
%379 = load double, double* %22
%380 = fsub double 1.000000e+00, %379
%381 = fmul double %378, %380
%382 = load double*, double** %9
%383 = load i32, i32* %17
%384 = add nsw i32 %383, 1
%385 = load i32, i32* %19
%386 = add nsw i32 %384, %385
%387 = load i32, i32* %13
%388 = sdiv i32 %387, 2
%389 = sub nsw i32 %386, %388
%390 = load i32, i32* %10
%391 = add nsw i32 %389, %390
%392 = load i32, i32* %10
%393 = srem i32 %391, %392
%394 = load i32, i32* %11
%395 = mul nsw i32 %393, %394
%396 = load i32, i32* %18
%397 = load i32, i32* %20
%398 = add nsw i32 %396, %397
%399 = load i32, i32* %14
%400 = sdiv i32 %399, 2
%401 = sub nsw i32 %398, %400
%402 = load i32, i32* %11
%403 = add nsw i32 %401, %402
%404 = load i32, i32* %11
%405 = srem i32 %403, %404
%406 = add nsw i32 %395, %405
%407 = mul nsw i32 %406, 3
%408 = add nsw i32 %407, 2
%409 = sext i32 %408 to i64
%410 = getelementptr inbounds double, double* %382, i64 %409
%411 = load double, double* %410
%412 = fmul double %381, %411
%413 = call double @llvm.fmuladd.f64(double %348, double %377, double %412)
%414 = load double, double* %21
%415 = fsub double 1.000000e+00, %414
%416 = load double, double* %22
%417 = fmul double %415, %416
%418 = load double*, double** %9
%419 = load i32, i32* %17
%420 = load i32, i32* %19
%421 = add nsw i32 %419, %420
%422 = load i32, i32* %13
%423 = sdiv i32 %422, 2
%424 = sub nsw i32 %421, %423
%425 = load i32, i32* %10
%426 = add nsw i32 %424, %425
%427 = load i32, i32* %10
%428 = srem i32 %426, %427
%429 = load i32, i32* %11
%430 = mul nsw i32 %428, %429
%431 = load i32, i32* %18
%432 = add nsw i32 %431, 1
%433 = load i32, i32* %20
%434 = add nsw i32 %432, %433
%435 = load i32, i32* %14
%436 = sdiv i32 %435, 2
%437 = sub nsw i32 %434, %436
%438 = load i32, i32* %11
%439 = add nsw i32 %437, %438
%440 = load i32, i32* %11
%441 = srem i32 %439, %440
%442 = add nsw i32 %430, %441
%443 = mul nsw i32 %442, 3
%444 = add nsw i32 %443, 2
%445 = sext i32 %444 to i64
%446 = getelementptr inbounds double, double* %418, i64 %445
%447 = load double, double* %446
%448 = call double @llvm.fmuladd.f64(double %417, double %447, double %413)
%449 = load double, double* %21
%450 = load double, double* %22
%451 = fmul double %449, %450
%452 = load double*, double** %9
%453 = load i32, i32* %17
%454 = add nsw i32 %453, 1
%455 = load i32, i32* %19
%456 = add nsw i32 %454, %455
%457 = load i32, i32* %13
%458 = sdiv i32 %457, 2
%459 = sub nsw i32 %456, %458
%460 = load i32, i32* %10
%461 = add nsw i32 %459, %460
%462 = load i32, i32* %10
%463 = srem i32 %461, %462
%464 = load i32, i32* %11
%465 = mul nsw i32 %463, %464
%466 = load i32, i32* %18
%467 = add nsw i32 %466, 1
%468 = load i32, i32* %20
%469 = add nsw i32 %467, %468
%470 = load i32, i32* %14
%471 = sdiv i32 %470, 2
%472 = sub nsw i32 %469, %471
%473 = load i32, i32* %11
%474 = add nsw i32 %472, %473
%475 = load i32, i32* %11
%476 = srem i32 %474, %475
%477 = add nsw i32 %465, %476
%478 = mul nsw i32 %477, 3
%479 = add nsw i32 %478, 2
%480 = sext i32 %479 to i64
%481 = getelementptr inbounds double, double* %452, i64 %480
%482 = load double, double* %481
%483 = call double @llvm.fmuladd.f64(double %451, double %482, double %448)
%484 = load double*, double** %12
%485 = load i32, i32* %17
%486 = load i32, i32* %14
%487 = mul nsw i32 %485, %486
%488 = load i32, i32* %18
%489 = add nsw i32 %487, %488
%490 = mul nsw i32 %489, 3
%491 = add nsw i32 %490, 2
%492 = sext i32 %491 to i64
%493 = getelementptr inbounds double, double* %484, i64 %492
store double %483, double* %493
br label %494
494: ; preds = %48
%495 = load i32, i32* %18
%496 = add nsw i32 %495, 1
store i32 %496, i32* %18
br label %44
497: ; preds = %44
br label %498
498: ; preds = %497
%499 = load i32, i32* %17
%500 = add nsw i32 %499, 1
store i32 %500, i32* %17
br label %39
501: ; preds = %39
ret void
}

LLVM IR (-O2):
define void @Cutdata_te(double* nocapture %0, i32 %1, i32 %2, double* nocapture writeonly %3, i32 %4, i32 %5, double %6, double %7) {
%9 = tail call double @llvm.floor.f64(double %6)
%10 = fptosi double %9 to i32
%11 = tail call double @llvm.floor.f64(double %7)
%12 = fptosi double %11 to i32
%13 = sitofp i32 %10 to double
%14 = fsub double %6, %13
%15 = sitofp i32 %12 to double
%16 = fsub double %7, %15
%17 = icmp sgt i32 %4, 0
br i1 %17, label %18, label %134
18: ; preds = %8
%19 = icmp sgt i32 %5, 0
%20 = fsub double 1.000000e+00, %14
%21 = fsub double 1.000000e+00, %16
%22 = fmul double %20, %21
%23 = lshr i32 %4, 1
%24 = sdiv i32 %5, -2
%25 = add i32 %24, %2
%26 = add i32 %25, %12
%27 = fmul double %14, %21
%28 = fmul double %20, %16
%29 = fmul double %14, %16
%30 = sext i32 %5 to i64
%31 = zext i32 %4 to i64
%32 = zext i32 %5 to i64
br label %33
33: ; preds = %18, %131
%34 = phi i64 [ 0, %18 ], [ %132, %131 ]
br i1 %19, label %35, label %131
35: ; preds = %33
%36 = trunc i64 %34 to i32
%37 = add i32 %36, %10
%38 = add i32 %37, %1
%39 = sub i32 %38, %23
%40 = srem i32 %39, %1
%41 = mul nsw i32 %40, %2
%42 = trunc i64 %34 to i32
%43 = add i32 %42, %10
%44 = add i32 %43, 1
%45 = add i32 %44, %1
%46 = sub i32 %45, %23
%47 = srem i32 %46, %1
%48 = mul nsw i32 %47, %2
%49 = mul nsw i64 %34, %30
br label %50
50: ; preds = %35, %50
%51 = phi i64 [ 0, %35 ], [ %67, %50 ]
%52 = trunc i64 %51 to i32
%53 = add i32 %26, %52
%54 = srem i32 %53, %2
%55 = add nsw i32 %41, %54
%56 = mul nsw i32 %55, 3
%57 = sext i32 %56 to i64
%58 = getelementptr inbounds double, double* %0, i64 %57
%59 = load double, double* %58
%60 = add nsw i32 %48, %54
%61 = mul nsw i32 %60, 3
%62 = sext i32 %61 to i64
%63 = getelementptr inbounds double, double* %0, i64 %62
%64 = load double, double* %63
%65 = fmul double %27, %64
%66 = tail call double @llvm.fmuladd.f64(double %22, double %59, double %65)
%67 = add nuw nsw i64 %51, 1
%68 = trunc i64 %67 to i32
%69 = add i32 %26, %68
%70 = srem i32 %69, %2
%71 = add nsw i32 %70, %41
%72 = mul nsw i32 %71, 3
%73 = sext i32 %72 to i64
%74 = getelementptr inbounds double, double* %0, i64 %73
%75 = load double, double* %74
%76 = tail call double @llvm.fmuladd.f64(double %28, double %75, double %66)
%77 = add nsw i32 %70, %48
%78 = mul nsw i32 %77, 3
%79 = sext i32 %78 to i64
%80 = getelementptr inbounds double, double* %0, i64 %79
%81 = load double, double* %80
%82 = tail call double @llvm.fmuladd.f64(double %29, double %81, double %76)
%83 = add nsw i64 %51, %49
%84 = mul nsw i64 %83, 3
%85 = getelementptr inbounds double, double* %3, i64 %84
store double %82, double* %85
%86 = add nsw i32 %56, 1
%87 = sext i32 %86 to i64
%88 = getelementptr inbounds double, double* %0, i64 %87
%89 = load double, double* %88
%90 = add nsw i32 %61, 1
%91 = sext i32 %90 to i64
%92 = getelementptr inbounds double, double* %0, i64 %91
%93 = load double, double* %92
%94 = fmul double %27, %93
%95 = tail call double @llvm.fmuladd.f64(double %22, double %89, double %94)
%96 = add nsw i32 %72, 1
%97 = sext i32 %96 to i64
%98 = getelementptr inbounds double, double* %0, i64 %97
%99 = load double, double* %98
%100 = tail call double @llvm.fmuladd.f64(double %28, double %99, double %95)
%101 = add nsw i32 %78, 1
%102 = sext i32 %101 to i64
%103 = getelementptr inbounds double, double* %0, i64 %102
%104 = load double, double* %103
%105 = tail call double @llvm.fmuladd.f64(double %29, double %104, double %100)
%106 = add nsw i64 %84, 1
%107 = getelementptr inbounds double, double* %3, i64 %106
store double %105, double* %107
%108 = add nsw i32 %56, 2
%109 = sext i32 %108 to i64
%110 = getelementptr inbounds double, double* %0, i64 %109
%111 = load double, double* %110
%112 = add nsw i32 %61, 2
%113 = sext i32 %112 to i64
%114 = getelementptr inbounds double, double* %0, i64 %113
%115 = load double, double* %114
%116 = fmul double %27, %115
%117 = tail call double @llvm.fmuladd.f64(double %22, double %111, double %116)
%118 = add nsw i32 %72, 2
%119 = sext i32 %118 to i64
%120 = getelementptr inbounds double, double* %0, i64 %119
%121 = load double, double* %120
%122 = tail call double @llvm.fmuladd.f64(double %28, double %121, double %117)
%123 = add nsw i32 %78, 2
%124 = sext i32 %123 to i64
%125 = getelementptr inbounds double, double* %0, i64 %124
%126 = load double, double* %125
%127 = tail call double @llvm.fmuladd.f64(double %29, double %126, double %122)
%128 = add nsw i64 %84, 2
%129 = getelementptr inbounds double, double* %3, i64 %128
store double %127, double* %129
%130 = icmp eq i64 %67, %32
br i1 %130, label %131, label %50
131: ; preds = %50, %33
%132 = add nuw nsw i64 %34, 1
%133 = icmp eq i64 %132, %31
br i1 %133, label %134, label %33
134: ; preds = %131, %8
ret void
}