void filling(double **arr, int *index, const double du, char u, int size) {
  double quant = 0;
  double u0, u1;
  if (u == 'x') {
    u0 = arr[0][0];
    u1 = arr[size - 1][0];
  } else if (u == 'y') {
    u0 = arr[0][1];
    u1 = arr[size - 1][1];
  } else {
    u0 = arr[0][2];
    u1 = arr[size - 1][2];
  }
  if (u0 < u1) {
    if (u0 >= 0) {
      while (quant <= u0) {
        quant += du;
      }
    } else {
      while (quant >= u0 + du) {
        quant -= du;
      }
      if (u0 == quant) {
        quant += du;
      }
    }
    while (quant < u1) {
      if (u == 'x') {
        arr[*index][0] = quant;
        arr[*index][1] =
            (arr[*index][0] - u0) * (arr[size - 1][1] - arr[0][1]) / (u1 - u0) +
            arr[0][1];
        arr[*index][2] =
            (arr[*index][0] - u0) * (arr[size - 1][2] - arr[0][2]) / (u1 - u0) +
            arr[0][2];
      } else if (u == 'y') {
        arr[*index][1] = quant;
        arr[*index][0] =
            (arr[*index][1] - u0) * (arr[size - 1][0] - arr[0][0]) / (u1 - u0) +
            arr[0][0];
        arr[*index][2] =
            (arr[*index][1] - u0) * (arr[size - 1][2] - arr[0][2]) / (u1 - u0) +
            arr[0][2];
      } else {
        arr[*index][2] = quant;
        arr[*index][0] =
            (arr[*index][2] - u0) * (arr[size - 1][0] - arr[0][0]) / (u1 - u0) +
            arr[0][0];
        arr[*index][1] =
            (arr[*index][2] - u0) * (arr[size - 1][1] - arr[0][1]) / (u1 - u0) +
            arr[0][1];
      }
      quant += du;
      *index = *index + 1;
    }
  } else if (u0 > u1) {
    if (u0 > 0) {
      while (quant <= u0 - du) {
        quant += du;
      }
      if (u0 == quant) {
        quant -= du;
      }
    } else {
      while (quant >= u0) {
        quant -= du;
      }
    }
    while (quant > u1) {
      if (u == 'x') {
        arr[*index][0] = quant;
        arr[*index][1] =
            (arr[*index][0] - u0) * (arr[size - 1][1] - arr[0][1]) / (u1 - u0) +
            arr[0][1];
        arr[*index][2] =
            (arr[*index][0] - u0) * (arr[size - 1][2] - arr[0][2]) / (u1 - u0) +
            arr[0][2];
      } else if (u == 'y') {
        arr[*index][1] = quant;
        arr[*index][0] =
            (arr[*index][1] - u0) * (arr[size - 1][0] - arr[0][0]) / (u1 - u0) +
            arr[0][0];
        arr[*index][2] =
            (arr[*index][1] - u0) * (arr[size - 1][2] - arr[0][2]) / (u1 - u0) +
            arr[0][2];
      } else {
        arr[*index][2] = quant;
        arr[*index][0] =
            (arr[*index][2] - u0) * (arr[size - 1][0] - arr[0][0]) / (u1 - u0) +
            arr[0][0];
        arr[*index][1] =
            (arr[*index][2] - u0) * (arr[size - 1][1] - arr[0][1]) / (u1 - u0) +
            arr[0][1];
      }
      quant -= du;
      *index = *index + 1;
    }
  }
}


x86 assembly (clang, -O0):
<filling>:
push   %rbp
mov    %rsp,%rbp
mov    %dl,%al
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movsd  %xmm0,-0x18(%rbp)
mov    %al,-0x19(%rbp)
mov    %ecx,-0x20(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsbl -0x19(%rbp),%eax
cmp    $0x78,%eax
jne    115d <filling+0x5d>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
jmp    11cc <filling+0xcc>
movsbl -0x19(%rbp),%eax
cmp    $0x79,%eax
jne    119b <filling+0x9b>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
jmp    11c7 <filling+0xc7>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
jmp    11cc <filling+0xcc>
movsd  -0x30(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    15bc <filling+0x4bc>
movsd  -0x30(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1224 <filling+0x124>
jmp    11f7 <filling+0xf7>
movsd  -0x28(%rbp),%xmm1
movsd  -0x30(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jb     121f <filling+0x11f>
movsd  -0x18(%rbp),%xmm0
addsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
jmp    11f7 <filling+0xf7>
jmp    1284 <filling+0x184>
jmp    1229 <filling+0x129>
movsd  -0x28(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
addsd  -0x18(%rbp),%xmm1
ucomisd %xmm1,%xmm0
jb     125a <filling+0x15a>
movsd  -0x18(%rbp),%xmm1
movsd  -0x28(%rbp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
jmp    1229 <filling+0x129>
movsd  -0x30(%rbp),%xmm0
ucomisd -0x28(%rbp),%xmm0
jne    127f <filling+0x17f>
jp     127f <filling+0x17f>
movsd  -0x18(%rbp),%xmm0
addsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
jmp    1284 <filling+0x184>
jmp    1289 <filling+0x189>
movsd  -0x28(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    15b7 <filling+0x4b7>
movsbl -0x19(%rbp),%eax
cmp    $0x78,%eax
jne    139f <filling+0x29f>
movsd  -0x28(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    (%rax,%rcx,8),%rax
movsd  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    (%rax,%rcx,8),%rax
movsd  (%rax),%xmm0
subsd  -0x30(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movsd  0x8(%rax),%xmm1
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
subsd  0x8(%rax),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x38(%rbp),%xmm1
subsd  -0x30(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
addsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    (%rax,%rcx,8),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    (%rax,%rcx,8),%rax
movsd  (%rax),%xmm0
subsd  -0x30(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movsd  0x10(%rax),%xmm1
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
subsd  0x10(%rax),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x38(%rbp),%xmm1
subsd  -0x30(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
addsd  0x10(%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    (%rax,%rcx,8),%rax
movsd  %xmm0,0x10(%rax)
jmp    1594 <filling+0x494>
movsbl -0x19(%rbp),%eax
cmp    $0x79,%eax
jne    14a0 <filling+0x3a0>
movsd  -0x28(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    (%rax,%rcx,8),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    (%rax,%rcx,8),%rax
movsd  0x8(%rax),%xmm0
subsd  -0x30(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movsd  (%rax),%xmm1
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
subsd  (%rax),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x38(%rbp),%xmm1
subsd  -0x30(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
addsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    (%rax,%rcx,8),%rax
movsd  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    (%rax,%rcx,8),%rax
movsd  0x8(%rax),%xmm0
subsd  -0x30(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movsd  0x10(%rax),%xmm1
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
subsd  0x10(%rax),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x38(%rbp),%xmm1
subsd  -0x30(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
addsd  0x10(%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    (%rax,%rcx,8),%rax
movsd  %xmm0,0x10(%rax)
jmp    158f <filling+0x48f>
movsd  -0x28(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    (%rax,%rcx,8),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    (%rax,%rcx,8),%rax
movsd  0x10(%rax),%xmm0
subsd  -0x30(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movsd  (%rax),%xmm1
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
subsd  (%rax),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x38(%rbp),%xmm1
subsd  -0x30(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
addsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    (%rax,%rcx,8),%rax
movsd  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    (%rax,%rcx,8),%rax
movsd  0x10(%rax),%xmm0
subsd  -0x30(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movsd  0x8(%rax),%xmm1
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
subsd  0x8(%rax),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x38(%rbp),%xmm1
subsd  -0x30(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
addsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    (%rax,%rcx,8),%rax
movsd  %xmm0,0x8(%rax)
jmp    1594 <filling+0x494>
movsd  -0x18(%rbp),%xmm0
addsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
jmp    1289 <filling+0x189>
jmp    19ad <filling+0x8ad>
movsd  -0x30(%rbp),%xmm0
ucomisd -0x38(%rbp),%xmm0
jbe    19a8 <filling+0x8a8>
movsd  -0x30(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    163e <filling+0x53e>
jmp    15e3 <filling+0x4e3>
movsd  -0x28(%rbp),%xmm1
movsd  -0x30(%rbp),%xmm0
subsd  -0x18(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jb     1610 <filling+0x510>
movsd  -0x18(%rbp),%xmm0
addsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
jmp    15e3 <filling+0x4e3>
movsd  -0x30(%rbp),%xmm0
ucomisd -0x28(%rbp),%xmm0
jne    1639 <filling+0x539>
jp     1639 <filling+0x539>
movsd  -0x18(%rbp),%xmm1
movsd  -0x28(%rbp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
jmp    1670 <filling+0x570>
jmp    1643 <filling+0x543>
movsd  -0x28(%rbp),%xmm0
ucomisd -0x30(%rbp),%xmm0
jb     166b <filling+0x56b>
movsd  -0x18(%rbp),%xmm1
movsd  -0x28(%rbp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
jmp    1643 <filling+0x543>
jmp    1670 <filling+0x570>
jmp    1675 <filling+0x575>
movsd  -0x28(%rbp),%xmm0
ucomisd -0x38(%rbp),%xmm0
jbe    19a3 <filling+0x8a3>
movsbl -0x19(%rbp),%eax
cmp    $0x78,%eax
jne    1787 <filling+0x687>
movsd  -0x28(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    (%rax,%rcx,8),%rax
movsd  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    (%rax,%rcx,8),%rax
movsd  (%rax),%xmm0
subsd  -0x30(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movsd  0x8(%rax),%xmm1
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
subsd  0x8(%rax),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x38(%rbp),%xmm1
subsd  -0x30(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
addsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    (%rax,%rcx,8),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    (%rax,%rcx,8),%rax
movsd  (%rax),%xmm0
subsd  -0x30(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movsd  0x10(%rax),%xmm1
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
subsd  0x10(%rax),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x38(%rbp),%xmm1
subsd  -0x30(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
addsd  0x10(%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    (%rax,%rcx,8),%rax
movsd  %xmm0,0x10(%rax)
jmp    197c <filling+0x87c>
movsbl -0x19(%rbp),%eax
cmp    $0x79,%eax
jne    1888 <filling+0x788>
movsd  -0x28(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    (%rax,%rcx,8),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    (%rax,%rcx,8),%rax
movsd  0x8(%rax),%xmm0
subsd  -0x30(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movsd  (%rax),%xmm1
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
subsd  (%rax),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x38(%rbp),%xmm1
subsd  -0x30(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
addsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    (%rax,%rcx,8),%rax
movsd  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    (%rax,%rcx,8),%rax
movsd  0x8(%rax),%xmm0
subsd  -0x30(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movsd  0x10(%rax),%xmm1
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
subsd  0x10(%rax),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x38(%rbp),%xmm1
subsd  -0x30(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
addsd  0x10(%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    (%rax,%rcx,8),%rax
movsd  %xmm0,0x10(%rax)
jmp    1977 <filling+0x877>
movsd  -0x28(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    (%rax,%rcx,8),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    (%rax,%rcx,8),%rax
movsd  0x10(%rax),%xmm0
subsd  -0x30(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movsd  (%rax),%xmm1
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
subsd  (%rax),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x38(%rbp),%xmm1
subsd  -0x30(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
addsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    (%rax,%rcx,8),%rax
movsd  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    (%rax,%rcx,8),%rax
movsd  0x10(%rax),%xmm0
subsd  -0x30(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movsd  0x8(%rax),%xmm1
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
subsd  0x8(%rax),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x38(%rbp),%xmm1
subsd  -0x30(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
addsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
mov    (%rax,%rcx,8),%rax
movsd  %xmm0,0x8(%rax)
jmp    197c <filling+0x87c>
movsd  -0x18(%rbp),%xmm1
movsd  -0x28(%rbp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
jmp    1675 <filling+0x575>
jmp    19a8 <filling+0x8a8>
jmp    19ad <filling+0x8ad>
pop    %rbp
ret

x86 assembly (clang, -O2):
<filling>:
movslq %ecx,%rcx
cmp    $0x78,%dl
jne    1118 <filling+0x18>
mov    (%rdi),%r8
mov    -0x8(%rdi,%rcx,8),%r9
mov    %r8,%rax
mov    %r9,%rcx
jmp    113c <filling+0x3c>
mov    (%rdi),%r8
cmp    $0x79,%dl
jne    112f <filling+0x2f>
lea    0x8(%r8),%rax
mov    -0x8(%rdi,%rcx,8),%r9
lea    0x8(%r9),%rcx
jmp    113c <filling+0x3c>
lea    0x10(%r8),%rax
mov    -0x8(%rdi,%rcx,8),%r9
lea    0x10(%r9),%rcx
movsd  (%rcx),%xmm1
movsd  (%rax),%xmm2
ucomisd %xmm2,%xmm1
jbe    12bb <filling+0x1bb>
xorpd  %xmm3,%xmm3
ucomisd %xmm3,%xmm2
jae    1190 <filling+0x90>
movapd %xmm2,%xmm4
addsd  %xmm0,%xmm4
xorpd  %xmm3,%xmm3
ucomisd %xmm4,%xmm3
jb     117a <filling+0x7a>
xorpd  %xmm3,%xmm3
xchg   %ax,%ax
subsd  %xmm0,%xmm3
ucomisd %xmm4,%xmm3
jae    1170 <filling+0x70>
ucomisd %xmm3,%xmm2
jne    119a <filling+0x9a>
jp     119a <filling+0x9a>
addsd  %xmm0,%xmm3
jmp    119a <filling+0x9a>
nopl   0x0(%rax,%rax,1)
addsd  %xmm0,%xmm3
ucomisd %xmm3,%xmm2
jae    1190 <filling+0x90>
ucomisd %xmm3,%xmm1
jbe    144d <filling+0x34d>
movapd %xmm1,%xmm4
subsd  %xmm2,%xmm4
movslq (%rsi),%rax
jmp    1228 <filling+0x128>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movsd  %xmm3,(%r10)
movapd %xmm3,%xmm7
subsd  %xmm2,%xmm7
movsd  0x8(%r9),%xmm5
movsd  0x8(%r8),%xmm6
subsd  %xmm6,%xmm5
mulsd  %xmm7,%xmm5
divsd  %xmm4,%xmm5
addsd  %xmm6,%xmm5
movsd  %xmm5,0x8(%r10)
movsd  0x10(%r9),%xmm5
movsd  0x10(%r8),%xmm6
subsd  %xmm6,%xmm5
mulsd  %xmm7,%xmm5
mov    $0x2,%ecx
divsd  %xmm4,%xmm5
addsd  %xmm6,%xmm5
movsd  %xmm5,(%r10,%rcx,8)
addsd  %xmm0,%xmm3
add    $0x1,%rax
ucomisd %xmm3,%xmm1
jbe    144b <filling+0x34b>
mov    (%rdi,%rax,8),%r10
cmp    $0x78,%dl
je     11c0 <filling+0xc0>
cmp    $0x79,%dl
jne    1270 <filling+0x170>
movsd  %xmm3,0x8(%r10)
movapd %xmm3,%xmm7
subsd  %xmm2,%xmm7
movsd  (%r9),%xmm5
movsd  (%r8),%xmm6
subsd  %xmm6,%xmm5
mulsd  %xmm7,%xmm5
divsd  %xmm4,%xmm5
addsd  %xmm6,%xmm5
movsd  %xmm5,(%r10)
jmp    11ef <filling+0xef>
cs nopw 0x0(%rax,%rax,1)
nop
movsd  %xmm3,0x10(%r10)
movapd %xmm3,%xmm7
subsd  %xmm2,%xmm7
movsd  (%r9),%xmm5
movsd  (%r8),%xmm6
subsd  %xmm6,%xmm5
mulsd  %xmm7,%xmm5
divsd  %xmm4,%xmm5
addsd  %xmm6,%xmm5
movsd  %xmm5,(%r10)
movsd  0x8(%r9),%xmm5
movsd  0x8(%r8),%xmm6
subsd  %xmm6,%xmm5
mulsd  %xmm7,%xmm5
mov    $0x1,%ecx
jmp    1208 <filling+0x108>
ucomisd %xmm1,%xmm2
jbe    144d <filling+0x34d>
xorpd  %xmm3,%xmm3
ucomisd %xmm3,%xmm2
jbe    1308 <filling+0x208>
movapd %xmm2,%xmm4
subsd  %xmm0,%xmm4
xorpd  %xmm3,%xmm3
ucomisd %xmm3,%xmm4
jb     12fa <filling+0x1fa>
xorpd  %xmm3,%xmm3
cs nopw 0x0(%rax,%rax,1)
nop
addsd  %xmm0,%xmm3
ucomisd %xmm3,%xmm4
jae    12f0 <filling+0x1f0>
ucomisd %xmm3,%xmm2
jne    132a <filling+0x22a>
jp     132a <filling+0x22a>
subsd  %xmm0,%xmm3
jmp    132a <filling+0x22a>
ucomisd %xmm2,%xmm3
jb     132a <filling+0x22a>
xorpd  %xmm3,%xmm3
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
subsd  %xmm0,%xmm3
ucomisd %xmm2,%xmm3
jae    1320 <filling+0x220>
ucomisd %xmm1,%xmm3
jbe    144d <filling+0x34d>
movapd %xmm1,%xmm4
subsd  %xmm2,%xmm4
movslq (%rsi),%rax
jmp    13b8 <filling+0x2b8>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movsd  %xmm3,(%r10)
movapd %xmm3,%xmm7
subsd  %xmm2,%xmm7
movsd  0x8(%r9),%xmm5
movsd  0x8(%r8),%xmm6
subsd  %xmm6,%xmm5
mulsd  %xmm7,%xmm5
divsd  %xmm4,%xmm5
addsd  %xmm6,%xmm5
movsd  %xmm5,0x8(%r10)
movsd  0x10(%r9),%xmm5
movsd  0x10(%r8),%xmm6
subsd  %xmm6,%xmm5
mulsd  %xmm7,%xmm5
mov    $0x2,%ecx
divsd  %xmm4,%xmm5
addsd  %xmm6,%xmm5
movsd  %xmm5,(%r10,%rcx,8)
subsd  %xmm0,%xmm3
add    $0x1,%rax
ucomisd %xmm1,%xmm3
jbe    144b <filling+0x34b>
mov    (%rdi,%rax,8),%r10
cmp    $0x78,%dl
je     1350 <filling+0x250>
cmp    $0x79,%dl
jne    1400 <filling+0x300>
movsd  %xmm3,0x8(%r10)
movapd %xmm3,%xmm7
subsd  %xmm2,%xmm7
movsd  (%r9),%xmm5
movsd  (%r8),%xmm6
subsd  %xmm6,%xmm5
mulsd  %xmm7,%xmm5
divsd  %xmm4,%xmm5
addsd  %xmm6,%xmm5
movsd  %xmm5,(%r10)
jmp    137f <filling+0x27f>
cs nopw 0x0(%rax,%rax,1)
nop
movsd  %xmm3,0x10(%r10)
movapd %xmm3,%xmm7
subsd  %xmm2,%xmm7
movsd  (%r9),%xmm5
movsd  (%r8),%xmm6
subsd  %xmm6,%xmm5
mulsd  %xmm7,%xmm5
divsd  %xmm4,%xmm5
addsd  %xmm6,%xmm5
movsd  %xmm5,(%r10)
movsd  0x8(%r9),%xmm5
movsd  0x8(%r8),%xmm6
subsd  %xmm6,%xmm5
mulsd  %xmm7,%xmm5
mov    $0x1,%ecx
jmp    1398 <filling+0x298>
mov    %eax,(%rsi)
ret

LLVM IR (-O0):
define void @filling(double** %0, i32* %1, double %2, i8 signext %3, i32 %4) {
%6 = alloca double**
%7 = alloca i32*
%8 = alloca double
%9 = alloca i8
%10 = alloca i32
%11 = alloca double
%12 = alloca double
%13 = alloca double
store double** %0, double*** %6
store i32* %1, i32** %7
store double %2, double* %8
store i8 %3, i8* %9
store i32 %4, i32* %10
store double 0.000000e+00, double* %11
%14 = load i8, i8* %9
%15 = sext i8 %14 to i32
%16 = icmp eq i32 %15, 120
br i1 %16, label %17, label %31
17: ; preds = %5
%18 = load double**, double*** %6
%19 = getelementptr inbounds double*, double** %18, i64 0
%20 = load double*, double** %19
%21 = getelementptr inbounds double, double* %20, i64 0
%22 = load double, double* %21
store double %22, double* %12
%23 = load double**, double*** %6
%24 = load i32, i32* %10
%25 = sub nsw i32 %24, 1
%26 = sext i32 %25 to i64
%27 = getelementptr inbounds double*, double** %23, i64 %26
%28 = load double*, double** %27
%29 = getelementptr inbounds double, double* %28, i64 0
%30 = load double, double* %29
store double %30, double* %13
br label %64
31: ; preds = %5
%32 = load i8, i8* %9
%33 = sext i8 %32 to i32
%34 = icmp eq i32 %33, 121
br i1 %34, label %35, label %49
35: ; preds = %31
%36 = load double**, double*** %6
%37 = getelementptr inbounds double*, double** %36, i64 0
%38 = load double*, double** %37
%39 = getelementptr inbounds double, double* %38, i64 1
%40 = load double, double* %39
store double %40, double* %12
%41 = load double**, double*** %6
%42 = load i32, i32* %10
%43 = sub nsw i32 %42, 1
%44 = sext i32 %43 to i64
%45 = getelementptr inbounds double*, double** %41, i64 %44
%46 = load double*, double** %45
%47 = getelementptr inbounds double, double* %46, i64 1
%48 = load double, double* %47
store double %48, double* %13
br label %63
49: ; preds = %31
%50 = load double**, double*** %6
%51 = getelementptr inbounds double*, double** %50, i64 0
%52 = load double*, double** %51
%53 = getelementptr inbounds double, double* %52, i64 2
%54 = load double, double* %53
store double %54, double* %12
%55 = load double**, double*** %6
%56 = load i32, i32* %10
%57 = sub nsw i32 %56, 1
%58 = sext i32 %57 to i64
%59 = getelementptr inbounds double*, double** %55, i64 %58
%60 = load double*, double** %59
%61 = getelementptr inbounds double, double* %60, i64 2
%62 = load double, double* %61
store double %62, double* %13
br label %63
63: ; preds = %49, %35
br label %64
64: ; preds = %63, %17
%65 = load double, double* %12
%66 = load double, double* %13
%67 = fcmp olt double %65, %66
br i1 %67, label %68, label %403
68: ; preds = %64
%69 = load double, double* %12
%70 = fcmp oge double %69, 0.000000e+00
br i1 %70, label %71, label %81
71: ; preds = %68
br label %72
72: ; preds = %76, %71
%73 = load double, double* %11
%74 = load double, double* %12
%75 = fcmp ole double %73, %74
br i1 %75, label %76, label %80
76: ; preds = %72
%77 = load double, double* %8
%78 = load double, double* %11
%79 = fadd double %78, %77
store double %79, double* %11
br label %72
80: ; preds = %72
br label %101
81: ; preds = %68
br label %82
82: ; preds = %88, %81
%83 = load double, double* %11
%84 = load double, double* %12
%85 = load double, double* %8
%86 = fadd double %84, %85
%87 = fcmp oge double %83, %86
br i1 %87, label %88, label %92
88: ; preds = %82
%89 = load double, double* %8
%90 = load double, double* %11
%91 = fsub double %90, %89
store double %91, double* %11
br label %82
92: ; preds = %82
%93 = load double, double* %12
%94 = load double, double* %11
%95 = fcmp oeq double %93, %94
br i1 %95, label %96, label %100
96: ; preds = %92
%97 = load double, double* %8
%98 = load double, double* %11
%99 = fadd double %98, %97
store double %99, double* %11
br label %100
100: ; preds = %96, %92
br label %101
101: ; preds = %100, %80
br label %102
102: ; preds = %394, %101
%103 = load double, double* %11
%104 = load double, double* %13
%105 = fcmp olt double %103, %104
br i1 %105, label %106, label %402
106: ; preds = %102
%107 = load i8, i8* %9
%108 = sext i8 %107 to i32
%109 = icmp eq i32 %108, 120
br i1 %109, label %110, label %203
110: ; preds = %106
%111 = load double, double* %11
%112 = load double**, double*** %6
%113 = load i32*, i32** %7
%114 = load i32, i32* %113
%115 = sext i32 %114 to i64
%116 = getelementptr inbounds double*, double** %112, i64 %115
%117 = load double*, double** %116
%118 = getelementptr inbounds double, double* %117, i64 0
store double %111, double* %118
%119 = load double**, double*** %6
%120 = load i32*, i32** %7
%121 = load i32, i32* %120
%122 = sext i32 %121 to i64
%123 = getelementptr inbounds double*, double** %119, i64 %122
%124 = load double*, double** %123
%125 = getelementptr inbounds double, double* %124, i64 0
%126 = load double, double* %125
%127 = load double, double* %12
%128 = fsub double %126, %127
%129 = load double**, double*** %6
%130 = load i32, i32* %10
%131 = sub nsw i32 %130, 1
%132 = sext i32 %131 to i64
%133 = getelementptr inbounds double*, double** %129, i64 %132
%134 = load double*, double** %133
%135 = getelementptr inbounds double, double* %134, i64 1
%136 = load double, double* %135
%137 = load double**, double*** %6
%138 = getelementptr inbounds double*, double** %137, i64 0
%139 = load double*, double** %138
%140 = getelementptr inbounds double, double* %139, i64 1
%141 = load double, double* %140
%142 = fsub double %136, %141
%143 = fmul double %128, %142
%144 = load double, double* %13
%145 = load double, double* %12
%146 = fsub double %144, %145
%147 = fdiv double %143, %146
%148 = load double**, double*** %6
%149 = getelementptr inbounds double*, double** %148, i64 0
%150 = load double*, double** %149
%151 = getelementptr inbounds double, double* %150, i64 1
%152 = load double, double* %151
%153 = fadd double %147, %152
%154 = load double**, double*** %6
%155 = load i32*, i32** %7
%156 = load i32, i32* %155
%157 = sext i32 %156 to i64
%158 = getelementptr inbounds double*, double** %154, i64 %157
%159 = load double*, double** %158
%160 = getelementptr inbounds double, double* %159, i64 1
store double %153, double* %160
%161 = load double**, double*** %6
%162 = load i32*, i32** %7
%163 = load i32, i32* %162
%164 = sext i32 %163 to i64
%165 = getelementptr inbounds double*, double** %161, i64 %164
%166 = load double*, double** %165
%167 = getelementptr inbounds double, double* %166, i64 0
%168 = load double, double* %167
%169 = load double, double* %12
%170 = fsub double %168, %169
%171 = load double**, double*** %6
%172 = load i32, i32* %10
%173 = sub nsw i32 %172, 1
%174 = sext i32 %173 to i64
%175 = getelementptr inbounds double*, double** %171, i64 %174
%176 = load double*, double** %175
%177 = getelementptr inbounds double, double* %176, i64 2
%178 = load double, double* %177
%179 = load double**, double*** %6
%180 = getelementptr inbounds double*, double** %179, i64 0
%181 = load double*, double** %180
%182 = getelementptr inbounds double, double* %181, i64 2
%183 = load double, double* %182
%184 = fsub double %178, %183
%185 = fmul double %170, %184
%186 = load double, double* %13
%187 = load double, double* %12
%188 = fsub double %186, %187
%189 = fdiv double %185, %188
%190 = load double**, double*** %6
%191 = getelementptr inbounds double*, double** %190, i64 0
%192 = load double*, double** %191
%193 = getelementptr inbounds double, double* %192, i64 2
%194 = load double, double* %193
%195 = fadd double %189, %194
%196 = load double**, double*** %6
%197 = load i32*, i32** %7
%198 = load i32, i32* %197
%199 = sext i32 %198 to i64
%200 = getelementptr inbounds double*, double** %196, i64 %199
%201 = load double*, double** %200
%202 = getelementptr inbounds double, double* %201, i64 2
store double %195, double* %202
br label %394
203: ; preds = %106
%204 = load i8, i8* %9
%205 = sext i8 %204 to i32
%206 = icmp eq i32 %205, 121
br i1 %206, label %207, label %300
207: ; preds = %203
%208 = load double, double* %11
%209 = load double**, double*** %6
%210 = load i32*, i32** %7
%211 = load i32, i32* %210
%212 = sext i32 %211 to i64
%213 = getelementptr inbounds double*, double** %209, i64 %212
%214 = load double*, double** %213
%215 = getelementptr inbounds double, double* %214, i64 1
store double %208, double* %215
%216 = load double**, double*** %6
%217 = load i32*, i32** %7
%218 = load i32, i32* %217
%219 = sext i32 %218 to i64
%220 = getelementptr inbounds double*, double** %216, i64 %219
%221 = load double*, double** %220
%222 = getelementptr inbounds double, double* %221, i64 1
%223 = load double, double* %222
%224 = load double, double* %12
%225 = fsub double %223, %224
%226 = load double**, double*** %6
%227 = load i32, i32* %10
%228 = sub nsw i32 %227, 1
%229 = sext i32 %228 to i64
%230 = getelementptr inbounds double*, double** %226, i64 %229
%231 = load double*, double** %230
%232 = getelementptr inbounds double, double* %231, i64 0
%233 = load double, double* %232
%234 = load double**, double*** %6
%235 = getelementptr inbounds double*, double** %234, i64 0
%236 = load double*, double** %235
%237 = getelementptr inbounds double, double* %236, i64 0
%238 = load double, double* %237
%239 = fsub double %233, %238
%240 = fmul double %225, %239
%241 = load double, double* %13
%242 = load double, double* %12
%243 = fsub double %241, %242
%244 = fdiv double %240, %243
%245 = load double**, double*** %6
%246 = getelementptr inbounds double*, double** %245, i64 0
%247 = load double*, double** %246
%248 = getelementptr inbounds double, double* %247, i64 0
%249 = load double, double* %248
%250 = fadd double %244, %249
%251 = load double**, double*** %6
%252 = load i32*, i32** %7
%253 = load i32, i32* %252
%254 = sext i32 %253 to i64
%255 = getelementptr inbounds double*, double** %251, i64 %254
%256 = load double*, double** %255
%257 = getelementptr inbounds double, double* %256, i64 0
store double %250, double* %257
%258 = load double**, double*** %6
%259 = load i32*, i32** %7
%260 = load i32, i32* %259
%261 = sext i32 %260 to i64
%262 = getelementptr inbounds double*, double** %258, i64 %261
%263 = load double*, double** %262
%264 = getelementptr inbounds double, double* %263, i64 1
%265 = load double, double* %264
%266 = load double, double* %12
%267 = fsub double %265, %266
%268 = load double**, double*** %6
%269 = load i32, i32* %10
%270 = sub nsw i32 %269, 1
%271 = sext i32 %270 to i64
%272 = getelementptr inbounds double*, double** %268, i64 %271
%273 = load double*, double** %272
%274 = getelementptr inbounds double, double* %273, i64 2
%275 = load double, double* %274
%276 = load double**, double*** %6
%277 = getelementptr inbounds double*, double** %276, i64 0
%278 = load double*, double** %277
%279 = getelementptr inbounds double, double* %278, i64 2
%280 = load double, double* %279
%281 = fsub double %275, %280
%282 = fmul double %267, %281
%283 = load double, double* %13
%284 = load double, double* %12
%285 = fsub double %283, %284
%286 = fdiv double %282, %285
%287 = load double**, double*** %6
%288 = getelementptr inbounds double*, double** %287, i64 0
%289 = load double*, double** %288
%290 = getelementptr inbounds double, double* %289, i64 2
%291 = load double, double* %290
%292 = fadd double %286, %291
%293 = load double**, double*** %6
%294 = load i32*, i32** %7
%295 = load i32, i32* %294
%296 = sext i32 %295 to i64
%297 = getelementptr inbounds double*, double** %293, i64 %296
%298 = load double*, double** %297
%299 = getelementptr inbounds double, double* %298, i64 2
store double %292, double* %299
br label %393
300: ; preds = %203
%301 = load double, double* %11
%302 = load double**, double*** %6
%303 = load i32*, i32** %7
%304 = load i32, i32* %303
%305 = sext i32 %304 to i64
%306 = getelementptr inbounds double*, double** %302, i64 %305
%307 = load double*, double** %306
%308 = getelementptr inbounds double, double* %307, i64 2
store double %301, double* %308
%309 = load double**, double*** %6
%310 = load i32*, i32** %7
%311 = load i32, i32* %310
%312 = sext i32 %311 to i64
%313 = getelementptr inbounds double*, double** %309, i64 %312
%314 = load double*, double** %313
%315 = getelementptr inbounds double, double* %314, i64 2
%316 = load double, double* %315
%317 = load double, double* %12
%318 = fsub double %316, %317
%319 = load double**, double*** %6
%320 = load i32, i32* %10
%321 = sub nsw i32 %320, 1
%322 = sext i32 %321 to i64
%323 = getelementptr inbounds double*, double** %319, i64 %322
%324 = load double*, double** %323
%325 = getelementptr inbounds double, double* %324, i64 0
%326 = load double, double* %325
%327 = load double**, double*** %6
%328 = getelementptr inbounds double*, double** %327, i64 0
%329 = load double*, double** %328
%330 = getelementptr inbounds double, double* %329, i64 0
%331 = load double, double* %330
%332 = fsub double %326, %331
%333 = fmul double %318, %332
%334 = load double, double* %13
%335 = load double, double* %12
%336 = fsub double %334, %335
%337 = fdiv double %333, %336
%338 = load double**, double*** %6
%339 = getelementptr inbounds double*, double** %338, i64 0
%340 = load double*, double** %339
%341 = getelementptr inbounds double, double* %340, i64 0
%342 = load double, double* %341
%343 = fadd double %337, %342
%344 = load double**, double*** %6
%345 = load i32*, i32** %7
%346 = load i32, i32* %345
%347 = sext i32 %346 to i64
%348 = getelementptr inbounds double*, double** %344, i64 %347
%349 = load double*, double** %348
%350 = getelementptr inbounds double, double* %349, i64 0
store double %343, double* %350
%351 = load double**, double*** %6
%352 = load i32*, i32** %7
%353 = load i32, i32* %352
%354 = sext i32 %353 to i64
%355 = getelementptr inbounds double*, double** %351, i64 %354
%356 = load double*, double** %355
%357 = getelementptr inbounds double, double* %356, i64 2
%358 = load double, double* %357
%359 = load double, double* %12
%360 = fsub double %358, %359
%361 = load double**, double*** %6
%362 = load i32, i32* %10
%363 = sub nsw i32 %362, 1
%364 = sext i32 %363 to i64
%365 = getelementptr inbounds double*, double** %361, i64 %364
%366 = load double*, double** %365
%367 = getelementptr inbounds double, double* %366, i64 1
%368 = load double, double* %367
%369 = load double**, double*** %6
%370 = getelementptr inbounds double*, double** %369, i64 0
%371 = load double*, double** %370
%372 = getelementptr inbounds double, double* %371, i64 1
%373 = load double, double* %372
%374 = fsub double %368, %373
%375 = fmul double %360, %374
%376 = load double, double* %13
%377 = load double, double* %12
%378 = fsub double %376, %377
%379 = fdiv double %375, %378
%380 = load double**, double*** %6
%381 = getelementptr inbounds double*, double** %380, i64 0
%382 = load double*, double** %381
%383 = getelementptr inbounds double, double* %382, i64 1
%384 = load double, double* %383
%385 = fadd double %379, %384
%386 = load double**, double*** %6
%387 = load i32*, i32** %7
%388 = load i32, i32* %387
%389 = sext i32 %388 to i64
%390 = getelementptr inbounds double*, double** %386, i64 %389
%391 = load double*, double** %390
%392 = getelementptr inbounds double, double* %391, i64 1
store double %385, double* %392
br label %393
393: ; preds = %300, %207
br label %394
394: ; preds = %393, %110
%395 = load double, double* %8
%396 = load double, double* %11
%397 = fadd double %396, %395
store double %397, double* %11
%398 = load i32*, i32** %7
%399 = load i32, i32* %398
%400 = add nsw i32 %399, 1
%401 = load i32*, i32** %7
store i32 %400, i32* %401
br label %102
402: ; preds = %102
br label %743
403: ; preds = %64
%404 = load double, double* %12
%405 = load double, double* %13
%406 = fcmp ogt double %404, %405
br i1 %406, label %407, label %742
407: ; preds = %403
%408 = load double, double* %12
%409 = fcmp ogt double %408, 0.000000e+00
br i1 %409, label %410, label %430
410: ; preds = %407
br label %411
411: ; preds = %417, %410
%412 = load double, double* %11
%413 = load double, double* %12
%414 = load double, double* %8
%415 = fsub double %413, %414
%416 = fcmp ole double %412, %415
br i1 %416, label %417, label %421
417: ; preds = %411
%418 = load double, double* %8
%419 = load double, double* %11
%420 = fadd double %419, %418
store double %420, double* %11
br label %411
421: ; preds = %411
%422 = load double, double* %12
%423 = load double, double* %11
%424 = fcmp oeq double %422, %423
br i1 %424, label %425, label %429
425: ; preds = %421
%426 = load double, double* %8
%427 = load double, double* %11
%428 = fsub double %427, %426
store double %428, double* %11
br label %429
429: ; preds = %425, %421
br label %440
430: ; preds = %407
br label %431
431: ; preds = %435, %430
%432 = load double, double* %11
%433 = load double, double* %12
%434 = fcmp oge double %432, %433
br i1 %434, label %435, label %439
435: ; preds = %431
%436 = load double, double* %8
%437 = load double, double* %11
%438 = fsub double %437, %436
store double %438, double* %11
br label %431
439: ; preds = %431
br label %440
440: ; preds = %439, %429
br label %441
441: ; preds = %733, %440
%442 = load double, double* %11
%443 = load double, double* %13
%444 = fcmp ogt double %442, %443
br i1 %444, label %445, label %741
445: ; preds = %441
%446 = load i8, i8* %9
%447 = sext i8 %446 to i32
%448 = icmp eq i32 %447, 120
br i1 %448, label %449, label %542
449: ; preds = %445
%450 = load double, double* %11
%451 = load double**, double*** %6
%452 = load i32*, i32** %7
%453 = load i32, i32* %452
%454 = sext i32 %453 to i64
%455 = getelementptr inbounds double*, double** %451, i64 %454
%456 = load double*, double** %455
%457 = getelementptr inbounds double, double* %456, i64 0
store double %450, double* %457
%458 = load double**, double*** %6
%459 = load i32*, i32** %7
%460 = load i32, i32* %459
%461 = sext i32 %460 to i64
%462 = getelementptr inbounds double*, double** %458, i64 %461
%463 = load double*, double** %462
%464 = getelementptr inbounds double, double* %463, i64 0
%465 = load double, double* %464
%466 = load double, double* %12
%467 = fsub double %465, %466
%468 = load double**, double*** %6
%469 = load i32, i32* %10
%470 = sub nsw i32 %469, 1
%471 = sext i32 %470 to i64
%472 = getelementptr inbounds double*, double** %468, i64 %471
%473 = load double*, double** %472
%474 = getelementptr inbounds double, double* %473, i64 1
%475 = load double, double* %474
%476 = load double**, double*** %6
%477 = getelementptr inbounds double*, double** %476, i64 0
%478 = load double*, double** %477
%479 = getelementptr inbounds double, double* %478, i64 1
%480 = load double, double* %479
%481 = fsub double %475, %480
%482 = fmul double %467, %481
%483 = load double, double* %13
%484 = load double, double* %12
%485 = fsub double %483, %484
%486 = fdiv double %482, %485
%487 = load double**, double*** %6
%488 = getelementptr inbounds double*, double** %487, i64 0
%489 = load double*, double** %488
%490 = getelementptr inbounds double, double* %489, i64 1
%491 = load double, double* %490
%492 = fadd double %486, %491
%493 = load double**, double*** %6
%494 = load i32*, i32** %7
%495 = load i32, i32* %494
%496 = sext i32 %495 to i64
%497 = getelementptr inbounds double*, double** %493, i64 %496
%498 = load double*, double** %497
%499 = getelementptr inbounds double, double* %498, i64 1
store double %492, double* %499
%500 = load double**, double*** %6
%501 = load i32*, i32** %7
%502 = load i32, i32* %501
%503 = sext i32 %502 to i64
%504 = getelementptr inbounds double*, double** %500, i64 %503
%505 = load double*, double** %504
%506 = getelementptr inbounds double, double* %505, i64 0
%507 = load double, double* %506
%508 = load double, double* %12
%509 = fsub double %507, %508
%510 = load double**, double*** %6
%511 = load i32, i32* %10
%512 = sub nsw i32 %511, 1
%513 = sext i32 %512 to i64
%514 = getelementptr inbounds double*, double** %510, i64 %513
%515 = load double*, double** %514
%516 = getelementptr inbounds double, double* %515, i64 2
%517 = load double, double* %516
%518 = load double**, double*** %6
%519 = getelementptr inbounds double*, double** %518, i64 0
%520 = load double*, double** %519
%521 = getelementptr inbounds double, double* %520, i64 2
%522 = load double, double* %521
%523 = fsub double %517, %522
%524 = fmul double %509, %523
%525 = load double, double* %13
%526 = load double, double* %12
%527 = fsub double %525, %526
%528 = fdiv double %524, %527
%529 = load double**, double*** %6
%530 = getelementptr inbounds double*, double** %529, i64 0
%531 = load double*, double** %530
%532 = getelementptr inbounds double, double* %531, i64 2
%533 = load double, double* %532
%534 = fadd double %528, %533
%535 = load double**, double*** %6
%536 = load i32*, i32** %7
%537 = load i32, i32* %536
%538 = sext i32 %537 to i64
%539 = getelementptr inbounds double*, double** %535, i64 %538
%540 = load double*, double** %539
%541 = getelementptr inbounds double, double* %540, i64 2
store double %534, double* %541
br label %733
542: ; preds = %445
%543 = load i8, i8* %9
%544 = sext i8 %543 to i32
%545 = icmp eq i32 %544, 121
br i1 %545, label %546, label %639
546: ; preds = %542
%547 = load double, double* %11
%548 = load double**, double*** %6
%549 = load i32*, i32** %7
%550 = load i32, i32* %549
%551 = sext i32 %550 to i64
%552 = getelementptr inbounds double*, double** %548, i64 %551
%553 = load double*, double** %552
%554 = getelementptr inbounds double, double* %553, i64 1
store double %547, double* %554
%555 = load double**, double*** %6
%556 = load i32*, i32** %7
%557 = load i32, i32* %556
%558 = sext i32 %557 to i64
%559 = getelementptr inbounds double*, double** %555, i64 %558
%560 = load double*, double** %559
%561 = getelementptr inbounds double, double* %560, i64 1
%562 = load double, double* %561
%563 = load double, double* %12
%564 = fsub double %562, %563
%565 = load double**, double*** %6
%566 = load i32, i32* %10
%567 = sub nsw i32 %566, 1
%568 = sext i32 %567 to i64
%569 = getelementptr inbounds double*, double** %565, i64 %568
%570 = load double*, double** %569
%571 = getelementptr inbounds double, double* %570, i64 0
%572 = load double, double* %571
%573 = load double**, double*** %6
%574 = getelementptr inbounds double*, double** %573, i64 0
%575 = load double*, double** %574
%576 = getelementptr inbounds double, double* %575, i64 0
%577 = load double, double* %576
%578 = fsub double %572, %577
%579 = fmul double %564, %578
%580 = load double, double* %13
%581 = load double, double* %12
%582 = fsub double %580, %581
%583 = fdiv double %579, %582
%584 = load double**, double*** %6
%585 = getelementptr inbounds double*, double** %584, i64 0
%586 = load double*, double** %585
%587 = getelementptr inbounds double, double* %586, i64 0
%588 = load double, double* %587
%589 = fadd double %583, %588
%590 = load double**, double*** %6
%591 = load i32*, i32** %7
%592 = load i32, i32* %591
%593 = sext i32 %592 to i64
%594 = getelementptr inbounds double*, double** %590, i64 %593
%595 = load double*, double** %594
%596 = getelementptr inbounds double, double* %595, i64 0
store double %589, double* %596
%597 = load double**, double*** %6
%598 = load i32*, i32** %7
%599 = load i32, i32* %598
%600 = sext i32 %599 to i64
%601 = getelementptr inbounds double*, double** %597, i64 %600
%602 = load double*, double** %601
%603 = getelementptr inbounds double, double* %602, i64 1
%604 = load double, double* %603
%605 = load double, double* %12
%606 = fsub double %604, %605
%607 = load double**, double*** %6
%608 = load i32, i32* %10
%609 = sub nsw i32 %608, 1
%610 = sext i32 %609 to i64
%611 = getelementptr inbounds double*, double** %607, i64 %610
%612 = load double*, double** %611
%613 = getelementptr inbounds double, double* %612, i64 2
%614 = load double, double* %613
%615 = load double**, double*** %6
%616 = getelementptr inbounds double*, double** %615, i64 0
%617 = load double*, double** %616
%618 = getelementptr inbounds double, double* %617, i64 2
%619 = load double, double* %618
%620 = fsub double %614, %619
%621 = fmul double %606, %620
%622 = load double, double* %13
%623 = load double, double* %12
%624 = fsub double %622, %623
%625 = fdiv double %621, %624
%626 = load double**, double*** %6
%627 = getelementptr inbounds double*, double** %626, i64 0
%628 = load double*, double** %627
%629 = getelementptr inbounds double, double* %628, i64 2
%630 = load double, double* %629
%631 = fadd double %625, %630
%632 = load double**, double*** %6
%633 = load i32*, i32** %7
%634 = load i32, i32* %633
%635 = sext i32 %634 to i64
%636 = getelementptr inbounds double*, double** %632, i64 %635
%637 = load double*, double** %636
%638 = getelementptr inbounds double, double* %637, i64 2
store double %631, double* %638
br label %732
639: ; preds = %542
%640 = load double, double* %11
%641 = load double**, double*** %6
%642 = load i32*, i32** %7
%643 = load i32, i32* %642
%644 = sext i32 %643 to i64
%645 = getelementptr inbounds double*, double** %641, i64 %644
%646 = load double*, double** %645
%647 = getelementptr inbounds double, double* %646, i64 2
store double %640, double* %647
%648 = load double**, double*** %6
%649 = load i32*, i32** %7
%650 = load i32, i32* %649
%651 = sext i32 %650 to i64
%652 = getelementptr inbounds double*, double** %648, i64 %651
%653 = load double*, double** %652
%654 = getelementptr inbounds double, double* %653, i64 2
%655 = load double, double* %654
%656 = load double, double* %12
%657 = fsub double %655, %656
%658 = load double**, double*** %6
%659 = load i32, i32* %10
%660 = sub nsw i32 %659, 1
%661 = sext i32 %660 to i64
%662 = getelementptr inbounds double*, double** %658, i64 %661
%663 = load double*, double** %662
%664 = getelementptr inbounds double, double* %663, i64 0
%665 = load double, double* %664
%666 = load double**, double*** %6
%667 = getelementptr inbounds double*, double** %666, i64 0
%668 = load double*, double** %667
%669 = getelementptr inbounds double, double* %668, i64 0
%670 = load double, double* %669
%671 = fsub double %665, %670
%672 = fmul double %657, %671
%673 = load double, double* %13
%674 = load double, double* %12
%675 = fsub double %673, %674
%676 = fdiv double %672, %675
%677 = load double**, double*** %6
%678 = getelementptr inbounds double*, double** %677, i64 0
%679 = load double*, double** %678
%680 = getelementptr inbounds double, double* %679, i64 0
%681 = load double, double* %680
%682 = fadd double %676, %681
%683 = load double**, double*** %6
%684 = load i32*, i32** %7
%685 = load i32, i32* %684
%686 = sext i32 %685 to i64
%687 = getelementptr inbounds double*, double** %683, i64 %686
%688 = load double*, double** %687
%689 = getelementptr inbounds double, double* %688, i64 0
store double %682, double* %689
%690 = load double**, double*** %6
%691 = load i32*, i32** %7
%692 = load i32, i32* %691
%693 = sext i32 %692 to i64
%694 = getelementptr inbounds double*, double** %690, i64 %693
%695 = load double*, double** %694
%696 = getelementptr inbounds double, double* %695, i64 2
%697 = load double, double* %696
%698 = load double, double* %12
%699 = fsub double %697, %698
%700 = load double**, double*** %6
%701 = load i32, i32* %10
%702 = sub nsw i32 %701, 1
%703 = sext i32 %702 to i64
%704 = getelementptr inbounds double*, double** %700, i64 %703
%705 = load double*, double** %704
%706 = getelementptr inbounds double, double* %705, i64 1
%707 = load double, double* %706
%708 = load double**, double*** %6
%709 = getelementptr inbounds double*, double** %708, i64 0
%710 = load double*, double** %709
%711 = getelementptr inbounds double, double* %710, i64 1
%712 = load double, double* %711
%713 = fsub double %707, %712
%714 = fmul double %699, %713
%715 = load double, double* %13
%716 = load double, double* %12
%717 = fsub double %715, %716
%718 = fdiv double %714, %717
%719 = load double**, double*** %6
%720 = getelementptr inbounds double*, double** %719, i64 0
%721 = load double*, double** %720
%722 = getelementptr inbounds double, double* %721, i64 1
%723 = load double, double* %722
%724 = fadd double %718, %723
%725 = load double**, double*** %6
%726 = load i32*, i32** %7
%727 = load i32, i32* %726
%728 = sext i32 %727 to i64
%729 = getelementptr inbounds double*, double** %725, i64 %728
%730 = load double*, double** %729
%731 = getelementptr inbounds double, double* %730, i64 1
store double %724, double* %731
br label %732
732: ; preds = %639, %546
br label %733
733: ; preds = %732, %449
%734 = load double, double* %8
%735 = load double, double* %11
%736 = fsub double %735, %734
store double %736, double* %11
%737 = load i32*, i32** %7
%738 = load i32, i32* %737
%739 = add nsw i32 %738, 1
%740 = load i32*, i32** %7
store i32 %739, i32* %740
br label %441
741: ; preds = %441
br label %742
742: ; preds = %741, %403
br label %743
743: ; preds = %742, %402
ret void
}

LLVM IR (-O2):
define void @filling(double** %0, i32* nocapture %1, double %2, i8 signext %3, i32 %4) {
%6 = icmp eq i8 %3, 120
br i1 %6, label %7, label %13
7: ; preds = %5
%8 = load double*, double** %0
%9 = add nsw i32 %4, -1
%10 = sext i32 %9 to i64
%11 = getelementptr inbounds double*, double** %0, i64 %10
%12 = load double*, double** %11
br label %30
13: ; preds = %5
%14 = icmp eq i8 %3, 121
%15 = load double*, double** %0
br i1 %14, label %16, label %23
16: ; preds = %13
%17 = getelementptr inbounds double, double* %15, i64 1
%18 = add nsw i32 %4, -1
%19 = sext i32 %18 to i64
%20 = getelementptr inbounds double*, double** %0, i64 %19
%21 = load double*, double** %20
%22 = getelementptr inbounds double, double* %21, i64 1
br label %30
23: ; preds = %13
%24 = getelementptr inbounds double, double* %15, i64 2
%25 = add nsw i32 %4, -1
%26 = sext i32 %25 to i64
%27 = getelementptr inbounds double*, double** %0, i64 %26
%28 = load double*, double** %27
%29 = getelementptr inbounds double, double* %28, i64 2
br label %30
30: ; preds = %16, %23, %7
%31 = phi double* [ %8, %7 ], [ %15, %16 ], [ %15, %23 ]
%32 = phi double* [ %12, %7 ], [ %21, %16 ], [ %28, %23 ]
%33 = phi double* [ %8, %7 ], [ %17, %16 ], [ %24, %23 ]
%34 = phi double* [ %12, %7 ], [ %22, %16 ], [ %29, %23 ]
%35 = load double, double* %34
%36 = load double, double* %33
%37 = fcmp olt double %36, %35
br i1 %37, label %38, label %135
38: ; preds = %30
%39 = fcmp ult double %36, 0.000000e+00
br i1 %39, label %40, label %43
40: ; preds = %38
%41 = fadd double %36, %2
%42 = fcmp ugt double %41, 0.000000e+00
br i1 %42, label %51, label %47
43: ; preds = %38, %43
%44 = phi double [ %45, %43 ], [ 0.000000e+00, %38 ]
%45 = fadd double %44, %2
%46 = fcmp ugt double %45, %36
br i1 %46, label %56, label %43
47: ; preds = %40, %47
%48 = phi double [ %49, %47 ], [ 0.000000e+00, %40 ]
%49 = fsub double %48, %2
%50 = fcmp ult double %49, %41
br i1 %50, label %51, label %47
51: ; preds = %47, %40
%52 = phi double [ 0.000000e+00, %40 ], [ %49, %47 ]
%53 = fcmp oeq double %36, %52
br i1 %53, label %54, label %56
54: ; preds = %51
%55 = fadd double %52, %2
br label %56
56: ; preds = %43, %51, %54
%57 = phi double [ %55, %54 ], [ %52, %51 ], [ %45, %43 ]
%58 = fcmp olt double %57, %35
br i1 %58, label %59, label %239
59: ; preds = %56
%60 = icmp eq i8 %3, 121
%61 = fsub double %35, %36
%62 = load i32, i32* %1
%63 = sext i32 %62 to i64
%64 = getelementptr inbounds double, double* %32, i64 1
%65 = getelementptr inbounds double, double* %31, i64 1
%66 = getelementptr inbounds double, double* %32, i64 2
%67 = getelementptr inbounds double, double* %31, i64 2
br label %68
68: ; preds = %59, %121
%69 = phi double* [ %31, %59 ], [ %125, %121 ]
%70 = phi double* [ %32, %59 ], [ %126, %121 ]
%71 = phi double* [ %31, %59 ], [ %127, %121 ]
%72 = phi double* [ %32, %59 ], [ %128, %121 ]
%73 = phi i64 [ %63, %59 ], [ %133, %121 ]
%74 = phi double [ %57, %59 ], [ %132, %121 ]
%75 = getelementptr inbounds double*, double** %0, i64 %73
%76 = load double*, double** %75
br i1 %6, label %77, label %90
77: ; preds = %68
store double %74, double* %76
%78 = fsub double %74, %36
%79 = load double, double* %64
%80 = load double, double* %65
%81 = fsub double %79, %80
%82 = fmul double %78, %81
%83 = fdiv double %82, %61
%84 = fadd double %80, %83
%85 = getelementptr inbounds double, double* %76, i64 1
store double %84, double* %85
%86 = load double, double* %66
%87 = load double, double* %67
%88 = fsub double %86, %87
%89 = fmul double %78, %88
br label %121
90: ; preds = %68
br i1 %60, label %91, label %106
91: ; preds = %90
%92 = getelementptr inbounds double, double* %76, i64 1
store double %74, double* %92
%93 = fsub double %74, %36
%94 = load double, double* %70
%95 = load double, double* %69
%96 = fsub double %94, %95
%97 = fmul double %93, %96
%98 = fdiv double %97, %61
%99 = fadd double %95, %98
store double %99, double* %76
%100 = getelementptr inbounds double, double* %70, i64 2
%101 = load double, double* %100
%102 = getelementptr inbounds double, double* %69, i64 2
%103 = load double, double* %102
%104 = fsub double %101, %103
%105 = fmul double %93, %104
br label %121
106: ; preds = %90
%107 = getelementptr inbounds double, double* %76, i64 2
store double %74, double* %107
%108 = fsub double %74, %36
%109 = load double, double* %72
%110 = load double, double* %71
%111 = fsub double %109, %110
%112 = fmul double %108, %111
%113 = fdiv double %112, %61
%114 = fadd double %110, %113
store double %114, double* %76
%115 = getelementptr inbounds double, double* %72, i64 1
%116 = load double, double* %115
%117 = getelementptr inbounds double, double* %71, i64 1
%118 = load double, double* %117
%119 = fsub double %116, %118
%120 = fmul double %108, %119
br label %121
121: ; preds = %91, %106, %77
%122 = phi double [ %105, %91 ], [ %120, %106 ], [ %89, %77 ]
%123 = phi double [ %103, %91 ], [ %118, %106 ], [ %87, %77 ]
%124 = phi i64 [ 2, %91 ], [ 1, %106 ], [ 2, %77 ]
%125 = phi double* [ %69, %91 ], [ %69, %106 ], [ %31, %77 ]
%126 = phi double* [ %70, %91 ], [ %70, %106 ], [ %32, %77 ]
%127 = phi double* [ %69, %91 ], [ %71, %106 ], [ %31, %77 ]
%128 = phi double* [ %70, %91 ], [ %72, %106 ], [ %32, %77 ]
%129 = fdiv double %122, %61
%130 = fadd double %123, %129
%131 = getelementptr inbounds double, double* %76, i64 %124
store double %130, double* %131
%132 = fadd double %74, %2
%133 = add i64 %73, 1
%134 = fcmp olt double %132, %35
br i1 %134, label %68, label %236
135: ; preds = %30
%136 = fcmp ogt double %36, %35
br i1 %136, label %137, label %239
137: ; preds = %135
%138 = fcmp ogt double %36, 0.000000e+00
br i1 %138, label %141, label %139
139: ; preds = %137
%140 = fcmp ugt double %36, 0.000000e+00
br i1 %140, label %157, label %153
141: ; preds = %137
%142 = fsub double %36, %2
%143 = fcmp ult double %142, 0.000000e+00
br i1 %143, label %148, label %144
144: ; preds = %141, %144
%145 = phi double [ %146, %144 ], [ 0.000000e+00, %141 ]
%146 = fadd double %145, %2
%147 = fcmp ugt double %146, %142
br i1 %147, label %148, label %144
148: ; preds = %144, %141
%149 = phi double [ 0.000000e+00, %141 ], [ %146, %144 ]
%150 = fcmp oeq double %36, %149
br i1 %150, label %151, label %157
151: ; preds = %148
%152 = fsub double %149, %2
br label %157
153: ; preds = %139, %153
%154 = phi double [ %155, %153 ], [ 0.000000e+00, %139 ]
%155 = fsub double %154, %2
%156 = fcmp ult double %155, %36
br i1 %156, label %157, label %153
157: ; preds = %153, %139, %148, %151
%158 = phi double [ %152, %151 ], [ %149, %148 ], [ 0.000000e+00, %139 ], [ %155, %153 ]
%159 = fcmp ogt double %158, %35
br i1 %159, label %160, label %239
160: ; preds = %157
%161 = icmp eq i8 %3, 121
%162 = fsub double %35, %36
%163 = load i32, i32* %1
%164 = sext i32 %163 to i64
%165 = getelementptr inbounds double, double* %32, i64 1
%166 = getelementptr inbounds double, double* %31, i64 1
%167 = getelementptr inbounds double, double* %32, i64 2
%168 = getelementptr inbounds double, double* %31, i64 2
br label %169
169: ; preds = %160, %222
%170 = phi double* [ %31, %160 ], [ %226, %222 ]
%171 = phi double* [ %32, %160 ], [ %227, %222 ]
%172 = phi double* [ %31, %160 ], [ %228, %222 ]
%173 = phi double* [ %32, %160 ], [ %229, %222 ]
%174 = phi i64 [ %164, %160 ], [ %234, %222 ]
%175 = phi double [ %158, %160 ], [ %233, %222 ]
%176 = getelementptr inbounds double*, double** %0, i64 %174
%177 = load double*, double** %176
br i1 %6, label %178, label %191
178: ; preds = %169
store double %175, double* %177
%179 = fsub double %175, %36
%180 = load double, double* %165
%181 = load double, double* %166
%182 = fsub double %180, %181
%183 = fmul double %179, %182
%184 = fdiv double %183, %162
%185 = fadd double %181, %184
%186 = getelementptr inbounds double, double* %177, i64 1
store double %185, double* %186
%187 = load double, double* %167
%188 = load double, double* %168
%189 = fsub double %187, %188
%190 = fmul double %179, %189
br label %222
191: ; preds = %169
br i1 %161, label %192, label %207
192: ; preds = %191
%193 = getelementptr inbounds double, double* %177, i64 1
store double %175, double* %193
%194 = fsub double %175, %36
%195 = load double, double* %171
%196 = load double, double* %170
%197 = fsub double %195, %196
%198 = fmul double %194, %197
%199 = fdiv double %198, %162
%200 = fadd double %196, %199
store double %200, double* %177
%201 = getelementptr inbounds double, double* %171, i64 2
%202 = load double, double* %201
%203 = getelementptr inbounds double, double* %170, i64 2
%204 = load double, double* %203
%205 = fsub double %202, %204
%206 = fmul double %194, %205
br label %222
207: ; preds = %191
%208 = getelementptr inbounds double, double* %177, i64 2
store double %175, double* %208
%209 = fsub double %175, %36
%210 = load double, double* %173
%211 = load double, double* %172
%212 = fsub double %210, %211
%213 = fmul double %209, %212
%214 = fdiv double %213, %162
%215 = fadd double %211, %214
store double %215, double* %177
%216 = getelementptr inbounds double, double* %173, i64 1
%217 = load double, double* %216
%218 = getelementptr inbounds double, double* %172, i64 1
%219 = load double, double* %218
%220 = fsub double %217, %219
%221 = fmul double %209, %220
br label %222
222: ; preds = %192, %207, %178
%223 = phi double [ %206, %192 ], [ %221, %207 ], [ %190, %178 ]
%224 = phi double [ %204, %192 ], [ %219, %207 ], [ %188, %178 ]
%225 = phi i64 [ 2, %192 ], [ 1, %207 ], [ 2, %178 ]
%226 = phi double* [ %170, %192 ], [ %170, %207 ], [ %31, %178 ]
%227 = phi double* [ %171, %192 ], [ %171, %207 ], [ %32, %178 ]
%228 = phi double* [ %170, %192 ], [ %172, %207 ], [ %31, %178 ]
%229 = phi double* [ %171, %192 ], [ %173, %207 ], [ %32, %178 ]
%230 = fdiv double %223, %162
%231 = fadd double %224, %230
%232 = getelementptr inbounds double, double* %177, i64 %225
store double %231, double* %232
%233 = fsub double %175, %2
%234 = add i64 %174, 1
%235 = fcmp ogt double %233, %35
br i1 %235, label %169, label %236
236: ; preds = %222, %121
%237 = phi i64 [ %133, %121 ], [ %234, %222 ]
%238 = trunc i64 %237 to i32
store i32 %238, i32* %1
br label %239
239: ; preds = %236, %157, %56, %135
ret void
}