#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 */
scalar_t__ strcmp(char *, char *);
scalar_t__ strncmp(char *, char *, int);
void kortaf(char boeknaam[]) {
  char x;
  if (!(strcmp(boeknaam, "Amos") && strcmp(boeknaam, "Esther") &&
        strcmp(boeknaam, "Ezra") && strcmp(boeknaam, "Job") &&
        (strncmp(boeknaam, "Jo", 2) || (boeknaam[4] != 'l')) &&
        strcmp(boeknaam, "Jona") && strcmp(boeknaam, "Micha") &&
        strcmp(boeknaam, "Nahum") && strcmp(boeknaam, "Ruth")))
    return;
  switch (boeknaam[0]) {
  case '1':
  case '2':
  case '3':
    switch (boeknaam[2]) {
    case 'K':
      if (boeknaam[3] == 'r')
        x = 6;
      else
        x = 5;
      break;
    case 'T':
      if (boeknaam[5] == 'h')
        x = 7;
      else
        x = 5;
      break;
    case 'J':
    case 'S':
      x = 5;
      break;
    case 'P':
      x = 6;
      break;
    }
    break;
  case 'E':
    if ((boeknaam[1] == 'f') || (boeknaam[1] == 'x'))
      x = 2;
    else
      x = 5;
    break;
  case 'D':
    if (boeknaam[1] == 'a')
      x = 3;
    else
      x = 4;
    break;
  case 'K':
    if (boeknaam[1] == 'o')
      x = 3;
    else
      x = 6;
    break;
  case 'M':
    switch (boeknaam[2]) {
    case 'l':
      x = 3;
      break;
    case 'r':
      x = 4;
      break;
    case 't':
      x = 5;
      break;
    }
    break;
  case 'O':
    if (boeknaam[1] == 'p')
      x = 5;
    else
      x = 2;
    break;
  case 'P':
    if (boeknaam[1] == 'r')
      x = 4;
    else
      x = 2;
    break;
  case 'R':
    if (boeknaam[1] == 'e')
      x = 5;
    else
      x = 3;
    break;
  case 'Z':
    if (boeknaam[1] == 'a')
      x = 4;
    else
      x = 3;
    break;
  case 'F':
  case 'G':
  case 'J':
  case 'L':
  case 'N':
  case 'S':
  case 'T':
    x = 3;
    break;
  case 'H':
    if (!(strncmp(boeknaam, "Hab", 3) || strncmp(boeknaam, "Hag", 3) ||
          strncmp(boeknaam, "Hos", 3)))
      x = 3;
    else if ((boeknaam[1] == 'a') || (boeknaam[1] == 'e'))
      x = 4;
    else if (boeknaam[2] == 'o')
      x = 5;
    break;
  default:
    x = 0;
    break;
  }
  if (x) {
    boeknaam[x] = '.';
    boeknaam[x + 1] = '\0';
  }
}


x86 assembly (clang, -O0):
<kortaf>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rdi
lea    0xf9d(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     122c <kortaf+0x10c>
mov    -0x8(%rbp),%rdi
lea    0xf88(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     122c <kortaf+0x10c>
mov    -0x8(%rbp),%rdi
lea    0xf75(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     122c <kortaf+0x10c>
mov    -0x8(%rbp),%rdi
lea    0xf60(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     122c <kortaf+0x10c>
mov    -0x8(%rbp),%rdi
lea    0xf4a(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    11c4 <kortaf+0xa4>
mov    -0x8(%rbp),%rax
movsbl 0x4(%rax),%eax
cmp    $0x6c,%eax
je     122c <kortaf+0x10c>
mov    -0x8(%rbp),%rdi
lea    0xf1d(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     122c <kortaf+0x10c>
mov    -0x8(%rbp),%rdi
lea    0xf08(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     122c <kortaf+0x10c>
mov    -0x8(%rbp),%rdi
lea    0xef4(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     122c <kortaf+0x10c>
mov    -0x8(%rbp),%rdi
lea    0xee0(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    1231 <kortaf+0x111>
jmp    152b <kortaf+0x40b>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
add    $0xffffffcf,%eax
mov    %eax,%ecx
mov    %rcx,-0x18(%rbp)
sub    $0x29,%eax
ja     14fe <kortaf+0x3de>
mov    -0x18(%rbp),%rax
lea    0xdab(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x8(%rbp),%rax
movsbl 0x2(%rax),%eax
add    $0xffffffb6,%eax
mov    %eax,%ecx
mov    %rcx,-0x20(%rbp)
sub    $0xa,%eax
ja     12df <kortaf+0x1bf>
mov    -0x20(%rbp),%rax
lea    0xe25(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x8(%rbp),%rax
movsbl 0x3(%rax),%eax
cmp    $0x72,%eax
jne    12a6 <kortaf+0x186>
movb   $0x6,-0x9(%rbp)
jmp    12aa <kortaf+0x18a>
movb   $0x5,-0x9(%rbp)
jmp    12df <kortaf+0x1bf>
mov    -0x8(%rbp),%rax
movsbl 0x5(%rax),%eax
cmp    $0x68,%eax
jne    12c9 <kortaf+0x1a9>
movb   $0x7,-0x9(%rbp)
jmp    12cd <kortaf+0x1ad>
movb   $0x5,-0x9(%rbp)
jmp    12df <kortaf+0x1bf>
movb   $0x5,-0x9(%rbp)
jmp    12df <kortaf+0x1bf>
movb   $0x6,-0x9(%rbp)
jmp    1502 <kortaf+0x3e2>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x66,%eax
je     1306 <kortaf+0x1e6>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x78,%eax
jne    130f <kortaf+0x1ef>
movb   $0x2,-0x9(%rbp)
jmp    1313 <kortaf+0x1f3>
movb   $0x5,-0x9(%rbp)
jmp    1502 <kortaf+0x3e2>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x61,%eax
jne    1332 <kortaf+0x212>
movb   $0x3,-0x9(%rbp)
jmp    1336 <kortaf+0x216>
movb   $0x4,-0x9(%rbp)
jmp    1502 <kortaf+0x3e2>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x6f,%eax
jne    1355 <kortaf+0x235>
movb   $0x3,-0x9(%rbp)
jmp    1359 <kortaf+0x239>
movb   $0x6,-0x9(%rbp)
jmp    1502 <kortaf+0x3e2>
mov    -0x8(%rbp),%rax
movsbl 0x2(%rax),%eax
mov    %eax,-0x24(%rbp)
sub    $0x6c,%eax
je     1399 <kortaf+0x279>
jmp    1377 <kortaf+0x257>
mov    -0x24(%rbp),%eax
sub    $0x72,%eax
je     13a2 <kortaf+0x282>
jmp    1388 <kortaf+0x268>
mov    -0x24(%rbp),%eax
sub    $0x74,%eax
je     13ab <kortaf+0x28b>
jmp    13af <kortaf+0x28f>
movb   $0x3,-0x9(%rbp)
jmp    13af <kortaf+0x28f>
movb   $0x4,-0x9(%rbp)
jmp    13af <kortaf+0x28f>
movb   $0x5,-0x9(%rbp)
jmp    1502 <kortaf+0x3e2>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x70,%eax
jne    13ce <kortaf+0x2ae>
movb   $0x5,-0x9(%rbp)
jmp    13d2 <kortaf+0x2b2>
movb   $0x2,-0x9(%rbp)
jmp    1502 <kortaf+0x3e2>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x72,%eax
jne    13f1 <kortaf+0x2d1>
movb   $0x4,-0x9(%rbp)
jmp    13f5 <kortaf+0x2d5>
movb   $0x2,-0x9(%rbp)
jmp    1502 <kortaf+0x3e2>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x65,%eax
jne    1414 <kortaf+0x2f4>
movb   $0x5,-0x9(%rbp)
jmp    1418 <kortaf+0x2f8>
movb   $0x3,-0x9(%rbp)
jmp    1502 <kortaf+0x3e2>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x61,%eax
jne    1437 <kortaf+0x317>
movb   $0x4,-0x9(%rbp)
jmp    143b <kortaf+0x31b>
movb   $0x3,-0x9(%rbp)
jmp    1502 <kortaf+0x3e2>
movb   $0x3,-0x9(%rbp)
jmp    1502 <kortaf+0x3e2>
mov    -0x8(%rbp),%rdi
lea    0xcae(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    14af <kortaf+0x38f>
mov    -0x8(%rbp),%rdi
lea    0xc93(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    14af <kortaf+0x38f>
mov    -0x8(%rbp),%rdi
lea    0xc78(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    14af <kortaf+0x38f>
movb   $0x3,-0x9(%rbp)
jmp    14f9 <kortaf+0x3d9>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x61,%eax
je     14d1 <kortaf+0x3b1>
mov    -0x8(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x65,%eax
jne    14da <kortaf+0x3ba>
movb   $0x4,-0x9(%rbp)
jmp    14f4 <kortaf+0x3d4>
mov    -0x8(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x6f,%eax
jne    14ef <kortaf+0x3cf>
movb   $0x5,-0x9(%rbp)
jmp    14f4 <kortaf+0x3d4>
jmp    14f9 <kortaf+0x3d9>
jmp    1502 <kortaf+0x3e2>
movb   $0x0,-0x9(%rbp)
cmpb   $0x0,-0x9(%rbp)
je     152b <kortaf+0x40b>
mov    -0x8(%rbp),%rax
movsbq -0x9(%rbp),%rcx
movb   $0x2e,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
movsbl -0x9(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x0,(%rax,%rcx,1)
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<kortaf>:
push   %r14
push   %rbx
push   %rax
mov    %rdi,%rbx
lea    0xfa6(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
je     121b <kortaf+0xfb>
lea    0xf96(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     121b <kortaf+0xfb>
lea    0xf85(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     121b <kortaf+0xfb>
lea    0xf72(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     121b <kortaf+0xfb>
lea    0xf5e(%rip),%rsi
mov    %rbx,%rdi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
jne    11a3 <kortaf+0x83>
cmpb   $0x6c,0x4(%rbx)
je     121b <kortaf+0xfb>
lea    0xf42(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     121b <kortaf+0xfb>
lea    0xf33(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     121b <kortaf+0xfb>
lea    0xf25(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     121b <kortaf+0xfb>
lea    0xf17(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     121b <kortaf+0xfb>
movsbl (%rbx),%eax
add    $0xffffffcf,%eax
cmp    $0x29,%eax
ja     121b <kortaf+0xfb>
mov    $0x3,%r14d
lea    0xdf5(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movw   $0x2e,(%rbx,%r14,1)
add    $0x8,%rsp
pop    %rbx
pop    %r14
ret
movsbl 0x2(%rbx),%eax
add    $0xffffffb6,%eax
cmp    $0xa,%eax
ja     121b <kortaf+0xfb>
mov    $0x5,%r14d
lea    0xe6c(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
xor    %r14d,%r14d
cmpb   $0x72,0x3(%rbx)
sete   %r14b
add    $0x5,%r14
jmp    1214 <kortaf+0xf4>
xor    %eax,%eax
cmpb   $0x61,0x1(%rbx)
sete   %al
mov    $0x4,%r14d
sub    %rax,%r14
jmp    1214 <kortaf+0xf4>
mov    0x1(%rbx),%al
xor    %ecx,%ecx
cmp    $0x78,%al
setne  %cl
cmp    $0x66,%al
lea    0x2(%rcx,%rcx,2),%rax
mov    $0x2,%r14d
cmovne %rax,%r14
jmp    1214 <kortaf+0xf4>
lea    0xe74(%rip),%rsi
mov    %rbx,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
jne    12d6 <kortaf+0x1b6>
lea    0xe5f(%rip),%rsi
mov    %rbx,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
jne    12d6 <kortaf+0x1b6>
lea    0xe4a(%rip),%rsi
mov    %rbx,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     1214 <kortaf+0xf4>
mov    0x1(%rbx),%al
mov    $0x4,%r14d
or     $0x4,%al
cmp    $0x65,%al
je     1214 <kortaf+0xf4>
xor    %eax,%eax
cmpb   $0x6f,0x2(%rbx)
sete   %al
lea    (%rax,%rax,4),%r14
jmp    1214 <kortaf+0xf4>
xor    %eax,%eax
cmpb   $0x6f,0x1(%rbx)
setne  %al
lea    (%rax,%rax,2),%r14
add    $0x3,%r14
jmp    1214 <kortaf+0xf4>
movsbl 0x2(%rbx),%eax
cmp    $0x6c,%eax
je     1214 <kortaf+0xf4>
cmp    $0x74,%eax
je     13b2 <kortaf+0x292>
cmp    $0x72,%eax
jne    121b <kortaf+0xfb>
mov    $0x4,%r14d
jmp    1214 <kortaf+0xf4>
xor    %eax,%eax
cmpb   $0x70,0x1(%rbx)
sete   %al
lea    (%rax,%rax,2),%r14
add    $0x2,%r14
jmp    1214 <kortaf+0xf4>
xor    %eax,%eax
cmpb   $0x72,0x1(%rbx)
sete   %al
lea    (%rax,%rax,1),%r14
add    $0x2,%r14
jmp    1214 <kortaf+0xf4>
xor    %eax,%eax
cmpb   $0x65,0x1(%rbx)
sete   %al
lea    (%rax,%rax,1),%r14
add    $0x3,%r14
jmp    1214 <kortaf+0xf4>
xor    %r14d,%r14d
cmpb   $0x61,0x1(%rbx)
sete   %r14b
add    $0x3,%r14
jmp    1214 <kortaf+0xf4>
mov    $0x6,%r14d
jmp    1214 <kortaf+0xf4>
xor    %eax,%eax
cmpb   $0x68,0x5(%rbx)
sete   %al
lea    (%rax,%rax,1),%r14
add    $0x5,%r14
jmp    1214 <kortaf+0xf4>
mov    $0x5,%r14d
jmp    1214 <kortaf+0xf4>

LLVM IR (-O0):
@.str = [5 x i8] c"Amos\00"
@.str.1 = [7 x i8] c"Esther\00"
@.str.2 = [5 x i8] c"Ezra\00"
@.str.3 = [4 x i8] c"Job\00"
@.str.4 = [3 x i8] c"Jo\00"
@.str.5 = [5 x i8] c"Jona\00"
@.str.6 = [6 x i8] c"Micha\00"
@.str.7 = [6 x i8] c"Nahum\00"
@.str.8 = [5 x i8] c"Ruth\00"
@.str.9 = [4 x i8] c"Hab\00"
@.str.10 = [4 x i8] c"Hag\00"
@.str.11 = [4 x i8] c"Hos\00"
define void @kortaf(i8* %0) {
%2 = alloca i8*
%3 = alloca i8
store i8* %0, i8** %2
%4 = load i8*, i8** %2
%5 = call i64 @strcmp(i8* %4, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0))
%6 = icmp ne i64 %5, 0
br i1 %6, label %7, label %45
7: ; preds = %1
%8 = load i8*, i8** %2
%9 = call i64 @strcmp(i8* %8, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0))
%10 = icmp ne i64 %9, 0
br i1 %10, label %11, label %45
11: ; preds = %7
%12 = load i8*, i8** %2
%13 = call i64 @strcmp(i8* %12, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
%14 = icmp ne i64 %13, 0
br i1 %14, label %15, label %45
15: ; preds = %11
%16 = load i8*, i8** %2
%17 = call i64 @strcmp(i8* %16, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
%18 = icmp ne i64 %17, 0
br i1 %18, label %19, label %45
19: ; preds = %15
%20 = load i8*, i8** %2
%21 = call i64 @strncmp(i8* %20, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32 2)
%22 = icmp ne i64 %21, 0
br i1 %22, label %29, label %23
23: ; preds = %19
%24 = load i8*, i8** %2
%25 = getelementptr inbounds i8, i8* %24, i64 4
%26 = load i8, i8* %25
%27 = sext i8 %26 to i32
%28 = icmp ne i32 %27, 108
br i1 %28, label %29, label %45
29: ; preds = %23, %19
%30 = load i8*, i8** %2
%31 = call i64 @strcmp(i8* %30, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0))
%32 = icmp ne i64 %31, 0
br i1 %32, label %33, label %45
33: ; preds = %29
%34 = load i8*, i8** %2
%35 = call i64 @strcmp(i8* %34, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0))
%36 = icmp ne i64 %35, 0
br i1 %36, label %37, label %45
37: ; preds = %33
%38 = load i8*, i8** %2
%39 = call i64 @strcmp(i8* %38, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0))
%40 = icmp ne i64 %39, 0
br i1 %40, label %41, label %45
41: ; preds = %37
%42 = load i8*, i8** %2
%43 = call i64 @strcmp(i8* %42, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0))
%44 = icmp ne i64 %43, 0
br i1 %44, label %46, label %45
45: ; preds = %41, %37, %33, %29, %23, %15, %11, %7, %1
br label %207
46: ; preds = %41
%47 = load i8*, i8** %2
%48 = getelementptr inbounds i8, i8* %47, i64 0
%49 = load i8, i8* %48
%50 = sext i8 %49 to i32
switch i32 %50, label %192 [
i32 49, label %51
i32 50, label %51
i32 51, label %51
i32 69, label %77
i32 68, label %92
i32 75, label %101
i32 77, label %110
i32 79, label %119
i32 80, label %128
i32 82, label %137
i32 90, label %146
i32 70, label %155
i32 71, label %155
i32 74, label %155
i32 76, label %155
i32 78, label %155
i32 83, label %155
i32 84, label %155
i32 72, label %156
]
51: ; preds = %46, %46, %46
%52 = load i8*, i8** %2
%53 = getelementptr inbounds i8, i8* %52, i64 2
%54 = load i8, i8* %53
%55 = sext i8 %54 to i32
switch i32 %55, label %76 [
i32 75, label %56
i32 84, label %65
i32 74, label %74
i32 83, label %74
i32 80, label %75
]
56: ; preds = %51
%57 = load i8*, i8** %2
%58 = getelementptr inbounds i8, i8* %57, i64 3
%59 = load i8, i8* %58
%60 = sext i8 %59 to i32
%61 = icmp eq i32 %60, 114
br i1 %61, label %62, label %63
62: ; preds = %56
store i8 6, i8* %3
br label %64
63: ; preds = %56
store i8 5, i8* %3
br label %64
64: ; preds = %63, %62
br label %76
65: ; preds = %51
%66 = load i8*, i8** %2
%67 = getelementptr inbounds i8, i8* %66, i64 5
%68 = load i8, i8* %67
%69 = sext i8 %68 to i32
%70 = icmp eq i32 %69, 104
br i1 %70, label %71, label %72
71: ; preds = %65
store i8 7, i8* %3
br label %73
72: ; preds = %65
store i8 5, i8* %3
br label %73
73: ; preds = %72, %71
br label %76
74: ; preds = %51, %51
store i8 5, i8* %3
br label %76
75: ; preds = %51
store i8 6, i8* %3
br label %76
76: ; preds = %51, %75, %74, %73, %64
br label %193
77: ; preds = %46
%78 = load i8*, i8** %2
%79 = getelementptr inbounds i8, i8* %78, i64 1
%80 = load i8, i8* %79
%81 = sext i8 %80 to i32
%82 = icmp eq i32 %81, 102
br i1 %82, label %89, label %83
83: ; preds = %77
%84 = load i8*, i8** %2
%85 = getelementptr inbounds i8, i8* %84, i64 1
%86 = load i8, i8* %85
%87 = sext i8 %86 to i32
%88 = icmp eq i32 %87, 120
br i1 %88, label %89, label %90
89: ; preds = %83, %77
store i8 2, i8* %3
br label %91
90: ; preds = %83
store i8 5, i8* %3
br label %91
91: ; preds = %90, %89
br label %193
92: ; preds = %46
%93 = load i8*, i8** %2
%94 = getelementptr inbounds i8, i8* %93, i64 1
%95 = load i8, i8* %94
%96 = sext i8 %95 to i32
%97 = icmp eq i32 %96, 97
br i1 %97, label %98, label %99
98: ; preds = %92
store i8 3, i8* %3
br label %100
99: ; preds = %92
store i8 4, i8* %3
br label %100
100: ; preds = %99, %98
br label %193
101: ; preds = %46
%102 = load i8*, i8** %2
%103 = getelementptr inbounds i8, i8* %102, i64 1
%104 = load i8, i8* %103
%105 = sext i8 %104 to i32
%106 = icmp eq i32 %105, 111
br i1 %106, label %107, label %108
107: ; preds = %101
store i8 3, i8* %3
br label %109
108: ; preds = %101
store i8 6, i8* %3
br label %109
109: ; preds = %108, %107
br label %193
110: ; preds = %46
%111 = load i8*, i8** %2
%112 = getelementptr inbounds i8, i8* %111, i64 2
%113 = load i8, i8* %112
%114 = sext i8 %113 to i32
switch i32 %114, label %118 [
i32 108, label %115
i32 114, label %116
i32 116, label %117
]
115: ; preds = %110
store i8 3, i8* %3
br label %118
116: ; preds = %110
store i8 4, i8* %3
br label %118
117: ; preds = %110
store i8 5, i8* %3
br label %118
118: ; preds = %110, %117, %116, %115
br label %193
119: ; preds = %46
%120 = load i8*, i8** %2
%121 = getelementptr inbounds i8, i8* %120, i64 1
%122 = load i8, i8* %121
%123 = sext i8 %122 to i32
%124 = icmp eq i32 %123, 112
br i1 %124, label %125, label %126
125: ; preds = %119
store i8 5, i8* %3
br label %127
126: ; preds = %119
store i8 2, i8* %3
br label %127
127: ; preds = %126, %125
br label %193
128: ; preds = %46
%129 = load i8*, i8** %2
%130 = getelementptr inbounds i8, i8* %129, i64 1
%131 = load i8, i8* %130
%132 = sext i8 %131 to i32
%133 = icmp eq i32 %132, 114
br i1 %133, label %134, label %135
134: ; preds = %128
store i8 4, i8* %3
br label %136
135: ; preds = %128
store i8 2, i8* %3
br label %136
136: ; preds = %135, %134
br label %193
137: ; preds = %46
%138 = load i8*, i8** %2
%139 = getelementptr inbounds i8, i8* %138, i64 1
%140 = load i8, i8* %139
%141 = sext i8 %140 to i32
%142 = icmp eq i32 %141, 101
br i1 %142, label %143, label %144
143: ; preds = %137
store i8 5, i8* %3
br label %145
144: ; preds = %137
store i8 3, i8* %3
br label %145
145: ; preds = %144, %143
br label %193
146: ; preds = %46
%147 = load i8*, i8** %2
%148 = getelementptr inbounds i8, i8* %147, i64 1
%149 = load i8, i8* %148
%150 = sext i8 %149 to i32
%151 = icmp eq i32 %150, 97
br i1 %151, label %152, label %153
152: ; preds = %146
store i8 4, i8* %3
br label %154
153: ; preds = %146
store i8 3, i8* %3
br label %154
154: ; preds = %153, %152
br label %193
155: ; preds = %46, %46, %46, %46, %46, %46, %46
store i8 3, i8* %3
br label %193
156: ; preds = %46
%157 = load i8*, i8** %2
%158 = call i64 @strncmp(i8* %157, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.9, i64 0, i64 0), i32 3)
%159 = icmp ne i64 %158, 0
br i1 %159, label %169, label %160
160: ; preds = %156
%161 = load i8*, i8** %2
%162 = call i64 @strncmp(i8* %161, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.10, i64 0, i64 0), i32 3)
%163 = icmp ne i64 %162, 0
br i1 %163, label %169, label %164
164: ; preds = %160
%165 = load i8*, i8** %2
%166 = call i64 @strncmp(i8* %165, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.11, i64 0, i64 0), i32 3)
%167 = icmp ne i64 %166, 0
br i1 %167, label %169, label %168
168: ; preds = %164
store i8 3, i8* %3
br label %191
169: ; preds = %164, %160, %156
%170 = load i8*, i8** %2
%171 = getelementptr inbounds i8, i8* %170, i64 1
%172 = load i8, i8* %171
%173 = sext i8 %172 to i32
%174 = icmp eq i32 %173, 97
br i1 %174, label %181, label %175
175: ; preds = %169
%176 = load i8*, i8** %2
%177 = getelementptr inbounds i8, i8* %176, i64 1
%178 = load i8, i8* %177
%179 = sext i8 %178 to i32
%180 = icmp eq i32 %179, 101
br i1 %180, label %181, label %182
181: ; preds = %175, %169
store i8 4, i8* %3
br label %190
182: ; preds = %175
%183 = load i8*, i8** %2
%184 = getelementptr inbounds i8, i8* %183, i64 2
%185 = load i8, i8* %184
%186 = sext i8 %185 to i32
%187 = icmp eq i32 %186, 111
br i1 %187, label %188, label %189
188: ; preds = %182
store i8 5, i8* %3
br label %189
189: ; preds = %188, %182
br label %190
190: ; preds = %189, %181
br label %191
191: ; preds = %190, %168
br label %193
192: ; preds = %46
store i8 0, i8* %3
br label %193
193: ; preds = %192, %191, %155, %154, %145, %136, %127, %118, %109, %100, %91, %76
%194 = load i8, i8* %3
%195 = icmp ne i8 %194, 0
br i1 %195, label %196, label %207
196: ; preds = %193
%197 = load i8*, i8** %2
%198 = load i8, i8* %3
%199 = sext i8 %198 to i64
%200 = getelementptr inbounds i8, i8* %197, i64 %199
store i8 46, i8* %200
%201 = load i8*, i8** %2
%202 = load i8, i8* %3
%203 = sext i8 %202 to i32
%204 = add nsw i32 %203, 1
%205 = sext i32 %204 to i64
%206 = getelementptr inbounds i8, i8* %201, i64 %205
store i8 0, i8* %206
br label %207
207: ; preds = %45, %196, %193
ret void
}

LLVM IR (-O2):
@.str = [5 x i8] c"Amos\00"
@.str.1 = [7 x i8] c"Esther\00"
@.str.2 = [5 x i8] c"Ezra\00"
@.str.3 = [4 x i8] c"Job\00"
@.str.4 = [3 x i8] c"Jo\00"
@.str.5 = [5 x i8] c"Jona\00"
@.str.6 = [6 x i8] c"Micha\00"
@.str.7 = [6 x i8] c"Nahum\00"
@.str.8 = [5 x i8] c"Ruth\00"
@.str.9 = [4 x i8] c"Hab\00"
@.str.10 = [4 x i8] c"Hag\00"
@.str.11 = [4 x i8] c"Hos\00"
define void @kortaf(i8* %0) {
%2 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0))
%3 = icmp eq i64 %2, 0
br i1 %3, label %115, label %4
4: ; preds = %1
%5 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0))
%6 = icmp eq i64 %5, 0
br i1 %6, label %115, label %7
7: ; preds = %4
%8 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
%9 = icmp eq i64 %8, 0
br i1 %9, label %115, label %10
10: ; preds = %7
%11 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
%12 = icmp eq i64 %11, 0
br i1 %12, label %115, label %13
13: ; preds = %10
%14 = tail call i64 @strncmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32 2)
%15 = icmp eq i64 %14, 0
br i1 %15, label %16, label %20
16: ; preds = %13
%17 = getelementptr inbounds i8, i8* %0, i64 4
%18 = load i8, i8* %17
%19 = icmp eq i8 %18, 108
br i1 %19, label %115, label %20
20: ; preds = %16, %13
%21 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0))
%22 = icmp eq i64 %21, 0
br i1 %22, label %115, label %23
23: ; preds = %20
%24 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0))
%25 = icmp eq i64 %24, 0
br i1 %25, label %115, label %26
26: ; preds = %23
%27 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0))
%28 = icmp eq i64 %27, 0
br i1 %28, label %115, label %29
29: ; preds = %26
%30 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0))
%31 = icmp eq i64 %30, 0
br i1 %31, label %115, label %32
32: ; preds = %29
%33 = load i8, i8* %0
%34 = sext i8 %33 to i32
switch i32 %34, label %115 [
i32 49, label %35
i32 50, label %35
i32 51, label %35
i32 69, label %50
i32 68, label %57
i32 75, label %62
i32 77, label %67
i32 79, label %73
i32 80, label %78
i32 82, label %83
i32 90, label %88
i32 70, label %110
i32 71, label %110
i32 74, label %110
i32 76, label %110
i32 78, label %110
i32 83, label %110
i32 84, label %110
i32 72, label %93
]
35: ; preds = %32, %32, %32
%36 = getelementptr inbounds i8, i8* %0, i64 2
%37 = load i8, i8* %36
%38 = sext i8 %37 to i32
switch i32 %38, label %115 [
i32 75, label %39
i32 84, label %44
i32 74, label %110
i32 83, label %110
i32 80, label %49
]
39: ; preds = %35
%40 = getelementptr inbounds i8, i8* %0, i64 3
%41 = load i8, i8* %40
%42 = icmp eq i8 %41, 114
%43 = select i1 %42, i64 6, i64 5
br label %110
44: ; preds = %35
%45 = getelementptr inbounds i8, i8* %0, i64 5
%46 = load i8, i8* %45
%47 = icmp eq i8 %46, 104
%48 = select i1 %47, i64 7, i64 5
br label %110
49: ; preds = %35
br label %110
50: ; preds = %32
%51 = getelementptr inbounds i8, i8* %0, i64 1
%52 = load i8, i8* %51
%53 = icmp eq i8 %52, 102
%54 = icmp eq i8 %52, 120
%55 = or i1 %53, %54
%56 = select i1 %55, i64 2, i64 5
br label %110
57: ; preds = %32
%58 = getelementptr inbounds i8, i8* %0, i64 1
%59 = load i8, i8* %58
%60 = icmp eq i8 %59, 97
%61 = select i1 %60, i64 3, i64 4
br label %110
62: ; preds = %32
%63 = getelementptr inbounds i8, i8* %0, i64 1
%64 = load i8, i8* %63
%65 = icmp eq i8 %64, 111
%66 = select i1 %65, i64 3, i64 6
br label %110
67: ; preds = %32
%68 = getelementptr inbounds i8, i8* %0, i64 2
%69 = load i8, i8* %68
%70 = sext i8 %69 to i32
switch i32 %70, label %115 [
i32 108, label %110
i32 114, label %71
i32 116, label %72
]
71: ; preds = %67
br label %110
72: ; preds = %67
br label %110
73: ; preds = %32
%74 = getelementptr inbounds i8, i8* %0, i64 1
%75 = load i8, i8* %74
%76 = icmp eq i8 %75, 112
%77 = select i1 %76, i64 5, i64 2
br label %110
78: ; preds = %32
%79 = getelementptr inbounds i8, i8* %0, i64 1
%80 = load i8, i8* %79
%81 = icmp eq i8 %80, 114
%82 = select i1 %81, i64 4, i64 2
br label %110
83: ; preds = %32
%84 = getelementptr inbounds i8, i8* %0, i64 1
%85 = load i8, i8* %84
%86 = icmp eq i8 %85, 101
%87 = select i1 %86, i64 5, i64 3
br label %110
88: ; preds = %32
%89 = getelementptr inbounds i8, i8* %0, i64 1
%90 = load i8, i8* %89
%91 = icmp eq i8 %90, 97
%92 = select i1 %91, i64 4, i64 3
br label %110
93: ; preds = %32
%94 = tail call i64 @strncmp(i8* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.9, i64 0, i64 0), i32 3)
%95 = icmp eq i64 %94, 0
br i1 %95, label %96, label %102
96: ; preds = %93
%97 = tail call i64 @strncmp(i8* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.10, i64 0, i64 0), i32 3)
%98 = icmp eq i64 %97, 0
br i1 %98, label %99, label %102
99: ; preds = %96
%100 = tail call i64 @strncmp(i8* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.11, i64 0, i64 0), i32 3)
%101 = icmp eq i64 %100, 0
br i1 %101, label %110, label %102
102: ; preds = %99, %96, %93
%103 = getelementptr inbounds i8, i8* %0, i64 1
%104 = load i8, i8* %103
switch i8 %104, label %105 [
i8 97, label %110
i8 101, label %110
]
105: ; preds = %102
%106 = getelementptr inbounds i8, i8* %0, i64 2
%107 = load i8, i8* %106
%108 = icmp eq i8 %107, 111
%109 = select i1 %108, i64 5, i64 0
br label %110
110: ; preds = %50, %67, %35, %35, %71, %72, %49, %39, %44, %57, %62, %73, %78, %83, %88, %32, %32, %32, %32, %32, %32, %32, %99, %102, %102, %105
%111 = phi i64 [ %109, %105 ], [ 4, %102 ], [ 4, %102 ], [ 3, %99 ], [ 3, %32 ], [ 3, %32 ], [ 3, %32 ], [ 3, %32 ], [ 3, %32 ], [ 3, %32 ], [ 3, %32 ], [ %92, %88 ], [ %87, %83 ], [ %82, %78 ], [ %77, %73 ], [ %66, %62 ], [ %61, %57 ], [ %48, %44 ], [ %43, %39 ], [ 6, %49 ], [ 5, %72 ], [ 4, %71 ], [ 5, %35 ], [ 5, %35 ], [ 3, %67 ], [ %56, %50 ]
%112 = getelementptr inbounds i8, i8* %0, i64 %111
store i8 46, i8* %112
%113 = add nuw nsw i64 %111, 1
%114 = getelementptr inbounds i8, i8* %0, i64 %113
store i8 0, i8* %114
br label %115
115: ; preds = %32, %35, %67, %110, %1, %4, %7, %10, %16, %20, %23, %26, %29
ret void
}