#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 /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ scanf(char *, int *);
int hits(int *a, int *b, int *c, int *d) {
  int START, END, ps, GSIZE, DELSIZE;
  if (*a == 0) {
    printf("**********************************************************\n");
    printf("* SORRY: Your mutant did NOT produce any BLAST hits");
    printf("\n**********************************************************\n\n");
    return 0;
  } else {
    printf("\nPlease enter the starting nucleotide position of your deleted "
           "fragment in its genome (ex. 12345): ");
    scanf("%d", &START);
    printf("\nPlease enter the ending nucleotide position of your deleted "
           "fragment in its genome (ex. 12589): ");
    scanf("%d", &END);
  }
  GSIZE = END - START + 1;
  printf("\n\nGene size: %d\n\n", GSIZE);
  while (*b == 0) {
    printf("\n**NOTE**: Your mutant contains only 1 of the fragments (LFR or "
           "RFR)!");
    if (*a > 0) {
      if (*a <= START) {
        if (*c <= START) {
          printf("\n\tYou have a LFR at %d-%d\n\n", *a, *c);
        }
        if (*c >= START) {
          printf("\nMutant contains gene sequence!\n\n");
        }
      }
      if (*a >= START && *a <= END) {
        printf("\nMutant contains gene sequence!\n\n");
      }
      if (*a && *c >= END) {
        printf("\n\tYour RFR is at %d-%d\n\n", *a, *c);
      }
    }
    return 0;
  }
  if (*c < *b) {
    if (*a < *b) {
      if (*c < *d) {
        if (*d <= START || *a >= END) {
          printf("CONGRATULATIONS! You have created a mutant with complete "
                 "gene deletion!\n\n");
        } else {
          printf(
              "\n**********************************************************\n");
          printf("Sorry: Your mutant does not have the gene deletion "
                 "desired.\n\n");
        }
      } else {
        if (*c <= START || *a >= END) {
          printf("CONGRATULATIONS! You have created a mutant with complete "
                 "gene deletion!\n\n");
        } else {
          printf(
              "\n**********************************************************\n");
          printf("Sorry: Your mutant does not have the gene deletion "
                 "desired.\n\n");
        }
      }
    } else {
      if (*c < *d) {
        if (*d <= START || *b >= END) {
          printf("CONGRATULATIONS! You have created a mutant with complete "
                 "gene deletion!\n\n");
        } else {
          printf(
              "\n**********************************************************\n");
          printf("Sorry: Your mutant does not have the gene deletion "
                 "desired.\n\n");
        }
      } else {
        if (*c <= START || *b >= END) {
          printf("CONGRATULATIONS! You have created a mutant with complete "
                 "gene deletion!\n\n");
        } else {
          printf(
              "\n**********************************************************\n");
          printf("Sorry: Your mutant does not have the gene deletion "
                 "desired.\n\n");
        }
      }
    }
  } else {
    if (*a < *b) {
      if (*c < *d) {
        if (*b <= START || *c >= END) {
          printf("CONGRATULATIONS! You have created a mutant with complete "
                 "gene deletion!\n\n");
        } else {
          printf(
              "\n**********************************************************\n");
          printf("Sorry: Your mutant does not have the gene deletion "
                 "desired.\n\n");
        }
      } else {
        if (*b <= START || *d >= END) {
          printf("CONGRATULATIONS! You have created a mutant with complete "
                 "gene deletion!\n\n");
        } else {
          printf(
              "\n**********************************************************\n");
          printf("Sorry: Your mutant does not have the gene deletion "
                 "desired.\n\n");
        }
      }
    } else {
      if (*c < *d) {
        if (*a <= START || *c >= END) {
          printf("CONGRATULATIONS! You have created a mutant with complete "
                 "gene deletion!\n\n");
        } else {
          printf(
              "\n**********************************************************\n");
          printf("Sorry: Your mutant does not have the gene deletion "
                 "desired.\n\n");
        }
      } else {
        if (*a <= START || *d >= END) {
          printf("CONGRATULATIONS! You have created a mutant with complete "
                 "gene deletion!\n\n");
        } else {
          printf(
              "\n**********************************************************\n");
          printf("Sorry: Your mutant does not have the gene deletion "
                 "desired.\n\n");
        }
      }
    }
  }
  return 0;
}


x86 assembly (clang, -O0):
<hits>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    %rcx,-0x28(%rbp)
mov    -0x10(%rbp),%rax
cmpl   $0x0,(%rax)
jne    117b <hits+0x5b>
lea    0x10e9(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xea6(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xecc(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x4(%rbp)
jmp    15fc <hits+0x4dc>
lea    0xef0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xf46(%rip),%rdi
lea    -0x2c(%rbp),%rsi
call   1040 <scanf@plt>
lea    0xf39(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xf28(%rip),%rdi
lea    -0x30(%rbp),%rsi
call   1040 <scanf@plt>
mov    -0x30(%rbp),%eax
sub    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%esi
lea    0xf6e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x18(%rbp),%rax
cmpl   $0x0,(%rax)
jne    12c9 <hits+0x1a9>
lea    0xf65(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%rax
cmpl   $0x0,(%rax)
jle    12bd <hits+0x19d>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
cmp    -0x2c(%rbp),%eax
jg     1256 <hits+0x136>
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
cmp    -0x2c(%rbp),%eax
jg     1234 <hits+0x114>
mov    -0x10(%rbp),%rax
mov    (%rax),%esi
mov    -0x20(%rbp),%rax
mov    (%rax),%edx
lea    0xf66(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
cmp    -0x2c(%rbp),%eax
jl     1251 <hits+0x131>
lea    0xf65(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1256 <hits+0x136>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
cmp    -0x2c(%rbp),%eax
jl     1282 <hits+0x162>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
cmp    -0x30(%rbp),%eax
jg     1282 <hits+0x162>
lea    0xf34(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%rax
cmpl   $0x0,(%rax)
je     12b8 <hits+0x198>
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
cmp    -0x30(%rbp),%eax
jl     12b8 <hits+0x198>
mov    -0x10(%rbp),%rax
mov    (%rax),%esi
mov    -0x20(%rbp),%rax
mov    (%rax),%edx
lea    0xf20(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    12bd <hits+0x19d>
movl   $0x0,-0x4(%rbp)
jmp    15fc <hits+0x4dc>
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    -0x18(%rbp),%rcx
cmp    (%rcx),%eax
jge    1468 <hits+0x348>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    -0x18(%rbp),%rcx
cmp    (%rcx),%eax
jge    13a8 <hits+0x288>
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    -0x28(%rbp),%rcx
cmp    (%rcx),%eax
jge    1351 <hits+0x231>
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
cmp    -0x2c(%rbp),%eax
jle    131d <hits+0x1fd>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
cmp    -0x30(%rbp),%eax
jl     1330 <hits+0x210>
lea    0xec6(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    134c <hits+0x22c>
lea    0xefd(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xf2c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    13a3 <hits+0x283>
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
cmp    -0x2c(%rbp),%eax
jle    136f <hits+0x24f>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
cmp    -0x30(%rbp),%eax
jl     1382 <hits+0x262>
lea    0xe74(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    139e <hits+0x27e>
lea    0xeab(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xeda(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    13a3 <hits+0x283>
jmp    1463 <hits+0x343>
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    -0x28(%rbp),%rcx
cmp    (%rcx),%eax
jge    140c <hits+0x2ec>
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
cmp    -0x2c(%rbp),%eax
jle    13d8 <hits+0x2b8>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
cmp    -0x30(%rbp),%eax
jl     13eb <hits+0x2cb>
lea    0xe0b(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1407 <hits+0x2e7>
lea    0xe42(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe71(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    145e <hits+0x33e>
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
cmp    -0x2c(%rbp),%eax
jle    142a <hits+0x30a>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
cmp    -0x30(%rbp),%eax
jl     143d <hits+0x31d>
lea    0xdb9(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1459 <hits+0x339>
lea    0xdf0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe1f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    145e <hits+0x33e>
jmp    1463 <hits+0x343>
jmp    15f5 <hits+0x4d5>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    -0x18(%rbp),%rcx
cmp    (%rcx),%eax
jge    1535 <hits+0x415>
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    -0x28(%rbp),%rcx
cmp    (%rcx),%eax
jge    14de <hits+0x3be>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
cmp    -0x2c(%rbp),%eax
jle    14aa <hits+0x38a>
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
cmp    -0x30(%rbp),%eax
jl     14bd <hits+0x39d>
lea    0xd39(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14d9 <hits+0x3b9>
lea    0xd70(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xd9f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1530 <hits+0x410>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
cmp    -0x2c(%rbp),%eax
jle    14fc <hits+0x3dc>
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
cmp    -0x30(%rbp),%eax
jl     150f <hits+0x3ef>
lea    0xce7(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    152b <hits+0x40b>
lea    0xd1e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xd4d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1530 <hits+0x410>
jmp    15f0 <hits+0x4d0>
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    -0x28(%rbp),%rcx
cmp    (%rcx),%eax
jge    1599 <hits+0x479>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
cmp    -0x2c(%rbp),%eax
jle    1565 <hits+0x445>
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
cmp    -0x30(%rbp),%eax
jl     1578 <hits+0x458>
lea    0xc7e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1594 <hits+0x474>
lea    0xcb5(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xce4(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    15eb <hits+0x4cb>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
cmp    -0x2c(%rbp),%eax
jle    15b7 <hits+0x497>
mov    -0x28(%rbp),%rax
mov    (%rax),%eax
cmp    -0x30(%rbp),%eax
jl     15ca <hits+0x4aa>
lea    0xc2c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    15e6 <hits+0x4c6>
lea    0xc63(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xc92(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    15eb <hits+0x4cb>
jmp    15f0 <hits+0x4d0>
jmp    15f5 <hits+0x4d5>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<hits>:
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x10,%rsp
cmpl   $0x0,(%rdi)
je     11e3 <hits+0xb3>
mov    %rcx,%r15
mov    %rdx,%r14
mov    %rsi,%r13
mov    %rdi,%r12
lea    0xedb(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xf31(%rip),%rbx
lea    0xc(%rsp),%rsi
mov    %rbx,%rdi
call   1050 <scanf@plt>
lea    0xf20(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0x8(%rsp),%rsi
mov    %rbx,%rdi
call   1050 <scanf@plt>
mov    0x8(%rsp),%esi
sub    0xc(%rsp),%esi
add    $0x1,%esi
lea    0xf5c(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x0(%r13),%edx
test   %edx,%edx
je     1209 <hits+0xd9>
mov    (%r14),%eax
mov    (%r12),%edi
mov    (%r15),%ecx
mov    0xc(%rsp),%esi
cmp    %edx,%eax
jge    129e <hits+0x16e>
cmp    %edx,%edi
jge    12b4 <hits+0x184>
cmp    %ecx,%eax
jge    12d0 <hits+0x1a0>
cmp    %esi,%ecx
jg     12d4 <hits+0x1a4>
jmp    130f <hits+0x1df>
lea    0xfa1(%rip),%rdi
call   1030 <puts@plt>
lea    0xe0a(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0x1069(%rip),%rdi
jmp    1316 <hits+0x1e6>
lea    0xeff(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    (%r12),%esi
test   %esi,%esi
jle    131b <hits+0x1eb>
mov    0xc(%rsp),%eax
cmp    %eax,%esi
jg     125b <hits+0x12b>
mov    (%r14),%edx
cmp    %eax,%edx
jg     1247 <hits+0x117>
lea    0xf1c(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    (%r14),%edx
mov    0xc(%rsp),%eax
cmp    %eax,%edx
jl     125b <hits+0x12b>
lea    0xffa(%rip),%rdi
call   1030 <puts@plt>
mov    0xc(%rsp),%eax
mov    (%r12),%esi
cmp    %eax,%esi
jl     1279 <hits+0x149>
cmp    0x8(%rsp),%esi
jg     1279 <hits+0x149>
lea    0xfdc(%rip),%rdi
call   1030 <puts@plt>
mov    (%r12),%esi
test   %esi,%esi
je     131b <hits+0x1eb>
mov    (%r14),%edx
cmp    0x8(%rsp),%edx
jl     131b <hits+0x1eb>
lea    0xedc(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
jmp    131b <hits+0x1eb>
cmp    %edx,%edi
jge    12be <hits+0x18e>
mov    0x8(%rsp),%edi
cmp    %ecx,%eax
jge    12dc <hits+0x1ac>
cmp    %esi,%edx
jle    130f <hits+0x1df>
cmp    %edi,%eax
jl     12fa <hits+0x1ca>
jmp    130f <hits+0x1df>
cmp    %ecx,%eax
jge    12e6 <hits+0x1b6>
cmp    %esi,%ecx
jg     12ea <hits+0x1ba>
jmp    130f <hits+0x1df>
mov    0x8(%rsp),%edx
cmp    %ecx,%eax
jge    12f2 <hits+0x1c2>
cmp    %esi,%edi
jle    130f <hits+0x1df>
cmp    %edx,%eax
jl     12fa <hits+0x1ca>
jmp    130f <hits+0x1df>
cmp    %esi,%eax
jle    130f <hits+0x1df>
cmp    0x8(%rsp),%edi
jl     12fa <hits+0x1ca>
jmp    130f <hits+0x1df>
cmp    %esi,%edx
jle    130f <hits+0x1df>
cmp    %edi,%ecx
jl     12fa <hits+0x1ca>
jmp    130f <hits+0x1df>
cmp    %esi,%eax
jle    130f <hits+0x1df>
cmp    0x8(%rsp),%edx
jl     12fa <hits+0x1ca>
jmp    130f <hits+0x1df>
cmp    %esi,%edi
jle    130f <hits+0x1df>
cmp    %edx,%ecx
jge    130f <hits+0x1df>
lea    0xe89(%rip),%rdi
call   1030 <puts@plt>
lea    0xeb9(%rip),%rdi
jmp    1316 <hits+0x1e6>
lea    0xeed(%rip),%rdi
call   1030 <puts@plt>
xor    %eax,%eax
add    $0x10,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
@.str = [60 x i8] c"**********************************************************\0A\00"
@.str.1 = [52 x i8] c"* SORRY: Your mutant did NOT produce any BLAST hits\00"
@.str.2 = [62 x i8] c"\0A**********************************************************\0A\0A\00"
@.str.3 = [100 x i8] c"\0APlease enter the starting nucleotide position of your deleted fragment in its genome (ex. 12345): \00"
@.str.4 = [3 x i8] c"%d\00"
@.str.5 = [98 x i8] c"\0APlease enter the ending nucleotide position of your deleted fragment in its genome (ex. 12589): \00"
@.str.6 = [18 x i8] c"\0A\0AGene size: %d\0A\0A\00"
@.str.7 = [70 x i8] c"\0A**NOTE**: Your mutant contains only 1 of the fragments (LFR or RFR)!\00"
@.str.8 = [28 x i8] c"\0A\09You have a LFR at %d-%d\0A\0A\00"
@.str.9 = [34 x i8] c"\0AMutant contains gene sequence!\0A\0A\00"
@.str.10 = [25 x i8] c"\0A\09Your RFR is at %d-%d\0A\0A\00"
@.str.11 = [74 x i8] c"CONGRATULATIONS! You have created a mutant with complete gene deletion!\0A\0A\00"
@.str.12 = [61 x i8] c"\0A**********************************************************\0A\00"
@.str.13 = [62 x i8] c"Sorry: Your mutant does not have the gene deletion desired.\0A\0A\00"
define i32 @hits(i32* %0, i32* %1, i32* %2, i32* %3) {
%5 = alloca i32
%6 = alloca i32*
%7 = alloca i32*
%8 = alloca i32*
%9 = alloca i32*
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
store i32* %0, i32** %6
store i32* %1, i32** %7
store i32* %2, i32** %8
store i32* %3, i32** %9
%15 = load i32*, i32** %6
%16 = load i32, i32* %15
%17 = icmp eq i32 %16, 0
br i1 %17, label %18, label %22
18: ; preds = %4
%19 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str, i64 0, i64 0))
%20 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.1, i64 0, i64 0))
%21 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.2, i64 0, i64 0))
store i32 0, i32* %5
br label %273
22: ; preds = %4
%23 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([100 x i8], [100 x i8]* @.str.3, i64 0, i64 0))
%24 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %10)
%25 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([98 x i8], [98 x i8]* @.str.5, i64 0, i64 0))
%26 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %11)
br label %27
27: ; preds = %22
%28 = load i32, i32* %11
%29 = load i32, i32* %10
%30 = sub nsw i32 %28, %29
%31 = add nsw i32 %30, 1
store i32 %31, i32* %13
%32 = load i32, i32* %13
%33 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.6, i64 0, i64 0), i32 %32)
br label %34
34: ; preds = %27
%35 = load i32*, i32** %7
%36 = load i32, i32* %35
%37 = icmp eq i32 %36, 0
br i1 %37, label %38, label %96
38: ; preds = %34
%39 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([70 x i8], [70 x i8]* @.str.7, i64 0, i64 0))
%40 = load i32*, i32** %6
%41 = load i32, i32* %40
%42 = icmp sgt i32 %41, 0
br i1 %42, label %43, label %95
43: ; preds = %38
%44 = load i32*, i32** %6
%45 = load i32, i32* %44
%46 = load i32, i32* %10
%47 = icmp sle i32 %45, %46
br i1 %47, label %48, label %67
48: ; preds = %43
%49 = load i32*, i32** %8
%50 = load i32, i32* %49
%51 = load i32, i32* %10
%52 = icmp sle i32 %50, %51
br i1 %52, label %53, label %59
53: ; preds = %48
%54 = load i32*, i32** %6
%55 = load i32, i32* %54
%56 = load i32*, i32** %8
%57 = load i32, i32* %56
%58 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.8, i64 0, i64 0), i32 %55, i32 %57)
br label %59
59: ; preds = %53, %48
%60 = load i32*, i32** %8
%61 = load i32, i32* %60
%62 = load i32, i32* %10
%63 = icmp sge i32 %61, %62
br i1 %63, label %64, label %66
64: ; preds = %59
%65 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.9, i64 0, i64 0))
br label %66
66: ; preds = %64, %59
br label %67
67: ; preds = %66, %43
%68 = load i32*, i32** %6
%69 = load i32, i32* %68
%70 = load i32, i32* %10
%71 = icmp sge i32 %69, %70
br i1 %71, label %72, label %79
72: ; preds = %67
%73 = load i32*, i32** %6
%74 = load i32, i32* %73
%75 = load i32, i32* %11
%76 = icmp sle i32 %74, %75
br i1 %76, label %77, label %79
77: ; preds = %72
%78 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.9, i64 0, i64 0))
br label %79
79: ; preds = %77, %72, %67
%80 = load i32*, i32** %6
%81 = load i32, i32* %80
%82 = icmp ne i32 %81, 0
br i1 %82, label %83, label %94
83: ; preds = %79
%84 = load i32*, i32** %8
%85 = load i32, i32* %84
%86 = load i32, i32* %11
%87 = icmp sge i32 %85, %86
br i1 %87, label %88, label %94
88: ; preds = %83
%89 = load i32*, i32** %6
%90 = load i32, i32* %89
%91 = load i32*, i32** %8
%92 = load i32, i32* %91
%93 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.10, i64 0, i64 0), i32 %90, i32 %92)
br label %94
94: ; preds = %88, %83, %79
br label %95
95: ; preds = %94, %38
store i32 0, i32* %5
br label %273
96: ; preds = %34
%97 = load i32*, i32** %8
%98 = load i32, i32* %97
%99 = load i32*, i32** %7
%100 = load i32, i32* %99
%101 = icmp slt i32 %98, %100
br i1 %101, label %102, label %187
102: ; preds = %96
%103 = load i32*, i32** %6
%104 = load i32, i32* %103
%105 = load i32*, i32** %7
%106 = load i32, i32* %105
%107 = icmp slt i32 %104, %106
br i1 %107, label %108, label %147
108: ; preds = %102
%109 = load i32*, i32** %8
%110 = load i32, i32* %109
%111 = load i32*, i32** %9
%112 = load i32, i32* %111
%113 = icmp slt i32 %110, %112
br i1 %113, label %114, label %130
114: ; preds = %108
%115 = load i32*, i32** %9
%116 = load i32, i32* %115
%117 = load i32, i32* %10
%118 = icmp sle i32 %116, %117
br i1 %118, label %124, label %119
119: ; preds = %114
%120 = load i32*, i32** %6
%121 = load i32, i32* %120
%122 = load i32, i32* %11
%123 = icmp sge i32 %121, %122
br i1 %123, label %124, label %126
124: ; preds = %119, %114
%125 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([74 x i8], [74 x i8]* @.str.11, i64 0, i64 0))
br label %129
126: ; preds = %119
%127 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.12, i64 0, i64 0))
%128 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.13, i64 0, i64 0))
br label %129
129: ; preds = %126, %124
br label %146
130: ; preds = %108
%131 = load i32*, i32** %8
%132 = load i32, i32* %131
%133 = load i32, i32* %10
%134 = icmp sle i32 %132, %133
br i1 %134, label %140, label %135
135: ; preds = %130
%136 = load i32*, i32** %6
%137 = load i32, i32* %136
%138 = load i32, i32* %11
%139 = icmp sge i32 %137, %138
br i1 %139, label %140, label %142
140: ; preds = %135, %130
%141 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([74 x i8], [74 x i8]* @.str.11, i64 0, i64 0))
br label %145
142: ; preds = %135
%143 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.12, i64 0, i64 0))
%144 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.13, i64 0, i64 0))
br label %145
145: ; preds = %142, %140
br label %146
146: ; preds = %145, %129
br label %186
147: ; preds = %102
%148 = load i32*, i32** %8
%149 = load i32, i32* %148
%150 = load i32*, i32** %9
%151 = load i32, i32* %150
%152 = icmp slt i32 %149, %151
br i1 %152, label %153, label %169
153: ; preds = %147
%154 = load i32*, i32** %9
%155 = load i32, i32* %154
%156 = load i32, i32* %10
%157 = icmp sle i32 %155, %156
br i1 %157, label %163, label %158
158: ; preds = %153
%159 = load i32*, i32** %7
%160 = load i32, i32* %159
%161 = load i32, i32* %11
%162 = icmp sge i32 %160, %161
br i1 %162, label %163, label %165
163: ; preds = %158, %153
%164 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([74 x i8], [74 x i8]* @.str.11, i64 0, i64 0))
br label %168
165: ; preds = %158
%166 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.12, i64 0, i64 0))
%167 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.13, i64 0, i64 0))
br label %168
168: ; preds = %165, %163
br label %185
169: ; preds = %147
%170 = load i32*, i32** %8
%171 = load i32, i32* %170
%172 = load i32, i32* %10
%173 = icmp sle i32 %171, %172
br i1 %173, label %179, label %174
174: ; preds = %169
%175 = load i32*, i32** %7
%176 = load i32, i32* %175
%177 = load i32, i32* %11
%178 = icmp sge i32 %176, %177
br i1 %178, label %179, label %181
179: ; preds = %174, %169
%180 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([74 x i8], [74 x i8]* @.str.11, i64 0, i64 0))
br label %184
181: ; preds = %174
%182 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.12, i64 0, i64 0))
%183 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.13, i64 0, i64 0))
br label %184
184: ; preds = %181, %179
br label %185
185: ; preds = %184, %168
br label %186
186: ; preds = %185, %146
br label %272
187: ; preds = %96
%188 = load i32*, i32** %6
%189 = load i32, i32* %188
%190 = load i32*, i32** %7
%191 = load i32, i32* %190
%192 = icmp slt i32 %189, %191
br i1 %192, label %193, label %232
193: ; preds = %187
%194 = load i32*, i32** %8
%195 = load i32, i32* %194
%196 = load i32*, i32** %9
%197 = load i32, i32* %196
%198 = icmp slt i32 %195, %197
br i1 %198, label %199, label %215
199: ; preds = %193
%200 = load i32*, i32** %7
%201 = load i32, i32* %200
%202 = load i32, i32* %10
%203 = icmp sle i32 %201, %202
br i1 %203, label %209, label %204
204: ; preds = %199
%205 = load i32*, i32** %8
%206 = load i32, i32* %205
%207 = load i32, i32* %11
%208 = icmp sge i32 %206, %207
br i1 %208, label %209, label %211
209: ; preds = %204, %199
%210 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([74 x i8], [74 x i8]* @.str.11, i64 0, i64 0))
br label %214
211: ; preds = %204
%212 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.12, i64 0, i64 0))
%213 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.13, i64 0, i64 0))
br label %214
214: ; preds = %211, %209
br label %231
215: ; preds = %193
%216 = load i32*, i32** %7
%217 = load i32, i32* %216
%218 = load i32, i32* %10
%219 = icmp sle i32 %217, %218
br i1 %219, label %225, label %220
220: ; preds = %215
%221 = load i32*, i32** %9
%222 = load i32, i32* %221
%223 = load i32, i32* %11
%224 = icmp sge i32 %222, %223
br i1 %224, label %225, label %227
225: ; preds = %220, %215
%226 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([74 x i8], [74 x i8]* @.str.11, i64 0, i64 0))
br label %230
227: ; preds = %220
%228 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.12, i64 0, i64 0))
%229 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.13, i64 0, i64 0))
br label %230
230: ; preds = %227, %225
br label %231
231: ; preds = %230, %214
br label %271
232: ; preds = %187
%233 = load i32*, i32** %8
%234 = load i32, i32* %233
%235 = load i32*, i32** %9
%236 = load i32, i32* %235
%237 = icmp slt i32 %234, %236
br i1 %237, label %238, label %254
238: ; preds = %232
%239 = load i32*, i32** %6
%240 = load i32, i32* %239
%241 = load i32, i32* %10
%242 = icmp sle i32 %240, %241
br i1 %242, label %248, label %243
243: ; preds = %238
%244 = load i32*, i32** %8
%245 = load i32, i32* %244
%246 = load i32, i32* %11
%247 = icmp sge i32 %245, %246
br i1 %247, label %248, label %250
248: ; preds = %243, %238
%249 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([74 x i8], [74 x i8]* @.str.11, i64 0, i64 0))
br label %253
250: ; preds = %243
%251 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.12, i64 0, i64 0))
%252 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.13, i64 0, i64 0))
br label %253
253: ; preds = %250, %248
br label %270
254: ; preds = %232
%255 = load i32*, i32** %6
%256 = load i32, i32* %255
%257 = load i32, i32* %10
%258 = icmp sle i32 %256, %257
br i1 %258, label %264, label %259
259: ; preds = %254
%260 = load i32*, i32** %9
%261 = load i32, i32* %260
%262 = load i32, i32* %11
%263 = icmp sge i32 %261, %262
br i1 %263, label %264, label %266
264: ; preds = %259, %254
%265 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([74 x i8], [74 x i8]* @.str.11, i64 0, i64 0))
br label %269
266: ; preds = %259
%267 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.12, i64 0, i64 0))
%268 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.13, i64 0, i64 0))
br label %269
269: ; preds = %266, %264
br label %270
270: ; preds = %269, %253
br label %271
271: ; preds = %270, %231
br label %272
272: ; preds = %271, %186
store i32 0, i32* %5
br label %273
273: ; preds = %272, %95, %18
%274 = load i32, i32* %5
ret i32 %274
}

LLVM IR (-O2):
@.str.1 = [52 x i8] c"* SORRY: Your mutant did NOT produce any BLAST hits\00"
@.str.3 = [100 x i8] c"\0APlease enter the starting nucleotide position of your deleted fragment in its genome (ex. 12345): \00"
@.str.4 = [3 x i8] c"%d\00"
@.str.5 = [98 x i8] c"\0APlease enter the ending nucleotide position of your deleted fragment in its genome (ex. 12589): \00"
@.str.6 = [18 x i8] c"\0A\0AGene size: %d\0A\0A\00"
@.str.7 = [70 x i8] c"\0A**NOTE**: Your mutant contains only 1 of the fragments (LFR or RFR)!\00"
@.str.8 = [28 x i8] c"\0A\09You have a LFR at %d-%d\0A\0A\00"
@.str.10 = [25 x i8] c"\0A\09Your RFR is at %d-%d\0A\0A\00"
@str.34 = [60 x i8] c"\0A**********************************************************\00"
@str.35 = [61 x i8] c"Sorry: Your mutant does not have the gene deletion desired.\0A\00"
@str.36 = [73 x i8] c"CONGRATULATIONS! You have created a mutant with complete gene deletion!\0A\00"
@str.38 = [33 x i8] c"\0AMutant contains gene sequence!\0A\00"
@str.39 = [59 x i8] c"**********************************************************\00"
@str.40 = [61 x i8] c"\0A**********************************************************\0A\00"
define i32 @hits(i32* nocapture %0, i32* nocapture %1, i32* nocapture %2, i32* nocapture %3) {
%5 = alloca i32
%6 = alloca i32
%7 = bitcast i32* %5 to i8*
%8 = bitcast i32* %6 to i8*
%9 = load i32, i32* %0
%10 = icmp eq i32 %9, 0
br i1 %10, label %11, label %15
11: ; preds = %4
%12 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([59 x i8], [59 x i8]* @str.39, i64 0, i64 0))
%13 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @.str.1, i64 0, i64 0))
%14 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([61 x i8], [61 x i8]* @str.40, i64 0, i64 0))
br label %157
15: ; preds = %4
%16 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([100 x i8], [100 x i8]* @.str.3, i64 0, i64 0))
%17 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %5)
%18 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([98 x i8], [98 x i8]* @.str.5, i64 0, i64 0))
%19 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %6)
%20 = load i32, i32* %6
%21 = load i32, i32* %5
%22 = add i32 %20, 1
%23 = sub i32 %22, %21
%24 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.6, i64 0, i64 0), i32 %23)
%25 = load i32, i32* %1
%26 = icmp eq i32 %25, 0
br i1 %26, label %27, label %67
27: ; preds = %15
%28 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([70 x i8], [70 x i8]* @.str.7, i64 0, i64 0))
%29 = load i32, i32* %0
%30 = icmp sgt i32 %29, 0
br i1 %30, label %31, label %157
31: ; preds = %27
%32 = load i32, i32* %5
%33 = icmp sgt i32 %29, %32
br i1 %33, label %48, label %34
34: ; preds = %31
%35 = load i32, i32* %2
%36 = icmp sgt i32 %35, %32
br i1 %36, label %41, label %37
37: ; preds = %34
%38 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.8, i64 0, i64 0), i32 %29, i32 %35)
%39 = load i32, i32* %2
%40 = load i32, i32* %5
br label %41
41: ; preds = %37, %34
%42 = phi i32 [ %40, %37 ], [ %32, %34 ]
%43 = phi i32 [ %39, %37 ], [ %35, %34 ]
%44 = icmp slt i32 %43, %42
br i1 %44, label %48, label %45
45: ; preds = %41
%46 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @str.38, i64 0, i64 0))
%47 = load i32, i32* %5
br label %48
48: ; preds = %41, %45, %31
%49 = phi i32 [ %42, %41 ], [ %47, %45 ], [ %32, %31 ]
%50 = load i32, i32* %0
%51 = icmp slt i32 %50, %49
%52 = load i32, i32* %6
%53 = icmp sgt i32 %50, %52
%54 = select i1 %51, i1 true, i1 %53
br i1 %54, label %58, label %55
55: ; preds = %48
%56 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @str.38, i64 0, i64 0))
%57 = load i32, i32* %0
br label %58
58: ; preds = %55, %48
%59 = phi i32 [ %57, %55 ], [ %50, %48 ]
%60 = icmp eq i32 %59, 0
br i1 %60, label %157, label %61
61: ; preds = %58
%62 = load i32, i32* %2
%63 = load i32, i32* %6
%64 = icmp slt i32 %62, %63
br i1 %64, label %157, label %65
65: ; preds = %61
%66 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([25 x i8], [25 x i8]* @.str.10, i64 0, i64 0), i32 %59, i32 %62)
br label %157
67: ; preds = %15
%68 = load i32, i32* %2
%69 = icmp slt i32 %68, %25
%70 = load i32, i32* %0
%71 = icmp slt i32 %70, %25
%72 = load i32, i32* %3
%73 = icmp slt i32 %68, %72
%74 = load i32, i32* %5
br i1 %69, label %75, label %118
75: ; preds = %67
br i1 %71, label %76, label %97
76: ; preds = %75
br i1 %73, label %77, label %87
77: ; preds = %76
%78 = icmp sgt i32 %72, %74
%79 = load i32, i32* %6
%80 = icmp slt i32 %70, %79
%81 = select i1 %78, i1 %80, i1 false
br i1 %81, label %84, label %82
82: ; preds = %77
%83 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([73 x i8], [73 x i8]* @str.36, i64 0, i64 0))
br label %157
84: ; preds = %77
%85 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([60 x i8], [60 x i8]* @str.34, i64 0, i64 0))
%86 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([61 x i8], [61 x i8]* @str.35, i64 0, i64 0))
br label %157
87: ; preds = %76
%88 = icmp sgt i32 %68, %74
%89 = load i32, i32* %6
%90 = icmp slt i32 %70, %89
%91 = select i1 %88, i1 %90, i1 false
br i1 %91, label %94, label %92
92: ; preds = %87
%93 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([73 x i8], [73 x i8]* @str.36, i64 0, i64 0))
br label %157
94: ; preds = %87
%95 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([60 x i8], [60 x i8]* @str.34, i64 0, i64 0))
%96 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([61 x i8], [61 x i8]* @str.35, i64 0, i64 0))
br label %157
97: ; preds = %75
br i1 %73, label %98, label %108
98: ; preds = %97
%99 = icmp sgt i32 %72, %74
%100 = load i32, i32* %6
%101 = icmp slt i32 %25, %100
%102 = select i1 %99, i1 %101, i1 false
br i1 %102, label %105, label %103
103: ; preds = %98
%104 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([73 x i8], [73 x i8]* @str.36, i64 0, i64 0))
br label %157
105: ; preds = %98
%106 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([60 x i8], [60 x i8]* @str.34, i64 0, i64 0))
%107 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([61 x i8], [61 x i8]* @str.35, i64 0, i64 0))
br label %157
108: ; preds = %97
%109 = icmp sgt i32 %68, %74
%110 = load i32, i32* %6
%111 = icmp slt i32 %25, %110
%112 = select i1 %109, i1 %111, i1 false
br i1 %112, label %115, label %113
113: ; preds = %108
%114 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([73 x i8], [73 x i8]* @str.36, i64 0, i64 0))
br label %157
115: ; preds = %108
%116 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([60 x i8], [60 x i8]* @str.34, i64 0, i64 0))
%117 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([61 x i8], [61 x i8]* @str.35, i64 0, i64 0))
br label %157
118: ; preds = %67
br i1 %71, label %119, label %138
119: ; preds = %118
%120 = icmp sgt i32 %25, %74
%121 = load i32, i32* %6
br i1 %73, label %122, label %130
122: ; preds = %119
%123 = icmp slt i32 %68, %121
%124 = select i1 %120, i1 %123, i1 false
br i1 %124, label %127, label %125
125: ; preds = %122
%126 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([73 x i8], [73 x i8]* @str.36, i64 0, i64 0))
br label %157
127: ; preds = %122
%128 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([60 x i8], [60 x i8]* @str.34, i64 0, i64 0))
%129 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([61 x i8], [61 x i8]* @str.35, i64 0, i64 0))
br label %157
130: ; preds = %119
%131 = icmp slt i32 %72, %121
%132 = select i1 %120, i1 %131, i1 false
br i1 %132, label %135, label %133
133: ; preds = %130
%134 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([73 x i8], [73 x i8]* @str.36, i64 0, i64 0))
br label %157
135: ; preds = %130
%136 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([60 x i8], [60 x i8]* @str.34, i64 0, i64 0))
%137 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([61 x i8], [61 x i8]* @str.35, i64 0, i64 0))
br label %157
138: ; preds = %118
%139 = icmp sgt i32 %70, %74
%140 = load i32, i32* %6
br i1 %73, label %141, label %149
141: ; preds = %138
%142 = icmp slt i32 %68, %140
%143 = select i1 %139, i1 %142, i1 false
br i1 %143, label %146, label %144
144: ; preds = %141
%145 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([73 x i8], [73 x i8]* @str.36, i64 0, i64 0))
br label %157
146: ; preds = %141
%147 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([60 x i8], [60 x i8]* @str.34, i64 0, i64 0))
%148 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([61 x i8], [61 x i8]* @str.35, i64 0, i64 0))
br label %157
149: ; preds = %138
%150 = icmp slt i32 %72, %140
%151 = select i1 %139, i1 %150, i1 false
br i1 %151, label %154, label %152
152: ; preds = %149
%153 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([73 x i8], [73 x i8]* @str.36, i64 0, i64 0))
br label %157
154: ; preds = %149
%155 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([60 x i8], [60 x i8]* @str.34, i64 0, i64 0))
%156 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([61 x i8], [61 x i8]* @str.35, i64 0, i64 0))
br label %157
157: ; preds = %105, %103, %115, %113, %84, %82, %94, %92, %146, %144, %154, %152, %127, %125, %135, %133, %27, %65, %61, %58, %11
ret i32 0
}