#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 *, size_t, size_t const);
int look_ahead_test(const unsigned char inputData[], const size_t sourcelen,
                    const size_t 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 best_scheme;
  size_t sp;
  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    $0x60,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %ecx,-0x1c(%rbp)
mov    %r8d,-0x20(%rbp)
movss  0xead(%rip),%xmm0
movss  %xmm0,-0x40(%rbp)
movl   $0x0,-0x44(%rbp)
cmpl   $0x1,-0x1c(%rbp)
jne    11b7 <look_ahead_test+0x87>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x24(%rbp)
movss  0xe93(%rip),%xmm0
movss  %xmm0,-0x28(%rbp)
movss  0xe86(%rip),%xmm0
movss  %xmm0,-0x2c(%rbp)
movss  0xe79(%rip),%xmm0
movss  %xmm0,-0x30(%rbp)
movss  0xe6c(%rip),%xmm0
movss  %xmm0,-0x34(%rbp)
movss  0xe63(%rip),%xmm0
movss  %xmm0,-0x38(%rbp)
jmp    1205 <look_ahead_test+0xd5>
movss  0xe4d(%rip),%xmm0
movss  %xmm0,-0x24(%rbp)
movss  0xe3c(%rip),%xmm0
movss  %xmm0,-0x28(%rbp)
movss  0xe2f(%rip),%xmm0
movss  %xmm0,-0x2c(%rbp)
movss  0xe22(%rip),%xmm0
movss  %xmm0,-0x30(%rbp)
movss  0xe15(%rip),%xmm0
movss  %xmm0,-0x34(%rbp)
movss  0xe04(%rip),%xmm0
movss  %xmm0,-0x38(%rbp)
mov    -0x1c(%rbp),%eax
add    $0xfffffffe,%eax
mov    %eax,%ecx
mov    %rcx,-0x58(%rbp)
sub    $0x4,%eax
ja     126a <look_ahead_test+0x13a>
mov    -0x58(%rbp),%rax
lea    0xe17(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
xorps  %xmm0,%xmm0
movss  %xmm0,-0x28(%rbp)
jmp    126a <look_ahead_test+0x13a>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x2c(%rbp)
jmp    126a <look_ahead_test+0x13a>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x30(%rbp)
jmp    126a <look_ahead_test+0x13a>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x34(%rbp)
jmp    126a <look_ahead_test+0x13a>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x38(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x50(%rbp),%rax
cmp    -0x10(%rbp),%rax
jne    13d2 <look_ahead_test+0x2a2>
movss  -0x24(%rbp),%xmm0
call   1050 <ceilf@plt>
movss  %xmm0,-0x24(%rbp)
movss  -0x38(%rbp),%xmm0
call   1050 <ceilf@plt>
movss  %xmm0,-0x38(%rbp)
movss  -0x34(%rbp),%xmm0
call   1050 <ceilf@plt>
movss  %xmm0,-0x34(%rbp)
movss  -0x2c(%rbp),%xmm0
call   1050 <ceilf@plt>
movss  %xmm0,-0x2c(%rbp)
movss  -0x30(%rbp),%xmm0
call   1050 <ceilf@plt>
movss  %xmm0,-0x30(%rbp)
movss  -0x28(%rbp),%xmm0
call   1050 <ceilf@plt>
movss  %xmm0,-0x28(%rbp)
movss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x3c(%rbp)
movl   $0x2,-0x44(%rbp)
movss  -0x30(%rbp),%xmm1
movss  -0x3c(%rbp),%xmm0
movss  0xd03(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    131b <look_ahead_test+0x1eb>
movss  -0x30(%rbp),%xmm0
movss  %xmm0,-0x3c(%rbp)
movl   $0x4,-0x44(%rbp)
movss  -0x2c(%rbp),%xmm1
movss  -0x3c(%rbp),%xmm0
movss  0xcd3(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    134b <look_ahead_test+0x21b>
movss  -0x2c(%rbp),%xmm0
movss  %xmm0,-0x3c(%rbp)
movl   $0x3,-0x44(%rbp)
movss  -0x34(%rbp),%xmm1
movss  -0x3c(%rbp),%xmm0
movss  0xca3(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    137b <look_ahead_test+0x24b>
movss  -0x34(%rbp),%xmm0
movss  %xmm0,-0x3c(%rbp)
movl   $0x5,-0x44(%rbp)
movss  -0x38(%rbp),%xmm1
movss  -0x3c(%rbp),%xmm0
movss  0xc73(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    13ab <look_ahead_test+0x27b>
movss  -0x38(%rbp),%xmm0
movss  %xmm0,-0x3c(%rbp)
movl   $0x6,-0x44(%rbp)
movss  -0x24(%rbp),%xmm1
movss  0xc48(%rip),%xmm0
addss  -0x3c(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     13cd <look_ahead_test+0x29d>
movl   $0x1,-0x44(%rbp)
jmp    1765 <look_ahead_test+0x635>
mov    -0x8(%rbp),%rax
mov    -0x50(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jl     1413 <look_ahead_test+0x2e3>
mov    -0x8(%rbp),%rax
mov    -0x50(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
jg     1413 <look_ahead_test+0x2e3>
movss  0xc10(%rip),%xmm0
addss  -0x24(%rbp),%xmm0
movss  %xmm0,-0x24(%rbp)
jmp    1468 <look_ahead_test+0x338>
mov    -0x8(%rbp),%rax
mov    -0x50(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x7f,%eax
jle    1448 <look_ahead_test+0x318>
movss  -0x24(%rbp),%xmm0
call   1050 <ceilf@plt>
movss  0xbce(%rip),%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,-0x24(%rbp)
jmp    1463 <look_ahead_test+0x333>
movss  -0x24(%rbp),%xmm0
call   1050 <ceilf@plt>
movss  0xbb2(%rip),%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,-0x24(%rbp)
jmp    1468 <look_ahead_test+0x338>
mov    -0x8(%rbp),%rax
mov    -0x50(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
je     14d1 <look_ahead_test+0x3a1>
mov    -0x8(%rbp),%rax
mov    -0x50(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jl     14a7 <look_ahead_test+0x377>
mov    -0x8(%rbp),%rax
mov    -0x50(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
jle    14d1 <look_ahead_test+0x3a1>
mov    -0x8(%rbp),%rax
mov    -0x50(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x41,%eax
jl     14e8 <look_ahead_test+0x3b8>
mov    -0x8(%rbp),%rax
mov    -0x50(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x5a,%eax
jg     14e8 <look_ahead_test+0x3b8>
movss  0xb47(%rip),%xmm0
addss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x28(%rbp)
jmp    152b <look_ahead_test+0x3fb>
mov    -0x8(%rbp),%rax
mov    -0x50(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x7f,%eax
jle    1514 <look_ahead_test+0x3e4>
movss  0xb17(%rip),%xmm0
addss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x28(%rbp)
jmp    1526 <look_ahead_test+0x3f6>
movss  0xafc(%rip),%xmm0
addss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x28(%rbp)
jmp    152b <look_ahead_test+0x3fb>
mov    -0x8(%rbp),%rax
mov    -0x50(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
je     1594 <look_ahead_test+0x464>
mov    -0x8(%rbp),%rax
mov    -0x50(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jl     156a <look_ahead_test+0x43a>
mov    -0x8(%rbp),%rax
mov    -0x50(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
jle    1594 <look_ahead_test+0x464>
mov    -0x8(%rbp),%rax
mov    -0x50(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x61,%eax
jl     15ab <look_ahead_test+0x47b>
mov    -0x8(%rbp),%rax
mov    -0x50(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x7a,%eax
jg     15ab <look_ahead_test+0x47b>
movss  0xa84(%rip),%xmm0
addss  -0x2c(%rbp),%xmm0
movss  %xmm0,-0x2c(%rbp)
jmp    15ee <look_ahead_test+0x4be>
mov    -0x8(%rbp),%rax
mov    -0x50(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x7f,%eax
jle    15d7 <look_ahead_test+0x4a7>
movss  0xa54(%rip),%xmm0
addss  -0x2c(%rbp),%xmm0
movss  %xmm0,-0x2c(%rbp)
jmp    15e9 <look_ahead_test+0x4b9>
movss  0xa39(%rip),%xmm0
addss  -0x2c(%rbp),%xmm0
movss  %xmm0,-0x2c(%rbp)
jmp    15ee <look_ahead_test+0x4be>
mov    -0x8(%rbp),%rax
mov    -0x50(%rbp),%rcx
movzbl (%rax,%rcx,1),%edi
call   1030 <isX12@plt>
cmp    $0x0,%rax
je     1620 <look_ahead_test+0x4f0>
movss  0xa0f(%rip),%xmm0
addss  -0x30(%rbp),%xmm0
movss  %xmm0,-0x30(%rbp)
jmp    1663 <look_ahead_test+0x533>
mov    -0x8(%rbp),%rax
mov    -0x50(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x7f,%eax
jle    164c <look_ahead_test+0x51c>
movss  0x9eb(%rip),%xmm0
addss  -0x30(%rbp),%xmm0
movss  %xmm0,-0x30(%rbp)
jmp    165e <look_ahead_test+0x52e>
movss  0x9d0(%rip),%xmm0
addss  -0x30(%rbp),%xmm0
movss  %xmm0,-0x30(%rbp)
jmp    1663 <look_ahead_test+0x533>
mov    -0x8(%rbp),%rax
mov    -0x50(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
jl     16a4 <look_ahead_test+0x574>
mov    -0x8(%rbp),%rax
mov    -0x50(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x5e,%eax
jg     16a4 <look_ahead_test+0x574>
movss  0x99f(%rip),%xmm0
addss  -0x34(%rbp),%xmm0
movss  %xmm0,-0x34(%rbp)
jmp    16e7 <look_ahead_test+0x5b7>
mov    -0x8(%rbp),%rax
mov    -0x50(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x7f,%eax
jle    16d0 <look_ahead_test+0x5a0>
movss  0x96f(%rip),%xmm0
addss  -0x34(%rbp),%xmm0
movss  %xmm0,-0x34(%rbp)
jmp    16e2 <look_ahead_test+0x5b2>
movss  0x954(%rip),%xmm0
addss  -0x34(%rbp),%xmm0
movss  %xmm0,-0x34(%rbp)
jmp    16e7 <look_ahead_test+0x5b7>
cmpl   $0x1,-0x20(%rbp)
jne    1718 <look_ahead_test+0x5e8>
mov    -0x8(%rbp),%rax
mov    -0x50(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x5b,%eax
jne    1718 <look_ahead_test+0x5e8>
movss  0x91e(%rip),%xmm0
addss  -0x34(%rbp),%xmm0
movss  %xmm0,-0x34(%rbp)
cmpl   $0x1,-0x20(%rbp)
jne    174e <look_ahead_test+0x61e>
mov    -0x8(%rbp),%rax
mov    -0x50(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x5b,%eax
jne    174e <look_ahead_test+0x61e>
movss  0x8f9(%rip),%xmm0
addss  -0x38(%rbp),%xmm0
movss  %xmm0,-0x38(%rbp)
jmp    1760 <look_ahead_test+0x630>
movss  0x8b6(%rip),%xmm0
addss  -0x38(%rbp),%xmm0
movss  %xmm0,-0x38(%rbp)
jmp    1765 <look_ahead_test+0x635>
mov    -0x50(%rbp),%rax
mov    -0x18(%rbp),%rcx
add    $0x3,%rcx
cmp    %rcx,%rax
jbe    1c8c <look_ahead_test+0xb5c>
movss  0x88a(%rip),%xmm1
addss  -0x28(%rbp),%xmm1
movss  -0x24(%rbp),%xmm0
movss  0x86c(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    18ad <look_ahead_test+0x77d>
movss  0x863(%rip),%xmm1
addss  -0x28(%rbp),%xmm1
movss  -0x38(%rbp),%xmm0
movss  0x845(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    18ad <look_ahead_test+0x77d>
movss  0x83c(%rip),%xmm1
addss  -0x28(%rbp),%xmm1
movss  -0x34(%rbp),%xmm0
movss  0x81e(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    18ad <look_ahead_test+0x77d>
movss  0x815(%rip),%xmm1
addss  -0x28(%rbp),%xmm1
movss  -0x2c(%rbp),%xmm0
movss  0x7f7(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    18ad <look_ahead_test+0x77d>
movss  -0x28(%rbp),%xmm1
movss  -0x30(%rbp),%xmm0
movss  0x7d8(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    183c <look_ahead_test+0x70c>
movl   $0x2,-0x44(%rbp)
movss  -0x28(%rbp),%xmm0
movss  -0x30(%rbp),%xmm1
movss  0x7b2(%rip),%xmm2
subss  %xmm2,%xmm1
ucomiss %xmm1,%xmm0
jb     18a8 <look_ahead_test+0x778>
movss  -0x28(%rbp),%xmm1
movss  0x798(%rip),%xmm0
addss  -0x30(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     18a8 <look_ahead_test+0x778>
mov    -0x8(%rbp),%rdi
mov    -0x50(%rbp),%rsi
mov    -0x10(%rbp),%rdx
call   1040 <p_r_6_2_1@plt>
cmp    $0x1,%eax
jne    189c <look_ahead_test+0x76c>
movl   $0x4,-0x44(%rbp)
jmp    18a3 <look_ahead_test+0x773>
movl   $0x2,-0x44(%rbp)
jmp    18a8 <look_ahead_test+0x778>
jmp    18ad <look_ahead_test+0x77d>
movss  0x757(%rip),%xmm1
addss  -0x30(%rbp),%xmm1
movss  -0x24(%rbp),%xmm0
movss  0x739(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1977 <look_ahead_test+0x847>
movss  0x730(%rip),%xmm1
addss  -0x30(%rbp),%xmm1
movss  -0x38(%rbp),%xmm0
movss  0x712(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1977 <look_ahead_test+0x847>
movss  0x709(%rip),%xmm1
addss  -0x30(%rbp),%xmm1
movss  -0x34(%rbp),%xmm0
movss  0x6eb(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1977 <look_ahead_test+0x847>
movss  0x6e2(%rip),%xmm1
addss  -0x30(%rbp),%xmm1
movss  -0x2c(%rbp),%xmm0
movss  0x6c4(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1977 <look_ahead_test+0x847>
movss  0x6bb(%rip),%xmm1
addss  -0x30(%rbp),%xmm1
movss  -0x28(%rbp),%xmm0
movss  0x69d(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1977 <look_ahead_test+0x847>
movl   $0x4,-0x44(%rbp)
movss  0x68d(%rip),%xmm1
addss  -0x2c(%rbp),%xmm1
movss  -0x24(%rbp),%xmm0
movss  0x66f(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1a41 <look_ahead_test+0x911>
movss  0x666(%rip),%xmm1
addss  -0x2c(%rbp),%xmm1
movss  -0x38(%rbp),%xmm0
movss  0x648(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1a41 <look_ahead_test+0x911>
movss  0x63f(%rip),%xmm1
addss  -0x2c(%rbp),%xmm1
movss  -0x34(%rbp),%xmm0
movss  0x621(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1a41 <look_ahead_test+0x911>
movss  0x618(%rip),%xmm1
addss  -0x2c(%rbp),%xmm1
movss  -0x30(%rbp),%xmm0
movss  0x5fa(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1a41 <look_ahead_test+0x911>
movss  0x5f1(%rip),%xmm1
addss  -0x2c(%rbp),%xmm1
movss  -0x28(%rbp),%xmm0
movss  0x5d3(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1a41 <look_ahead_test+0x911>
movl   $0x3,-0x44(%rbp)
movss  0x5c3(%rip),%xmm1
addss  -0x34(%rbp),%xmm1
movss  -0x24(%rbp),%xmm0
movss  0x5a5(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1b0b <look_ahead_test+0x9db>
movss  0x59c(%rip),%xmm1
addss  -0x34(%rbp),%xmm1
movss  -0x38(%rbp),%xmm0
movss  0x57e(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1b0b <look_ahead_test+0x9db>
movss  0x575(%rip),%xmm1
addss  -0x34(%rbp),%xmm1
movss  -0x2c(%rbp),%xmm0
movss  0x557(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1b0b <look_ahead_test+0x9db>
movss  0x54e(%rip),%xmm1
addss  -0x34(%rbp),%xmm1
movss  -0x30(%rbp),%xmm0
movss  0x530(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1b0b <look_ahead_test+0x9db>
movss  0x527(%rip),%xmm1
addss  -0x34(%rbp),%xmm1
movss  -0x28(%rbp),%xmm0
movss  0x509(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1b0b <look_ahead_test+0x9db>
movl   $0x5,-0x44(%rbp)
movss  0x4f9(%rip),%xmm1
addss  -0x38(%rbp),%xmm1
movss  0x4e0(%rip),%xmm0
addss  -0x24(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jae    1bca <look_ahead_test+0xa9a>
movss  0x4d6(%rip),%xmm1
addss  -0x38(%rbp),%xmm1
movss  -0x34(%rbp),%xmm0
movss  0x4b8(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1bd1 <look_ahead_test+0xaa1>
movss  0x4af(%rip),%xmm1
addss  -0x38(%rbp),%xmm1
movss  -0x2c(%rbp),%xmm0
movss  0x491(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1bd1 <look_ahead_test+0xaa1>
movss  0x488(%rip),%xmm1
addss  -0x38(%rbp),%xmm1
movss  -0x30(%rbp),%xmm0
movss  0x46a(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1bd1 <look_ahead_test+0xaa1>
movss  0x461(%rip),%xmm1
addss  -0x38(%rbp),%xmm1
movss  -0x28(%rbp),%xmm0
movss  0x443(%rip),%xmm2
subss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jbe    1bd1 <look_ahead_test+0xaa1>
movl   $0x6,-0x44(%rbp)
movss  0x433(%rip),%xmm1
addss  -0x24(%rbp),%xmm1
movss  0x41a(%rip),%xmm0
addss  -0x38(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     1c87 <look_ahead_test+0xb57>
movss  0x410(%rip),%xmm1
addss  -0x24(%rbp),%xmm1
movss  0x3f7(%rip),%xmm0
addss  -0x34(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     1c87 <look_ahead_test+0xb57>
movss  0x3ed(%rip),%xmm1
addss  -0x24(%rbp),%xmm1
movss  0x3d4(%rip),%xmm0
addss  -0x2c(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     1c87 <look_ahead_test+0xb57>
movss  0x3ca(%rip),%xmm1
addss  -0x24(%rbp),%xmm1
movss  0x3b1(%rip),%xmm0
addss  -0x30(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     1c87 <look_ahead_test+0xb57>
movss  0x3a7(%rip),%xmm1
addss  -0x24(%rbp),%xmm1
movss  0x38e(%rip),%xmm0
addss  -0x28(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     1c87 <look_ahead_test+0xb57>
movl   $0x1,-0x44(%rbp)
jmp    1c8c <look_ahead_test+0xb5c>
mov    -0x50(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x50(%rbp)
cmpl   $0x0,-0x44(%rbp)
je     1272 <look_ahead_test+0x142>
mov    -0x44(%rbp),%eax
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<look_ahead_test>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x58,%rsp
mov    %r8d,%r14d
mov    %rdx,%rbx
mov    %rsi,%r15
mov    %rdi,%r12
xor    %eax,%eax
lea    0xead(%rip),%rdx
lea    0xeae(%rip),%rsi
xorps  %xmm0,%xmm0
cmp    $0x1,%ecx
sete   %al
je     116d <look_ahead_test+0x3d>
movss  0xeab(%rip),%xmm0
movss  (%rdx,%rax,4),%xmm12
movss  (%rsi,%rax,4),%xmm11
add    $0xfffffffe,%ecx
cmp    $0x4,%ecx
ja     11c5 <look_ahead_test+0x95>
lea    0xec8(%rip),%rax
movslq (%rax,%rcx,4),%rcx
add    %rax,%rcx
jmp    *%rcx
xorps  %xmm8,%xmm8
jmp    11c9 <look_ahead_test+0x99>
xorps  %xmm10,%xmm10
movaps %xmm12,%xmm8
jmp    11cd <look_ahead_test+0x9d>
xorps  %xmm9,%xmm9
movaps %xmm12,%xmm8
movaps %xmm12,%xmm10
jmp    11d1 <look_ahead_test+0xa1>
movaps %xmm12,%xmm8
movaps %xmm12,%xmm10
movaps %xmm12,%xmm9
xorps  %xmm12,%xmm12
jmp    11d1 <look_ahead_test+0xa1>
xorps  %xmm11,%xmm11
movaps %xmm12,%xmm8
movaps %xmm12,%xmm10
movaps %xmm12,%xmm9
lea    0x3(%rbx),%rbp
jmp    11ec <look_ahead_test+0xbc>
nopw   0x0(%rax,%rax,1)
add    $0x1,%rbx
test   %eax,%eax
jne    17cd <look_ahead_test+0x69d>
movss  %xmm8,(%rsp)
cmp    %rbx,%r15
movaps %xmm12,0x30(%rsp)
movaps %xmm11,0x20(%rsp)
movaps %xmm10,0x10(%rsp)
movss  %xmm9,0xc(%rsp)
jne    1350 <look_ahead_test+0x220>
call   1050 <ceilf@plt>
movss  %xmm0,0x8(%rsp)
movaps 0x20(%rsp),%xmm0
call   1050 <ceilf@plt>
movaps %xmm0,0x20(%rsp)
movaps 0x30(%rsp),%xmm0
call   1050 <ceilf@plt>
movaps %xmm0,0x30(%rsp)
movaps 0x10(%rsp),%xmm0
call   1050 <ceilf@plt>
movaps %xmm0,0x10(%rsp)
movss  0xc(%rsp),%xmm0
call   1050 <ceilf@plt>
movss  %xmm0,0xc(%rsp)
movss  (%rsp),%xmm0
call   1050 <ceilf@plt>
movss  0xdd9(%rip),%xmm6
movss  0xc(%rsp),%xmm9
movaps %xmm0,%xmm8
addss  %xmm6,%xmm0
xor    %ecx,%ecx
ucomiss %xmm9,%xmm0
seta   %dl
movaps %xmm9,%xmm0
ja     1291 <look_ahead_test+0x161>
movaps %xmm8,%xmm0
movaps %xmm0,%xmm2
addss  %xmm6,%xmm2
movaps 0x10(%rsp),%xmm10
ucomiss %xmm10,%xmm2
mov    $0x3,%eax
ja     12b1 <look_ahead_test+0x181>
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 0x30(%rsp),%xmm12
ucomiss %xmm12,%xmm2
mov    $0x5,%ecx
movss  0x8(%rsp),%xmm0
movaps 0x20(%rsp),%xmm11
movss  0xd5b(%rip),%xmm7
ja     12f5 <look_ahead_test+0x1c5>
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     131f <look_ahead_test+0x1ef>
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     154b <look_ahead_test+0x41b>
mov    $0x1,%eax
jmp    154b <look_ahead_test+0x41b>
nopl   0x0(%rax)
movzbl (%r12,%rbx,1),%r13d
lea    -0x30(%r13),%eax
cmp    $0xa,%al
jae    1380 <look_ahead_test+0x250>
addss  0xcc7(%rip),%xmm0
movss  %xmm0,0x8(%rsp)
movss  (%rsp),%xmm0
movss  0xca8(%rip),%xmm1
jmp    13d1 <look_ahead_test+0x2a1>
nopw   0x0(%rax,%rax,1)
call   1050 <ceilf@plt>
test   %r13b,%r13b
js     13b6 <look_ahead_test+0x286>
addss  0xc86(%rip),%xmm0
cmp    $0x20,%r13b
movss  (%rsp),%xmm1
movss  %xmm0,0x8(%rsp)
jne    13e2 <look_ahead_test+0x2b2>
movss  0xc75(%rip),%xmm0
addss  %xmm0,%xmm1
movss  %xmm1,(%rsp)
jmp    1420 <look_ahead_test+0x2f0>
addss  0xc66(%rip),%xmm0
movss  %xmm0,0x8(%rsp)
movss  (%rsp),%xmm0
movss  0xc57(%rip),%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,(%rsp)
movss  %xmm1,0x4(%rsp)
jmp    1426 <look_ahead_test+0x2f6>
lea    -0x41(%r13),%eax
cmp    $0x1a,%al
jae    13f9 <look_ahead_test+0x2c9>
addss  0xc2e(%rip),%xmm1
movss  %xmm1,(%rsp)
jmp    1418 <look_ahead_test+0x2e8>
addss  0xc1b(%rip),%xmm1
movss  %xmm1,(%rsp)
lea    -0x61(%r13),%eax
cmp    $0x1a,%al
jae    1418 <look_ahead_test+0x2e8>
movss  0xc0a(%rip),%xmm0
jmp    1420 <look_ahead_test+0x2f0>
movss  0xbfc(%rip),%xmm0
movss  %xmm0,0x4(%rsp)
movzbl %r13b,%edi
call   1030 <isX12@plt>
test   %rax,%rax
je     145d <look_ahead_test+0x32d>
movss  0xc(%rsp),%xmm9
addss  0xbdc(%rip),%xmm9
movzbl (%r12,%rbx,1),%eax
movaps 0x30(%rsp),%xmm12
movaps 0x20(%rsp),%xmm11
movaps 0x10(%rsp),%xmm10
jmp    1488 <look_ahead_test+0x358>
movzbl (%r12,%rbx,1),%eax
test   %al,%al
movaps 0x30(%rsp),%xmm12
movaps 0x20(%rsp),%xmm11
movaps 0x10(%rsp),%xmm10
movss  0xc(%rsp),%xmm9
js     14d6 <look_ahead_test+0x3a6>
addss  0xba8(%rip),%xmm9
lea    -0x20(%rax),%ecx
cmp    $0x3f,%cl
movss  0x8(%rsp),%xmm0
movss  (%rsp),%xmm8
movss  0xba6(%rip),%xmm6
movss  0xba2(%rip),%xmm7
movss  0x4(%rsp),%xmm2
jae    14c0 <look_ahead_test+0x390>
movss  0xb7a(%rip),%xmm1
jmp    1510 <look_ahead_test+0x3e0>
nopl   0x0(%rax)
mov    %eax,%ecx
shr    $0x7,%cl
movzbl %cl,%ecx
lea    0xb41(%rip),%rdx
movss  (%rdx,%rcx,4),%xmm1
jmp    1510 <look_ahead_test+0x3e0>
addss  0xb59(%rip),%xmm9
movss  0xb55(%rip),%xmm1
movss  0x8(%rsp),%xmm0
movss  (%rsp),%xmm8
movss  0xb4d(%rip),%xmm6
movss  0xb49(%rip),%xmm7
movss  0x4(%rsp),%xmm2
nopl   0x0(%rax)
addss  %xmm2,%xmm10
addss  %xmm1,%xmm12
cmp    $0x1,%r14d
jne    1540 <look_ahead_test+0x410>
cmp    $0x5b,%al
jne    1540 <look_ahead_test+0x410>
addss  0xb13(%rip),%xmm12
addss  0xb0e(%rip),%xmm11
jmp    1549 <look_ahead_test+0x419>
nopl   0x0(%rax,%rax,1)
addss  0xacf(%rip),%xmm11
xor    %eax,%eax
cmp    %rbp,%rbx
jbe    11e0 <look_ahead_test+0xb0>
movaps %xmm8,%xmm1
addss  0xab8(%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    1690 <look_ahead_test+0x560>
ucomiss %xmm1,%xmm4
jbe    1690 <look_ahead_test+0x560>
ucomiss %xmm1,%xmm15
jbe    1690 <look_ahead_test+0x560>
ucomiss %xmm1,%xmm13
jbe    1690 <look_ahead_test+0x560>
ucomiss %xmm8,%xmm14
mov    $0x2,%ecx
cmova  %ecx,%eax
ucomiss %xmm14,%xmm8
movaps %xmm9,%xmm1
addss  %xmm7,%xmm1
jb     1690 <look_ahead_test+0x560>
ucomiss %xmm8,%xmm1
jb     1690 <look_ahead_test+0x560>
mov    %r12,%rdi
mov    %rbx,%rsi
mov    %r15,%rdx
movss  %xmm0,0x8(%rsp)
movaps %xmm12,0x30(%rsp)
movaps %xmm11,0x20(%rsp)
movss  %xmm8,(%rsp)
movaps %xmm10,0x10(%rsp)
movss  %xmm9,0xc(%rsp)
movss  %xmm5,0x4(%rsp)
movss  %xmm14,0x54(%rsp)
movss  %xmm13,0x50(%rsp)
movss  %xmm15,0x4c(%rsp)
movss  %xmm4,0x48(%rsp)
call   1040 <p_r_6_2_1@plt>
movss  0x48(%rsp),%xmm4
movss  0x4c(%rsp),%xmm15
movss  0x50(%rsp),%xmm13
movss  0x54(%rsp),%xmm14
movss  0x4(%rsp),%xmm5
movss  0x9f7(%rip),%xmm7
movss  0x9eb(%rip),%xmm6
movss  0xc(%rsp),%xmm9
movaps 0x10(%rsp),%xmm10
movss  (%rsp),%xmm8
movaps 0x20(%rsp),%xmm11
movaps 0x30(%rsp),%xmm12
movss  0x8(%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  0x974(%rip),%xmm1
movaps %xmm0,%xmm2
addss  %xmm7,%xmm2
ucomiss %xmm1,%xmm2
jae    1763 <look_ahead_test+0x633>
movaps %xmm9,%xmm2
addss  0x958(%rip),%xmm2
ucomiss %xmm2,%xmm3
mov    $0x4,%ecx
ja     16cc <look_ahead_test+0x59c>
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  0x926(%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    1768 <look_ahead_test+0x638>
ucomiss %xmm1,%xmm13
jbe    1768 <look_ahead_test+0x638>
ucomiss %xmm1,%xmm14
jbe    1768 <look_ahead_test+0x638>
ucomiss %xmm1,%xmm3
jbe    1768 <look_ahead_test+0x638>
mov    $0x6,%eax
movaps %xmm0,%xmm2
addss  0x8a5(%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    $0x58,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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