void return_attack_double(float *power, const int combo_counter,
                          int *const color_combo, int *const num_drops_combo,
                          int *const isLine_combo, const int LS,
                          const int strong, const float line, const float way) {
  const float AT = 1.0;
  int num_line_m = 0;
  float attack_m = 0;
  int num_line_s = 0;
  float attack_s = 0;
  float l_m = 1.0;
  float l_s = 1.0;
  int i;
  float drop_pwr;
  for (i = 0; i < combo_counter; i++) {
    int color = color_combo[i];
    switch (color) {
    case 0:
      drop_pwr = num_drops_combo[i] == 4
                     ? (1 + 0.25 * (num_drops_combo[i] - 3)) * way
                     : 1 + 0.25 * (num_drops_combo[i] - 3);
      if (strong)
        drop_pwr = drop_pwr * (1 + 0.06 * num_drops_combo[i]);
      attack_m += drop_pwr;
      if (isLine_combo[i])
        num_line_m++;
      break;
    case 1:
      drop_pwr = num_drops_combo[i] == 4
                     ? (1 + 0.25 * (num_drops_combo[i] - 3)) * way
                     : 1 + 0.25 * (num_drops_combo[i] - 3);
      if (strong)
        drop_pwr = drop_pwr * (1 + 0.06 * num_drops_combo[i]);
      attack_s += drop_pwr;
      if (isLine_combo[i])
        num_line_s++;
      break;
    default:
      break;
    }
  }
  int count_m;
  int count_s;
  switch (LS) {
  case 2:
    for (i = 0; i < combo_counter; i++) {
      if (0 == color_combo[i]) {
        int num_drops = num_drops_combo[i];
        if (num_drops >= 8) {
          l_m = 16;
        } else if (num_drops == 7 && l_m < 12.25) {
          l_m = 12.25;
        } else if (num_drops == 6 && l_m < 9) {
          l_m = 9;
        }
      }
      if (1 == color_combo[i]) {
        int num_drops = num_drops_combo[i];
        if (num_drops >= 8) {
          l_s = 16;
        } else if (num_drops == 7 && l_s < 12.25) {
          l_s = 12.25;
        } else if (num_drops == 6 && l_s < 9) {
          l_s = 9;
        }
      }
    }
    break;
  case 3:
    if (combo_counter < 6) {
      l_m = 6.25;
      l_s = 6.25;
    } else {
      l_m = 2.75 * 2.75;
      l_s = 2.75 * 2.75;
    }
    break;
  case 4:
    count_m = 0;
    for (i = 0; i < combo_counter; i++) {
      if (0 == color_combo[i]) {
        count_m++;
        int num_drops = num_drops_combo[i];
        if (num_drops == 5)
          l_m = 2.25;
      }
    }
    if (count_m == 2)
      l_m = l_m * 3 * 3;
    else if (count_m >= 3)
      l_m = l_m * 4.5 * 4.5;
    else
      l_m = 1;
    count_s = 0;
    for (i = 0; i < combo_counter; i++) {
      if (1 == color_combo[i]) {
        count_s++;
        int num_drops = num_drops_combo[i];
        if (num_drops == 5)
          l_s = 2.25;
      }
    }
    if (count_s == 2)
      l_s = l_s * 3 * 3;
    else if (count_s >= 3)
      l_s = l_s * 4.5 * 4.5;
    else
      l_s = 1;
    break;
  case 5:
    if (combo_counter == 5) {
      l_m = 3.0 * 3.0;
      l_s = 3.0 * 3.0;
    } else if (combo_counter == 6) {
      l_m = 3.5 * 3.5;
      l_s = 3.5 * 3.5;
    } else if (combo_counter >= 7) {
      l_m = 4.0 * 4.0;
      l_s = 4.0 * 4.0;
    } else {
      l_m = 1.0;
      l_s = 1.0;
    }
    break;
  case 6:
    l_m = 6.25;
    l_s = 6.25;
    for (i = 0; i < combo_counter; i++) {
      if (1 == color_combo[i]) {
        int num_drops = num_drops_combo[i];
        if (num_drops >= 5)
          l_m = 25;
      }
      if (0 == color_combo[i]) {
        int num_drops = num_drops_combo[i];
        if (num_drops >= 5)
          l_s = 25;
      }
    }
    break;
  default:
    break;
  }
  power[0] = attack_m * (1 + 0.25 * (combo_counter - 1)) * AT * l_m *
             (1 + 0.1 * line * num_line_m);
  power[1] = attack_s * (1 + 0.25 * (combo_counter - 1)) * AT * l_s *
             (1 + 0.1 * line * num_line_s);
}


x86 assembly (clang, -O0):
<return_attack_double>:
push   %rbp
mov    %rsp,%rbp
sub    $0x18,%rsp
mov    0x10(%rbp),%eax
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9d,-0x2c(%rbp)
movss  %xmm0,-0x30(%rbp)
movss  %xmm1,-0x34(%rbp)
movss  0xecc(%rip),%xmm0
movss  %xmm0,-0x38(%rbp)
movl   $0x0,-0x3c(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x40(%rbp)
movl   $0x0,-0x44(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x48(%rbp)
movss  0xea1(%rip),%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  0xe94(%rip),%xmm0
movss  %xmm0,-0x50(%rbp)
movl   $0x0,-0x54(%rbp)
mov    -0x54(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    13e8 <return_attack_double+0x2e8>
mov    -0x18(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
mov    %eax,-0x80(%rbp)
test   %eax,%eax
je     11b6 <return_attack_double+0xb6>
jmp    11a5 <return_attack_double+0xa5>
mov    -0x80(%rbp),%eax
sub    $0x1,%eax
je     12c3 <return_attack_double+0x1c3>
jmp    13d0 <return_attack_double+0x2d0>
mov    -0x20(%rbp),%rax
movslq -0x54(%rbp),%rcx
cmpl   $0x4,(%rax,%rcx,4)
jne    120c <return_attack_double+0x10c>
mov    -0x20(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
sub    $0x3,%eax
cvtsi2sd %eax,%xmm0
movsd  0xe66(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe4a(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x34(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
jmp    123e <return_attack_double+0x13e>
mov    -0x20(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
sub    $0x3,%eax
cvtsi2sd %eax,%xmm0
movsd  0xe22(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe06(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x58(%rbp)
cmpl   $0x0,0x10(%rbp)
je     1294 <return_attack_double+0x194>
movss  -0x58(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x20(%rbp),%rax
movslq -0x54(%rbp),%rcx
cvtsi2sdl (%rax,%rcx,4),%xmm1
movsd  0xdd9(%rip),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xdb5(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x58(%rbp),%xmm0
addss  -0x40(%rbp),%xmm0
movss  %xmm0,-0x40(%rbp)
mov    -0x28(%rbp),%rax
movslq -0x54(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
je     12be <return_attack_double+0x1be>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    13d5 <return_attack_double+0x2d5>
mov    -0x20(%rbp),%rax
movslq -0x54(%rbp),%rcx
cmpl   $0x4,(%rax,%rcx,4)
jne    1319 <return_attack_double+0x219>
mov    -0x20(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
sub    $0x3,%eax
cvtsi2sd %eax,%xmm0
movsd  0xd59(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd3d(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x34(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
jmp    134b <return_attack_double+0x24b>
mov    -0x20(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
sub    $0x3,%eax
cvtsi2sd %eax,%xmm0
movsd  0xd15(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xcf9(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x58(%rbp)
cmpl   $0x0,0x10(%rbp)
je     13a1 <return_attack_double+0x2a1>
movss  -0x58(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x20(%rbp),%rax
movslq -0x54(%rbp),%rcx
cvtsi2sdl (%rax,%rcx,4),%xmm1
movsd  0xccc(%rip),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xca8(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x58(%rbp),%xmm0
addss  -0x48(%rbp),%xmm0
movss  %xmm0,-0x48(%rbp)
mov    -0x28(%rbp),%rax
movslq -0x54(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
je     13cb <return_attack_double+0x2cb>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    13d5 <return_attack_double+0x2d5>
jmp    13d5 <return_attack_double+0x2d5>
jmp    13da <return_attack_double+0x2da>
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    1178 <return_attack_double+0x78>
mov    -0x2c(%rbp),%eax
add    $0xfffffffe,%eax
mov    %eax,%ecx
mov    %rcx,-0x98(%rbp)
sub    $0x4,%eax
ja     1929 <return_attack_double+0x829>
mov    -0x98(%rbp),%rax
lea    0xc4a(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0x0,-0x54(%rbp)
mov    -0x54(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1598 <return_attack_double+0x498>
mov    -0x18(%rbp),%rcx
movslq -0x54(%rbp),%rdx
xor    %eax,%eax
cmp    (%rcx,%rdx,4),%eax
jne    14d6 <return_attack_double+0x3d6>
mov    -0x20(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x68(%rbp)
cmpl   $0x8,-0x68(%rbp)
jl     1467 <return_attack_double+0x367>
movss  0xbaf(%rip),%xmm0
movss  %xmm0,-0x4c(%rbp)
jmp    14d1 <return_attack_double+0x3d1>
cmpl   $0x7,-0x68(%rbp)
jne    149e <return_attack_double+0x39e>
movss  -0x4c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xbae(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    149e <return_attack_double+0x39e>
movss  0xb7c(%rip),%xmm0
movss  %xmm0,-0x4c(%rbp)
jmp    14cc <return_attack_double+0x3cc>
cmpl   $0x6,-0x68(%rbp)
jne    14c7 <return_attack_double+0x3c7>
movss  0xb64(%rip),%xmm0
ucomiss -0x4c(%rbp),%xmm0
jbe    14c7 <return_attack_double+0x3c7>
movss  0xb52(%rip),%xmm0
movss  %xmm0,-0x4c(%rbp)
jmp    14cc <return_attack_double+0x3cc>
jmp    14d1 <return_attack_double+0x3d1>
jmp    14d6 <return_attack_double+0x3d6>
mov    -0x18(%rbp),%rcx
movslq -0x54(%rbp),%rdx
mov    $0x1,%eax
cmp    (%rcx,%rdx,4),%eax
jne    1585 <return_attack_double+0x485>
mov    -0x20(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x6c(%rbp)
cmpl   $0x8,-0x6c(%rbp)
jl     1516 <return_attack_double+0x416>
movss  0xb00(%rip),%xmm0
movss  %xmm0,-0x50(%rbp)
jmp    1580 <return_attack_double+0x480>
cmpl   $0x7,-0x6c(%rbp)
jne    154d <return_attack_double+0x44d>
movss  -0x50(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xaff(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    154d <return_attack_double+0x44d>
movss  0xacd(%rip),%xmm0
movss  %xmm0,-0x50(%rbp)
jmp    157b <return_attack_double+0x47b>
cmpl   $0x6,-0x6c(%rbp)
jne    1576 <return_attack_double+0x476>
movss  0xab5(%rip),%xmm0
ucomiss -0x50(%rbp),%xmm0
jbe    1576 <return_attack_double+0x476>
movss  0xaa3(%rip),%xmm0
movss  %xmm0,-0x50(%rbp)
jmp    157b <return_attack_double+0x47b>
jmp    1580 <return_attack_double+0x480>
jmp    1585 <return_attack_double+0x485>
jmp    158a <return_attack_double+0x48a>
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    141e <return_attack_double+0x31e>
jmp    192e <return_attack_double+0x82e>
cmpl   $0x6,-0xc(%rbp)
jge    15c6 <return_attack_double+0x4c6>
movss  0xa55(%rip),%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  0xa48(%rip),%xmm0
movss  %xmm0,-0x50(%rbp)
jmp    15e0 <return_attack_double+0x4e0>
movss  0xa52(%rip),%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  0xa45(%rip),%xmm0
movss  %xmm0,-0x50(%rbp)
jmp    192e <return_attack_double+0x82e>
movl   $0x0,-0x60(%rbp)
movl   $0x0,-0x54(%rbp)
mov    -0x54(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1658 <return_attack_double+0x558>
mov    -0x18(%rbp),%rcx
movslq -0x54(%rbp),%rdx
xor    %eax,%eax
cmp    (%rcx,%rdx,4),%eax
jne    1645 <return_attack_double+0x545>
mov    -0x60(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x60(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x70(%rbp)
cmpl   $0x5,-0x70(%rbp)
jne    1640 <return_attack_double+0x540>
movss  0x9e1(%rip),%xmm0
movss  %xmm0,-0x4c(%rbp)
jmp    1645 <return_attack_double+0x545>
jmp    164a <return_attack_double+0x54a>
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    15f3 <return_attack_double+0x4f3>
cmpl   $0x2,-0x60(%rbp)
jne    1685 <return_attack_double+0x585>
movss  0x9ae(%rip),%xmm0
mulss  -0x4c(%rbp),%xmm0
movss  0x9a1(%rip),%xmm1
mulss  %xmm1,%xmm0
movss  %xmm0,-0x4c(%rbp)
jmp    16d0 <return_attack_double+0x5d0>
cmpl   $0x3,-0x60(%rbp)
jl     16be <return_attack_double+0x5be>
movss  -0x4c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x988(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x97c(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x4c(%rbp)
jmp    16cb <return_attack_double+0x5cb>
movss  0x93a(%rip),%xmm0
movss  %xmm0,-0x4c(%rbp)
jmp    16d0 <return_attack_double+0x5d0>
movl   $0x0,-0x64(%rbp)
movl   $0x0,-0x54(%rbp)
mov    -0x54(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1746 <return_attack_double+0x646>
mov    -0x18(%rbp),%rcx
movslq -0x54(%rbp),%rdx
mov    $0x1,%eax
cmp    (%rcx,%rdx,4),%eax
jne    1733 <return_attack_double+0x633>
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x74(%rbp)
cmpl   $0x5,-0x74(%rbp)
jne    172e <return_attack_double+0x62e>
movss  0x8f3(%rip),%xmm0
movss  %xmm0,-0x50(%rbp)
jmp    1733 <return_attack_double+0x633>
jmp    1738 <return_attack_double+0x638>
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    16de <return_attack_double+0x5de>
cmpl   $0x2,-0x64(%rbp)
jne    1773 <return_attack_double+0x673>
movss  0x8c0(%rip),%xmm0
mulss  -0x50(%rbp),%xmm0
movss  0x8b3(%rip),%xmm1
mulss  %xmm1,%xmm0
movss  %xmm0,-0x50(%rbp)
jmp    17be <return_attack_double+0x6be>
cmpl   $0x3,-0x64(%rbp)
jl     17ac <return_attack_double+0x6ac>
movss  -0x50(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x89a(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x88e(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x50(%rbp)
jmp    17b9 <return_attack_double+0x6b9>
movss  0x84c(%rip),%xmm0
movss  %xmm0,-0x50(%rbp)
jmp    17be <return_attack_double+0x6be>
jmp    192e <return_attack_double+0x82e>
cmpl   $0x5,-0xc(%rbp)
jne    17ec <return_attack_double+0x6ec>
movss  0x83f(%rip),%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  0x832(%rip),%xmm0
movss  %xmm0,-0x50(%rbp)
jmp    1862 <return_attack_double+0x762>
cmpl   $0x6,-0xc(%rbp)
jne    1815 <return_attack_double+0x715>
movss  0x812(%rip),%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  0x805(%rip),%xmm0
movss  %xmm0,-0x50(%rbp)
jmp    185d <return_attack_double+0x75d>
cmpl   $0x7,-0xc(%rbp)
jl     183e <return_attack_double+0x73e>
movss  0x7e5(%rip),%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  0x7d8(%rip),%xmm0
movss  %xmm0,-0x50(%rbp)
jmp    1858 <return_attack_double+0x758>
movss  0x7ba(%rip),%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  0x7ad(%rip),%xmm0
movss  %xmm0,-0x50(%rbp)
jmp    185d <return_attack_double+0x75d>
jmp    1862 <return_attack_double+0x762>
jmp    192e <return_attack_double+0x82e>
movss  0x795(%rip),%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  0x788(%rip),%xmm0
movss  %xmm0,-0x50(%rbp)
movl   $0x0,-0x54(%rbp)
mov    -0x54(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1924 <return_attack_double+0x824>
mov    -0x18(%rbp),%rcx
movslq -0x54(%rbp),%rdx
mov    $0x1,%eax
cmp    (%rcx,%rdx,4),%eax
jne    18d4 <return_attack_double+0x7d4>
mov    -0x20(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x78(%rbp)
cmpl   $0x5,-0x78(%rbp)
jl     18cf <return_attack_double+0x7cf>
movss  0x73e(%rip),%xmm0
movss  %xmm0,-0x4c(%rbp)
jmp    18d4 <return_attack_double+0x7d4>
mov    -0x18(%rbp),%rcx
movslq -0x54(%rbp),%rdx
xor    %eax,%eax
cmp    (%rcx,%rdx,4),%eax
jne    1911 <return_attack_double+0x811>
mov    -0x20(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x7c(%rbp)
cmpl   $0x5,-0x7c(%rbp)
jl     190c <return_attack_double+0x80c>
movss  0x701(%rip),%xmm0
movss  %xmm0,-0x50(%rbp)
jmp    1911 <return_attack_double+0x811>
jmp    1916 <return_attack_double+0x816>
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    1888 <return_attack_double+0x788>
jmp    192e <return_attack_double+0x82e>
jmp    192e <return_attack_double+0x82e>
movss  -0x40(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
cvtsi2sd %eax,%xmm1
movsd  0x6ff(%rip),%xmm2
mulsd  %xmm2,%xmm1
movsd  0x6e3(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x6d3(%rip),%xmm1
mulsd  %xmm1,%xmm0
movss  -0x4c(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movss  -0x30(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0x6b9(%rip),%xmm1
mulsd  %xmm2,%xmm1
cvtsi2sdl -0x3c(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0x69c(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x8(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x48(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
cvtsi2sd %eax,%xmm1
movsd  0x67d(%rip),%xmm2
mulsd  %xmm2,%xmm1
movsd  0x661(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x651(%rip),%xmm1
mulsd  %xmm1,%xmm0
movss  -0x50(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movss  -0x30(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0x637(%rip),%xmm1
mulsd  %xmm2,%xmm1
cvtsi2sdl -0x44(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0x61a(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x8(%rbp),%rax
movss  %xmm0,0x4(%rax)
add    $0x18,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<return_attack_double>:
push   %rbp
push   %r15
push   %r14
push   %rbx
test   %esi,%esi
jle    1235 <return_attack_double+0x135>
mov    0x28(%rsp),%r14d
cvtss2sd %xmm1,%xmm1
mulsd  0xee1(%rip),%xmm1
mov    %esi,%r15d
xorps  %xmm2,%xmm2
xor    %eax,%eax
movsd  0xed9(%rip),%xmm4
movsd  0xed9(%rip),%xmm5
movsd  0xed9(%rip),%xmm6
xor    %r11d,%r11d
xor    %r10d,%r10d
xorps  %xmm8,%xmm8
jmp    116b <return_attack_double+0x6b>
nopl   0x0(%rax,%rax,1)
addss  %xmm7,%xmm8
cmpl   $0x1,(%r8,%rax,4)
sbb    $0xffffffff,%r10d
add    $0x1,%rax
cmp    %rax,%r15
je     1242 <return_attack_double+0x142>
mov    (%rdx,%rax,4),%ebp
cmp    $0x1,%ebp
je     11e0 <return_attack_double+0xe0>
test   %ebp,%ebp
jne    115e <return_attack_double+0x5e>
mov    (%rcx,%rax,4),%ebp
lea    -0x3(%rbp),%ebx
xorps  %xmm7,%xmm7
cvtsi2sd %ebx,%xmm7
mulsd  %xmm4,%xmm7
addsd  %xmm5,%xmm7
movapd %xmm1,%xmm3
cmp    $0x4,%ebp
je     1199 <return_attack_double+0x99>
movapd %xmm7,%xmm3
xorps  %xmm7,%xmm7
cvtsd2ss %xmm3,%xmm7
test   %r14d,%r14d
je     11c3 <return_attack_double+0xc3>
xorps  %xmm3,%xmm3
cvtss2sd %xmm7,%xmm3
xorps  %xmm7,%xmm7
cvtsi2sd %ebp,%xmm7
mulsd  %xmm6,%xmm7
addsd  %xmm5,%xmm7
mulsd  %xmm3,%xmm7
cvtsd2ss %xmm7,%xmm7
addss  %xmm7,%xmm2
cmpl   $0x1,(%r8,%rax,4)
sbb    $0xffffffff,%r11d
jmp    115e <return_attack_double+0x5e>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    (%rcx,%rax,4),%ebp
lea    -0x3(%rbp),%ebx
xorps  %xmm7,%xmm7
cvtsi2sd %ebx,%xmm7
mulsd  %xmm4,%xmm7
addsd  %xmm5,%xmm7
movapd %xmm1,%xmm3
cmp    $0x4,%ebp
je     1202 <return_attack_double+0x102>
movapd %xmm7,%xmm3
xorps  %xmm7,%xmm7
cvtsd2ss %xmm3,%xmm7
test   %r14d,%r14d
je     1150 <return_attack_double+0x50>
xorps  %xmm3,%xmm3
cvtss2sd %xmm7,%xmm3
xorps  %xmm7,%xmm7
cvtsi2sd %ebp,%xmm7
mulsd  %xmm6,%xmm7
addsd  %xmm5,%xmm7
mulsd  %xmm3,%xmm7
cvtsd2ss %xmm7,%xmm7
jmp    1150 <return_attack_double+0x50>
xor    %r10d,%r10d
xorps  %xmm8,%xmm8
xorps  %xmm2,%xmm2
xor    %r11d,%r11d
movss  0xdf6(%rip),%xmm4
add    $0xfffffffe,%r9d
cmp    $0x4,%r9d
ja     143b <return_attack_double+0x33b>
lea    0xe01(%rip),%rax
movslq (%rax,%r9,4),%rbp
add    %rax,%rbp
jmp    *%rbp
movapd %xmm4,%xmm3
test   %esi,%esi
jle    143f <return_attack_double+0x33f>
mov    %esi,%eax
movss  0xdc2(%rip),%xmm3
xor    %ebp,%ebp
movss  0xdd4(%rip),%xmm5
movss  0xdc0(%rip),%xmm6
movss  0xdb4(%rip),%xmm7
movaps %xmm3,%xmm4
jmp    12ad <return_attack_double+0x1ad>
movaps %xmm5,%xmm4
add    $0x1,%rbp
cmp    %rbp,%rax
je     143f <return_attack_double+0x33f>
mov    (%rdx,%rbp,4),%ebx
cmp    $0x1,%ebx
je     12d0 <return_attack_double+0x1d0>
test   %ebx,%ebx
jne    12a0 <return_attack_double+0x1a0>
mov    (%rcx,%rbp,4),%ebx
cmp    $0x7,%ebx
jle    12e4 <return_attack_double+0x1e4>
movaps %xmm5,%xmm3
jmp    12a0 <return_attack_double+0x1a0>
cs nopw 0x0(%rax,%rax,1)
mov    (%rcx,%rbp,4),%ebx
cmp    $0x7,%ebx
jg     129d <return_attack_double+0x19d>
jne    12f0 <return_attack_double+0x1f0>
ucomiss %xmm4,%xmm6
jbe    12f0 <return_attack_double+0x1f0>
movaps %xmm6,%xmm4
jmp    12a0 <return_attack_double+0x1a0>
jne    1301 <return_attack_double+0x201>
ucomiss %xmm3,%xmm6
jbe    1301 <return_attack_double+0x201>
movaps %xmm6,%xmm3
jmp    12a0 <return_attack_double+0x1a0>
cmp    $0x6,%ebx
jne    12a0 <return_attack_double+0x1a0>
movaps %xmm7,%xmm1
maxss  %xmm4,%xmm1
movaps %xmm1,%xmm4
jmp    12a0 <return_attack_double+0x1a0>
cmp    $0x6,%ebx
jne    12a0 <return_attack_double+0x1a0>
movaps %xmm7,%xmm1
maxss  %xmm3,%xmm1
movaps %xmm1,%xmm3
jmp    12a0 <return_attack_double+0x1a0>
xor    %eax,%eax
cmp    $0x6,%esi
setl   %al
lea    0xd0f(%rip),%rcx
jmp    1436 <return_attack_double+0x336>
movapd %xmm4,%xmm3
test   %esi,%esi
jle    143f <return_attack_double+0x33f>
mov    %esi,%r8d
mov    %r8,%r9
add    $0xffffffffffffffff,%r9
je     1598 <return_attack_double+0x498>
mov    %r8d,%ebp
and    $0xfffffffe,%ebp
xor    %ebx,%ebx
movss  0xcee(%rip),%xmm3
movss  0xcfa(%rip),%xmm4
xor    %eax,%eax
jmp    1374 <return_attack_double+0x274>
xchg   %ax,%ax
add    $0x1,%eax
movapd %xmm5,%xmm3
add    $0x2,%rbx
cmp    %rbx,%rbp
je     15a4 <return_attack_double+0x4a4>
cmpl   $0x0,(%rdx,%rbx,4)
je     1390 <return_attack_double+0x290>
cmpl   $0x0,0x4(%rdx,%rbx,4)
jne    1367 <return_attack_double+0x267>
jmp    13ac <return_attack_double+0x2ac>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
cmpl   $0x5,(%rcx,%rbx,4)
movapd %xmm4,%xmm5
je     139e <return_attack_double+0x29e>
movapd %xmm3,%xmm5
add    $0x1,%eax
movapd %xmm5,%xmm3
cmpl   $0x0,0x4(%rdx,%rbx,4)
jne    1367 <return_attack_double+0x267>
cmpl   $0x5,0x4(%rcx,%rbx,4)
movapd %xmm4,%xmm5
je     1360 <return_attack_double+0x260>
movapd %xmm3,%xmm5
jmp    1360 <return_attack_double+0x260>
cmp    $0x5,%esi
je     141f <return_attack_double+0x31f>
cmp    $0x6,%esi
jne    1429 <return_attack_double+0x329>
movss  0xc81(%rip),%xmm4
jmp    143b <return_attack_double+0x33b>
test   %esi,%esi
jle    1415 <return_attack_double+0x315>
mov    %esi,%r8d
cmp    $0x1,%esi
jne    14d6 <return_attack_double+0x3d6>
movss  0xc5b(%rip),%xmm3
xor    %eax,%eax
movapd %xmm3,%xmm4
test   $0x1,%r8b
je     143f <return_attack_double+0x33f>
mov    (%rdx,%rax,4),%edx
cmp    $0x1,%edx
je     16f8 <return_attack_double+0x5f8>
test   %edx,%edx
jne    143f <return_attack_double+0x33f>
cmpl   $0x5,(%rcx,%rax,4)
jl     143f <return_attack_double+0x33f>
movss  0xc35(%rip),%xmm4
jmp    143f <return_attack_double+0x33f>
movss  0xc27(%rip),%xmm4
jmp    143b <return_attack_double+0x33b>
movss  0xc25(%rip),%xmm4
jmp    143b <return_attack_double+0x33b>
setg   %al
movzbl %al,%eax
lea    0xbea(%rip),%rcx
movss  (%rcx,%rax,4),%xmm4
movapd %xmm4,%xmm3
xorps  %xmm1,%xmm1
cvtss2sd %xmm2,%xmm1
add    $0xffffffff,%esi
xorps  %xmm2,%xmm2
cvtsi2sd %esi,%xmm2
mulsd  0xbb0(%rip),%xmm2
movsd  0xbb0(%rip),%xmm5
addsd  %xmm5,%xmm2
mulsd  %xmm2,%xmm1
cvtss2sd %xmm3,%xmm3
mulsd  %xmm1,%xmm3
cvtss2sd %xmm0,%xmm0
mulsd  0xbbc(%rip),%xmm0
xorps  %xmm1,%xmm1
cvtsi2sd %r11d,%xmm1
mulsd  %xmm0,%xmm1
addsd  %xmm5,%xmm1
mulsd  %xmm3,%xmm1
cvtsd2ss %xmm1,%xmm1
movss  %xmm1,(%rdi)
xorps  %xmm1,%xmm1
cvtss2sd %xmm8,%xmm1
mulsd  %xmm2,%xmm1
xorps  %xmm2,%xmm2
cvtss2sd %xmm4,%xmm2
mulsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
cvtsi2sd %r10d,%xmm1
mulsd  %xmm0,%xmm1
addsd  %xmm5,%xmm1
mulsd  %xmm2,%xmm1
xorps  %xmm0,%xmm0
cvtsd2ss %xmm1,%xmm0
movss  %xmm0,0x4(%rdi)
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret
mov    %r8d,%ebp
and    $0xfffffffe,%ebp
movss  0xb60(%rip),%xmm3
xor    %eax,%eax
movss  0xb5a(%rip),%xmm5
movapd %xmm3,%xmm4
jmp    1511 <return_attack_double+0x411>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movapd %xmm1,%xmm3
add    $0x2,%rax
cmp    %rax,%rbp
je     13ef <return_attack_double+0x2ef>
mov    (%rdx,%rax,4),%ebx
test   %ebx,%ebx
je     1540 <return_attack_double+0x440>
cmp    $0x1,%ebx
jne    1552 <return_attack_double+0x452>
cmpl   $0x5,(%rcx,%rax,4)
movapd %xmm5,%xmm1
jge    152b <return_attack_double+0x42b>
movapd %xmm3,%xmm1
movapd %xmm1,%xmm3
jmp    1552 <return_attack_double+0x452>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
cmpl   $0x5,(%rcx,%rax,4)
movapd %xmm5,%xmm1
jge    154e <return_attack_double+0x44e>
movapd %xmm4,%xmm1
movapd %xmm1,%xmm4
mov    0x4(%rdx,%rax,4),%ebx
cmp    $0x1,%ebx
je     1580 <return_attack_double+0x480>
test   %ebx,%ebx
jne    1504 <return_attack_double+0x404>
cmpl   $0x5,0x4(%rcx,%rax,4)
movapd %xmm5,%xmm1
jge    156e <return_attack_double+0x46e>
movapd %xmm4,%xmm1
movapd %xmm1,%xmm4
jmp    1504 <return_attack_double+0x404>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
cmpl   $0x5,0x4(%rcx,%rax,4)
movapd %xmm5,%xmm1
jge    1500 <return_attack_double+0x400>
movapd %xmm3,%xmm1
jmp    1500 <return_attack_double+0x400>
xor    %ebx,%ebx
movss  0xa9e(%rip),%xmm3
xor    %eax,%eax
test   $0x1,%r8b
je     15c1 <return_attack_double+0x4c1>
cmpl   $0x0,(%rdx,%rbx,4)
jne    15c1 <return_attack_double+0x4c1>
cmpl   $0x5,(%rcx,%rbx,4)
jne    15be <return_attack_double+0x4be>
movss  0xa96(%rip),%xmm3
add    $0x1,%eax
cmp    $0x2,%eax
jne    15df <return_attack_double+0x4df>
movss  0xa8a(%rip),%xmm1
mulss  %xmm1,%xmm3
mulss  %xmm1,%xmm3
test   %esi,%esi
jg     1618 <return_attack_double+0x518>
jmp    16eb <return_attack_double+0x5eb>
jle    1608 <return_attack_double+0x508>
xorps  %xmm1,%xmm1
cvtss2sd %xmm3,%xmm1
movsd  0xa38(%rip),%xmm3
mulsd  %xmm3,%xmm1
mulsd  %xmm3,%xmm1
xorps  %xmm3,%xmm3
cvtsd2ss %xmm1,%xmm3
test   %esi,%esi
jg     1618 <return_attack_double+0x518>
jmp    16eb <return_attack_double+0x5eb>
movss  0xa30(%rip),%xmm3
test   %esi,%esi
jle    16eb <return_attack_double+0x5eb>
test   %r9,%r9
je     1683 <return_attack_double+0x583>
mov    %r8d,%ebx
and    $0xfffffffe,%ebx
xor    %ebp,%ebp
movss  0xa13(%rip),%xmm4
movss  0xa1f(%rip),%xmm5
xor    %eax,%eax
jmp    1650 <return_attack_double+0x550>
nopl   0x0(%rax)
add    $0x1,%eax
movapd %xmm6,%xmm4
add    $0x2,%rbp
cmp    %rbp,%rbx
je     168f <return_attack_double+0x58f>
cmpl   $0x1,(%rdx,%rbp,4)
jne    166b <return_attack_double+0x56b>
cmpl   $0x5,(%rcx,%rbp,4)
movapd %xmm5,%xmm6
je     1664 <return_attack_double+0x564>
movapd %xmm4,%xmm6
add    $0x1,%eax
movapd %xmm6,%xmm4
cmpl   $0x1,0x4(%rdx,%rbp,4)
jne    1647 <return_attack_double+0x547>
cmpl   $0x5,0x4(%rcx,%rbp,4)
movapd %xmm5,%xmm6
je     1640 <return_attack_double+0x540>
movapd %xmm4,%xmm6
jmp    1640 <return_attack_double+0x540>
xor    %ebp,%ebp
movss  0x9b3(%rip),%xmm4
xor    %eax,%eax
test   $0x1,%r8b
je     16ac <return_attack_double+0x5ac>
cmpl   $0x1,(%rdx,%rbp,4)
jne    16ac <return_attack_double+0x5ac>
cmpl   $0x5,(%rcx,%rbp,4)
jne    16a9 <return_attack_double+0x5a9>
movss  0x9ab(%rip),%xmm4
add    $0x1,%eax
cmp    $0x2,%eax
jne    16c6 <return_attack_double+0x5c6>
movss  0x99f(%rip),%xmm1
mulss  %xmm1,%xmm4
mulss  %xmm1,%xmm4
jmp    143f <return_attack_double+0x33f>
jle    16eb <return_attack_double+0x5eb>
xorps  %xmm1,%xmm1
cvtss2sd %xmm4,%xmm1
movsd  0x951(%rip),%xmm4
mulsd  %xmm4,%xmm1
mulsd  %xmm4,%xmm1
xorps  %xmm4,%xmm4
cvtsd2ss %xmm1,%xmm4
jmp    143f <return_attack_double+0x33f>
movss  0x94d(%rip),%xmm4
jmp    143f <return_attack_double+0x33f>
cmpl   $0x5,(%rcx,%rax,4)
jl     143f <return_attack_double+0x33f>
movss  0x93e(%rip),%xmm3
jmp    143f <return_attack_double+0x33f>

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

LLVM IR (-O2):
define void @return_attack_double(float* nocapture writeonly %0, i32 %1, i32* nocapture %2, i32* nocapture %3, i32* nocapture %4, i32 %5, i32 %6, float %7, float %8) {
%10 = icmp sgt i32 %1, 0
br i1 %10, label %11, label %77
11: ; preds = %9
%12 = fpext float %8 to double
%13 = fmul double %12, 1.250000e+00
%14 = icmp eq i32 %6, 0
%15 = zext i32 %1 to i64
br label %16
16: ; preds = %11, %70
%17 = phi i64 [ 0, %11 ], [ %75, %70 ]
%18 = phi i32 [ 0, %11 ], [ %74, %70 ]
%19 = phi float [ 0.000000e+00, %11 ], [ %73, %70 ]
%20 = phi i32 [ 0, %11 ], [ %72, %70 ]
%21 = phi float [ 0.000000e+00, %11 ], [ %71, %70 ]
%22 = getelementptr inbounds i32, i32* %2, i64 %17
%23 = load i32, i32* %22
switch i32 %23, label %70 [
i32 0, label %24
i32 1, label %47
]
24: ; preds = %16
%25 = getelementptr inbounds i32, i32* %3, i64 %17
%26 = load i32, i32* %25
%27 = icmp eq i32 %26, 4
%28 = add nsw i32 %26, -3
%29 = sitofp i32 %28 to double
%30 = tail call double @llvm.fmuladd.f64(double %29, double 2.500000e-01, double 1.000000e+00)
%31 = select i1 %27, double %13, double %30
%32 = fptrunc double %31 to float
br i1 %14, label %39, label %33
33: ; preds = %24
%34 = fpext float %32 to double
%35 = sitofp i32 %26 to double
%36 = tail call double @llvm.fmuladd.f64(double %35, double 6.000000e-02, double 1.000000e+00)
%37 = fmul double %36, %34
%38 = fptrunc double %37 to float
br label %39
39: ; preds = %33, %24
%40 = phi float [ %38, %33 ], [ %32, %24 ]
%41 = fadd float %19, %40
%42 = getelementptr inbounds i32, i32* %4, i64 %17
%43 = load i32, i32* %42
%44 = icmp ne i32 %43, 0
%45 = zext i1 %44 to i32
%46 = add nsw i32 %18, %45
br label %70
47: ; preds = %16
%48 = getelementptr inbounds i32, i32* %3, i64 %17
%49 = load i32, i32* %48
%50 = icmp eq i32 %49, 4
%51 = add nsw i32 %49, -3
%52 = sitofp i32 %51 to double
%53 = tail call double @llvm.fmuladd.f64(double %52, double 2.500000e-01, double 1.000000e+00)
%54 = select i1 %50, double %13, double %53
%55 = fptrunc double %54 to float
br i1 %14, label %62, label %56
56: ; preds = %47
%57 = fpext float %55 to double
%58 = sitofp i32 %49 to double
%59 = tail call double @llvm.fmuladd.f64(double %58, double 6.000000e-02, double 1.000000e+00)
%60 = fmul double %59, %57
%61 = fptrunc double %60 to float
br label %62
62: ; preds = %56, %47
%63 = phi float [ %61, %56 ], [ %55, %47 ]
%64 = fadd float %21, %63
%65 = getelementptr inbounds i32, i32* %4, i64 %17
%66 = load i32, i32* %65
%67 = icmp ne i32 %66, 0
%68 = zext i1 %67 to i32
%69 = add nsw i32 %20, %68
br label %70
70: ; preds = %62, %39, %16
%71 = phi float [ %21, %16 ], [ %21, %39 ], [ %64, %62 ]
%72 = phi i32 [ %20, %16 ], [ %20, %39 ], [ %69, %62 ]
%73 = phi float [ %19, %16 ], [ %41, %39 ], [ %19, %62 ]
%74 = phi i32 [ %18, %16 ], [ %46, %39 ], [ %18, %62 ]
%75 = add nuw nsw i64 %17, 1
%76 = icmp eq i64 %75, %15
br i1 %76, label %77, label %16
77: ; preds = %70, %9
%78 = phi float [ 0.000000e+00, %9 ], [ %71, %70 ]
%79 = phi i32 [ 0, %9 ], [ %72, %70 ]
%80 = phi float [ 0.000000e+00, %9 ], [ %73, %70 ]
%81 = phi i32 [ 0, %9 ], [ %74, %70 ]
switch i32 %5, label %339 [
i32 2, label %97
i32 3, label %137
i32 4, label %89
i32 5, label %275
i32 6, label %82
]
82: ; preds = %77
br i1 %10, label %83, label %339
83: ; preds = %82
%84 = zext i32 %1 to i64
%85 = and i64 %84, 1
%86 = icmp eq i32 %1, 1
br i1 %86, label %319, label %87
87: ; preds = %83
%88 = and i64 %84, 4294967294
br label %280
89: ; preds = %77
br i1 %10, label %90, label %339
90: ; preds = %89
%91 = zext i32 %1 to i64
%92 = add nsw i64 %91, -1
%93 = and i64 %91, 1
%94 = icmp eq i64 %92, 0
br i1 %94, label %173, label %95
95: ; preds = %90
%96 = and i64 %91, 4294967294
br label %140
97: ; preds = %77
br i1 %10, label %98, label %339
98: ; preds = %97
%99 = zext i32 %1 to i64
br label %100
100: ; preds = %98, %132
%101 = phi i64 [ 0, %98 ], [ %135, %132 ]
%102 = phi float [ 1.000000e+00, %98 ], [ %133, %132 ]
%103 = phi float [ 1.000000e+00, %98 ], [ %134, %132 ]
%104 = getelementptr inbounds i32, i32* %2, i64 %101
%105 = load i32, i32* %104
switch i32 %105, label %132 [
i32 0, label %106
i32 1, label %119
]
106: ; preds = %100
%107 = getelementptr inbounds i32, i32* %3, i64 %101
%108 = load i32, i32* %107
%109 = icmp sgt i32 %108, 7
br i1 %109, label %132, label %110
110: ; preds = %106
%111 = icmp eq i32 %108, 7
%112 = fcmp olt float %102, 1.225000e+01
%113 = select i1 %111, i1 %112, i1 false
br i1 %113, label %132, label %114
114: ; preds = %110
%115 = icmp eq i32 %108, 6
%116 = fcmp olt float %102, 9.000000e+00
%117 = select i1 %115, i1 %116, i1 false
%118 = select i1 %117, float 9.000000e+00, float %102
br label %132
119: ; preds = %100
%120 = getelementptr inbounds i32, i32* %3, i64 %101
%121 = load i32, i32* %120
%122 = icmp sgt i32 %121, 7
br i1 %122, label %132, label %123
123: ; preds = %119
%124 = icmp eq i32 %121, 7
%125 = fcmp olt float %103, 1.225000e+01
%126 = select i1 %124, i1 %125, i1 false
br i1 %126, label %132, label %127
127: ; preds = %123
%128 = icmp eq i32 %121, 6
%129 = fcmp olt float %103, 9.000000e+00
%130 = select i1 %128, i1 %129, i1 false
%131 = select i1 %130, float 9.000000e+00, float %103
br label %132
132: ; preds = %100, %110, %106, %114, %127, %119, %123
%133 = phi float [ %102, %119 ], [ %102, %123 ], [ %102, %127 ], [ %118, %114 ], [ 1.225000e+01, %110 ], [ 1.600000e+01, %106 ], [ %102, %100 ]
%134 = phi float [ 1.600000e+01, %119 ], [ 1.225000e+01, %123 ], [ %131, %127 ], [ %103, %114 ], [ %103, %110 ], [ %103, %106 ], [ %103, %100 ]
%135 = add nuw nsw i64 %101, 1
%136 = icmp eq i64 %135, %99
br i1 %136, label %339, label %100
137: ; preds = %77
%138 = icmp slt i32 %1, 6
%139 = select i1 %138, float 6.250000e+00, float 7.562500e+00
br label %339
140: ; preds = %167, %95
%141 = phi i64 [ 0, %95 ], [ %170, %167 ]
%142 = phi float [ 1.000000e+00, %95 ], [ %169, %167 ]
%143 = phi i32 [ 0, %95 ], [ %168, %167 ]
%144 = phi i64 [ 0, %95 ], [ %171, %167 ]
%145 = getelementptr inbounds i32, i32* %2, i64 %141
%146 = load i32, i32* %145
%147 = icmp eq i32 %146, 0
br i1 %147, label %148, label %154
148: ; preds = %140
%149 = add nsw i32 %143, 1
%150 = getelementptr inbounds i32, i32* %3, i64 %141
%151 = load i32, i32* %150
%152 = icmp eq i32 %151, 5
%153 = select i1 %152, float 2.250000e+00, float %142
br label %154
154: ; preds = %140, %148
%155 = phi i32 [ %149, %148 ], [ %143, %140 ]
%156 = phi float [ %153, %148 ], [ %142, %140 ]
%157 = or i64 %141, 1
%158 = getelementptr inbounds i32, i32* %2, i64 %157
%159 = load i32, i32* %158
%160 = icmp eq i32 %159, 0
br i1 %160, label %161, label %167
161: ; preds = %154
%162 = add nsw i32 %155, 1
%163 = getelementptr inbounds i32, i32* %3, i64 %157
%164 = load i32, i32* %163
%165 = icmp eq i32 %164, 5
%166 = select i1 %165, float 2.250000e+00, float %156
br label %167
167: ; preds = %161, %154
%168 = phi i32 [ %162, %161 ], [ %155, %154 ]
%169 = phi float [ %166, %161 ], [ %156, %154 ]
%170 = add nuw nsw i64 %141, 2
%171 = add i64 %144, 2
%172 = icmp eq i64 %171, %96
br i1 %172, label %173, label %140
173: ; preds = %167, %90
%174 = phi i32 [ undef, %90 ], [ %168, %167 ]
%175 = phi float [ undef, %90 ], [ %169, %167 ]
%176 = phi i64 [ 0, %90 ], [ %170, %167 ]
%177 = phi float [ 1.000000e+00, %90 ], [ %169, %167 ]
%178 = phi i32 [ 0, %90 ], [ %168, %167 ]
%179 = icmp eq i64 %93, 0
br i1 %179, label %190, label %180
180: ; preds = %173
%181 = getelementptr inbounds i32, i32* %2, i64 %176
%182 = load i32, i32* %181
%183 = icmp eq i32 %182, 0
br i1 %183, label %184, label %190
184: ; preds = %180
%185 = add nsw i32 %178, 1
%186 = getelementptr inbounds i32, i32* %3, i64 %176
%187 = load i32, i32* %186
%188 = icmp eq i32 %187, 5
%189 = select i1 %188, float 2.250000e+00, float %177
br label %190
190: ; preds = %180, %184, %173
%191 = phi i32 [ %174, %173 ], [ %185, %184 ], [ %178, %180 ]
%192 = phi float [ %175, %173 ], [ %189, %184 ], [ %177, %180 ]
%193 = icmp eq i32 %191, 2
br i1 %193, label %194, label %197
194: ; preds = %190
%195 = fmul float %192, 3.000000e+00
%196 = fmul float %195, 3.000000e+00
br label %204
197: ; preds = %190
%198 = icmp sgt i32 %191, 2
br i1 %198, label %199, label %204
199: ; preds = %197
%200 = fpext float %192 to double
%201 = fmul double %200, 4.500000e+00
%202 = fmul double %201, 4.500000e+00
%203 = fptrunc double %202 to float
br label %204
204: ; preds = %197, %199, %194
%205 = phi float [ %196, %194 ], [ %203, %199 ], [ 1.000000e+00, %197 ]
br i1 %10, label %206, label %339
206: ; preds = %204
%207 = and i64 %91, 1
%208 = icmp eq i64 %92, 0
br i1 %208, label %244, label %209
209: ; preds = %206
%210 = and i64 %91, 4294967294
br label %211
211: ; preds = %238, %209
%212 = phi i64 [ 0, %209 ], [ %241, %238 ]
%213 = phi float [ 1.000000e+00, %209 ], [ %240, %238 ]
%214 = phi i32 [ 0, %209 ], [ %239, %238 ]
%215 = phi i64 [ 0, %209 ], [ %242, %238 ]
%216 = getelementptr inbounds i32, i32* %2, i64 %212
%217 = load i32, i32* %216
%218 = icmp eq i32 %217, 1
br i1 %218, label %219, label %225
219: ; preds = %211
%220 = add nsw i32 %214, 1
%221 = getelementptr inbounds i32, i32* %3, i64 %212
%222 = load i32, i32* %221
%223 = icmp eq i32 %222, 5
%224 = select i1 %223, float 2.250000e+00, float %213
br label %225
225: ; preds = %211, %219
%226 = phi i32 [ %220, %219 ], [ %214, %211 ]
%227 = phi float [ %224, %219 ], [ %213, %211 ]
%228 = or i64 %212, 1
%229 = getelementptr inbounds i32, i32* %2, i64 %228
%230 = load i32, i32* %229
%231 = icmp eq i32 %230, 1
br i1 %231, label %232, label %238
232: ; preds = %225
%233 = add nsw i32 %226, 1
%234 = getelementptr inbounds i32, i32* %3, i64 %228
%235 = load i32, i32* %234
%236 = icmp eq i32 %235, 5
%237 = select i1 %236, float 2.250000e+00, float %227
br label %238
238: ; preds = %232, %225
%239 = phi i32 [ %233, %232 ], [ %226, %225 ]
%240 = phi float [ %237, %232 ], [ %227, %225 ]
%241 = add nuw nsw i64 %212, 2
%242 = add i64 %215, 2
%243 = icmp eq i64 %242, %210
br i1 %243, label %244, label %211
244: ; preds = %238, %206
%245 = phi i32 [ undef, %206 ], [ %239, %238 ]
%246 = phi float [ undef, %206 ], [ %240, %238 ]
%247 = phi i64 [ 0, %206 ], [ %241, %238 ]
%248 = phi float [ 1.000000e+00, %206 ], [ %240, %238 ]
%249 = phi i32 [ 0, %206 ], [ %239, %238 ]
%250 = icmp eq i64 %207, 0
br i1 %250, label %261, label %251
251: ; preds = %244
%252 = getelementptr inbounds i32, i32* %2, i64 %247
%253 = load i32, i32* %252
%254 = icmp eq i32 %253, 1
br i1 %254, label %255, label %261
255: ; preds = %251
%256 = add nsw i32 %249, 1
%257 = getelementptr inbounds i32, i32* %3, i64 %247
%258 = load i32, i32* %257
%259 = icmp eq i32 %258, 5
%260 = select i1 %259, float 2.250000e+00, float %248
br label %261
261: ; preds = %251, %255, %244
%262 = phi i32 [ %245, %244 ], [ %256, %255 ], [ %249, %251 ]
%263 = phi float [ %246, %244 ], [ %260, %255 ], [ %248, %251 ]
%264 = icmp eq i32 %262, 2
br i1 %264, label %265, label %268
265: ; preds = %261
%266 = fmul float %263, 3.000000e+00
%267 = fmul float %266, 3.000000e+00
br label %339
268: ; preds = %261
%269 = icmp sgt i32 %262, 2
br i1 %269, label %270, label %339
270: ; preds = %268
%271 = fpext float %263 to double
%272 = fmul double %271, 4.500000e+00
%273 = fmul double %272, 4.500000e+00
%274 = fptrunc double %273 to float
br label %339
275: ; preds = %77
switch i32 %1, label %277 [
i32 5, label %339
i32 6, label %276
]
276: ; preds = %275
br label %339
277: ; preds = %275
%278 = icmp sgt i32 %1, 6
%279 = select i1 %278, float 1.600000e+01, float 1.000000e+00
br label %339
280: ; preds = %313, %87
%281 = phi i64 [ 0, %87 ], [ %316, %313 ]
%282 = phi float [ 6.250000e+00, %87 ], [ %314, %313 ]
%283 = phi float [ 6.250000e+00, %87 ], [ %315, %313 ]
%284 = phi i64 [ 0, %87 ], [ %317, %313 ]
%285 = getelementptr inbounds i32, i32* %2, i64 %281
%286 = load i32, i32* %285
switch i32 %286, label %297 [
i32 1, label %287
i32 0, label %292
]
287: ; preds = %280
%288 = getelementptr inbounds i32, i32* %3, i64 %281
%289 = load i32, i32* %288
%290 = icmp sgt i32 %289, 4
%291 = select i1 %290, float 2.500000e+01, float %282
br label %297
292: ; preds = %280
%293 = getelementptr inbounds i32, i32* %3, i64 %281
%294 = load i32, i32* %293
%295 = icmp sgt i32 %294, 4
%296 = select i1 %295, float 2.500000e+01, float %283
br label %297
297: ; preds = %280, %287, %292
%298 = phi float [ %282, %292 ], [ %291, %287 ], [ %282, %280 ]
%299 = phi float [ %296, %292 ], [ %283, %287 ], [ %283, %280 ]
%300 = or i64 %281, 1
%301 = getelementptr inbounds i32, i32* %2, i64 %300
%302 = load i32, i32* %301
switch i32 %302, label %313 [
i32 1, label %308
i32 0, label %303
]
303: ; preds = %297
%304 = getelementptr inbounds i32, i32* %3, i64 %300
%305 = load i32, i32* %304
%306 = icmp sgt i32 %305, 4
%307 = select i1 %306, float 2.500000e+01, float %299
br label %313
308: ; preds = %297
%309 = getelementptr inbounds i32, i32* %3, i64 %300
%310 = load i32, i32* %309
%311 = icmp sgt i32 %310, 4
%312 = select i1 %311, float 2.500000e+01, float %298
br label %313
313: ; preds = %308, %303, %297
%314 = phi float [ %298, %303 ], [ %312, %308 ], [ %298, %297 ]
%315 = phi float [ %307, %303 ], [ %299, %308 ], [ %299, %297 ]
%316 = add nuw nsw i64 %281, 2
%317 = add i64 %284, 2
%318 = icmp eq i64 %317, %88
br i1 %318, label %319, label %280
319: ; preds = %313, %83
%320 = phi float [ undef, %83 ], [ %314, %313 ]
%321 = phi float [ undef, %83 ], [ %315, %313 ]
%322 = phi i64 [ 0, %83 ], [ %316, %313 ]
%323 = phi float [ 6.250000e+00, %83 ], [ %314, %313 ]
%324 = phi float [ 6.250000e+00, %83 ], [ %315, %313 ]
%325 = icmp eq i64 %85, 0
br i1 %325, label %339, label %326
326: ; preds = %319
%327 = getelementptr inbounds i32, i32* %2, i64 %322
%328 = load i32, i32* %327
switch i32 %328, label %339 [
i32 1, label %334
i32 0, label %329
]
329: ; preds = %326
%330 = getelementptr inbounds i32, i32* %3, i64 %322
%331 = load i32, i32* %330
%332 = icmp sgt i32 %331, 4
%333 = select i1 %332, float 2.500000e+01, float %324
br label %339
334: ; preds = %326
%335 = getelementptr inbounds i32, i32* %3, i64 %322
%336 = load i32, i32* %335
%337 = icmp sgt i32 %336, 4
%338 = select i1 %337, float 2.500000e+01, float %323
br label %339
339: ; preds = %319, %334, %329, %326, %132, %204, %89, %82, %97, %277, %275, %268, %137, %77, %276, %265, %270
%340 = phi float [ 1.000000e+00, %77 ], [ 1.225000e+01, %276 ], [ %267, %265 ], [ %274, %270 ], [ %139, %137 ], [ 1.000000e+00, %268 ], [ 9.000000e+00, %275 ], [ %279, %277 ], [ 1.000000e+00, %97 ], [ 6.250000e+00, %82 ], [ 1.000000e+00, %89 ], [ 1.000000e+00, %204 ], [ %134, %132 ], [ %321, %319 ], [ %333, %329 ], [ %324, %334 ], [ %324, %326 ]
%341 = phi float [ 1.000000e+00, %77 ], [ 1.225000e+01, %276 ], [ %205, %265 ], [ %205, %270 ], [ %139, %137 ], [ %205, %268 ], [ 9.000000e+00, %275 ], [ %279, %277 ], [ 1.000000e+00, %97 ], [ 6.250000e+00, %82 ], [ 1.000000e+00, %89 ], [ %205, %204 ], [ %133, %132 ], [ %320, %319 ], [ %323, %329 ], [ %338, %334 ], [ %323, %326 ]
%342 = fpext float %80 to double
%343 = add nsw i32 %1, -1
%344 = sitofp i32 %343 to double
%345 = tail call double @llvm.fmuladd.f64(double %344, double 2.500000e-01, double 1.000000e+00)
%346 = fmul double %345, %342
%347 = fpext float %341 to double
%348 = fmul double %346, %347
%349 = fpext float %7 to double
%350 = fmul double %349, 1.000000e-01
%351 = sitofp i32 %81 to double
%352 = tail call double @llvm.fmuladd.f64(double %350, double %351, double 1.000000e+00)
%353 = fmul double %352, %348
%354 = fptrunc double %353 to float
store float %354, float* %0
%355 = fpext float %78 to double
%356 = fmul double %345, %355
%357 = fpext float %340 to double
%358 = fmul double %356, %357
%359 = sitofp i32 %79 to double
%360 = tail call double @llvm.fmuladd.f64(double %350, double %359, double 1.000000e+00)
%361 = fmul double %360, %358
%362 = fptrunc double %361 to float
%363 = getelementptr inbounds float, float* %0, i64 1
store float %362, float* %363
ret void
}