#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 */
int in_string(char *, char *);
int /*<<< orphan*/ memmove(char *, char *, scalar_t__);
scalar_t__ not_usually_after_T(char);
scalar_t__ not_usually_after_l(char);
scalar_t__ not_usually_after_n(char);
scalar_t__ not_usually_after_r(char);
scalar_t__ strcmp(char *, char *);
int /*<<< orphan*/ strcpy(char *, char *);
scalar_t__ strlen(char *);
char tolower(char);
void ocr_text_proc(char *s, int allow_spaces) {
  static char *word_swaps[] = {
      "neld",        "field",         "_eld",       "field",  "PaPeC",
      "paper",       "successrul",    "successful", "_or",    "for",
      "rrequency",   "frequency",     "out_Ut",     "output", "_un",
      "gun",         "worh",          "work",       "bene_t", "benefit",
      "sign_cantly", "significantly", "_oal",       "goal",   ""};
  int i, j;
  if (!allow_spaces) {
    for (i = j = 0; s[i] != '\0'; i++)
      if (s[i] != ' ') {
        if (j != i)
          s[j] = s[i];
        j++;
      }
    s[j] = '\0';
  }
  for (i = 0; word_swaps[i][0] != '\0'; i += 2)
    if (!strcmp(s, word_swaps[i])) {
      strcpy(s, word_swaps[i + 1]);
      return;
    }
  if (s[0] == 'T' && not_usually_after_T(s[1]))
    s[0] = 'I';
  else if (s[0] == 'n' && not_usually_after_n(s[1])) {
    memmove(&s[2], &s[1], strlen(s) - 1);
    s[0] = 'f';
    s[1] = 'i';
  } else if (s[0] == 'l' && not_usually_after_l(s[1]))
    s[0] = 'i';
  else if (s[0] == 'r' && not_usually_after_r(s[1]))
    s[0] = 'f';
  else if (s[0] == 'h' && tolower(s[1]) == 'l')
    s[0] = 'k';
  if (strcmp(s, "OI") && strcmp(s, "O") && strcmp(s, "I")) {
    for (i = 0; s[i] != '\0'; i++) {
      if (s[i] != 'I' && s[i] != 'O' && (s[i] < '0' || s[i] > '9'))
        break;
    }
    if (s[i] == '\0') {
      for (i = 0; s[i] != '\0'; i++) {
        if (s[i] == 'I')
          s[i] = '1';
        if (s[i] == 'O')
          s[i] = '0';
      }
    }
  }
  for (i = 0; s[i] != '\0'; i++) {
    if (s[i] >= '0' && s[i] <= '9' &&
        (i == 0 || (s[i - 1] >= 'a' && s[i - 1] <= 'z')) &&
        (s[i + 1] == '\0' || (s[i + 1] >= 'a' && s[i + 1] <= 'z'))) {
      if (s[i] == '1')
        s[i] = 'l';
      if (s[i] == '4')
        s[i] = 'u';
    }
  }
  for (i = 0; s[i] != '\0'; i++) {
    if (i > 0 && (s[i] >= 'A' && s[i] <= 'Z') &&
        (s[i - 1] >= 'a' && s[i - 1] <= 'z') &&
        (s[i + 1] >= 'a' && s[i + 1] <= 'z')) {
      if (s[i] == 'I')
        s[i] = 'l';
      else
        s[i] = tolower(s[i]);
    }
  }
  while ((i = in_string(s, "in_")) >= 0)
    s[i + 2] = 'g';
}


x86 assembly (clang, -O0):
<ocr_text_proc>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
cmpl   $0x0,-0xc(%rbp)
jne    123b <ocr_text_proc+0x9b>
movl   $0x0,-0x14(%rbp)
movl   $0x0,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
je     122f <ocr_text_proc+0x8f>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
je     121c <ocr_text_proc+0x7c>
mov    -0x14(%rbp),%eax
cmp    -0x10(%rbp),%eax
je     1213 <ocr_text_proc+0x73>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1221 <ocr_text_proc+0x81>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    11c7 <ocr_text_proc+0x27>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
movl   $0x0,-0x10(%rbp)
movslq -0x10(%rbp),%rcx
lea    0x2e33(%rip),%rax
mov    (%rax,%rcx,8),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
je     12b4 <ocr_text_proc+0x114>
mov    -0x8(%rbp),%rdi
movslq -0x10(%rbp),%rcx
lea    0x2e14(%rip),%rax
mov    (%rax,%rcx,8),%rsi
call   1060 <strcmp@plt>
cmp    $0x0,%rax
jne    12a1 <ocr_text_proc+0x101>
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%eax
add    $0x1,%eax
movslq %eax,%rcx
lea    0x2ded(%rip),%rax
mov    (%rax,%rcx,8),%rsi
call   1030 <strcpy@plt>
jmp    17de <ocr_text_proc+0x63e>
jmp    12a6 <ocr_text_proc+0x106>
mov    -0x10(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x10(%rbp)
jmp    1242 <ocr_text_proc+0xa2>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x54,%eax
jne    12e7 <ocr_text_proc+0x147>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%edi
call   10a0 <not_usually_after_T@plt>
cmp    $0x0,%rax
je     12e7 <ocr_text_proc+0x147>
mov    -0x8(%rbp),%rax
movb   $0x49,(%rax)
jmp    1401 <ocr_text_proc+0x261>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x6e,%eax
jne    1357 <ocr_text_proc+0x1b7>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%edi
call   1080 <not_usually_after_n@plt>
cmp    $0x0,%rax
je     1357 <ocr_text_proc+0x1b7>
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x28(%rbp)
mov    -0x8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
call   1040 <strlen@plt>
mov    -0x28(%rbp),%rdi
mov    -0x20(%rbp),%rsi
mov    %rax,%rdx
sub    $0x1,%rdx
call   10c0 <memmove@plt>
mov    -0x8(%rbp),%rax
movb   $0x66,(%rax)
mov    -0x8(%rbp),%rax
movb   $0x69,0x1(%rax)
jmp    13fc <ocr_text_proc+0x25c>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x6c,%eax
jne    138a <ocr_text_proc+0x1ea>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%edi
call   1070 <not_usually_after_l@plt>
cmp    $0x0,%rax
je     138a <ocr_text_proc+0x1ea>
mov    -0x8(%rbp),%rax
movb   $0x69,(%rax)
jmp    13f7 <ocr_text_proc+0x257>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x72,%eax
jne    13bd <ocr_text_proc+0x21d>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%edi
call   10b0 <not_usually_after_r@plt>
cmp    $0x0,%rax
je     13bd <ocr_text_proc+0x21d>
mov    -0x8(%rbp),%rax
movb   $0x66,(%rax)
jmp    13f2 <ocr_text_proc+0x252>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x68,%eax
jne    13ed <ocr_text_proc+0x24d>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%edi
call   1090 <tolower@plt>
movsbl %al,%eax
cmp    $0x6c,%eax
jne    13ed <ocr_text_proc+0x24d>
mov    -0x8(%rbp),%rax
movb   $0x6b,(%rax)
jmp    13f2 <ocr_text_proc+0x252>
jmp    13f7 <ocr_text_proc+0x257>
jmp    13fc <ocr_text_proc+0x25c>
jmp    1401 <ocr_text_proc+0x261>
mov    -0x8(%rbp),%rdi
lea    0xc95(%rip),%rsi
call   1060 <strcmp@plt>
cmp    $0x0,%rax
je     1567 <ocr_text_proc+0x3c7>
mov    -0x8(%rbp),%rdi
lea    0xc7e(%rip),%rsi
call   1060 <strcmp@plt>
cmp    $0x0,%rax
je     1567 <ocr_text_proc+0x3c7>
mov    -0x8(%rbp),%rdi
lea    0xc62(%rip),%rsi
call   1060 <strcmp@plt>
cmp    $0x0,%rax
je     1567 <ocr_text_proc+0x3c7>
movl   $0x0,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
je     14d7 <ocr_text_proc+0x337>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x49,%eax
je     14c4 <ocr_text_proc+0x324>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x4f,%eax
je     14c4 <ocr_text_proc+0x324>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jl     14bf <ocr_text_proc+0x31f>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
jle    14c4 <ocr_text_proc+0x324>
jmp    14d7 <ocr_text_proc+0x337>
jmp    14c9 <ocr_text_proc+0x329>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1456 <ocr_text_proc+0x2b6>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
jne    1562 <ocr_text_proc+0x3c2>
movl   $0x0,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
je     155d <ocr_text_proc+0x3bd>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x49,%eax
jne    1529 <ocr_text_proc+0x389>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x31,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x4f,%eax
jne    154a <ocr_text_proc+0x3aa>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x30,(%rax,%rcx,1)
jmp    154f <ocr_text_proc+0x3af>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    14f3 <ocr_text_proc+0x353>
jmp    1562 <ocr_text_proc+0x3c2>
jmp    1567 <ocr_text_proc+0x3c7>
movl   $0x0,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
je     1693 <ocr_text_proc+0x4f3>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jl     1680 <ocr_text_proc+0x4e0>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
jg     1680 <ocr_text_proc+0x4e0>
cmpl   $0x0,-0x10(%rbp)
je     15eb <ocr_text_proc+0x44b>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x61,%eax
jl     1680 <ocr_text_proc+0x4e0>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x7a,%eax
jg     1680 <ocr_text_proc+0x4e0>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
je     1639 <ocr_text_proc+0x499>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x61,%eax
jl     1680 <ocr_text_proc+0x4e0>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x7a,%eax
jg     1680 <ocr_text_proc+0x4e0>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x31,%eax
jne    165a <ocr_text_proc+0x4ba>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x6c,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x34,%eax
jne    167b <ocr_text_proc+0x4db>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x75,(%rax,%rcx,1)
jmp    1680 <ocr_text_proc+0x4e0>
jmp    1685 <ocr_text_proc+0x4e5>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    156e <ocr_text_proc+0x3ce>
movl   $0x0,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
je     17a7 <ocr_text_proc+0x607>
cmpl   $0x0,-0x10(%rbp)
jle    1794 <ocr_text_proc+0x5f4>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x41,%eax
jl     1794 <ocr_text_proc+0x5f4>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x5a,%eax
jg     1794 <ocr_text_proc+0x5f4>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x61,%eax
jl     1794 <ocr_text_proc+0x5f4>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x7a,%eax
jg     1794 <ocr_text_proc+0x5f4>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x61,%eax
jl     1794 <ocr_text_proc+0x5f4>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x7a,%eax
jg     1794 <ocr_text_proc+0x5f4>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x49,%eax
jne    1771 <ocr_text_proc+0x5d1>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movb   $0x6c,(%rax,%rcx,1)
jmp    178f <ocr_text_proc+0x5ef>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1090 <tolower@plt>
mov    %al,%dl
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
jmp    1794 <ocr_text_proc+0x5f4>
jmp    1799 <ocr_text_proc+0x5f9>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    169a <ocr_text_proc+0x4fa>
jmp    17ac <ocr_text_proc+0x60c>
mov    -0x8(%rbp),%rdi
lea    0x8ef(%rip),%rsi
call   1050 <in_string@plt>
mov    %eax,-0x10(%rbp)
cmp    $0x0,%eax
jl     17de <ocr_text_proc+0x63e>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movb   $0x67,(%rax,%rcx,1)
jmp    17ac <ocr_text_proc+0x60c>
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<ocr_text_proc>:
push   %r15
push   %r14
push   %rbx
mov    %rdi,%rbx
test   %esi,%esi
jne    11ea <ocr_text_proc+0x4a>
xor    %eax,%eax
xor    %ecx,%ecx
jmp    11c7 <ocr_text_proc+0x27>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
add    $0x1,%ecx
add    $0x1,%rax
movzbl (%rbx,%rax,1),%edx
cmp    $0x20,%dl
je     11c3 <ocr_text_proc+0x23>
test   %dl,%dl
je     11e3 <ocr_text_proc+0x43>
mov    %ecx,%esi
cmp    %rsi,%rax
je     11c0 <ocr_text_proc+0x20>
movslq %ecx,%rsi
mov    %dl,(%rbx,%rsi,1)
jmp    11c0 <ocr_text_proc+0x20>
movslq %ecx,%rax
movb   $0x0,(%rbx,%rax,1)
lea    0xe73(%rip),%rsi
mov    %rbx,%rdi
call   1060 <strcmp@plt>
test   %rax,%rax
je     1322 <ocr_text_proc+0x182>
lea    0xe66(%rip),%rsi
mov    %rbx,%rdi
call   1060 <strcmp@plt>
test   %rax,%rax
je     1329 <ocr_text_proc+0x189>
lea    0xe53(%rip),%rsi
mov    %rbx,%rdi
call   1060 <strcmp@plt>
test   %rax,%rax
je     1330 <ocr_text_proc+0x190>
lea    0xe47(%rip),%rsi
mov    %rbx,%rdi
call   1060 <strcmp@plt>
test   %rax,%rax
je     1337 <ocr_text_proc+0x197>
lea    0xe45(%rip),%rsi
mov    %rbx,%rdi
call   1060 <strcmp@plt>
test   %rax,%rax
je     133e <ocr_text_proc+0x19e>
lea    0xe35(%rip),%rsi
mov    %rbx,%rdi
call   1060 <strcmp@plt>
test   %rax,%rax
je     1345 <ocr_text_proc+0x1a5>
lea    0xe31(%rip),%rsi
mov    %rbx,%rdi
call   1060 <strcmp@plt>
test   %rax,%rax
je     134c <ocr_text_proc+0x1ac>
lea    0xe27(%rip),%rsi
mov    %rbx,%rdi
call   1060 <strcmp@plt>
test   %rax,%rax
je     1353 <ocr_text_proc+0x1b3>
lea    0xe17(%rip),%rsi
mov    %rbx,%rdi
call   1060 <strcmp@plt>
test   %rax,%rax
je     135a <ocr_text_proc+0x1ba>
lea    0xe09(%rip),%rsi
mov    %rbx,%rdi
call   1060 <strcmp@plt>
test   %rax,%rax
je     1361 <ocr_text_proc+0x1c1>
lea    0xe00(%rip),%rsi
mov    %rbx,%rdi
call   1060 <strcmp@plt>
test   %rax,%rax
je     1368 <ocr_text_proc+0x1c8>
lea    0xe06(%rip),%rsi
mov    %rbx,%rdi
call   1060 <strcmp@plt>
test   %rax,%rax
je     136f <ocr_text_proc+0x1cf>
mov    (%rbx),%al
cmp    $0x54,%al
jne    1391 <ocr_text_proc+0x1f1>
movsbl 0x1(%rbx),%edi
call   10a0 <not_usually_after_T@plt>
test   %rax,%rax
je     138f <ocr_text_proc+0x1ef>
movb   $0x49,(%rbx)
jmp    1411 <ocr_text_proc+0x271>
mov    $0x1,%eax
jmp    1374 <ocr_text_proc+0x1d4>
mov    $0x3,%eax
jmp    1374 <ocr_text_proc+0x1d4>
mov    $0x5,%eax
jmp    1374 <ocr_text_proc+0x1d4>
mov    $0x7,%eax
jmp    1374 <ocr_text_proc+0x1d4>
mov    $0x9,%eax
jmp    1374 <ocr_text_proc+0x1d4>
mov    $0xb,%eax
jmp    1374 <ocr_text_proc+0x1d4>
mov    $0xd,%eax
jmp    1374 <ocr_text_proc+0x1d4>
mov    $0xf,%eax
jmp    1374 <ocr_text_proc+0x1d4>
mov    $0x11,%eax
jmp    1374 <ocr_text_proc+0x1d4>
mov    $0x13,%eax
jmp    1374 <ocr_text_proc+0x1d4>
mov    $0x15,%eax
jmp    1374 <ocr_text_proc+0x1d4>
mov    $0x17,%eax
lea    0xc85(%rip),%rcx
movslq (%rcx,%rax,4),%rsi
add    %rcx,%rsi
mov    %rbx,%rdi
pop    %rbx
pop    %r14
pop    %r15
jmp    1030 <strcpy@plt>
mov    (%rbx),%al
cmp    $0x6e,%al
jne    13cb <ocr_text_proc+0x22b>
movsbl 0x1(%rbx),%edi
call   1080 <not_usually_after_n@plt>
test   %rax,%rax
je     13c9 <ocr_text_proc+0x229>
lea    0x1(%rbx),%r14
lea    0x2(%rbx),%r15
mov    %rbx,%rdi
call   1040 <strlen@plt>
lea    -0x1(%rax),%rdx
mov    %r15,%rdi
mov    %r14,%rsi
call   10c0 <memmove@plt>
movw   $0x6966,(%rbx)
jmp    1411 <ocr_text_proc+0x271>
mov    (%rbx),%al
cmp    $0x6c,%al
jne    13e4 <ocr_text_proc+0x244>
movsbl 0x1(%rbx),%edi
call   1070 <not_usually_after_l@plt>
test   %rax,%rax
je     13e2 <ocr_text_proc+0x242>
movb   $0x69,(%rbx)
jmp    1411 <ocr_text_proc+0x271>
mov    (%rbx),%al
cmp    $0x72,%al
jne    13fd <ocr_text_proc+0x25d>
movsbl 0x1(%rbx),%edi
call   10b0 <not_usually_after_r@plt>
test   %rax,%rax
je     13fb <ocr_text_proc+0x25b>
movb   $0x66,(%rbx)
jmp    1411 <ocr_text_proc+0x271>
mov    (%rbx),%al
cmp    $0x68,%al
jne    1411 <ocr_text_proc+0x271>
movsbl 0x1(%rbx),%edi
call   1090 <tolower@plt>
cmp    $0x6c,%al
jne    1411 <ocr_text_proc+0x271>
movb   $0x6b,(%rbx)
lea    0xced(%rip),%rsi
mov    %rbx,%rdi
call   1060 <strcmp@plt>
test   %rax,%rax
je     1473 <ocr_text_proc+0x2d3>
lea    0xcdc(%rip),%rsi
mov    %rbx,%rdi
call   1060 <strcmp@plt>
test   %rax,%rax
je     1473 <ocr_text_proc+0x2d3>
lea    0xcc6(%rip),%rsi
mov    %rbx,%rdi
call   1060 <strcmp@plt>
test   %rax,%rax
je     1473 <ocr_text_proc+0x2d3>
mov    %rbx,%rax
jmp    1456 <ocr_text_proc+0x2b6>
add    $0x1,%rax
movzbl (%rax),%ecx
cmp    $0x49,%cl
je     1452 <ocr_text_proc+0x2b2>
cmp    $0x4f,%cl
je     1452 <ocr_text_proc+0x2b2>
test   %cl,%cl
je     149f <ocr_text_proc+0x2ff>
lea    -0x3a(%rcx),%edx
cmp    $0xf6,%dl
jae    1452 <ocr_text_proc+0x2b2>
test   %cl,%cl
je     149f <ocr_text_proc+0x2ff>
mov    (%rbx),%cl
test   %cl,%cl
je     157f <ocr_text_proc+0x3df>
lea    -0x30(%rcx),%eax
cmp    $0x9,%al
ja     14c7 <ocr_text_proc+0x327>
mov    0x1(%rbx),%al
test   %al,%al
je     1491 <ocr_text_proc+0x2f1>
add    $0x9f,%al
cmp    $0x19,%al
ja     14c7 <ocr_text_proc+0x327>
cmp    $0x34,%cl
je     14c3 <ocr_text_proc+0x323>
cmp    $0x31,%cl
jne    14c7 <ocr_text_proc+0x327>
mov    $0x6c,%cl
jmp    14c5 <ocr_text_proc+0x325>
mov    %rbx,%rax
jmp    14ac <ocr_text_proc+0x30c>
mov    $0x30,%cl
mov    %cl,(%rax)
add    $0x1,%rax
movzbl (%rax),%ecx
cmp    $0x49,%cl
je     14bf <ocr_text_proc+0x31f>
cmp    $0x4f,%cl
je     14a4 <ocr_text_proc+0x304>
test   %cl,%cl
jne    14a8 <ocr_text_proc+0x308>
jmp    1473 <ocr_text_proc+0x2d3>
mov    $0x31,%cl
jmp    14a6 <ocr_text_proc+0x306>
mov    $0x75,%cl
mov    %cl,(%rbx)
mov    0x1(%rbx),%dl
test   %dl,%dl
je     152a <ocr_text_proc+0x38a>
lea    0x1(%rbx),%rdi
mov    $0x2,%eax
jmp    14ef <ocr_text_proc+0x34f>
mov    $0x6c,%dl
mov    %dl,(%rdi)
mov    %eax,%ecx
lea    (%rbx,%rcx,1),%rdi
movzbl (%rbx,%rcx,1),%edx
add    $0x1,%rax
test   %dl,%dl
je     1528 <ocr_text_proc+0x388>
lea    -0x30(%rdx),%esi
cmp    $0x9,%sil
ja     14dd <ocr_text_proc+0x33d>
movzbl -0x2(%rbx,%rax,1),%ecx
add    $0x9f,%cl
cmp    $0x19,%cl
ja     14dd <ocr_text_proc+0x33d>
mov    %eax,%ecx
movzbl (%rbx,%rcx,1),%esi
test   %sil,%sil
je     151a <ocr_text_proc+0x37a>
add    $0x9f,%sil
cmp    $0x19,%sil
ja     14dd <ocr_text_proc+0x33d>
cmp    $0x31,%dl
je     14d9 <ocr_text_proc+0x339>
cmp    $0x34,%dl
jne    14dd <ocr_text_proc+0x33d>
mov    $0x75,%dl
jmp    14db <ocr_text_proc+0x33b>
mov    (%rbx),%cl
test   %cl,%cl
je     157f <ocr_text_proc+0x3df>
xor    %r14d,%r14d
jmp    1545 <ocr_text_proc+0x3a5>
mov    %al,(%rbx,%r14,1)
movzbl 0x1(%rbx,%r14,1),%ecx
add    $0x1,%r14
test   %cl,%cl
je     157f <ocr_text_proc+0x3df>
test   %r14,%r14
je     1537 <ocr_text_proc+0x397>
cmp    $0x41,%cl
jl     1537 <ocr_text_proc+0x397>
cmp    $0x5a,%cl
jg     1537 <ocr_text_proc+0x397>
lea    -0x1(%r14),%eax
movzbl (%rbx,%rax,1),%eax
add    $0x9f,%al
cmp    $0x19,%al
ja     1537 <ocr_text_proc+0x397>
movzbl 0x1(%rbx,%r14,1),%eax
add    $0x9f,%al
cmp    $0x19,%al
ja     1537 <ocr_text_proc+0x397>
mov    $0x6c,%al
cmp    $0x49,%cl
je     1533 <ocr_text_proc+0x393>
movsbl %cl,%edi
call   1090 <tolower@plt>
jmp    1533 <ocr_text_proc+0x393>
lea    0xb84(%rip),%rsi
mov    %rbx,%rdi
call   1050 <in_string@plt>
test   %eax,%eax
js     15af <ocr_text_proc+0x40f>
lea    0xb71(%rip),%r14
mov    %eax,%eax
movb   $0x67,0x2(%rax,%rbx,1)
mov    %rbx,%rdi
mov    %r14,%rsi
call   1050 <in_string@plt>
test   %eax,%eax
jns    1599 <ocr_text_proc+0x3f9>
pop    %rbx
pop    %r14
pop    %r15
ret

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

LLVM IR (-O2):
@reltable.ocr_text_proc = internal unnamed_addr constant [25 x i32] [i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str to i64), i64 ptrtoint ([25 x i32]* @reltable.ocr_text_proc to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.1 to i64), i64 ptrtoint ([25 x i32]* @reltable.ocr_text_proc to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.2 to i64), i64 ptrtoint ([25 x i32]* @reltable.ocr_text_proc to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.1 to i64), i64 ptrtoint ([25 x i32]* @reltable.ocr_text_proc to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.3 to i64), i64 ptrtoint ([25 x i32]* @reltable.ocr_text_proc to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([6 x i8]* @.str.4 to i64), i64 ptrtoint ([25 x i32]* @reltable.ocr_text_proc to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([11 x i8]* @.str.5 to i64), i64 ptrtoint ([25 x i32]* @reltable.ocr_text_proc to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([11 x i8]* @.str.6 to i64), i64 ptrtoint ([25 x i32]* @reltable.ocr_text_proc to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.7 to i64), i64 ptrtoint ([25 x i32]* @reltable.ocr_text_proc to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.8 to i64), i64 ptrtoint ([25 x i32]* @reltable.ocr_text_proc to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([10 x i8]* @.str.9 to i64), i64 ptrtoint ([25 x i32]* @reltable.ocr_text_proc to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([10 x i8]* @.str.10 to i64), i64 ptrtoint ([25 x i32]* @reltable.ocr_text_proc to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @.str.11 to i64), i64 ptrtoint ([25 x i32]* @reltable.ocr_text_proc to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @.str.12 to i64), i64 ptrtoint ([25 x i32]* @reltable.ocr_text_proc to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.13 to i64), i64 ptrtoint ([25 x i32]* @reltable.ocr_text_proc to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.14 to i64), i64 ptrtoint ([25 x i32]* @reltable.ocr_text_proc to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.15 to i64), i64 ptrtoint ([25 x i32]* @reltable.ocr_text_proc to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.16 to i64), i64 ptrtoint ([25 x i32]* @reltable.ocr_text_proc to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @.str.17 to i64), i64 ptrtoint ([25 x i32]* @reltable.ocr_text_proc to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([8 x i8]* @.str.18 to i64), i64 ptrtoint ([25 x i32]* @reltable.ocr_text_proc to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([12 x i8]* @.str.19 to i64), i64 ptrtoint ([25 x i32]* @reltable.ocr_text_proc to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([14 x i8]* @.str.20 to i64), i64 ptrtoint ([25 x i32]* @reltable.ocr_text_proc to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.21 to i64), i64 ptrtoint ([25 x i32]* @reltable.ocr_text_proc to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([5 x i8]* @.str.22 to i64), i64 ptrtoint ([25 x i32]* @reltable.ocr_text_proc to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([1 x i8]* @.str.23 to i64), i64 ptrtoint ([25 x i32]* @reltable.ocr_text_proc to i64)) to i32)]
@.str = [5 x i8] c"neld\00"
@.str.1 = [6 x i8] c"field\00"
@.str.2 = [5 x i8] c"_eld\00"
@.str.3 = [6 x i8] c"PaPeC\00"
@.str.4 = [6 x i8] c"paper\00"
@.str.5 = [11 x i8] c"successrul\00"
@.str.6 = [11 x i8] c"successful\00"
@.str.7 = [4 x i8] c"_or\00"
@.str.8 = [4 x i8] c"for\00"
@.str.9 = [10 x i8] c"rrequency\00"
@.str.10 = [10 x i8] c"frequency\00"
@.str.11 = [7 x i8] c"out_Ut\00"
@.str.12 = [7 x i8] c"output\00"
@.str.13 = [4 x i8] c"_un\00"
@.str.14 = [4 x i8] c"gun\00"
@.str.15 = [5 x i8] c"worh\00"
@.str.16 = [5 x i8] c"work\00"
@.str.17 = [7 x i8] c"bene_t\00"
@.str.18 = [8 x i8] c"benefit\00"
@.str.19 = [12 x i8] c"sign_cantly\00"
@.str.20 = [14 x i8] c"significantly\00"
@.str.21 = [5 x i8] c"_oal\00"
@.str.22 = [5 x i8] c"goal\00"
@.str.23 = [1 x i8] zeroinitializer
@.str.24 = [3 x i8] c"OI\00"
@.str.25 = [2 x i8] c"O\00"
@.str.26 = [2 x i8] c"I\00"
@.str.27 = [4 x i8] c"in_\00"
define void @ocr_text_proc(i8* %0, i32 %1) {
%3 = icmp eq i32 %1, 0
br i1 %3, label %4, label %23
4: ; preds = %2, %17
%5 = phi i64 [ %19, %17 ], [ 0, %2 ]
%6 = phi i32 [ %18, %17 ], [ 0, %2 ]
%7 = getelementptr inbounds i8, i8* %0, i64 %5
%8 = load i8, i8* %7
switch i8 %8, label %9 [
i8 0, label %20
i8 32, label %17
]
9: ; preds = %4
%10 = zext i32 %6 to i64
%11 = icmp eq i64 %5, %10
br i1 %11, label %15, label %12
12: ; preds = %9
%13 = sext i32 %6 to i64
%14 = getelementptr inbounds i8, i8* %0, i64 %13
store i8 %8, i8* %14
br label %15
15: ; preds = %12, %9
%16 = add nsw i32 %6, 1
br label %17
17: ; preds = %4, %15
%18 = phi i32 [ %16, %15 ], [ %6, %4 ]
%19 = add nuw i64 %5, 1
br label %4
20: ; preds = %4
%21 = sext i32 %6 to i64
%22 = getelementptr inbounds i8, i8* %0, i64 %21
store i8 0, i8* %22
br label %23
23: ; preds = %20, %2
%24 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0))
%25 = icmp eq i64 %24, 0
br i1 %25, label %26, label %31
26: ; preds = %61, %58, %55, %52, %49, %46, %43, %40, %37, %34, %31, %23
%27 = phi i64 [ 1, %23 ], [ 3, %31 ], [ 5, %34 ], [ 7, %37 ], [ 9, %40 ], [ 11, %43 ], [ 13, %46 ], [ 15, %49 ], [ 17, %52 ], [ 19, %55 ], [ 21, %58 ], [ 23, %61 ]
%28 = shl i64 %27, 2
%29 = call i8* @llvm.load.relative.i64(i8* bitcast ([25 x i32]* @reltable.ocr_text_proc to i8*), i64 %28)
%30 = tail call i32 @strcpy(i8* %0, i8* %29)
br label %252
31: ; preds = %23
%32 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
%33 = icmp eq i64 %32, 0
br i1 %33, label %26, label %34
34: ; preds = %31
%35 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.3, i64 0, i64 0))
%36 = icmp eq i64 %35, 0
br i1 %36, label %26, label %37
37: ; preds = %34
%38 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.5, i64 0, i64 0))
%39 = icmp eq i64 %38, 0
br i1 %39, label %26, label %40
40: ; preds = %37
%41 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.7, i64 0, i64 0))
%42 = icmp eq i64 %41, 0
br i1 %42, label %26, label %43
43: ; preds = %40
%44 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0))
%45 = icmp eq i64 %44, 0
br i1 %45, label %26, label %46
46: ; preds = %43
%47 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.11, i64 0, i64 0))
%48 = icmp eq i64 %47, 0
br i1 %48, label %26, label %49
49: ; preds = %46
%50 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.13, i64 0, i64 0))
%51 = icmp eq i64 %50, 0
br i1 %51, label %26, label %52
52: ; preds = %49
%53 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.15, i64 0, i64 0))
%54 = icmp eq i64 %53, 0
br i1 %54, label %26, label %55
55: ; preds = %52
%56 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.17, i64 0, i64 0))
%57 = icmp eq i64 %56, 0
br i1 %57, label %26, label %58
58: ; preds = %55
%59 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.19, i64 0, i64 0))
%60 = icmp eq i64 %59, 0
br i1 %60, label %26, label %61
61: ; preds = %58
%62 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.21, i64 0, i64 0))
%63 = icmp eq i64 %62, 0
br i1 %63, label %26, label %64
64: ; preds = %61
%65 = load i8, i8* %0
%66 = icmp eq i8 %65, 84
br i1 %66, label %67, label %75
67: ; preds = %64
%68 = getelementptr inbounds i8, i8* %0, i64 1
%69 = load i8, i8* %68
%70 = tail call i64 @not_usually_after_T(i8 signext %69)
%71 = icmp eq i64 %70, 0
br i1 %71, label %73, label %72
72: ; preds = %67
store i8 73, i8* %0
br label %121
73: ; preds = %67
%74 = load i8, i8* %0
br label %75
75: ; preds = %73, %64
%76 = phi i8 [ %74, %73 ], [ %65, %64 ]
%77 = icmp eq i8 %76, 110
br i1 %77, label %78, label %90
78: ; preds = %75
%79 = getelementptr inbounds i8, i8* %0, i64 1
%80 = load i8, i8* %79
%81 = tail call i64 @not_usually_after_n(i8 signext %80)
%82 = icmp eq i64 %81, 0
br i1 %82, label %83, label %85
83: ; preds = %78
%84 = load i8, i8* %0
br label %90
85: ; preds = %78
%86 = getelementptr inbounds i8, i8* %0, i64 2
%87 = tail call i64 @strlen(i8* %0)
%88 = add nsw i64 %87, -1
%89 = tail call i32 @memmove(i8* %86, i8* %79, i64 %88)
store i8 102, i8* %0
store i8 105, i8* %79
br label %121
90: ; preds = %83, %75
%91 = phi i8 [ %84, %83 ], [ %76, %75 ]
%92 = icmp eq i8 %91, 108
br i1 %92, label %93, label %101
93: ; preds = %90
%94 = getelementptr inbounds i8, i8* %0, i64 1
%95 = load i8, i8* %94
%96 = tail call i64 @not_usually_after_l(i8 signext %95)
%97 = icmp eq i64 %96, 0
br i1 %97, label %99, label %98
98: ; preds = %93
store i8 105, i8* %0
br label %121
99: ; preds = %93
%100 = load i8, i8* %0
br label %101
101: ; preds = %99, %90
%102 = phi i8 [ %100, %99 ], [ %91, %90 ]
%103 = icmp eq i8 %102, 114
br i1 %103, label %104, label %112
104: ; preds = %101
%105 = getelementptr inbounds i8, i8* %0, i64 1
%106 = load i8, i8* %105
%107 = tail call i64 @not_usually_after_r(i8 signext %106)
%108 = icmp eq i64 %107, 0
br i1 %108, label %109, label %111
109: ; preds = %104
%110 = load i8, i8* %0
br label %112
111: ; preds = %104
store i8 102, i8* %0
br label %121
112: ; preds = %109, %101
%113 = phi i8 [ %110, %109 ], [ %102, %101 ]
%114 = icmp eq i8 %113, 104
br i1 %114, label %115, label %121
115: ; preds = %112
%116 = getelementptr inbounds i8, i8* %0, i64 1
%117 = load i8, i8* %116
%118 = tail call signext i8 @tolower(i8 signext %117)
%119 = icmp eq i8 %118, 108
br i1 %119, label %120, label %121
120: ; preds = %115
store i8 107, i8* %0
br label %121
121: ; preds = %85, %111, %120, %115, %112, %98, %72
%122 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.24, i64 0, i64 0))
%123 = icmp eq i64 %122, 0
br i1 %123, label %151, label %124
124: ; preds = %121
%125 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.25, i64 0, i64 0))
%126 = icmp eq i64 %125, 0
br i1 %126, label %151, label %127
127: ; preds = %124
%128 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.26, i64 0, i64 0))
%129 = icmp eq i64 %128, 0
br i1 %129, label %151, label %130
130: ; preds = %127, %137
%131 = phi i64 [ %138, %137 ], [ 0, %127 ]
%132 = getelementptr inbounds i8, i8* %0, i64 %131
%133 = load i8, i8* %132
switch i8 %133, label %134 [
i8 79, label %137
i8 73, label %137
i8 0, label %141
]
134: ; preds = %130
%135 = add i8 %133, -58
%136 = icmp ult i8 %135, -10
br i1 %136, label %139, label %137
137: ; preds = %130, %130, %134
%138 = add nuw i64 %131, 1
br label %130
139: ; preds = %134
%140 = icmp eq i8 %133, 0
br i1 %140, label %141, label %151
141: ; preds = %130, %139
br label %142
142: ; preds = %141, %149
%143 = phi i64 [ %150, %149 ], [ 0, %141 ]
%144 = getelementptr inbounds i8, i8* %0, i64 %143
%145 = load i8, i8* %144
switch i8 %145, label %149 [
i8 0, label %151
i8 73, label %147
i8 79, label %146
]
146: ; preds = %142
br label %147
147: ; preds = %142, %146
%148 = phi i8 [ 48, %146 ], [ 49, %142 ]
store i8 %148, i8* %144
br label %149
149: ; preds = %147, %142
%150 = add nuw i64 %143, 1
br label %142
151: ; preds = %142, %139, %127, %124, %121
%152 = load i8, i8* %0
%153 = icmp eq i8 %152, 0
br i1 %153, label %209, label %154
154: ; preds = %151
%155 = add i8 %152, -48
%156 = icmp ult i8 %155, 10
br i1 %156, label %157, label %168
157: ; preds = %154
%158 = getelementptr inbounds i8, i8* %0, i64 1
%159 = load i8, i8* %158
%160 = icmp eq i8 %159, 0
%161 = add i8 %159, -97
%162 = icmp ult i8 %161, 26
%163 = or i1 %160, %162
br i1 %163, label %164, label %168
164: ; preds = %157
switch i8 %152, label %168 [
i8 49, label %165
i8 52, label %166
]
165: ; preds = %164
br label %166
166: ; preds = %164, %165
%167 = phi i8 [ 108, %165 ], [ 117, %164 ]
store i8 %167, i8* %0
br label %168
168: ; preds = %166, %164, %157, %154
%169 = phi i8 [ %152, %157 ], [ %152, %154 ], [ %152, %164 ], [ %167, %166 ]
%170 = getelementptr inbounds i8, i8* %0, i64 1
%171 = load i8, i8* %170
%172 = icmp eq i8 %171, 0
br i1 %172, label %175, label %178
173: ; preds = %203
%174 = load i8, i8* %0
br label %175
175: ; preds = %168, %173
%176 = phi i8 [ %174, %173 ], [ %169, %168 ]
%177 = icmp eq i8 %176, 0
br i1 %177, label %209, label %212
178: ; preds = %168, %203
%179 = phi i64 [ %204, %203 ], [ 1, %168 ]
%180 = phi i8 [ %207, %203 ], [ %171, %168 ]
%181 = phi i8* [ %206, %203 ], [ %170, %168 ]
%182 = add i8 %180, -48
%183 = icmp ult i8 %182, 10
br i1 %183, label %184, label %203
184: ; preds = %178
%185 = add nsw i64 %179, -1
%186 = getelementptr inbounds i8, i8* %0, i64 %185
%187 = load i8, i8* %186
%188 = add i8 %187, -97
%189 = icmp ult i8 %188, 26
br i1 %189, label %190, label %203
190: ; preds = %184
%191 = add i64 %179, 1
%192 = and i64 %191, 4294967295
%193 = getelementptr inbounds i8, i8* %0, i64 %192
%194 = load i8, i8* %193
%195 = icmp eq i8 %194, 0
%196 = add i8 %194, -97
%197 = icmp ult i8 %196, 26
%198 = or i1 %195, %197
br i1 %198, label %199, label %203
199: ; preds = %190
switch i8 %180, label %203 [
i8 49, label %201
i8 52, label %200
]
200: ; preds = %199
br label %201
201: ; preds = %199, %200
%202 = phi i8 [ 117, %200 ], [ 108, %199 ]
store i8 %202, i8* %181
br label %203
203: ; preds = %201, %199, %190, %178, %184
%204 = add nuw i64 %179, 1
%205 = and i64 %204, 4294967295
%206 = getelementptr inbounds i8, i8* %0, i64 %205
%207 = load i8, i8* %206
%208 = icmp eq i8 %207, 0
br i1 %208, label %173, label %178
209: ; preds = %240, %151, %175
%210 = tail call i32 @in_string(i8* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.27, i64 0, i64 0))
%211 = icmp sgt i32 %210, -1
br i1 %211, label %245, label %252
212: ; preds = %175, %240
%213 = phi i64 [ %241, %240 ], [ 0, %175 ]
%214 = phi i8 [ %243, %240 ], [ %176, %175 ]
%215 = phi i8* [ %242, %240 ], [ %0, %175 ]
%216 = icmp ne i64 %213, 0
%217 = icmp sgt i8 %214, 64
%218 = select i1 %216, i1 %217, i1 false
%219 = icmp slt i8 %214, 91
%220 = select i1 %218, i1 %219, i1 false
br i1 %220, label %221, label %240
221: ; preds = %212
%222 = add i64 %213, 4294967295
%223 = and i64 %222, 4294967295
%224 = getelementptr inbounds i8, i8* %0, i64 %223
%225 = load i8, i8* %224
%226 = add i8 %225, -97
%227 = icmp ult i8 %226, 26
br i1 %227, label %228, label %240
228: ; preds = %221
%229 = add nuw nsw i64 %213, 1
%230 = getelementptr inbounds i8, i8* %0, i64 %229
%231 = load i8, i8* %230
%232 = add i8 %231, -97
%233 = icmp ult i8 %232, 26
br i1 %233, label %234, label %240
234: ; preds = %228
%235 = icmp eq i8 %214, 73
br i1 %235, label %238, label %236
236: ; preds = %234
%237 = tail call signext i8 @tolower(i8 signext %214)
br label %238
238: ; preds = %234, %236
%239 = phi i8 [ %237, %236 ], [ 108, %234 ]
store i8 %239, i8* %215
br label %240
240: ; preds = %238, %212, %221, %228
%241 = add nuw i64 %213, 1
%242 = getelementptr inbounds i8, i8* %0, i64 %241
%243 = load i8, i8* %242
%244 = icmp eq i8 %243, 0
br i1 %244, label %209, label %212
245: ; preds = %209, %245
%246 = phi i32 [ %250, %245 ], [ %210, %209 ]
%247 = add nuw nsw i32 %246, 2
%248 = zext i32 %247 to i64
%249 = getelementptr inbounds i8, i8* %0, i64 %248
store i8 103, i8* %249
%250 = tail call i32 @in_string(i8* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.27, i64 0, i64 0))
%251 = icmp sgt i32 %250, -1
br i1 %251, label %245, label %252
252: ; preds = %245, %209, %26
ret void
}