#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
float ceilf(float);
scalar_t__ isX12(unsigned char const);
int p_r_6_2_1(unsigned char const *, int, int const);
int look_ahead_test(const unsigned char inputData[], const int sourcelen,
                    const int position, const int current_mode, const int gs1) {
  float ascii_count, c40_count, text_count, x12_count, edf_count, b256_count,
      best_count;
  const float stiction = (1.0F / 24.0F);
  int sp, best_scheme;
  best_scheme = 0;
  if (current_mode == 1) {
    ascii_count = 0.0F;
    c40_count = 1.0F;
    text_count = 1.0F;
    x12_count = 1.0F;
    edf_count = 1.0F;
    b256_count = 1.25F;
  } else {
    ascii_count = 1.0F;
    c40_count = 2.0F;
    text_count = 2.0F;
    x12_count = 2.0F;
    edf_count = 2.0F;
    b256_count = 2.25F;
  }
  switch (current_mode) {
  case 2:
    c40_count = 0.0F;
    break;
  case 3:
    text_count = 0.0F;
    break;
  case 4:
    x12_count = 0.0F;
    break;
  case 5:
    edf_count = 0.0F;
    break;
  case 6:
    b256_count = 0.0F;
    break;
  }
  sp = position;
  do {
    if (sp == sourcelen) {
      ascii_count = ceilf(ascii_count);
      b256_count = ceilf(b256_count);
      edf_count = ceilf(edf_count);
      text_count = ceilf(text_count);
      x12_count = ceilf(x12_count);
      c40_count = ceilf(c40_count);
      best_count = c40_count;
      best_scheme = 2;
      if (x12_count < (best_count - stiction)) {
        best_count = x12_count;
        best_scheme = 4;
      }
      if (text_count < (best_count - stiction)) {
        best_count = text_count;
        best_scheme = 3;
      }
      if (edf_count < (best_count - stiction)) {
        best_count = edf_count;
        best_scheme = 5;
      }
      if (b256_count < (best_count - stiction)) {
        best_count = b256_count;
        best_scheme = 6;
      }
      if (ascii_count <= (best_count + stiction)) {
        best_scheme = 1;
      }
    } else {
      if ((inputData[sp] >= '0') && (inputData[sp] <= '9')) {
        ascii_count += 0.5F;
      } else {
        if (inputData[sp] > 127) {
          ascii_count = ceilf(ascii_count) + 2.0F;
        } else {
          ascii_count = ceilf(ascii_count) + 1.0F;
        }
      }
      if ((inputData[sp] == ' ') ||
          (((inputData[sp] >= '0') && (inputData[sp] <= '9')) ||
           ((inputData[sp] >= 'A') && (inputData[sp] <= 'Z')))) {
        c40_count += (2.0F / 3.0F);
      } else {
        if (inputData[sp] > 127) {
          c40_count += (8.0F / 3.0F);
        } else {
          c40_count += (4.0F / 3.0F);
        }
      }
      if ((inputData[sp] == ' ') ||
          (((inputData[sp] >= '0') && (inputData[sp] <= '9')) ||
           ((inputData[sp] >= 'a') && (inputData[sp] <= 'z')))) {
        text_count += (2.0F / 3.0F);
      } else {
        if (inputData[sp] > 127) {
          text_count += (8.0F / 3.0F);
        } else {
          text_count += (4.0F / 3.0F);
        }
      }
      if (isX12(inputData[sp])) {
        x12_count += (2.0F / 3.0F);
      } else {
        if (inputData[sp] > 127) {
          x12_count += (13.0F / 3.0F);
        } else {
          x12_count += (10.0F / 3.0F);
        }
      }
      if ((inputData[sp] >= ' ') && (inputData[sp] <= '^')) {
        edf_count += (3.0F / 4.0F);
      } else {
        if (inputData[sp] > 127) {
          edf_count += 17.0F;
        } else {
          edf_count += 13.0F;
        }
      }
      if ((gs1 == 1) && (inputData[sp] == '[')) {
        edf_count += 13.0F;
      }
      if ((gs1 == 1) && (inputData[sp] == '[')) {
        b256_count += 4.0F;
      } else {
        b256_count += 1.0F;
      }
    }
    if (sp > (position + 3)) {
      if (((c40_count + 1.0F) < (ascii_count - stiction)) &&
          ((c40_count + 1.0F) < (b256_count - stiction)) &&
          ((c40_count + 1.0F) < (edf_count - stiction)) &&
          ((c40_count + 1.0F) < (text_count - stiction))) {
        if (c40_count < (x12_count - stiction)) {
          best_scheme = 2;
        }
        if ((c40_count >= (x12_count - stiction)) &&
            (c40_count <= (x12_count + stiction))) {
          if (p_r_6_2_1(inputData, sp, sourcelen) == 1) {
            best_scheme = 4;
          } else {
            best_scheme = 2;
          }
        }
      }
      if (((x12_count + 1.0F) < (ascii_count - stiction)) &&
          ((x12_count + 1.0F) < (b256_count - stiction)) &&
          ((x12_count + 1.0F) < (edf_count - stiction)) &&
          ((x12_count + 1.0F) < (text_count - stiction)) &&
          ((x12_count + 1.0F) < (c40_count - stiction))) {
        best_scheme = 4;
      }
      if (((text_count + 1.0F) < (ascii_count - stiction)) &&
          ((text_count + 1.0F) < (b256_count - stiction)) &&
          ((text_count + 1.0F) < (edf_count - stiction)) &&
          ((text_count + 1.0F) < (x12_count - stiction)) &&
          ((text_count + 1.0F) < (c40_count - stiction))) {
        best_scheme = 3;
      }
      if (((edf_count + 1.0F) < (ascii_count - stiction)) &&
          ((edf_count + 1.0F) < (b256_count - stiction)) &&
          ((edf_count + 1.0F) < (text_count - stiction)) &&
          ((edf_count + 1.0F) < (x12_count - stiction)) &&
          ((edf_count + 1.0F) < (c40_count - stiction))) {
        best_scheme = 5;
      }
      if (((b256_count + 1.0F) <= (ascii_count + stiction)) ||
          (((b256_count + 1.0F) < (edf_count - stiction)) &&
           ((b256_count + 1.0F) < (text_count - stiction)) &&
           ((b256_count + 1.0F) < (x12_count - stiction)) &&
           ((b256_count + 1.0F) < (c40_count - stiction)))) {
        best_scheme = 6;
      }
      if (((ascii_count + 1.0F) <= (b256_count + stiction)) &&
          ((ascii_count + 1.0F) <= (edf_count + stiction)) &&
          ((ascii_count + 1.0F) <= (text_count + stiction)) &&
          ((ascii_count + 1.0F) <= (x12_count + stiction)) &&
          ((ascii_count + 1.0F) <= (c40_count + stiction))) {
        best_scheme = 1;
      }
    }
    sp++;
  } while (best_scheme == 0);
  return best_scheme;
}


x86 assembly (clang, -O0):
<look_ahead_test>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %ecx,-0x14(%rbp)
mov    %r8d,-0x18(%rbp)
movss  0xeaf(%rip),%xmm0
movss  %xmm0,-0x38(%rbp)
movl   $0x0,-0x40(%rbp)
cmpl   $0x1,-0x14(%rbp)
jne    11b5 <look_ahead_test+0x85>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x1c(%rbp)
movss  0xe95(%rip),%xmm0
movss  %xmm0,-0x20(%rbp)
movss  0xe88(%rip),%xmm0
movss  %xmm0,-0x24(%rbp)
movss  0xe7b(%rip),%xmm0
movss  %xmm0,-0x28(%rbp)
movss  0xe6e(%rip),%xmm0
movss  %xmm0,-0x2c(%rbp)
movss  0xe65(%rip),%xmm0
movss  %xmm0,-0x30(%rbp)
jmp    1203 <look_ahead_test+0xd3>
movss  0xe4f(%rip),%xmm0
movss  %xmm0,-0x1c(%rbp)
movss  0xe3e(%rip),%xmm0
movss  %xmm0,-0x20(%rbp)
movss  0xe31(%rip),%xmm0
movss  %xmm0,-0x24(%rbp)
movss  0xe24(%rip),%xmm0
movss  %xmm0,-0x28(%rbp)
movss  0xe17(%rip),%xmm0
movss  %xmm0,-0x2c(%rbp)
movss  0xe06(%rip),%xmm0
movss  %xmm0,-0x30(%rbp)
mov    -0x14(%rbp),%eax
add    $0xfffffffe,%eax
mov    %eax,%ecx
mov    %rcx,-0x48(%rbp)
sub    $0x4,%eax
ja     1268 <look_ahead_test+0x138>
mov    -0x48(%rbp),%rax
lea    0xe19(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
xorps  %xmm0,%xmm0
movss  %xmm0,-0x20(%rbp)
jmp    1268 <look_ahead_test+0x138>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x24(%rbp)
jmp    1268 <look_ahead_test+0x138>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x28(%rbp)
jmp    1268 <look_ahead_test+0x138>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x2c(%rbp)
jmp    1268 <look_ahead_test+0x138>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x30(%rbp)
mov    -0x10(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
cmp    -0xc(%rbp),%eax
jne    13cc <look_ahead_test+0x29c>
movss  -0x1c(%rbp),%xmm0
call   1050 <ceilf@plt>
movss  %xmm0,-0x1c(%rbp)
movss  -0x30(%rbp),%xmm0
call   1050 <ceilf@plt>
movss  %xmm0,-0x30(%rbp)
movss  -0x2c(%rbp),%xmm0
call   1050 <ceilf@plt>
movss  %xmm0,-0x2c(%rbp)
movss  -0x24(%rbp),%xmm0
call   1050 <ceilf@plt>
movss  %xmm0,-0x24(%rbp)
movss  -0x28(%rbp),%xmm0
call   1050 <ceilf@plt>
movss  %xmm0,-0x28(%rbp)
movss  -0x20(%rbp),%xmm0
call   1050 <ceilf@plt>
movss  %xmm0,-0x20(%rbp)
movss  -0x20(%rbp),%xmm0
movss  %xmm0,-0x34(%rbp)
movl   $0x2,-0x40(%rbp)
movss  -0x28(%rbp),%xmm1
movss  -0x34(%rbp),%xmm0
movss  0xd09(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1315 <look_ahead_test+0x1e5>
movss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x34(%rbp)
movl   $0x4,-0x40(%rbp)
movss  -0x24(%rbp),%xmm1
movss  -0x34(%rbp),%xmm0
movss  0xcd9(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1345 <look_ahead_test+0x215>
movss  -0x24(%rbp),%xmm0
movss  %xmm0,-0x34(%rbp)
movl   $0x3,-0x40(%rbp)
movss  -0x2c(%rbp),%xmm1
movss  -0x34(%rbp),%xmm0
movss  0xca9(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1375 <look_ahead_test+0x245>
movss  -0x2c(%rbp),%xmm0
movss  %xmm0,-0x34(%rbp)
movl   $0x5,-0x40(%rbp)
movss  -0x30(%rbp),%xmm1
movss  -0x34(%rbp),%xmm0
movss  0xc79(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    13a5 <look_ahead_test+0x275>
movss  -0x30(%rbp),%xmm0
movss  %xmm0,-0x34(%rbp)
movl   $0x6,-0x40(%rbp)
movss  -0x1c(%rbp),%xmm1
movss  0xc4e(%rip),%xmm0
addss  -0x34(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     13c7 <look_ahead_test+0x297>
movl   $0x1,-0x40(%rbp)
jmp    175f <look_ahead_test+0x62f>
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jl     140d <look_ahead_test+0x2dd>
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
jg     140d <look_ahead_test+0x2dd>
movss  0xc16(%rip),%xmm0
addss  -0x1c(%rbp),%xmm0
movss  %xmm0,-0x1c(%rbp)
jmp    1462 <look_ahead_test+0x332>
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x7f,%eax
jle    1442 <look_ahead_test+0x312>
movss  -0x1c(%rbp),%xmm0
call   1050 <ceilf@plt>
movss  0xbd4(%rip),%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,-0x1c(%rbp)
jmp    145d <look_ahead_test+0x32d>
movss  -0x1c(%rbp),%xmm0
call   1050 <ceilf@plt>
movss  0xbb8(%rip),%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,-0x1c(%rbp)
jmp    1462 <look_ahead_test+0x332>
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
je     14cb <look_ahead_test+0x39b>
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jl     14a1 <look_ahead_test+0x371>
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
jle    14cb <look_ahead_test+0x39b>
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x41,%eax
jl     14e2 <look_ahead_test+0x3b2>
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x5a,%eax
jg     14e2 <look_ahead_test+0x3b2>
movss  0xb4d(%rip),%xmm0
addss  -0x20(%rbp),%xmm0
movss  %xmm0,-0x20(%rbp)
jmp    1525 <look_ahead_test+0x3f5>
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x7f,%eax
jle    150e <look_ahead_test+0x3de>
movss  0xb1d(%rip),%xmm0
addss  -0x20(%rbp),%xmm0
movss  %xmm0,-0x20(%rbp)
jmp    1520 <look_ahead_test+0x3f0>
movss  0xb02(%rip),%xmm0
addss  -0x20(%rbp),%xmm0
movss  %xmm0,-0x20(%rbp)
jmp    1525 <look_ahead_test+0x3f5>
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
je     158e <look_ahead_test+0x45e>
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jl     1564 <look_ahead_test+0x434>
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
jle    158e <look_ahead_test+0x45e>
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x61,%eax
jl     15a5 <look_ahead_test+0x475>
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x7a,%eax
jg     15a5 <look_ahead_test+0x475>
movss  0xa8a(%rip),%xmm0
addss  -0x24(%rbp),%xmm0
movss  %xmm0,-0x24(%rbp)
jmp    15e8 <look_ahead_test+0x4b8>
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x7f,%eax
jle    15d1 <look_ahead_test+0x4a1>
movss  0xa5a(%rip),%xmm0
addss  -0x24(%rbp),%xmm0
movss  %xmm0,-0x24(%rbp)
jmp    15e3 <look_ahead_test+0x4b3>
movss  0xa3f(%rip),%xmm0
addss  -0x24(%rbp),%xmm0
movss  %xmm0,-0x24(%rbp)
jmp    15e8 <look_ahead_test+0x4b8>
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movzbl (%rax,%rcx,1),%edi
call   1030 <isX12@plt>
cmp    $0x0,%rax
je     161a <look_ahead_test+0x4ea>
movss  0xa15(%rip),%xmm0
addss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x28(%rbp)
jmp    165d <look_ahead_test+0x52d>
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x7f,%eax
jle    1646 <look_ahead_test+0x516>
movss  0x9f1(%rip),%xmm0
addss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x28(%rbp)
jmp    1658 <look_ahead_test+0x528>
movss  0x9d6(%rip),%xmm0
addss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x28(%rbp)
jmp    165d <look_ahead_test+0x52d>
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
jl     169e <look_ahead_test+0x56e>
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x5e,%eax
jg     169e <look_ahead_test+0x56e>
movss  0x9a5(%rip),%xmm0
addss  -0x2c(%rbp),%xmm0
movss  %xmm0,-0x2c(%rbp)
jmp    16e1 <look_ahead_test+0x5b1>
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x7f,%eax
jle    16ca <look_ahead_test+0x59a>
movss  0x975(%rip),%xmm0
addss  -0x2c(%rbp),%xmm0
movss  %xmm0,-0x2c(%rbp)
jmp    16dc <look_ahead_test+0x5ac>
movss  0x95a(%rip),%xmm0
addss  -0x2c(%rbp),%xmm0
movss  %xmm0,-0x2c(%rbp)
jmp    16e1 <look_ahead_test+0x5b1>
cmpl   $0x1,-0x18(%rbp)
jne    1712 <look_ahead_test+0x5e2>
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x5b,%eax
jne    1712 <look_ahead_test+0x5e2>
movss  0x924(%rip),%xmm0
addss  -0x2c(%rbp),%xmm0
movss  %xmm0,-0x2c(%rbp)
cmpl   $0x1,-0x18(%rbp)
jne    1748 <look_ahead_test+0x618>
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x5b,%eax
jne    1748 <look_ahead_test+0x618>
movss  0x8ff(%rip),%xmm0
addss  -0x30(%rbp),%xmm0
movss  %xmm0,-0x30(%rbp)
jmp    175a <look_ahead_test+0x62a>
movss  0x8bc(%rip),%xmm0
addss  -0x30(%rbp),%xmm0
movss  %xmm0,-0x30(%rbp)
jmp    175f <look_ahead_test+0x62f>
mov    -0x3c(%rbp),%eax
mov    -0x10(%rbp),%ecx
add    $0x3,%ecx
cmp    %ecx,%eax
jle    1c80 <look_ahead_test+0xb50>
movss  0x894(%rip),%xmm1
addss  -0x20(%rbp),%xmm1
movss  -0x1c(%rbp),%xmm0
movss  0x876(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    18a1 <look_ahead_test+0x771>
movss  0x86d(%rip),%xmm1
addss  -0x20(%rbp),%xmm1
movss  -0x30(%rbp),%xmm0
movss  0x84f(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    18a1 <look_ahead_test+0x771>
movss  0x846(%rip),%xmm1
addss  -0x20(%rbp),%xmm1
movss  -0x2c(%rbp),%xmm0
movss  0x828(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    18a1 <look_ahead_test+0x771>
movss  0x81f(%rip),%xmm1
addss  -0x20(%rbp),%xmm1
movss  -0x24(%rbp),%xmm0
movss  0x801(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    18a1 <look_ahead_test+0x771>
movss  -0x20(%rbp),%xmm1
movss  -0x28(%rbp),%xmm0
movss  0x7e2(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1832 <look_ahead_test+0x702>
movl   $0x2,-0x40(%rbp)
movss  -0x20(%rbp),%xmm0
movss  -0x28(%rbp),%xmm1
movss  0x7bc(%rip),%xmm2
subss  %xmm2,%xmm1
ucomiss %xmm1,%xmm0
jb     189c <look_ahead_test+0x76c>
movss  -0x20(%rbp),%xmm1
movss  0x7a2(%rip),%xmm0
addss  -0x28(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     189c <look_ahead_test+0x76c>
mov    -0x8(%rbp),%rdi
mov    -0x3c(%rbp),%esi
mov    -0xc(%rbp),%edx
call   1040 <p_r_6_2_1@plt>
cmp    $0x1,%eax
jne    1890 <look_ahead_test+0x760>
movl   $0x4,-0x40(%rbp)
jmp    1897 <look_ahead_test+0x767>
movl   $0x2,-0x40(%rbp)
jmp    189c <look_ahead_test+0x76c>
jmp    18a1 <look_ahead_test+0x771>
movss  0x763(%rip),%xmm1
addss  -0x28(%rbp),%xmm1
movss  -0x1c(%rbp),%xmm0
movss  0x745(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    196b <look_ahead_test+0x83b>
movss  0x73c(%rip),%xmm1
addss  -0x28(%rbp),%xmm1
movss  -0x30(%rbp),%xmm0
movss  0x71e(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    196b <look_ahead_test+0x83b>
movss  0x715(%rip),%xmm1
addss  -0x28(%rbp),%xmm1
movss  -0x2c(%rbp),%xmm0
movss  0x6f7(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    196b <look_ahead_test+0x83b>
movss  0x6ee(%rip),%xmm1
addss  -0x28(%rbp),%xmm1
movss  -0x24(%rbp),%xmm0
movss  0x6d0(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    196b <look_ahead_test+0x83b>
movss  0x6c7(%rip),%xmm1
addss  -0x28(%rbp),%xmm1
movss  -0x20(%rbp),%xmm0
movss  0x6a9(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    196b <look_ahead_test+0x83b>
movl   $0x4,-0x40(%rbp)
movss  0x699(%rip),%xmm1
addss  -0x24(%rbp),%xmm1
movss  -0x1c(%rbp),%xmm0
movss  0x67b(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1a35 <look_ahead_test+0x905>
movss  0x672(%rip),%xmm1
addss  -0x24(%rbp),%xmm1
movss  -0x30(%rbp),%xmm0
movss  0x654(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1a35 <look_ahead_test+0x905>
movss  0x64b(%rip),%xmm1
addss  -0x24(%rbp),%xmm1
movss  -0x2c(%rbp),%xmm0
movss  0x62d(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1a35 <look_ahead_test+0x905>
movss  0x624(%rip),%xmm1
addss  -0x24(%rbp),%xmm1
movss  -0x28(%rbp),%xmm0
movss  0x606(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1a35 <look_ahead_test+0x905>
movss  0x5fd(%rip),%xmm1
addss  -0x24(%rbp),%xmm1
movss  -0x20(%rbp),%xmm0
movss  0x5df(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1a35 <look_ahead_test+0x905>
movl   $0x3,-0x40(%rbp)
movss  0x5cf(%rip),%xmm1
addss  -0x2c(%rbp),%xmm1
movss  -0x1c(%rbp),%xmm0
movss  0x5b1(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1aff <look_ahead_test+0x9cf>
movss  0x5a8(%rip),%xmm1
addss  -0x2c(%rbp),%xmm1
movss  -0x30(%rbp),%xmm0
movss  0x58a(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1aff <look_ahead_test+0x9cf>
movss  0x581(%rip),%xmm1
addss  -0x2c(%rbp),%xmm1
movss  -0x24(%rbp),%xmm0
movss  0x563(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1aff <look_ahead_test+0x9cf>
movss  0x55a(%rip),%xmm1
addss  -0x2c(%rbp),%xmm1
movss  -0x28(%rbp),%xmm0
movss  0x53c(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1aff <look_ahead_test+0x9cf>
movss  0x533(%rip),%xmm1
addss  -0x2c(%rbp),%xmm1
movss  -0x20(%rbp),%xmm0
movss  0x515(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1aff <look_ahead_test+0x9cf>
movl   $0x5,-0x40(%rbp)
movss  0x505(%rip),%xmm1
addss  -0x30(%rbp),%xmm1
movss  0x4ec(%rip),%xmm0
addss  -0x1c(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jae    1bbe <look_ahead_test+0xa8e>
movss  0x4e2(%rip),%xmm1
addss  -0x30(%rbp),%xmm1
movss  -0x2c(%rbp),%xmm0
movss  0x4c4(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1bc5 <look_ahead_test+0xa95>
movss  0x4bb(%rip),%xmm1
addss  -0x30(%rbp),%xmm1
movss  -0x24(%rbp),%xmm0
movss  0x49d(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1bc5 <look_ahead_test+0xa95>
movss  0x494(%rip),%xmm1
addss  -0x30(%rbp),%xmm1
movss  -0x28(%rbp),%xmm0
movss  0x476(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1bc5 <look_ahead_test+0xa95>
movss  0x46d(%rip),%xmm1
addss  -0x30(%rbp),%xmm1
movss  -0x20(%rbp),%xmm0
movss  0x44f(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1bc5 <look_ahead_test+0xa95>
movl   $0x6,-0x40(%rbp)
movss  0x43f(%rip),%xmm1
addss  -0x1c(%rbp),%xmm1
movss  0x426(%rip),%xmm0
addss  -0x30(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     1c7b <look_ahead_test+0xb4b>
movss  0x41c(%rip),%xmm1
addss  -0x1c(%rbp),%xmm1
movss  0x403(%rip),%xmm0
addss  -0x2c(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     1c7b <look_ahead_test+0xb4b>
movss  0x3f9(%rip),%xmm1
addss  -0x1c(%rbp),%xmm1
movss  0x3e0(%rip),%xmm0
addss  -0x24(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     1c7b <look_ahead_test+0xb4b>
movss  0x3d6(%rip),%xmm1
addss  -0x1c(%rbp),%xmm1
movss  0x3bd(%rip),%xmm0
addss  -0x28(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     1c7b <look_ahead_test+0xb4b>
movss  0x3b3(%rip),%xmm1
addss  -0x1c(%rbp),%xmm1
movss  0x39a(%rip),%xmm0
addss  -0x20(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     1c7b <look_ahead_test+0xb4b>
movl   $0x1,-0x40(%rbp)
jmp    1c80 <look_ahead_test+0xb50>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
cmpl   $0x0,-0x40(%rbp)
je     126e <look_ahead_test+0x13e>
mov    -0x40(%rbp),%eax
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<look_ahead_test>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x68,%rsp
mov    %r8d,%r15d
mov    %esi,0x1c(%rsp)
mov    %rdi,%r12
xor    %eax,%eax
lea    0xeaf(%rip),%rsi
lea    0xeb0(%rip),%rdi
xorps  %xmm0,%xmm0
cmp    $0x1,%ecx
sete   %al
je     116b <look_ahead_test+0x3b>
movss  0xead(%rip),%xmm0
movss  (%rsi,%rax,4),%xmm12
movss  (%rdi,%rax,4),%xmm11
add    $0xfffffffe,%ecx
cmp    $0x4,%ecx
ja     11c3 <look_ahead_test+0x93>
lea    0xeca(%rip),%rax
movslq (%rax,%rcx,4),%rcx
add    %rax,%rcx
jmp    *%rcx
xorps  %xmm8,%xmm8
jmp    11c7 <look_ahead_test+0x97>
xorps  %xmm10,%xmm10
movaps %xmm12,%xmm8
jmp    11cb <look_ahead_test+0x9b>
xorps  %xmm9,%xmm9
movaps %xmm12,%xmm8
movaps %xmm12,%xmm10
jmp    11cf <look_ahead_test+0x9f>
movaps %xmm12,%xmm8
movaps %xmm12,%xmm10
movaps %xmm12,%xmm9
xorps  %xmm12,%xmm12
jmp    11cf <look_ahead_test+0x9f>
xorps  %xmm11,%xmm11
movaps %xmm12,%xmm8
movaps %xmm12,%xmm10
movaps %xmm12,%xmm9
movslq %edx,%rbx
add    $0x3,%edx
movslq %edx,%r13
movslq 0x1c(%rsp),%rbp
jmp    11ec <look_ahead_test+0xbc>
nop
add    $0x1,%rbx
test   %eax,%eax
jne    17df <look_ahead_test+0x6af>
movss  %xmm8,0xc(%rsp)
cmp    %rbx,%rbp
movaps %xmm12,0x40(%rsp)
movaps %xmm11,0x30(%rsp)
movaps %xmm10,0x20(%rsp)
movss  %xmm9,0x18(%rsp)
jne    1350 <look_ahead_test+0x220>
call   1050 <ceilf@plt>
movss  %xmm0,0x14(%rsp)
movaps 0x30(%rsp),%xmm0
call   1050 <ceilf@plt>
movaps %xmm0,0x30(%rsp)
movaps 0x40(%rsp),%xmm0
call   1050 <ceilf@plt>
movaps %xmm0,0x40(%rsp)
movaps 0x20(%rsp),%xmm0
call   1050 <ceilf@plt>
movaps %xmm0,0x20(%rsp)
movss  0x18(%rsp),%xmm0
call   1050 <ceilf@plt>
movss  %xmm0,0x18(%rsp)
movss  0xc(%rsp),%xmm0
call   1050 <ceilf@plt>
movss  0xdd7(%rip),%xmm6
movss  0x18(%rsp),%xmm9
movaps %xmm0,%xmm8
addss  %xmm6,%xmm0
xor    %ecx,%ecx
ucomiss %xmm9,%xmm0
seta   %dl
movaps %xmm9,%xmm0
ja     1293 <look_ahead_test+0x163>
movaps %xmm8,%xmm0
movaps %xmm0,%xmm2
addss  %xmm6,%xmm2
movaps 0x20(%rsp),%xmm10
ucomiss %xmm10,%xmm2
mov    $0x3,%eax
ja     12b3 <look_ahead_test+0x183>
mov    %dl,%cl
lea    (%rcx,%rcx,1),%eax
add    $0x2,%eax
movaps %xmm10,%xmm1
cmpltss %xmm2,%xmm1
movaps %xmm1,%xmm2
andnps %xmm0,%xmm2
andps  %xmm10,%xmm1
orps   %xmm2,%xmm1
movaps %xmm1,%xmm2
addss  %xmm6,%xmm2
movaps 0x40(%rsp),%xmm12
ucomiss %xmm12,%xmm2
mov    $0x5,%ecx
movss  0x14(%rsp),%xmm0
movaps 0x30(%rsp),%xmm11
movss  0xd59(%rip),%xmm7
ja     12f7 <look_ahead_test+0x1c7>
mov    %eax,%ecx
movaps %xmm12,%xmm3
cmpltss %xmm2,%xmm3
movaps %xmm3,%xmm2
andnps %xmm1,%xmm2
andps  %xmm12,%xmm3
orps   %xmm2,%xmm3
movaps %xmm3,%xmm1
addss  %xmm6,%xmm1
ucomiss %xmm11,%xmm1
mov    $0x6,%eax
ja     1321 <look_ahead_test+0x1f1>
mov    %ecx,%eax
movaps %xmm11,%xmm2
cmpltss %xmm1,%xmm2
movaps %xmm2,%xmm1
andnps %xmm3,%xmm1
andps  %xmm11,%xmm2
orps   %xmm1,%xmm2
addss  %xmm7,%xmm2
ucomiss %xmm0,%xmm2
jb     155b <look_ahead_test+0x42b>
mov    $0x1,%eax
jmp    155b <look_ahead_test+0x42b>
xchg   %ax,%ax
movzbl (%r12,%rbx,1),%r14d
lea    -0x30(%r14),%eax
cmp    $0xa,%al
jae    1380 <look_ahead_test+0x250>
addss  0xcc7(%rip),%xmm0
movss  %xmm0,0x14(%rsp)
movss  0xc(%rsp),%xmm0
movss  0xca7(%rip),%xmm1
jmp    13d4 <look_ahead_test+0x2a4>
nopl   0x0(%rax,%rax,1)
call   1050 <ceilf@plt>
test   %r14b,%r14b
js     13b8 <look_ahead_test+0x288>
addss  0xc86(%rip),%xmm0
cmp    $0x20,%r14b
movss  0xc(%rsp),%xmm1
movss  %xmm0,0x14(%rsp)
jne    13e6 <look_ahead_test+0x2b6>
movss  0xc74(%rip),%xmm0
addss  %xmm0,%xmm1
movss  %xmm1,0xc(%rsp)
jmp    1426 <look_ahead_test+0x2f6>
addss  0xc64(%rip),%xmm0
movss  %xmm0,0x14(%rsp)
movss  0xc(%rsp),%xmm0
movss  0xc54(%rip),%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,0xc(%rsp)
movss  %xmm1,0x10(%rsp)
jmp    142c <look_ahead_test+0x2fc>
lea    -0x41(%r14),%eax
cmp    $0x1a,%al
jae    13fe <look_ahead_test+0x2ce>
addss  0xc2a(%rip),%xmm1
movss  %xmm1,0xc(%rsp)
jmp    141e <look_ahead_test+0x2ee>
addss  0xc16(%rip),%xmm1
movss  %xmm1,0xc(%rsp)
lea    -0x61(%r14),%eax
cmp    $0x1a,%al
jae    141e <look_ahead_test+0x2ee>
movss  0xc04(%rip),%xmm0
jmp    1426 <look_ahead_test+0x2f6>
movss  0xbf6(%rip),%xmm0
movss  %xmm0,0x10(%rsp)
movzbl %r14b,%edi
call   1030 <isX12@plt>
test   %rax,%rax
je     1463 <look_ahead_test+0x333>
movss  0x18(%rsp),%xmm9
addss  0xbd6(%rip),%xmm9
movzbl (%r12,%rbx,1),%eax
movaps 0x40(%rsp),%xmm12
movaps 0x30(%rsp),%xmm11
movaps 0x20(%rsp),%xmm10
jmp    148e <look_ahead_test+0x35e>
movzbl (%r12,%rbx,1),%eax
test   %al,%al
movaps 0x40(%rsp),%xmm12
movaps 0x30(%rsp),%xmm11
movaps 0x20(%rsp),%xmm10
movss  0x18(%rsp),%xmm9
js     14e6 <look_ahead_test+0x3b6>
addss  0xba2(%rip),%xmm9
lea    -0x20(%rax),%ecx
cmp    $0x3f,%cl
movss  0x14(%rsp),%xmm0
movss  0xc(%rsp),%xmm8
movss  0xb9f(%rip),%xmm6
movss  0xb9b(%rip),%xmm7
movss  0x10(%rsp),%xmm2
jae    14d0 <look_ahead_test+0x3a0>
movss  0xb73(%rip),%xmm1
jmp    1520 <look_ahead_test+0x3f0>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %eax,%ecx
shr    $0x7,%cl
movzbl %cl,%ecx
lea    0xb31(%rip),%rdx
movss  (%rdx,%rcx,4),%xmm1
jmp    1520 <look_ahead_test+0x3f0>
addss  0xb49(%rip),%xmm9
movss  0xb45(%rip),%xmm1
movss  0x14(%rsp),%xmm0
movss  0xc(%rsp),%xmm8
movss  0xb3c(%rip),%xmm6
movss  0xb38(%rip),%xmm7
movss  0x10(%rsp),%xmm2
nopw   0x0(%rax,%rax,1)
addss  %xmm2,%xmm10
addss  %xmm1,%xmm12
cmp    $0x1,%r15d
jne    1550 <look_ahead_test+0x420>
cmp    $0x5b,%al
jne    1550 <look_ahead_test+0x420>
addss  0xb03(%rip),%xmm12
addss  0xafe(%rip),%xmm11
jmp    1559 <look_ahead_test+0x429>
nopl   0x0(%rax,%rax,1)
addss  0xabf(%rip),%xmm11
xor    %eax,%eax
cmp    %r13,%rbx
jle    11e0 <look_ahead_test+0xb0>
movaps %xmm8,%xmm1
addss  0xaa8(%rip),%xmm1
movaps %xmm0,%xmm5
addss  %xmm6,%xmm5
ucomiss %xmm1,%xmm5
movaps %xmm11,%xmm4
addss  %xmm6,%xmm4
movaps %xmm12,%xmm15
addss  %xmm6,%xmm15
movaps %xmm10,%xmm13
addss  %xmm6,%xmm13
movaps %xmm9,%xmm14
addss  %xmm6,%xmm14
jbe    16a2 <look_ahead_test+0x572>
ucomiss %xmm1,%xmm4
jbe    16a2 <look_ahead_test+0x572>
ucomiss %xmm1,%xmm15
jbe    16a2 <look_ahead_test+0x572>
ucomiss %xmm1,%xmm13
jbe    16a2 <look_ahead_test+0x572>
ucomiss %xmm8,%xmm14
mov    $0x2,%ecx
cmova  %ecx,%eax
ucomiss %xmm14,%xmm8
movaps %xmm9,%xmm1
addss  %xmm7,%xmm1
jb     16a2 <look_ahead_test+0x572>
ucomiss %xmm8,%xmm1
jb     16a2 <look_ahead_test+0x572>
mov    %r12,%rdi
mov    %ebx,%esi
mov    0x1c(%rsp),%edx
movss  %xmm0,0x14(%rsp)
movaps %xmm12,0x40(%rsp)
movaps %xmm11,0x30(%rsp)
movss  %xmm8,0xc(%rsp)
movaps %xmm10,0x20(%rsp)
movss  %xmm9,0x18(%rsp)
movss  %xmm5,0x10(%rsp)
movss  %xmm14,0x64(%rsp)
movss  %xmm13,0x60(%rsp)
movss  %xmm15,0x5c(%rsp)
movss  %xmm4,0x58(%rsp)
call   1040 <p_r_6_2_1@plt>
movss  0x58(%rsp),%xmm4
movss  0x5c(%rsp),%xmm15
movss  0x60(%rsp),%xmm13
movss  0x64(%rsp),%xmm14
movss  0x10(%rsp),%xmm5
movss  0x9e6(%rip),%xmm7
movss  0x9da(%rip),%xmm6
movss  0x18(%rsp),%xmm9
movaps 0x20(%rsp),%xmm10
movss  0xc(%rsp),%xmm8
movaps 0x30(%rsp),%xmm11
movaps 0x40(%rsp),%xmm12
movss  0x14(%rsp),%xmm0
xor    %ecx,%ecx
cmp    $0x1,%eax
sete   %cl
lea    (%rcx,%rcx,1),%eax
add    $0x2,%eax
movaps %xmm8,%xmm3
addss  %xmm6,%xmm3
movaps %xmm11,%xmm1
addss  0x962(%rip),%xmm1
movaps %xmm0,%xmm2
addss  %xmm7,%xmm2
ucomiss %xmm1,%xmm2
jae    1775 <look_ahead_test+0x645>
movaps %xmm9,%xmm2
addss  0x946(%rip),%xmm2
ucomiss %xmm2,%xmm3
mov    $0x4,%ecx
ja     16de <look_ahead_test+0x5ae>
mov    %eax,%ecx
ucomiss %xmm2,%xmm13
cmovbe %eax,%ecx
ucomiss %xmm2,%xmm15
cmovbe %eax,%ecx
ucomiss %xmm2,%xmm4
cmovbe %eax,%ecx
ucomiss %xmm2,%xmm5
cmovbe %eax,%ecx
movaps %xmm10,%xmm2
movss  0x914(%rip),%xmm6
addss  %xmm6,%xmm2
ucomiss %xmm2,%xmm3
mov    %ecx,%edx
mov    $0x3,%eax
cmova  %eax,%edx
ucomiss %xmm2,%xmm14
cmovbe %ecx,%edx
ucomiss %xmm2,%xmm15
cmovbe %ecx,%edx
ucomiss %xmm2,%xmm4
cmovbe %ecx,%edx
ucomiss %xmm2,%xmm5
cmovbe %ecx,%edx
movaps %xmm12,%xmm2
addss  %xmm6,%xmm2
ucomiss %xmm2,%xmm3
mov    %edx,%eax
mov    $0x5,%ecx
cmova  %ecx,%eax
ucomiss %xmm2,%xmm14
cmovbe %edx,%eax
ucomiss %xmm2,%xmm13
cmovbe %edx,%eax
ucomiss %xmm2,%xmm4
cmovbe %edx,%eax
ucomiss %xmm2,%xmm5
cmovbe %edx,%eax
ucomiss %xmm1,%xmm15
jbe    177a <look_ahead_test+0x64a>
ucomiss %xmm1,%xmm13
jbe    177a <look_ahead_test+0x64a>
ucomiss %xmm1,%xmm14
jbe    177a <look_ahead_test+0x64a>
ucomiss %xmm1,%xmm3
jbe    177a <look_ahead_test+0x64a>
mov    $0x6,%eax
movaps %xmm0,%xmm2
addss  0x893(%rip),%xmm2
movaps %xmm11,%xmm1
addss  %xmm7,%xmm1
ucomiss %xmm2,%xmm1
jb     11e0 <look_ahead_test+0xb0>
movaps %xmm12,%xmm1
addss  %xmm7,%xmm1
ucomiss %xmm2,%xmm1
jb     11e0 <look_ahead_test+0xb0>
movaps %xmm10,%xmm1
addss  %xmm7,%xmm1
ucomiss %xmm2,%xmm1
jb     11e0 <look_ahead_test+0xb0>
movaps %xmm9,%xmm1
addss  %xmm7,%xmm1
ucomiss %xmm2,%xmm1
jb     11e0 <look_ahead_test+0xb0>
movaps %xmm8,%xmm1
addss  %xmm7,%xmm1
ucomiss %xmm2,%xmm1
jb     11e0 <look_ahead_test+0xb0>
mov    $0x1,%eax
add    $0x68,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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