void main() {
  char first1[20], last1[20], first2[20], last2[20], first3[20], last3[20];
  char pass1[6], pass2[6], pass3[6];
  char firstc[20], lastc[20], passc[6];
  int val1 = 0, val2 = 0, val3 = 0;
  int change;
  char acc1 = 0, acc2 = 0, acc3 = 0;
  int curacc, curval;
  int accountloop = 1;
  int accountcmd = -1;
  int actionloop;
  int actioncmd = -1;
  int request;
  int accr;
  char let;
  printf("----------\n");
  printf("Welcome to bank.c!\n");
  printf("----------\n");
  sleep((unsigned int)2);
  while (accountloop == 1) {
    sleep((unsigned int)4);
    clrscr();
    printf("----------\n");
    curacc = 0;
    for (accountcmd = -1; accountcmd <= 0;) {
      printf("Enter 1 to log in.\n");
      printf("Enter 2 to create an account.\n");
      printf("Enter 3 to end the program.\n");
      scanf("%d", &accountcmd);
    }
    if (accountcmd == 1) {
      printf("----------\n");
      printf("~Login~\n");
      printf("----------\n");
      printf("First Name: ");
      request = 0;
      getchar();
      while (((let = getchar()) != '\n') && (request < 20)) {
        firstc[request] = let;
        request += 1;
      }
      firstc[request] = '\0';
      if (request >= 20)
        while ((let = getchar()) != '\n') {
        }
      printf("Last Name: ");
      request = 0;
      while (((let = getchar()) != '\n') && (request < 20)) {
        lastc[request] = let;
        request += 1;
      }
      lastc[request] = '\0';
      if (request >= 20)
        while ((let = getchar()) != '\n') {
        }
      printf("Password: ");
      request = 0;
      while (request < 6) {
        while (((let = getchar()) == '\n') || (isalnum(let) == 0)) {
        }
        passc[request] = let;
        request += 1;
      }
      lastc[request] = '\0';
      if (request >= 6)
        while ((let = getchar()) != '\n') {
        }
      else
        let = getchar();
      if ((strcmp(firstc, first1) == 0) && (strcmp(lastc, last1) == 0) &&
          (strcmp(passc, pass1) == 0)) {
        curacc = 1;
        curval = val1;
      } else if ((strcmp(firstc, first2) == 0) && (strcmp(lastc, last2) == 0) &&
                 (strcmp(passc, pass2) == 0)) {
        curacc = 2;
        curval = val2;
      } else if ((strcmp(firstc, first3) == 0) && (strcmp(lastc, last3) == 0) &&
                 (strcmp(passc, pass3) == 0)) {
        curacc = 3;
        curval = val3;
      }
      if ((curacc > 0) && (curacc < 4)) {
        printf("----------\n");
        printf("Login sucessful!\n");
        printf("----------\n");
        actionloop = 1;
        while (actionloop == 1) {
          sleep((unsigned int)4);
          clrscr();
          if (curacc == 1)
            curval = val1;
          else if (curacc == 2)
            curval = val2;
          else if (curacc == 3)
            curval = val3;
          printf("----------\n");
          printf("Account #%d\n", curacc);
          if (curacc == 1)
            printf("%s %s", first1, last1);
          else if (curacc == 2)
            printf("%s %s", first2, last2);
          else if (curacc == 3)
            printf("%s %s", first3, last3);
          printf("\nBallance: $%d\n", curval);
          printf("----------\n");
          for (actioncmd = -1; actioncmd <= 0;) {
            printf("Enter 1 to log out.\n");
            printf("Enter 2 to deposit money to your account.\n");
            printf("Enter 3 to retrieve money from your account.\n");
            printf("Enter 4 to transfer money to another account.\n");
            scanf("%d", &actioncmd);
          }
          if (actioncmd == 1) {
            actionloop = 0;
          } else if (actioncmd == 2) {
            for (change = -1; change < 0;) {
              printf("----------\n");
              printf("Deposit: ");
              scanf("%d", &change);
            }
            if (curacc == 1)
              val1 += change;
            else if (curacc == 2)
              val2 += change;
            else if (curacc == 3)
              val3 += change;
          } else if (actioncmd == 3) {
            for (change = -1; (change < 0) || ((curval - abs(change)) < 0);) {
              printf("----------\n");
              printf("Retrieve: ");
              scanf("%d", &change);
            }
            if (curacc == 1)
              val1 -= change;
            else if (curacc == 2)
              val2 -= change;
            else if (curacc == 3)
              val3 -= change;
          } else if (actioncmd == 4) {
            for (change = -1; (change < 0) || ((curval - abs(change)) < 0);) {
              printf("----------\n");
              printf("Tranfer: ");
              scanf("%d", &change);
            }
            for (accr = -1; (accr < 0) || (accr > 4) || (accr == curacc);) {
              printf("----------\n");
              printf("To account: ");
              scanf("%d", &accr);
            }
            printf("----------\n");
            if (((accr == 1) && (acc1 == 1)) || ((accr == 2) && (acc2 == 1)) ||
                ((accr == 3) && (acc3 == 1))) {
              if (curacc == 1) {
                val1 -= change;
                printf("Acc #1: %d\n", val1);
              } else if (curacc == 2) {
                val2 -= change;
                printf("Acc #2: %d\n", val2);
              } else if (curacc == 3) {
                val3 -= change;
                printf("Acc #3: %d\n", val3);
              }
              if (accr == 1) {
                val1 += change;
                printf("Acc #1: %d\n", val1);
              } else if (accr == 2) {
                val2 += change;
                printf("Acc #2: %d\n", val2);
              } else if (accr == 3) {
                val3 += change;
                printf("Acc #3: %d\n", val3);
              }
            } else {
              printf("The specified account does not exist.");
            }
          }
        }
      } else {
        printf("An account with that first name, last name, and password does "
               "not exist.\n");
      }
      printf("----------\n");
    } else if (accountcmd == 2) {
      printf("----------\n");
      printf("~New Account~\n");
      printf("----------\n");
      printf("First Name: ");
      request = 0;
      getchar();
      while (((let = getchar()) != '\n') && (request < 20)) {
        firstc[request] = let;
        request += 1;
      }
      firstc[request] = '\0';
      if (request >= 20)
        while ((let = getchar()) != '\n') {
        }
      printf("Last Name: ");
      request = 0;
      while (((let = getchar()) != '\n') && (request < 20)) {
        lastc[request] = let;
        request += 1;
      }
      lastc[request] = '\0';
      if (request >= 20)
        while ((let = getchar()) != '\n') {
        }
      printf("Password: ");
      request = 0;
      while (request < 6) {
        while (((let = getchar()) == '\n') || (isalnum(let) == 0)) {
        }
        passc[request] = let;
        request += 1;
      }
      lastc[request] = '\0';
      if (request >= 6)
        while ((let = getchar()) != '\n') {
        }
      else
        let = getchar();
      if (acc1 == 0) {
        strcpy(first1, firstc);
        strcpy(last1, lastc);
        strcpy(pass1, passc);
        acc1 = 1;
      } else if (acc2 == 0) {
        strcpy(first2, firstc);
        strcpy(last2, lastc);
        strcpy(pass2, passc);
        acc2 = 1;
      } else if (acc3 == 0) {
        strcpy(first3, firstc);
        strcpy(last3, lastc);
        strcpy(pass3, passc);
        acc3 = 1;
      } else {
        printf("Sorry, there are no more accounts availible.\n");
      }
      printf("----------\n");
    } else if (accountcmd == 3) {
      printf("----------\n");
      accountloop = 0;
    }
  }
  printf("-------------------------");
  printf("\n|First\t|Last\t|Value\t|");
  printf("\n-------------------------");
  if (acc1 == 1) {
    printf("\n|%s\t|%s\t|%d\t|", first1, last1, val1);
  }
  if (acc2 == 1) {
    printf("\n|%s\t|%s\t|%d\t|", first2, last2, val2);
  }
  if (acc3 == 1) {
    printf("\n|%s\t|%s\t|%d\t|", first3, last3, val3);
  }
  printf("\n-------------------------");
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x170,%rsp
movl   $0x0,-0x11c(%rbp)
movl   $0x0,-0x120(%rbp)
movl   $0x0,-0x124(%rbp)
movb   $0x0,-0x129(%rbp)
movb   $0x0,-0x12a(%rbp)
movb   $0x0,-0x12b(%rbp)
movl   $0x1,-0x138(%rbp)
movl   $0xffffffff,-0x13c(%rbp)
ff ff ff
movl   $0xffffffff,-0x144(%rbp)
ff ff ff
lea    0x1e0d(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1e0b(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1df1(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    $0x2,%edi
mov    $0x0,%al
call   10b0 <sleep@plt>
cmpl   $0x1,-0x138(%rbp)
jne    2223 <main+0x1093>
mov    $0x4,%edi
mov    $0x0,%al
call   10b0 <sleep@plt>
mov    $0x0,%al
call   1030 <clrscr@plt>
lea    0x1db7(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x0,-0x130(%rbp)
movl   $0xffffffff,-0x13c(%rbp)
ff ff ff
cmpl   $0x0,-0x13c(%rbp)
jg     12b5 <main+0x125>
lea    0x1da8(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1dae(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1dbf(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1dce(%rip),%rdi
lea    -0x13c(%rbp),%rsi
mov    $0x0,%al
call   10a0 <scanf@plt>
jmp    1264 <main+0xd4>
cmpl   $0x1,-0x13c(%rbp)
jne    1e0f <main+0xc7f>
lea    0x1d37(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1d9c(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1d1b(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1d89(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x0,-0x148(%rbp)
mov    $0x0,%al
call   1090 <getchar@plt>
mov    $0x0,%al
call   1090 <getchar@plt>
mov    %al,-0x14d(%rbp)
movsbl %al,%ecx
xor    %eax,%eax
cmp    $0xa,%ecx
mov    %al,-0x14e(%rbp)
je     133c <main+0x1ac>
cmpl   $0x14,-0x148(%rbp)
setl   %al
mov    %al,-0x14e(%rbp)
mov    -0x14e(%rbp),%al
test   $0x1,%al
jne    134f <main+0x1bf>
jmp    1377 <main+0x1e7>
mov    -0x14d(%rbp),%cl
movslq -0x148(%rbp),%rax
mov    %cl,-0xf0(%rbp,%rax,1)
mov    -0x148(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x148(%rbp)
jmp    130b <main+0x17b>
movslq -0x148(%rbp),%rax
movb   $0x0,-0xf0(%rbp,%rax,1)
cmpl   $0x14,-0x148(%rbp)
jl     13bb <main+0x22b>
jmp    1398 <main+0x208>
mov    $0x0,%al
call   1090 <getchar@plt>
mov    %al,-0x14d(%rbp)
movsbl %al,%eax
cmp    $0xa,%eax
je     13b6 <main+0x226>
jmp    1398 <main+0x208>
jmp    13bb <main+0x22b>
lea    0x1cc7(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x0,-0x148(%rbp)
mov    $0x0,%al
call   1090 <getchar@plt>
mov    %al,-0x14d(%rbp)
movsbl %al,%ecx
xor    %eax,%eax
cmp    $0xa,%ecx
mov    %al,-0x14f(%rbp)
je     1404 <main+0x274>
cmpl   $0x14,-0x148(%rbp)
setl   %al
mov    %al,-0x14f(%rbp)
mov    -0x14f(%rbp),%al
test   $0x1,%al
jne    1417 <main+0x287>
jmp    143f <main+0x2af>
mov    -0x14d(%rbp),%cl
movslq -0x148(%rbp),%rax
mov    %cl,-0x110(%rbp,%rax,1)
mov    -0x148(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x148(%rbp)
jmp    13d3 <main+0x243>
movslq -0x148(%rbp),%rax
movb   $0x0,-0x110(%rbp,%rax,1)
cmpl   $0x14,-0x148(%rbp)
jl     1483 <main+0x2f3>
jmp    1460 <main+0x2d0>
mov    $0x0,%al
call   1090 <getchar@plt>
mov    %al,-0x14d(%rbp)
movsbl %al,%eax
cmp    $0xa,%eax
je     147e <main+0x2ee>
jmp    1460 <main+0x2d0>
jmp    1483 <main+0x2f3>
lea    0x1c0b(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x0,-0x148(%rbp)
cmpl   $0x6,-0x148(%rbp)
jge    1526 <main+0x396>
jmp    14ad <main+0x31d>
mov    $0x0,%al
call   1090 <getchar@plt>
mov    %al,-0x14d(%rbp)
movsbl %al,%ecx
mov    $0x1,%al
cmp    $0xa,%ecx
mov    %al,-0x150(%rbp)
je     14e6 <main+0x356>
movsbl -0x14d(%rbp),%edi
call   1070 <isalnum@plt>
cmp    $0x0,%eax
sete   %al
mov    %al,-0x150(%rbp)
mov    -0x150(%rbp),%al
test   $0x1,%al
jne    14f9 <main+0x369>
jmp    14fe <main+0x36e>
jmp    14ad <main+0x31d>
mov    -0x14d(%rbp),%cl
movslq -0x148(%rbp),%rax
mov    %cl,-0x116(%rbp,%rax,1)
mov    -0x148(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x148(%rbp)
jmp    149b <main+0x30b>
movslq -0x148(%rbp),%rax
movb   $0x0,-0x110(%rbp,%rax,1)
cmpl   $0x6,-0x148(%rbp)
jl     156a <main+0x3da>
jmp    1547 <main+0x3b7>
mov    $0x0,%al
call   1090 <getchar@plt>
mov    %al,-0x14d(%rbp)
movsbl %al,%eax
cmp    $0xa,%eax
je     1565 <main+0x3d5>
jmp    1547 <main+0x3b7>
jmp    1577 <main+0x3e7>
mov    $0x0,%al
call   1090 <getchar@plt>
mov    %al,-0x14d(%rbp)
lea    -0xf0(%rbp),%rdi
lea    -0x20(%rbp),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%eax
jne    15e0 <main+0x450>
lea    -0x110(%rbp),%rdi
lea    -0x40(%rbp),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%eax
jne    15e0 <main+0x450>
lea    -0x116(%rbp),%rdi
lea    -0xc6(%rbp),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%eax
jne    15e0 <main+0x450>
movl   $0x1,-0x130(%rbp)
mov    -0x11c(%rbp),%eax
mov    %eax,-0x134(%rbp)
jmp    16bd <main+0x52d>
lea    -0xf0(%rbp),%rdi
lea    -0x60(%rbp),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%eax
jne    1649 <main+0x4b9>
lea    -0x110(%rbp),%rdi
lea    -0x80(%rbp),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%eax
jne    1649 <main+0x4b9>
lea    -0x116(%rbp),%rdi
lea    -0xcc(%rbp),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%eax
jne    1649 <main+0x4b9>
movl   $0x2,-0x130(%rbp)
mov    -0x120(%rbp),%eax
mov    %eax,-0x134(%rbp)
jmp    16b8 <main+0x528>
lea    -0xf0(%rbp),%rdi
lea    -0xa0(%rbp),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%eax
jne    16b3 <main+0x523>
lea    -0x110(%rbp),%rdi
lea    -0xc0(%rbp),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%eax
jne    16b3 <main+0x523>
lea    -0x116(%rbp),%rdi
lea    -0xd2(%rbp),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%eax
jne    16b3 <main+0x523>
movl   $0x3,-0x130(%rbp)
mov    -0x124(%rbp),%eax
mov    %eax,-0x134(%rbp)
jmp    16b8 <main+0x528>
jmp    16bd <main+0x52d>
cmpl   $0x0,-0x130(%rbp)
jle    1dee <main+0xc5e>
cmpl   $0x4,-0x130(%rbp)
jge    1dee <main+0xc5e>
lea    0x1922(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x19b4(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1906(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0x140(%rbp)
cmpl   $0x1,-0x140(%rbp)
jne    1de9 <main+0xc59>
mov    $0x4,%edi
mov    $0x0,%al
call   10b0 <sleep@plt>
mov    $0x0,%al
call   1030 <clrscr@plt>
cmpl   $0x1,-0x130(%rbp)
jne    1749 <main+0x5b9>
mov    -0x11c(%rbp),%eax
mov    %eax,-0x134(%rbp)
jmp    178a <main+0x5fa>
cmpl   $0x2,-0x130(%rbp)
jne    1767 <main+0x5d7>
mov    -0x120(%rbp),%eax
mov    %eax,-0x134(%rbp)
jmp    1785 <main+0x5f5>
cmpl   $0x3,-0x130(%rbp)
jne    1780 <main+0x5f0>
mov    -0x124(%rbp),%eax
mov    %eax,-0x134(%rbp)
jmp    1785 <main+0x5f5>
jmp    178a <main+0x5fa>
lea    0x186f(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x130(%rbp),%esi
lea    0x190d(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
cmpl   $0x1,-0x130(%rbp)
jne    17d4 <main+0x644>
lea    -0x20(%rbp),%rsi
lea    -0x40(%rbp),%rdx
lea    0x18f7(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
jmp    182f <main+0x69f>
cmpl   $0x2,-0x130(%rbp)
jne    17fc <main+0x66c>
lea    -0x60(%rbp),%rsi
lea    -0x80(%rbp),%rdx
lea    0x18cf(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
jmp    182a <main+0x69a>
cmpl   $0x3,-0x130(%rbp)
jne    1825 <main+0x695>
lea    -0xa0(%rbp),%rsi
lea    -0xc0(%rbp),%rdx
lea    0x18a1(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
jmp    182a <main+0x69a>
jmp    182f <main+0x69f>
mov    -0x134(%rbp),%esi
lea    0x1889(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x17b6(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0xffffffff,-0x144(%rbp)
ff ff ff
cmpl   $0x0,-0x144(%rbp)
jg     18ba <main+0x72a>
lea    0x1866(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x186d(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x188a(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x18aa(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x17c9(%rip),%rdi
lea    -0x144(%rbp),%rsi
mov    $0x0,%al
call   10a0 <scanf@plt>
jmp    185b <main+0x6cb>
cmpl   $0x1,-0x144(%rbp)
jne    18d6 <main+0x746>
movl   $0x0,-0x140(%rbp)
jmp    1de4 <main+0xc54>
cmpl   $0x2,-0x144(%rbp)
jne    19a6 <main+0x816>
movl   $0xffffffff,-0x128(%rbp)
ff ff ff
cmpl   $0x0,-0x128(%rbp)
jge    1930 <main+0x7a0>
lea    0x16ff(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1863(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1753(%rip),%rdi
lea    -0x128(%rbp),%rsi
mov    $0x0,%al
call   10a0 <scanf@plt>
jmp    18ed <main+0x75d>
cmpl   $0x1,-0x130(%rbp)
jne    1954 <main+0x7c4>
mov    -0x128(%rbp),%eax
add    -0x11c(%rbp),%eax
mov    %eax,-0x11c(%rbp)
jmp    19a1 <main+0x811>
cmpl   $0x2,-0x130(%rbp)
jne    1978 <main+0x7e8>
mov    -0x128(%rbp),%eax
add    -0x120(%rbp),%eax
mov    %eax,-0x120(%rbp)
jmp    199c <main+0x80c>
cmpl   $0x3,-0x130(%rbp)
jne    1997 <main+0x807>
mov    -0x128(%rbp),%eax
add    -0x124(%rbp),%eax
mov    %eax,-0x124(%rbp)
jmp    199c <main+0x80c>
jmp    19a1 <main+0x811>
jmp    1ddf <main+0xc4f>
cmpl   $0x3,-0x144(%rbp)
jne    1ac4 <main+0x934>
movl   $0xffffffff,-0x128(%rbp)
ff ff ff
mov    $0x1,%al
cmpl   $0x0,-0x128(%rbp)
mov    %al,-0x151(%rbp)
jl     19ff <main+0x86f>
mov    -0x134(%rbp),%eax
mov    %eax,-0x158(%rbp)
mov    -0x128(%rbp),%edi
call   1050 <abs@plt>
mov    %eax,%ecx
mov    -0x158(%rbp),%eax
sub    %ecx,%eax
cmp    $0x0,%eax
setl   %al
mov    %al,-0x151(%rbp)
mov    -0x151(%rbp),%al
test   $0x1,%al
jne    1a12 <main+0x882>
jmp    1a48 <main+0x8b8>
lea    0x15e7(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1755(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x163b(%rip),%rdi
lea    -0x128(%rbp),%rsi
mov    $0x0,%al
call   10a0 <scanf@plt>
jmp    19bd <main+0x82d>
cmpl   $0x1,-0x130(%rbp)
jne    1a6e <main+0x8de>
mov    -0x128(%rbp),%ecx
mov    -0x11c(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x11c(%rbp)
jmp    1abf <main+0x92f>
cmpl   $0x2,-0x130(%rbp)
jne    1a94 <main+0x904>
mov    -0x128(%rbp),%ecx
mov    -0x120(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x120(%rbp)
jmp    1aba <main+0x92a>
cmpl   $0x3,-0x130(%rbp)
jne    1ab5 <main+0x925>
mov    -0x128(%rbp),%ecx
mov    -0x124(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x124(%rbp)
jmp    1aba <main+0x92a>
jmp    1abf <main+0x92f>
jmp    1dda <main+0xc4a>
cmpl   $0x4,-0x144(%rbp)
jne    1dd5 <main+0xc45>
movl   $0xffffffff,-0x128(%rbp)
ff ff ff
mov    $0x1,%al
cmpl   $0x0,-0x128(%rbp)
mov    %al,-0x159(%rbp)
jl     1b1d <main+0x98d>
mov    -0x134(%rbp),%eax
mov    %eax,-0x160(%rbp)
mov    -0x128(%rbp),%edi
call   1050 <abs@plt>
mov    %eax,%ecx
mov    -0x160(%rbp),%eax
sub    %ecx,%eax
cmp    $0x0,%eax
setl   %al
mov    %al,-0x159(%rbp)
mov    -0x159(%rbp),%al
test   $0x1,%al
jne    1b30 <main+0x9a0>
jmp    1b66 <main+0x9d6>
lea    0x14c9(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1642(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x151d(%rip),%rdi
lea    -0x128(%rbp),%rsi
mov    $0x0,%al
call   10a0 <scanf@plt>
jmp    1adb <main+0x94b>
movl   $0xffffffff,-0x14c(%rbp)
ff ff ff
mov    $0x1,%al
cmpl   $0x0,-0x14c(%rbp)
mov    %al,-0x161(%rbp)
jl     1baf <main+0xa1f>
mov    $0x1,%al
cmpl   $0x4,-0x14c(%rbp)
mov    %al,-0x161(%rbp)
jg     1baf <main+0xa1f>
mov    -0x14c(%rbp),%eax
cmp    -0x130(%rbp),%eax
sete   %al
mov    %al,-0x161(%rbp)
mov    -0x161(%rbp),%al
test   $0x1,%al
jne    1bc2 <main+0xa32>
jmp    1bf8 <main+0xa68>
lea    0x1437(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x15ba(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x148b(%rip),%rdi
lea    -0x14c(%rbp),%rsi
mov    $0x0,%al
call   10a0 <scanf@plt>
jmp    1b70 <main+0x9e0>
lea    0x1401(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
cmpl   $0x1,-0x14c(%rbp)
jne    1c23 <main+0xa93>
movsbl -0x129(%rbp),%eax
cmp    $0x1,%eax
je     1c5d <main+0xacd>
cmpl   $0x2,-0x14c(%rbp)
jne    1c40 <main+0xab0>
movsbl -0x12a(%rbp),%eax
cmp    $0x1,%eax
je     1c5d <main+0xacd>
cmpl   $0x3,-0x14c(%rbp)
jne    1dc2 <main+0xc32>
movsbl -0x12b(%rbp),%eax
cmp    $0x1,%eax
jne    1dc2 <main+0xc32>
cmpl   $0x1,-0x130(%rbp)
jne    1c97 <main+0xb07>
mov    -0x128(%rbp),%ecx
mov    -0x11c(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x11c(%rbp)
mov    -0x11c(%rbp),%esi
lea    0x1513(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
jmp    1d10 <main+0xb80>
cmpl   $0x2,-0x130(%rbp)
jne    1cd1 <main+0xb41>
mov    -0x128(%rbp),%ecx
mov    -0x120(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x120(%rbp)
mov    -0x120(%rbp),%esi
lea    0x14e5(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
jmp    1d0b <main+0xb7b>
cmpl   $0x3,-0x130(%rbp)
jne    1d06 <main+0xb76>
mov    -0x128(%rbp),%ecx
mov    -0x124(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x124(%rbp)
mov    -0x124(%rbp),%esi
lea    0x14b7(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
jmp    1d0b <main+0xb7b>
jmp    1d10 <main+0xb80>
cmpl   $0x1,-0x14c(%rbp)
jne    1d48 <main+0xbb8>
mov    -0x128(%rbp),%eax
add    -0x11c(%rbp),%eax
mov    %eax,-0x11c(%rbp)
mov    -0x11c(%rbp),%esi
lea    0x1462(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
jmp    1dbd <main+0xc2d>
cmpl   $0x2,-0x14c(%rbp)
jne    1d80 <main+0xbf0>
mov    -0x128(%rbp),%eax
add    -0x120(%rbp),%eax
mov    %eax,-0x120(%rbp)
mov    -0x120(%rbp),%esi
lea    0x1436(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
jmp    1db8 <main+0xc28>
cmpl   $0x3,-0x14c(%rbp)
jne    1db3 <main+0xc23>
mov    -0x128(%rbp),%eax
add    -0x124(%rbp),%eax
mov    %eax,-0x124(%rbp)
mov    -0x124(%rbp),%esi
lea    0x140a(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
jmp    1db8 <main+0xc28>
jmp    1dbd <main+0xc2d>
jmp    1dd0 <main+0xc40>
lea    0x13f9(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
jmp    1dd5 <main+0xc45>
jmp    1dda <main+0xc4a>
jmp    1ddf <main+0xc4f>
jmp    1de4 <main+0xc54>
jmp    170b <main+0x57b>
jmp    1dfc <main+0xc6c>
lea    0x13f3(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x11fd(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
jmp    221e <main+0x108e>
cmpl   $0x2,-0x13c(%rbp)
jne    21ef <main+0x105f>
lea    0x11dd(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1401(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x11c1(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x122f(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x0,-0x148(%rbp)
mov    $0x0,%al
call   1090 <getchar@plt>
mov    $0x0,%al
call   1090 <getchar@plt>
mov    %al,-0x14d(%rbp)
movsbl %al,%ecx
xor    %eax,%eax
cmp    $0xa,%ecx
mov    %al,-0x162(%rbp)
je     1e96 <main+0xd06>
cmpl   $0x14,-0x148(%rbp)
setl   %al
mov    %al,-0x162(%rbp)
mov    -0x162(%rbp),%al
test   $0x1,%al
jne    1ea9 <main+0xd19>
jmp    1ed1 <main+0xd41>
mov    -0x14d(%rbp),%cl
movslq -0x148(%rbp),%rax
mov    %cl,-0xf0(%rbp,%rax,1)
mov    -0x148(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x148(%rbp)
jmp    1e65 <main+0xcd5>
movslq -0x148(%rbp),%rax
movb   $0x0,-0xf0(%rbp,%rax,1)
cmpl   $0x14,-0x148(%rbp)
jl     1f15 <main+0xd85>
jmp    1ef2 <main+0xd62>
mov    $0x0,%al
call   1090 <getchar@plt>
mov    %al,-0x14d(%rbp)
movsbl %al,%eax
cmp    $0xa,%eax
je     1f10 <main+0xd80>
jmp    1ef2 <main+0xd62>
jmp    1f15 <main+0xd85>
lea    0x116d(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x0,-0x148(%rbp)
mov    $0x0,%al
call   1090 <getchar@plt>
mov    %al,-0x14d(%rbp)
movsbl %al,%ecx
xor    %eax,%eax
cmp    $0xa,%ecx
mov    %al,-0x163(%rbp)
je     1f5e <main+0xdce>
cmpl   $0x14,-0x148(%rbp)
setl   %al
mov    %al,-0x163(%rbp)
mov    -0x163(%rbp),%al
test   $0x1,%al
jne    1f71 <main+0xde1>
jmp    1f99 <main+0xe09>
mov    -0x14d(%rbp),%cl
movslq -0x148(%rbp),%rax
mov    %cl,-0x110(%rbp,%rax,1)
mov    -0x148(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x148(%rbp)
jmp    1f2d <main+0xd9d>
movslq -0x148(%rbp),%rax
movb   $0x0,-0x110(%rbp,%rax,1)
cmpl   $0x14,-0x148(%rbp)
jl     1fdd <main+0xe4d>
jmp    1fba <main+0xe2a>
mov    $0x0,%al
call   1090 <getchar@plt>
mov    %al,-0x14d(%rbp)
movsbl %al,%eax
cmp    $0xa,%eax
je     1fd8 <main+0xe48>
jmp    1fba <main+0xe2a>
jmp    1fdd <main+0xe4d>
lea    0x10b1(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x0,-0x148(%rbp)
cmpl   $0x6,-0x148(%rbp)
jge    2080 <main+0xef0>
jmp    2007 <main+0xe77>
mov    $0x0,%al
call   1090 <getchar@plt>
mov    %al,-0x14d(%rbp)
movsbl %al,%ecx
mov    $0x1,%al
cmp    $0xa,%ecx
mov    %al,-0x164(%rbp)
je     2040 <main+0xeb0>
movsbl -0x14d(%rbp),%edi
call   1070 <isalnum@plt>
cmp    $0x0,%eax
sete   %al
mov    %al,-0x164(%rbp)
mov    -0x164(%rbp),%al
test   $0x1,%al
jne    2053 <main+0xec3>
jmp    2058 <main+0xec8>
jmp    2007 <main+0xe77>
mov    -0x14d(%rbp),%cl
movslq -0x148(%rbp),%rax
mov    %cl,-0x116(%rbp,%rax,1)
mov    -0x148(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x148(%rbp)
jmp    1ff5 <main+0xe65>
movslq -0x148(%rbp),%rax
movb   $0x0,-0x110(%rbp,%rax,1)
cmpl   $0x6,-0x148(%rbp)
jl     20c4 <main+0xf34>
jmp    20a1 <main+0xf11>
mov    $0x0,%al
call   1090 <getchar@plt>
mov    %al,-0x14d(%rbp)
movsbl %al,%eax
cmp    $0xa,%eax
je     20bf <main+0xf2f>
jmp    20a1 <main+0xf11>
jmp    20d1 <main+0xf41>
mov    $0x0,%al
call   1090 <getchar@plt>
mov    %al,-0x14d(%rbp)
movsbl -0x129(%rbp),%eax
cmp    $0x0,%eax
jne    2120 <main+0xf90>
lea    -0x20(%rbp),%rdi
lea    -0xf0(%rbp),%rsi
call   1040 <strcpy@plt>
lea    -0x40(%rbp),%rdi
lea    -0x110(%rbp),%rsi
call   1040 <strcpy@plt>
lea    -0xc6(%rbp),%rdi
lea    -0x116(%rbp),%rsi
call   1040 <strcpy@plt>
movb   $0x1,-0x129(%rbp)
jmp    21dc <main+0x104c>
movsbl -0x12a(%rbp),%eax
cmp    $0x0,%eax
jne    216f <main+0xfdf>
lea    -0x60(%rbp),%rdi
lea    -0xf0(%rbp),%rsi
call   1040 <strcpy@plt>
lea    -0x80(%rbp),%rdi
lea    -0x110(%rbp),%rsi
call   1040 <strcpy@plt>
lea    -0xcc(%rbp),%rdi
lea    -0x116(%rbp),%rsi
call   1040 <strcpy@plt>
movb   $0x1,-0x12a(%rbp)
jmp    21d7 <main+0x1047>
movsbl -0x12b(%rbp),%eax
cmp    $0x0,%eax
jne    21c4 <main+0x1034>
lea    -0xa0(%rbp),%rdi
lea    -0xf0(%rbp),%rsi
call   1040 <strcpy@plt>
lea    -0xc0(%rbp),%rdi
lea    -0x110(%rbp),%rsi
call   1040 <strcpy@plt>
lea    -0xd2(%rbp),%rdi
lea    -0x116(%rbp),%rsi
call   1040 <strcpy@plt>
movb   $0x1,-0x12b(%rbp)
jmp    21d2 <main+0x1042>
lea    0x1076(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
jmp    21d7 <main+0x1047>
jmp    21dc <main+0x104c>
lea    0xe1d(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
jmp    2219 <main+0x1089>
cmpl   $0x3,-0x13c(%rbp)
jne    2214 <main+0x1084>
lea    0xdfd(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x0,-0x138(%rbp)
jmp    2219 <main+0x1089>
jmp    221e <main+0x108e>
jmp    1222 <main+0x92>
lea    0x105d(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1037(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1040(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movsbl -0x129(%rbp),%eax
cmp    $0x1,%eax
jne    2279 <main+0x10e9>
lea    -0x20(%rbp),%rsi
lea    -0x40(%rbp),%rdx
mov    -0x11c(%rbp),%ecx
lea    0x102f(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movsbl -0x12a(%rbp),%eax
cmp    $0x1,%eax
jne    22a5 <main+0x1115>
lea    -0x60(%rbp),%rsi
lea    -0x80(%rbp),%rdx
mov    -0x120(%rbp),%ecx
lea    0x1003(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movsbl -0x12b(%rbp),%eax
cmp    $0x1,%eax
jne    22d7 <main+0x1147>
lea    -0xa0(%rbp),%rsi
lea    -0xc0(%rbp),%rdx
mov    -0x124(%rbp),%ecx
lea    0xfd1(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xfa8(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
add    $0x170,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x158,%rsp
movl   $0xffffffff,0x34(%rsp)
ff
movl   $0xffffffff,0x38(%rsp)
ff
lea    0xf3f(%rip),%r12
mov    %r12,%rdi
call   1050 <puts@plt>
lea    0xf4a(%rip),%rdi
call   1050 <puts@plt>
mov    %r12,%rdi
call   1050 <puts@plt>
mov    $0x2,%edi
xor    %eax,%eax
call   10b0 <sleep@plt>
lea    0x1073(%rip),%rbp
lea    0x107f(%rip),%rbx
lea    0x1096(%rip),%r13
lea    0xe14(%rip),%r14
lea    0x34(%rsp),%r15
xor    %eax,%eax
mov    %rax,0x58(%rsp)
xor    %eax,%eax
mov    %rax,0x60(%rsp)
xor    %eax,%eax
mov    %rax,0x68(%rsp)
movl   $0x0,0x18(%rsp)
movl   $0x0,0x20(%rsp)
movl   $0x0,0x1c(%rsp)
xchg   %ax,%ax
mov    $0x4,%edi
xor    %eax,%eax
call   10b0 <sleep@plt>
xor    %eax,%eax
call   1030 <clrscr@plt>
mov    %r12,%rdi
call   1050 <puts@plt>
movl   $0xffffffff,0x34(%rsp)
ff
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %rbp,%rdi
call   1050 <puts@plt>
mov    %rbx,%rdi
call   1050 <puts@plt>
mov    %r13,%rdi
call   1050 <puts@plt>
mov    %r14,%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   10a0 <scanf@plt>
mov    0x34(%rsp),%eax
test   %eax,%eax
jle    1260 <main+0xd0>
cmp    $0x3,%eax
je     1dc5 <main+0xc35>
cmp    $0x2,%eax
je     12e6 <main+0x156>
cmp    $0x1,%eax
jne    1230 <main+0xa0>
mov    %r12,%rdi
call   1050 <puts@plt>
lea    0xeb0(%rip),%rdi
call   1050 <puts@plt>
mov    %r12,%rdi
call   1050 <puts@plt>
lea    0xd50(%rip),%rdi
xor    %eax,%eax
call   1060 <printf@plt>
xor    %eax,%eax
call   1090 <getchar@plt>
xor    %eax,%eax
call   1090 <getchar@plt>
cmp    $0xa,%al
jne    1330 <main+0x1a0>
movb   $0x0,0x70(%rsp)
jmp    138b <main+0x1fb>
mov    %r12,%rdi
call   1050 <puts@plt>
lea    0xe2f(%rip),%rdi
call   1050 <puts@plt>
mov    %r12,%rdi
call   1050 <puts@plt>
lea    0xd0a(%rip),%rdi
xor    %eax,%eax
call   1060 <printf@plt>
xor    %eax,%eax
call   1090 <getchar@plt>
xor    %eax,%eax
call   1090 <getchar@plt>
cmp    $0xa,%al
jne    13ae <main+0x21e>
movb   $0x0,0x70(%rsp)
jmp    13fb <main+0x26b>
xor    %ebx,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    %al,0x70(%rsp,%rbx,1)
lea    0x1(%rbx),%rbp
xor    %eax,%eax
call   1090 <getchar@plt>
cmp    $0xa,%al
je     135c <main+0x1cc>
cmp    $0x13,%rbx
mov    %rbp,%rbx
jb     1340 <main+0x1b0>
movb   $0x0,0x70(%rsp,%rbp,1)
cmp    $0x14,%ebp
lea    0xd8c(%rip),%r12
lea    0xee8(%rip),%rbp
jb     138b <main+0x1fb>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
xor    %eax,%eax
call   1090 <getchar@plt>
cmp    $0xa,%al
jne    1380 <main+0x1f0>
lea    0xc8e(%rip),%rdi
xor    %eax,%eax
call   1060 <printf@plt>
xor    %eax,%eax
call   1090 <getchar@plt>
cmp    $0xa,%al
jne    1422 <main+0x292>
movb   $0x0,0x40(%rsp)
jmp    147b <main+0x2eb>
xor    %ebx,%ebx
mov    %al,0x70(%rsp,%rbx,1)
lea    0x1(%rbx),%rbp
xor    %eax,%eax
call   1090 <getchar@plt>
cmp    $0xa,%al
je     13cc <main+0x23c>
cmp    $0x13,%rbx
mov    %rbp,%rbx
jb     13b0 <main+0x220>
movb   $0x0,0x70(%rsp,%rbp,1)
cmp    $0x14,%ebp
lea    0xd1c(%rip),%r12
lea    0xe78(%rip),%rbp
jb     13fb <main+0x26b>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
xor    %eax,%eax
call   1090 <getchar@plt>
cmp    $0xa,%al
jne    13f0 <main+0x260>
lea    0xc1e(%rip),%rdi
xor    %eax,%eax
call   1060 <printf@plt>
xor    %eax,%eax
call   1090 <getchar@plt>
cmp    $0xa,%al
jne    16a0 <main+0x510>
movb   $0x0,0x40(%rsp)
jmp    16fb <main+0x56b>
xor    %ebx,%ebx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    %al,0x40(%rsp,%rbx,1)
lea    0x1(%rbx),%rbp
xor    %eax,%eax
call   1090 <getchar@plt>
cmp    $0xa,%al
je     144c <main+0x2bc>
cmp    $0x13,%rbx
mov    %rbp,%rbx
jb     1430 <main+0x2a0>
movb   $0x0,0x40(%rsp,%rbp,1)
cmp    $0x14,%ebp
lea    0xc9c(%rip),%r12
lea    0xdf8(%rip),%rbp
jb     147b <main+0x2eb>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
xor    %eax,%eax
call   1090 <getchar@plt>
cmp    $0xa,%al
jne    1470 <main+0x2e0>
lea    0xbaa(%rip),%rdi
xor    %eax,%eax
call   1060 <printf@plt>
nopl   0x0(%rax)
xor    %eax,%eax
call   1090 <getchar@plt>
mov    %eax,%edi
shl    $0x18,%edi
cmp    $0xa000000,%edi
je     1490 <main+0x300>
mov    %eax,%ebx
sar    $0x18,%edi
call   1070 <isalnum@plt>
test   %eax,%eax
je     1490 <main+0x300>
mov    %bl,0x12(%rsp)
cs nopw 0x0(%rax,%rax,1)
xor    %eax,%eax
call   1090 <getchar@plt>
mov    %eax,%edi
shl    $0x18,%edi
cmp    $0xa000000,%edi
je     14c0 <main+0x330>
mov    %eax,%ebx
sar    $0x18,%edi
call   1070 <isalnum@plt>
test   %eax,%eax
je     14c0 <main+0x330>
mov    %bl,0x13(%rsp)
cs nopw 0x0(%rax,%rax,1)
xor    %eax,%eax
call   1090 <getchar@plt>
mov    %eax,%edi
shl    $0x18,%edi
cmp    $0xa000000,%edi
je     14f0 <main+0x360>
mov    %eax,%ebx
sar    $0x18,%edi
call   1070 <isalnum@plt>
test   %eax,%eax
je     14f0 <main+0x360>
mov    %bl,0x14(%rsp)
cs nopw 0x0(%rax,%rax,1)
xor    %eax,%eax
call   1090 <getchar@plt>
mov    %eax,%edi
shl    $0x18,%edi
cmp    $0xa000000,%edi
je     1520 <main+0x390>
mov    %eax,%ebx
sar    $0x18,%edi
call   1070 <isalnum@plt>
test   %eax,%eax
je     1520 <main+0x390>
mov    %bl,0x15(%rsp)
cs nopw 0x0(%rax,%rax,1)
xor    %eax,%eax
call   1090 <getchar@plt>
mov    %eax,%edi
shl    $0x18,%edi
cmp    $0xa000000,%edi
je     1550 <main+0x3c0>
mov    %eax,%ebx
sar    $0x18,%edi
call   1070 <isalnum@plt>
test   %eax,%eax
je     1550 <main+0x3c0>
mov    %bl,0x16(%rsp)
cs nopw 0x0(%rax,%rax,1)
xor    %eax,%eax
call   1090 <getchar@plt>
mov    %eax,%edi
shl    $0x18,%edi
cmp    $0xa000000,%edi
je     1580 <main+0x3f0>
mov    %eax,%ebx
sar    $0x18,%edi
call   1070 <isalnum@plt>
test   %eax,%eax
je     1580 <main+0x3f0>
mov    %bl,0x17(%rsp)
movb   $0x0,0x46(%rsp)
nopl   0x0(%rax,%rax,1)
xor    %eax,%eax
call   1090 <getchar@plt>
cmp    $0xa,%al
jne    15b0 <main+0x420>
lea    0x70(%rsp),%rdi
lea    0x140(%rsp),%rsi
call   1080 <strcmp@plt>
test   %eax,%eax
lea    0xc97(%rip),%rbx
jne    1608 <main+0x478>
lea    0x40(%rsp),%rdi
lea    0x120(%rsp),%rsi
call   1080 <strcmp@plt>
test   %eax,%eax
jne    1608 <main+0x478>
lea    0x12(%rsp),%rdi
lea    0x9a(%rsp),%rsi
call   1080 <strcmp@plt>
test   %eax,%eax
je     1932 <main+0x7a2>
lea    0x70(%rsp),%rdi
lea    0x100(%rsp),%rsi
call   1080 <strcmp@plt>
test   %eax,%eax
jne    164e <main+0x4be>
lea    0x40(%rsp),%rdi
lea    0xe0(%rsp),%rsi
call   1080 <strcmp@plt>
test   %eax,%eax
jne    164e <main+0x4be>
lea    0x12(%rsp),%rdi
lea    0x94(%rsp),%rsi
call   1080 <strcmp@plt>
test   %eax,%eax
je     1942 <main+0x7b2>
lea    0x70(%rsp),%rdi
lea    0xc0(%rsp),%rsi
call   1080 <strcmp@plt>
test   %eax,%eax
jne    1694 <main+0x504>
lea    0x40(%rsp),%rdi
lea    0xa0(%rsp),%rsi
call   1080 <strcmp@plt>
test   %eax,%eax
jne    1694 <main+0x504>
lea    0x12(%rsp),%rdi
lea    0x8e(%rsp),%rsi
call   1080 <strcmp@plt>
test   %eax,%eax
je     195a <main+0x7ca>
lea    0xacc(%rip),%rdi
jmp    1862 <main+0x6d2>
xor    %ebx,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    %al,0x40(%rsp,%rbx,1)
lea    0x1(%rbx),%rbp
xor    %eax,%eax
call   1090 <getchar@plt>
cmp    $0xa,%al
je     16cc <main+0x53c>
cmp    $0x13,%rbx
mov    %rbp,%rbx
jb     16b0 <main+0x520>
movb   $0x0,0x40(%rsp,%rbp,1)
cmp    $0x14,%ebp
lea    0xa1c(%rip),%r12
lea    0xb78(%rip),%rbp
jb     16fb <main+0x56b>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
xor    %eax,%eax
call   1090 <getchar@plt>
cmp    $0xa,%al
jne    16f0 <main+0x560>
lea    0x92a(%rip),%rdi
xor    %eax,%eax
call   1060 <printf@plt>
nopl   0x0(%rax)
xor    %eax,%eax
call   1090 <getchar@plt>
mov    %eax,%edi
shl    $0x18,%edi
cmp    $0xa000000,%edi
je     1710 <main+0x580>
mov    %eax,%ebx
sar    $0x18,%edi
call   1070 <isalnum@plt>
test   %eax,%eax
je     1710 <main+0x580>
mov    %bl,0x12(%rsp)
cs nopw 0x0(%rax,%rax,1)
xor    %eax,%eax
call   1090 <getchar@plt>
mov    %eax,%edi
shl    $0x18,%edi
cmp    $0xa000000,%edi
je     1740 <main+0x5b0>
mov    %eax,%ebx
sar    $0x18,%edi
call   1070 <isalnum@plt>
test   %eax,%eax
je     1740 <main+0x5b0>
mov    %bl,0x13(%rsp)
cs nopw 0x0(%rax,%rax,1)
xor    %eax,%eax
call   1090 <getchar@plt>
mov    %eax,%edi
shl    $0x18,%edi
cmp    $0xa000000,%edi
je     1770 <main+0x5e0>
mov    %eax,%ebx
sar    $0x18,%edi
call   1070 <isalnum@plt>
test   %eax,%eax
je     1770 <main+0x5e0>
mov    %bl,0x14(%rsp)
cs nopw 0x0(%rax,%rax,1)
xor    %eax,%eax
call   1090 <getchar@plt>
mov    %eax,%edi
shl    $0x18,%edi
cmp    $0xa000000,%edi
je     17a0 <main+0x610>
mov    %eax,%ebx
sar    $0x18,%edi
call   1070 <isalnum@plt>
test   %eax,%eax
je     17a0 <main+0x610>
mov    %bl,0x15(%rsp)
cs nopw 0x0(%rax,%rax,1)
xor    %eax,%eax
call   1090 <getchar@plt>
mov    %eax,%edi
shl    $0x18,%edi
cmp    $0xa000000,%edi
je     17d0 <main+0x640>
mov    %eax,%ebx
sar    $0x18,%edi
call   1070 <isalnum@plt>
test   %eax,%eax
je     17d0 <main+0x640>
mov    %bl,0x16(%rsp)
cs nopw 0x0(%rax,%rax,1)
xor    %eax,%eax
call   1090 <getchar@plt>
mov    %eax,%edi
shl    $0x18,%edi
cmp    $0xa000000,%edi
je     1800 <main+0x670>
mov    %eax,%ebx
sar    $0x18,%edi
call   1070 <isalnum@plt>
test   %eax,%eax
je     1800 <main+0x670>
mov    %bl,0x17(%rsp)
movb   $0x0,0x46(%rsp)
nopl   0x0(%rax,%rax,1)
xor    %eax,%eax
call   1090 <getchar@plt>
cmp    $0xa,%al
jne    1830 <main+0x6a0>
cmpb   $0x0,0x68(%rsp)
lea    0xa26(%rip),%rbx
je     186c <main+0x6dc>
cmpb   $0x0,0x60(%rsp)
je     18ae <main+0x71e>
cmpb   $0x0,0x58(%rsp)
je     18f0 <main+0x760>
lea    0x8d0(%rip),%rdi
call   1050 <puts@plt>
jmp    1db8 <main+0xc28>
lea    0x140(%rsp),%rdi
lea    0x70(%rsp),%rsi
call   1040 <strcpy@plt>
lea    0x120(%rsp),%rdi
lea    0x40(%rsp),%rsi
call   1040 <strcpy@plt>
lea    0x9a(%rsp),%rdi
lea    0x12(%rsp),%rsi
call   1040 <strcpy@plt>
mov    $0x1,%al
mov    %rax,0x68(%rsp)
jmp    1db8 <main+0xc28>
lea    0x100(%rsp),%rdi
lea    0x70(%rsp),%rsi
call   1040 <strcpy@plt>
lea    0xe0(%rsp),%rdi
lea    0x40(%rsp),%rsi
call   1040 <strcpy@plt>
lea    0x94(%rsp),%rdi
lea    0x12(%rsp),%rsi
call   1040 <strcpy@plt>
mov    $0x1,%al
mov    %rax,0x60(%rsp)
jmp    1db8 <main+0xc28>
lea    0xc0(%rsp),%rdi
lea    0x70(%rsp),%rsi
call   1040 <strcpy@plt>
lea    0xa0(%rsp),%rdi
lea    0x40(%rsp),%rsi
call   1040 <strcpy@plt>
lea    0x8e(%rsp),%rdi
lea    0x12(%rsp),%rsi
call   1040 <strcpy@plt>
mov    $0x1,%al
mov    %rax,0x58(%rsp)
jmp    1db8 <main+0xc28>
movl   $0x1,0x2c(%rsp)
mov    $0x1,%al
mov    %eax,0x28(%rsp)
jmp    196a <main+0x7da>
movl   $0x2,0x2c(%rsp)
mov    $0x1,%al
mov    %eax,0x24(%rsp)
movl   $0x0,0x28(%rsp)
jmp    1972 <main+0x7e2>
movl   $0x3,0x2c(%rsp)
movl   $0x0,0x28(%rsp)
movl   $0x0,0x24(%rsp)
mov    %r12,%rdi
call   1050 <puts@plt>
lea    0x82f(%rip),%rdi
call   1050 <puts@plt>
mov    %r12,%rdi
call   1050 <puts@plt>
jmp    199e <main+0x80e>
lea    0x713(%rip),%rdi
xor    %eax,%eax
call   1060 <printf@plt>
mov    0x20(%rsp),%r12d
jmp    19b0 <main+0x820>
sub    %eax,0x1c(%rsp)
nopl   0x0(%rax)
mov    $0x4,%edi
xor    %eax,%eax
call   10b0 <sleep@plt>
xor    %eax,%eax
call   1030 <clrscr@plt>
mov    0x24(%rsp),%ebx
test   %bl,%bl
mov    0x18(%rsp),%ebp
cmovne %r12d,%ebp
lea    0x71f(%rip),%rdi
call   1050 <puts@plt>
lea    0x653(%rip),%rdi
mov    0x2c(%rsp),%esi
xor    %eax,%eax
call   1060 <printf@plt>
cmpb   $0x0,0x28(%rsp)
cmovne 0x1c(%rsp),%ebp
mov    %r12d,0x20(%rsp)
lea    0x63f(%rip),%rdi
je     1a20 <main+0x890>
lea    0x140(%rsp),%rsi
lea    0x120(%rsp),%rdx
jmp    1a50 <main+0x8c0>
nopl   0x0(%rax)
test   %bl,%bl
je     1a40 <main+0x8b0>
lea    0x100(%rsp),%rsi
lea    0xe0(%rsp),%rdx
jmp    1a50 <main+0x8c0>
cs nopw 0x0(%rax,%rax,1)
lea    0xc0(%rsp),%rsi
lea    0xa0(%rsp),%rdx
xor    %eax,%eax
call   1060 <printf@plt>
lea    0x5ec(%rip),%rdi
mov    %ebp,0x3c(%rsp)
mov    %ebp,%esi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0x685(%rip),%rdi
call   1050 <puts@plt>
movl   $0xffffffff,0x38(%rsp)
ff
lea    0x73b(%rip),%rbp
lea    0x748(%rip),%r13
lea    0x76b(%rip),%r15
lea    0x791(%rip),%r14
lea    0x56e(%rip),%rbx
lea    0x38(%rsp),%r12
nopw   0x0(%rax,%rax,1)
mov    %rbp,%rdi
call   1050 <puts@plt>
mov    %r13,%rdi
call   1050 <puts@plt>
mov    %r15,%rdi
call   1050 <puts@plt>
mov    %r14,%rdi
call   1050 <puts@plt>
mov    %rbx,%rdi
mov    %r12,%rsi
xor    %eax,%eax
call   10a0 <scanf@plt>
mov    0x38(%rsp),%eax
test   %eax,%eax
jle    1ab0 <main+0x920>
add    $0xffffffff,%eax
cmp    $0x3,%eax
lea    0x799(%rip),%r13
lea    0x34(%rsp),%r15
mov    %rbx,%r14
lea    0x76c(%rip),%rbx
mov    0x20(%rsp),%r12d
ja     19b0 <main+0x820>
lea    0x4ed(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    %r12d,%r15d
movl   $0xffffffff,0xc(%rsp)
ff
lea    0x5c9(%rip),%r12
lea    0x525(%rip),%rbx
lea    0xc(%rsp),%rbp
nopw   0x0(%rax,%rax,1)
mov    %r12,%rdi
call   1050 <puts@plt>
mov    %rbx,%rdi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r14,%rdi
mov    %rbp,%rsi
xor    %eax,%eax
call   10a0 <scanf@plt>
mov    0xc(%rsp),%eax
test   %eax,%eax
js     1b40 <main+0x9b0>
cmpb   $0x0,0x28(%rsp)
mov    %r15d,%r12d
je     1cee <main+0xb5e>
add    %eax,0x1c(%rsp)
jmp    19b0 <main+0x820>
xchg   %ax,%ax
movl   $0xffffffff,0xc(%rsp)
ff
lea    0xc(%rsp),%r15
lea    0x4d0(%rip),%rbp
mov    0x3c(%rsp),%ebx
nopl   0x0(%rax,%rax,1)
lea    0x550(%rip),%rdi
call   1050 <puts@plt>
mov    %rbp,%rdi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r14,%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   10a0 <scanf@plt>
mov    0xc(%rsp),%eax
test   %eax,%eax
js     1ba0 <main+0xa10>
cmp    %eax,%ebx
jl     1ba0 <main+0xa10>
cmpb   $0x0,0x28(%rsp)
jne    19a5 <main+0x815>
cmpb   $0x0,0x24(%rsp)
je     1d1f <main+0xb8f>
sub    %eax,%r12d
jmp    19b0 <main+0x820>
nopl   (%rax)
movl   $0xffffffff,0xc(%rsp)
ff
lea    0xc(%rsp),%r15
lea    0x46b(%rip),%rbp
mov    0x3c(%rsp),%ebx
nopl   0x0(%rax,%rax,1)
lea    0x4e0(%rip),%rdi
call   1050 <puts@plt>
mov    %rbp,%rdi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r14,%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   10a0 <scanf@plt>
mov    0xc(%rsp),%eax
test   %eax,%eax
js     1c10 <main+0xa80>
cmp    %eax,%ebx
jl     1c10 <main+0xa80>
movl   $0xffffffff,0x30(%rsp)
ff
lea    0x4a9(%rip),%r15
lea    0x424(%rip),%r12
lea    0x30(%rsp),%rbp
mov    0x2c(%rsp),%ebx
xchg   %ax,%ax
mov    %r15,%rdi
call   1050 <puts@plt>
mov    %r12,%rdi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r14,%rdi
mov    %rbp,%rsi
xor    %eax,%eax
call   10a0 <scanf@plt>
mov    0x30(%rsp),%eax
cmp    $0x4,%eax
ja     1c60 <main+0xad0>
cmp    %ebx,%eax
je     1c60 <main+0xad0>
mov    %r15,%rdi
call   1050 <puts@plt>
mov    0x30(%rsp),%eax
cmp    $0x1,%eax
jne    1ca4 <main+0xb14>
cmpb   $0x1,0x68(%rsp)
je     1cd0 <main+0xb40>
cmp    $0x2,%eax
jne    1cb0 <main+0xb20>
cmpb   $0x1,0x60(%rsp)
je     1cd0 <main+0xb40>
cmp    $0x3,%eax
jne    1990 <main+0x800>
cmpb   $0x1,0x58(%rsp)
jne    1990 <main+0x800>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    0xc(%rsp),%eax
cmpb   $0x0,0x28(%rsp)
je     1cfd <main+0xb6d>
mov    0x1c(%rsp),%esi
sub    %eax,%esi
lea    0x39e(%rip),%rdi
mov    %esi,0x1c(%rsp)
jmp    1d42 <main+0xbb2>
cmpb   $0x0,0x24(%rsp)
je     1d28 <main+0xb98>
add    %eax,%r12d
jmp    19b0 <main+0x820>
cmpb   $0x0,0x24(%rsp)
je     1d31 <main+0xba1>
mov    0x20(%rsp),%r12d
sub    %eax,%r12d
lea    0x37f(%rip),%rdi
mov    %r12d,%esi
xor    %eax,%eax
call   1060 <printf@plt>
jmp    1d4e <main+0xbbe>
sub    %eax,0x18(%rsp)
jmp    19b0 <main+0x820>
add    %eax,0x18(%rsp)
jmp    19b0 <main+0x820>
mov    0x18(%rsp),%esi
sub    %eax,%esi
lea    0x360(%rip),%rdi
mov    %esi,0x18(%rsp)
xor    %eax,%eax
call   1060 <printf@plt>
mov    0x20(%rsp),%r12d
mov    0x30(%rsp),%eax
cmp    $0x3,%eax
je     1d7a <main+0xbea>
cmp    $0x2,%eax
je     1d8f <main+0xbff>
cmp    $0x1,%eax
jne    19b0 <main+0x820>
mov    0x1c(%rsp),%esi
add    0xc(%rsp),%esi
lea    0x312(%rip),%rdi
mov    %esi,0x1c(%rsp)
jmp    1d9e <main+0xc0e>
mov    0x18(%rsp),%esi
add    0xc(%rsp),%esi
lea    0x315(%rip),%rdi
mov    %esi,0x18(%rsp)
jmp    1d9e <main+0xc0e>
add    0xc(%rsp),%r12d
lea    0x2f7(%rip),%rdi
mov    %r12d,%esi
xor    %eax,%eax
call   1060 <printf@plt>
jmp    19b0 <main+0x820>
lea    0x346(%rip),%r12
lea    0x4a2(%rip),%rbp
mov    %r12,%rdi
call   1050 <puts@plt>
jmp    1230 <main+0xa0>
lea    0x32b(%rip),%rdi
call   1050 <puts@plt>
lea    0x310(%rip),%rdi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0x2ea(%rip),%rdi
xor    %eax,%eax
call   1060 <printf@plt>
lea    0x2f3(%rip),%rdi
xor    %eax,%eax
call   1060 <printf@plt>
cmpb   $0x1,0x68(%rsp)
jne    1e24 <main+0xc94>
lea    0x2f9(%rip),%rdi
lea    0x140(%rsp),%rsi
lea    0x120(%rsp),%rdx
mov    0x1c(%rsp),%ecx
xor    %eax,%eax
call   1060 <printf@plt>
cmpb   $0x1,0x60(%rsp)
mov    0x20(%rsp),%ecx
jne    1e4d <main+0xcbd>
lea    0x2cc(%rip),%rdi
lea    0x100(%rsp),%rsi
lea    0xe0(%rsp),%rdx
xor    %eax,%eax
call   1060 <printf@plt>
cmpb   $0x1,0x58(%rsp)
jne    1e76 <main+0xce6>
lea    0x2a7(%rip),%rdi
lea    0xc0(%rsp),%rsi
lea    0xa0(%rsp),%rdx
mov    0x18(%rsp),%ecx
xor    %eax,%eax
call   1060 <printf@plt>
lea    0x26a(%rip),%rdi
xor    %eax,%eax
call   1060 <printf@plt>
add    $0x158,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [12 x i8] c"----------\0A\00"
@.str.1 = [20 x i8] c"Welcome to bank.c!\0A\00"
@.str.2 = [20 x i8] c"Enter 1 to log in.\0A\00"
@.str.3 = [31 x i8] c"Enter 2 to create an account.\0A\00"
@.str.4 = [29 x i8] c"Enter 3 to end the program.\0A\00"
@.str.5 = [3 x i8] c"%d\00"
@.str.6 = [9 x i8] c"~Login~\0A\00"
@.str.7 = [13 x i8] c"First Name: \00"
@.str.8 = [12 x i8] c"Last Name: \00"
@.str.9 = [11 x i8] c"Password: \00"
@.str.10 = [18 x i8] c"Login sucessful!\0A\00"
@.str.11 = [13 x i8] c"Account #%d\0A\00"
@.str.12 = [6 x i8] c"%s %s\00"
@.str.13 = [16 x i8] c"\0ABallance: $%d\0A\00"
@.str.14 = [21 x i8] c"Enter 1 to log out.\0A\00"
@.str.15 = [43 x i8] c"Enter 2 to deposit money to your account.\0A\00"
@.str.16 = [46 x i8] c"Enter 3 to retrieve money from your account.\0A\00"
@.str.17 = [47 x i8] c"Enter 4 to transfer money to another account.\0A\00"
@.str.18 = [10 x i8] c"Deposit: \00"
@.str.19 = [11 x i8] c"Retrieve: \00"
@.str.20 = [10 x i8] c"Tranfer: \00"
@.str.21 = [13 x i8] c"To account: \00"
@.str.22 = [12 x i8] c"Acc: %d\0A\00"
@.str.23 = [12 x i8] c"Acc: %d\0A\00"
@.str.24 = [12 x i8] c"Acc: %d\0A\00"
@.str.25 = [38 x i8] c"The specified account does not exist.\00"
@.str.26 = [74 x i8] c"An account with that first name, last name, and password does not exist.\0A\00"
@.str.27 = [15 x i8] c"~New Account~\0A\00"
@.str.28 = [46 x i8] c"Sorry, there are no more accounts availible.\0A\00"
@.str.29 = [26 x i8] c"-------------------------\00"
@.str.30 = [23 x i8] c"\0A|First\09|Last\09|Value\09|\00"
@.str.31 = [27 x i8] c"\0A-------------------------\00"
@.str.32 = [15 x i8] c"\0A|%s\09|%s\09|%d\09|\00"
define void @main() {
%1 = alloca [20 x i8]
%2 = alloca [20 x i8]
%3 = alloca [20 x i8]
%4 = alloca [20 x i8]
%5 = alloca [20 x i8]
%6 = alloca [20 x i8]
%7 = alloca [6 x i8]
%8 = alloca [6 x i8]
%9 = alloca [6 x i8]
%10 = alloca [20 x i8]
%11 = alloca [20 x i8]
%12 = alloca [6 x i8]
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i8
%18 = alloca i8
%19 = alloca i8
%20 = alloca i32
%21 = alloca i32
%22 = alloca i32
%23 = alloca i32
%24 = alloca i32
%25 = alloca i32
%26 = alloca i32
%27 = alloca i32
%28 = alloca i8
store i32 0, i32* %13
store i32 0, i32* %14
store i32 0, i32* %15
store i8 0, i8* %17
store i8 0, i8* %18
store i8 0, i8* %19
store i32 1, i32* %22
store i32 -1, i32* %23
store i32 -1, i32* %25
%29 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0))
%30 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.1, i64 0, i64 0))
%31 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0))
%32 = call i32 (i32, ...) bitcast (i32 (...)* @sleep to i32 (i32, ...)*)(i32 2)
br label %33
33: ; preds = %670, %0
%34 = load i32, i32* %22
%35 = icmp eq i32 %34, 1
br i1 %35, label %36, label %671
36: ; preds = %33
%37 = call i32 (i32, ...) bitcast (i32 (...)* @sleep to i32 (i32, ...)*)(i32 4)
%38 = call i32 (...) @clrscr()
%39 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0))
store i32 0, i32* %20
store i32 -1, i32* %23
br label %40
40: ; preds = %43, %36
%41 = load i32, i32* %23
%42 = icmp sle i32 %41, 0
br i1 %42, label %43, label %48
43: ; preds = %40
%44 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.2, i64 0, i64 0))
%45 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.3, i64 0, i64 0))
%46 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.4, i64 0, i64 0))
%47 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32* %23)
br label %40
48: ; preds = %40
%49 = load i32, i32* %23
%50 = icmp eq i32 %49, 1
br i1 %50, label %51, label %499
51: ; preds = %48
%52 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0))
%53 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.6, i64 0, i64 0))
%54 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0))
%55 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.7, i64 0, i64 0))
store i32 0, i32* %26
%56 = call i32 (...) @getchar()
br label %57
57: ; preds = %67, %51
%58 = call i32 (...) @getchar()
%59 = trunc i32 %58 to i8
store i8 %59, i8* %28
%60 = sext i8 %59 to i32
%61 = icmp ne i32 %60, 10
br i1 %61, label %62, label %65
62: ; preds = %57
%63 = load i32, i32* %26
%64 = icmp slt i32 %63, 20
br label %65
65: ; preds = %62, %57
%66 = phi i1 [ false, %57 ], [ %64, %62 ]
br i1 %66, label %67, label %74
67: ; preds = %65
%68 = load i8, i8* %28
%69 = load i32, i32* %26
%70 = sext i32 %69 to i64
%71 = getelementptr inbounds [20 x i8], [20 x i8]* %10, i64 0, i64 %70
store i8 %68, i8* %71
%72 = load i32, i32* %26
%73 = add nsw i32 %72, 1
store i32 %73, i32* %26
br label %57
74: ; preds = %65
%75 = load i32, i32* %26
%76 = sext i32 %75 to i64
%77 = getelementptr inbounds [20 x i8], [20 x i8]* %10, i64 0, i64 %76
store i8 0, i8* %77
%78 = load i32, i32* %26
%79 = icmp sge i32 %78, 20
br i1 %79, label %80, label %88
80: ; preds = %74
br label %81
81: ; preds = %86, %80
%82 = call i32 (...) @getchar()
%83 = trunc i32 %82 to i8
store i8 %83, i8* %28
%84 = sext i8 %83 to i32
%85 = icmp ne i32 %84, 10
br i1 %85, label %86, label %87
86: ; preds = %81
br label %81
87: ; preds = %81
br label %88
88: ; preds = %87, %74
%89 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.8, i64 0, i64 0))
store i32 0, i32* %26
br label %90
90: ; preds = %100, %88
%91 = call i32 (...) @getchar()
%92 = trunc i32 %91 to i8
store i8 %92, i8* %28
%93 = sext i8 %92 to i32
%94 = icmp ne i32 %93, 10
br i1 %94, label %95, label %98
95: ; preds = %90
%96 = load i32, i32* %26
%97 = icmp slt i32 %96, 20
br label %98
98: ; preds = %95, %90
%99 = phi i1 [ false, %90 ], [ %97, %95 ]
br i1 %99, label %100, label %107
100: ; preds = %98
%101 = load i8, i8* %28
%102 = load i32, i32* %26
%103 = sext i32 %102 to i64
%104 = getelementptr inbounds [20 x i8], [20 x i8]* %11, i64 0, i64 %103
store i8 %101, i8* %104
%105 = load i32, i32* %26
%106 = add nsw i32 %105, 1
store i32 %106, i32* %26
br label %90
107: ; preds = %98
%108 = load i32, i32* %26
%109 = sext i32 %108 to i64
%110 = getelementptr inbounds [20 x i8], [20 x i8]* %11, i64 0, i64 %109
store i8 0, i8* %110
%111 = load i32, i32* %26
%112 = icmp sge i32 %111, 20
br i1 %112, label %113, label %121
113: ; preds = %107
br label %114
114: ; preds = %119, %113
%115 = call i32 (...) @getchar()
%116 = trunc i32 %115 to i8
store i8 %116, i8* %28
%117 = sext i8 %116 to i32
%118 = icmp ne i32 %117, 10
br i1 %118, label %119, label %120
119: ; preds = %114
br label %114
120: ; preds = %114
br label %121
121: ; preds = %120, %107
%122 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.9, i64 0, i64 0))
store i32 0, i32* %26
br label %123
123: ; preds = %140, %121
%124 = load i32, i32* %26
%125 = icmp slt i32 %124, 6
br i1 %125, label %126, label %147
126: ; preds = %123
br label %127
127: ; preds = %139, %126
%128 = call i32 (...) @getchar()
%129 = trunc i32 %128 to i8
store i8 %129, i8* %28
%130 = sext i8 %129 to i32
%131 = icmp eq i32 %130, 10
br i1 %131, label %137, label %132
132: ; preds = %127
%133 = load i8, i8* %28
%134 = sext i8 %133 to i32
%135 = call i32 @isalnum(i32 %134)
%136 = icmp eq i32 %135, 0
br label %137
137: ; preds = %132, %127
%138 = phi i1 [ true, %127 ], [ %136, %132 ]
br i1 %138, label %139, label %140
139: ; preds = %137
br label %127
140: ; preds = %137
%141 = load i8, i8* %28
%142 = load i32, i32* %26
%143 = sext i32 %142 to i64
%144 = getelementptr inbounds [6 x i8], [6 x i8]* %12, i64 0, i64 %143
store i8 %141, i8* %144
%145 = load i32, i32* %26
%146 = add nsw i32 %145, 1
store i32 %146, i32* %26
br label %123
147: ; preds = %123
%148 = load i32, i32* %26
%149 = sext i32 %148 to i64
%150 = getelementptr inbounds [20 x i8], [20 x i8]* %11, i64 0, i64 %149
store i8 0, i8* %150
%151 = load i32, i32* %26
%152 = icmp sge i32 %151, 6
br i1 %152, label %153, label %161
153: ; preds = %147
br label %154
154: ; preds = %159, %153
%155 = call i32 (...) @getchar()
%156 = trunc i32 %155 to i8
store i8 %156, i8* %28
%157 = sext i8 %156 to i32
%158 = icmp ne i32 %157, 10
br i1 %158, label %159, label %160
159: ; preds = %154
br label %154
160: ; preds = %154
br label %164
161: ; preds = %147
%162 = call i32 (...) @getchar()
%163 = trunc i32 %162 to i8
store i8 %163, i8* %28
br label %164
164: ; preds = %161, %160
%165 = getelementptr inbounds [20 x i8], [20 x i8]* %10, i64 0, i64 0
%166 = getelementptr inbounds [20 x i8], [20 x i8]* %1, i64 0, i64 0
%167 = call i32 @strcmp(i8* %165, i8* %166)
%168 = icmp eq i32 %167, 0
br i1 %168, label %169, label %181
169: ; preds = %164
%170 = getelementptr inbounds [20 x i8], [20 x i8]* %11, i64 0, i64 0
%171 = getelementptr inbounds [20 x i8], [20 x i8]* %2, i64 0, i64 0
%172 = call i32 @strcmp(i8* %170, i8* %171)
%173 = icmp eq i32 %172, 0
br i1 %173, label %174, label %181
174: ; preds = %169
%175 = getelementptr inbounds [6 x i8], [6 x i8]* %12, i64 0, i64 0
%176 = getelementptr inbounds [6 x i8], [6 x i8]* %7, i64 0, i64 0
%177 = call i32 @strcmp(i8* %175, i8* %176)
%178 = icmp eq i32 %177, 0
br i1 %178, label %179, label %181
179: ; preds = %174
store i32 1, i32* %20
%180 = load i32, i32* %13
store i32 %180, i32* %21
br label %217
181: ; preds = %174, %169, %164
%182 = getelementptr inbounds [20 x i8], [20 x i8]* %10, i64 0, i64 0
%183 = getelementptr inbounds [20 x i8], [20 x i8]* %3, i64 0, i64 0
%184 = call i32 @strcmp(i8* %182, i8* %183)
%185 = icmp eq i32 %184, 0
br i1 %185, label %186, label %198
186: ; preds = %181
%187 = getelementptr inbounds [20 x i8], [20 x i8]* %11, i64 0, i64 0
%188 = getelementptr inbounds [20 x i8], [20 x i8]* %4, i64 0, i64 0
%189 = call i32 @strcmp(i8* %187, i8* %188)
%190 = icmp eq i32 %189, 0
br i1 %190, label %191, label %198
191: ; preds = %186
%192 = getelementptr inbounds [6 x i8], [6 x i8]* %12, i64 0, i64 0
%193 = getelementptr inbounds [6 x i8], [6 x i8]* %8, i64 0, i64 0
%194 = call i32 @strcmp(i8* %192, i8* %193)
%195 = icmp eq i32 %194, 0
br i1 %195, label %196, label %198
196: ; preds = %191
store i32 2, i32* %20
%197 = load i32, i32* %14
store i32 %197, i32* %21
br label %216
198: ; preds = %191, %186, %181
%199 = getelementptr inbounds [20 x i8], [20 x i8]* %10, i64 0, i64 0
%200 = getelementptr inbounds [20 x i8], [20 x i8]* %5, i64 0, i64 0
%201 = call i32 @strcmp(i8* %199, i8* %200)
%202 = icmp eq i32 %201, 0
br i1 %202, label %203, label %215
203: ; preds = %198
%204 = getelementptr inbounds [20 x i8], [20 x i8]* %11, i64 0, i64 0
%205 = getelementptr inbounds [20 x i8], [20 x i8]* %6, i64 0, i64 0
%206 = call i32 @strcmp(i8* %204, i8* %205)
%207 = icmp eq i32 %206, 0
br i1 %207, label %208, label %215
208: ; preds = %203
%209 = getelementptr inbounds [6 x i8], [6 x i8]* %12, i64 0, i64 0
%210 = getelementptr inbounds [6 x i8], [6 x i8]* %9, i64 0, i64 0
%211 = call i32 @strcmp(i8* %209, i8* %210)
%212 = icmp eq i32 %211, 0
br i1 %212, label %213, label %215
213: ; preds = %208
store i32 3, i32* %20
%214 = load i32, i32* %15
store i32 %214, i32* %21
br label %215
215: ; preds = %213, %208, %203, %198
br label %216
216: ; preds = %215, %196
br label %217
217: ; preds = %216, %179
%218 = load i32, i32* %20
%219 = icmp sgt i32 %218, 0
br i1 %219, label %220, label %495
220: ; preds = %217
%221 = load i32, i32* %20
%222 = icmp slt i32 %221, 4
br i1 %222, label %223, label %495
223: ; preds = %220
%224 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0))
%225 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.10, i64 0, i64 0))
%226 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0))
store i32 1, i32* %24
br label %227
227: ; preds = %493, %223
%228 = load i32, i32* %24
%229 = icmp eq i32 %228, 1
br i1 %229, label %230, label %494
230: ; preds = %227
%231 = call i32 (i32, ...) bitcast (i32 (...)* @sleep to i32 (i32, ...)*)(i32 4)
%232 = call i32 (...) @clrscr()
%233 = load i32, i32* %20
%234 = icmp eq i32 %233, 1
br i1 %234, label %235, label %237
235: ; preds = %230
%236 = load i32, i32* %13
store i32 %236, i32* %21
br label %249
237: ; preds = %230
%238 = load i32, i32* %20
%239 = icmp eq i32 %238, 2
br i1 %239, label %240, label %242
240: ; preds = %237
%241 = load i32, i32* %14
store i32 %241, i32* %21
br label %248
242: ; preds = %237
%243 = load i32, i32* %20
%244 = icmp eq i32 %243, 3
br i1 %244, label %245, label %247
245: ; preds = %242
%246 = load i32, i32* %15
store i32 %246, i32* %21
br label %247
247: ; preds = %245, %242
br label %248
248: ; preds = %247, %240
br label %249
249: ; preds = %248, %235
%250 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0))
%251 = load i32, i32* %20
%252 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.11, i64 0, i64 0), i32 %251)
%253 = load i32, i32* %20
%254 = icmp eq i32 %253, 1
br i1 %254, label %255, label %259
255: ; preds = %249
%256 = getelementptr inbounds [20 x i8], [20 x i8]* %1, i64 0, i64 0
%257 = getelementptr inbounds [20 x i8], [20 x i8]* %2, i64 0, i64 0
%258 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.12, i64 0, i64 0), i8* %256, i8* %257)
br label %275
259: ; preds = %249
%260 = load i32, i32* %20
%261 = icmp eq i32 %260, 2
br i1 %261, label %262, label %266
262: ; preds = %259
%263 = getelementptr inbounds [20 x i8], [20 x i8]* %3, i64 0, i64 0
%264 = getelementptr inbounds [20 x i8], [20 x i8]* %4, i64 0, i64 0
%265 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.12, i64 0, i64 0), i8* %263, i8* %264)
br label %274
266: ; preds = %259
%267 = load i32, i32* %20
%268 = icmp eq i32 %267, 3
br i1 %268, label %269, label %273
269: ; preds = %266
%270 = getelementptr inbounds [20 x i8], [20 x i8]* %5, i64 0, i64 0
%271 = getelementptr inbounds [20 x i8], [20 x i8]* %6, i64 0, i64 0
%272 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.12, i64 0, i64 0), i8* %270, i8* %271)
br label %273
273: ; preds = %269, %266
br label %274
274: ; preds = %273, %262
br label %275
275: ; preds = %274, %255
%276 = load i32, i32* %21
%277 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.13, i64 0, i64 0), i32 %276)
%278 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0))
store i32 -1, i32* %25
br label %279
279: ; preds = %282, %275
%280 = load i32, i32* %25
%281 = icmp sle i32 %280, 0
br i1 %281, label %282, label %288
282: ; preds = %279
%283 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.14, i64 0, i64 0))
%284 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.15, i64 0, i64 0))
%285 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.16, i64 0, i64 0))
%286 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.17, i64 0, i64 0))
%287 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32* %25)
br label %279
288: ; preds = %279
%289 = load i32, i32* %25
%290 = icmp eq i32 %289, 1
br i1 %290, label %291, label %292
291: ; preds = %288
store i32 0, i32* %24
br label %493
292: ; preds = %288
%293 = load i32, i32* %25
%294 = icmp eq i32 %293, 2
br i1 %294, label %295, label %327
295: ; preds = %292
store i32 -1, i32* %16
br label %296
296: ; preds = %299, %295
%297 = load i32, i32* %16
%298 = icmp slt i32 %297, 0
br i1 %298, label %299, label %303
299: ; preds = %296
%300 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0))
%301 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.18, i64 0, i64 0))
%302 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32* %16)
br label %296
303: ; preds = %296
%304 = load i32, i32* %20
%305 = icmp eq i32 %304, 1
br i1 %305, label %306, label %310
306: ; preds = %303
%307 = load i32, i32* %16
%308 = load i32, i32* %13
%309 = add nsw i32 %308, %307
store i32 %309, i32* %13
br label %326
310: ; preds = %303
%311 = load i32, i32* %20
%312 = icmp eq i32 %311, 2
br i1 %312, label %313, label %317
313: ; preds = %310
%314 = load i32, i32* %16
%315 = load i32, i32* %14
%316 = add nsw i32 %315, %314
store i32 %316, i32* %14
br label %325
317: ; preds = %310
%318 = load i32, i32* %20
%319 = icmp eq i32 %318, 3
br i1 %319, label %320, label %324
320: ; preds = %317
%321 = load i32, i32* %16
%322 = load i32, i32* %15
%323 = add nsw i32 %322, %321
store i32 %323, i32* %15
br label %324
324: ; preds = %320, %317
br label %325
325: ; preds = %324, %313
br label %326
326: ; preds = %325, %306
br label %492
327: ; preds = %292
%328 = load i32, i32* %25
%329 = icmp eq i32 %328, 3
br i1 %329, label %330, label %370
330: ; preds = %327
store i32 -1, i32* %16
br label %331
331: ; preds = %342, %330
%332 = load i32, i32* %16
%333 = icmp slt i32 %332, 0
br i1 %333, label %340, label %334
334: ; preds = %331
%335 = load i32, i32* %21
%336 = load i32, i32* %16
%337 = call i32 @abs(i32 %336)
%338 = sub nsw i32 %335, %337
%339 = icmp slt i32 %338, 0
br label %340
340: ; preds = %334, %331
%341 = phi i1 [ true, %331 ], [ %339, %334 ]
br i1 %341, label %342, label %346
342: ; preds = %340
%343 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0))
%344 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.19, i64 0, i64 0))
%345 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32* %16)
br label %331
346: ; preds = %340
%347 = load i32, i32* %20
%348 = icmp eq i32 %347, 1
br i1 %348, label %349, label %353
349: ; preds = %346
%350 = load i32, i32* %16
%351 = load i32, i32* %13
%352 = sub nsw i32 %351, %350
store i32 %352, i32* %13
br label %369
353: ; preds = %346
%354 = load i32, i32* %20
%355 = icmp eq i32 %354, 2
br i1 %355, label %356, label %360
356: ; preds = %353
%357 = load i32, i32* %16
%358 = load i32, i32* %14
%359 = sub nsw i32 %358, %357
store i32 %359, i32* %14
br label %368
360: ; preds = %353
%361 = load i32, i32* %20
%362 = icmp eq i32 %361, 3
br i1 %362, label %363, label %367
363: ; preds = %360
%364 = load i32, i32* %16
%365 = load i32, i32* %15
%366 = sub nsw i32 %365, %364
store i32 %366, i32* %15
br label %367
367: ; preds = %363, %360
br label %368
368: ; preds = %367, %356
br label %369
369: ; preds = %368, %349
br label %491
370: ; preds = %327
%371 = load i32, i32* %25
%372 = icmp eq i32 %371, 4
br i1 %372, label %373, label %490
373: ; preds = %370
store i32 -1, i32* %16
br label %374
374: ; preds = %385, %373
%375 = load i32, i32* %16
%376 = icmp slt i32 %375, 0
br i1 %376, label %383, label %377
377: ; preds = %374
%378 = load i32, i32* %21
%379 = load i32, i32* %16
%380 = call i32 @abs(i32 %379)
%381 = sub nsw i32 %378, %380
%382 = icmp slt i32 %381, 0
br label %383
383: ; preds = %377, %374
%384 = phi i1 [ true, %374 ], [ %382, %377 ]
br i1 %384, label %385, label %389
385: ; preds = %383
%386 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0))
%387 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.20, i64 0, i64 0))
%388 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32* %16)
br label %374
389: ; preds = %383
store i32 -1, i32* %27
br label %390
390: ; preds = %402, %389
%391 = load i32, i32* %27
%392 = icmp slt i32 %391, 0
br i1 %392, label %400, label %393
393: ; preds = %390
%394 = load i32, i32* %27
%395 = icmp sgt i32 %394, 4
br i1 %395, label %400, label %396
396: ; preds = %393
%397 = load i32, i32* %27
%398 = load i32, i32* %20
%399 = icmp eq i32 %397, %398
br label %400
400: ; preds = %396, %393, %390
%401 = phi i1 [ true, %393 ], [ true, %390 ], [ %399, %396 ]
br i1 %401, label %402, label %406
402: ; preds = %400
%403 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0))
%404 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.21, i64 0, i64 0))
%405 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32* %27)
br label %390
406: ; preds = %400
%407 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0))
%408 = load i32, i32* %27
%409 = icmp eq i32 %408, 1
br i1 %409, label %410, label %414
410: ; preds = %406
%411 = load i8, i8* %17
%412 = sext i8 %411 to i32
%413 = icmp eq i32 %412, 1
br i1 %413, label %428, label %414
414: ; preds = %410, %406
%415 = load i32, i32* %27
%416 = icmp eq i32 %415, 2
br i1 %416, label %417, label %421
417: ; preds = %414
%418 = load i8, i8* %18
%419 = sext i8 %418 to i32
%420 = icmp eq i32 %419, 1
br i1 %420, label %428, label %421
421: ; preds = %417, %414
%422 = load i32, i32* %27
%423 = icmp eq i32 %422, 3
br i1 %423, label %424, label %487
424: ; preds = %421
%425 = load i8, i8* %19
%426 = sext i8 %425 to i32
%427 = icmp eq i32 %426, 1
br i1 %427, label %428, label %487
428: ; preds = %424, %417, %410
%429 = load i32, i32* %20
%430 = icmp eq i32 %429, 1
br i1 %430, label %431, label %437
431: ; preds = %428
%432 = load i32, i32* %16
%433 = load i32, i32* %13
%434 = sub nsw i32 %433, %432
store i32 %434, i32* %13
%435 = load i32, i32* %13
%436 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.22, i64 0, i64 0), i32 %435)
br label %457
437: ; preds = %428
%438 = load i32, i32* %20
%439 = icmp eq i32 %438, 2
br i1 %439, label %440, label %446
440: ; preds = %437
%441 = load i32, i32* %16
%442 = load i32, i32* %14
%443 = sub nsw i32 %442, %441
store i32 %443, i32* %14
%444 = load i32, i32* %14
%445 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.23, i64 0, i64 0), i32 %444)
br label %456
446: ; preds = %437
%447 = load i32, i32* %20
%448 = icmp eq i32 %447, 3
br i1 %448, label %449, label %455
449: ; preds = %446
%450 = load i32, i32* %16
%451 = load i32, i32* %15
%452 = sub nsw i32 %451, %450
store i32 %452, i32* %15
%453 = load i32, i32* %15
%454 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.24, i64 0, i64 0), i32 %453)
br label %455
455: ; preds = %449, %446
br label %456
456: ; preds = %455, %440
br label %457
457: ; preds = %456, %431
%458 = load i32, i32* %27
%459 = icmp eq i32 %458, 1
br i1 %459, label %460, label %466
460: ; preds = %457
%461 = load i32, i32* %16
%462 = load i32, i32* %13
%463 = add nsw i32 %462, %461
store i32 %463, i32* %13
%464 = load i32, i32* %13
%465 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.22, i64 0, i64 0), i32 %464)
br label %486
466: ; preds = %457
%467 = load i32, i32* %27
%468 = icmp eq i32 %467, 2
br i1 %468, label %469, label %475
469: ; preds = %466
%470 = load i32, i32* %16
%471 = load i32, i32* %14
%472 = add nsw i32 %471, %470
store i32 %472, i32* %14
%473 = load i32, i32* %14
%474 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.23, i64 0, i64 0), i32 %473)
br label %485
475: ; preds = %466
%476 = load i32, i32* %27
%477 = icmp eq i32 %476, 3
br i1 %477, label %478, label %484
478: ; preds = %475
%479 = load i32, i32* %16
%480 = load i32, i32* %15
%481 = add nsw i32 %480, %479
store i32 %481, i32* %15
%482 = load i32, i32* %15
%483 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.24, i64 0, i64 0), i32 %482)
br label %484
484: ; preds = %478, %475
br label %485
485: ; preds = %484, %469
br label %486
486: ; preds = %485, %460
br label %489
487: ; preds = %424, %421
%488 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.25, i64 0, i64 0))
br label %489
489: ; preds = %487, %486
br label %490
490: ; preds = %489, %370
br label %491
491: ; preds = %490, %369
br label %492
492: ; preds = %491, %326
br label %493
493: ; preds = %492, %291
br label %227
494: ; preds = %227
br label %497
495: ; preds = %220, %217
%496 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([74 x i8], [74 x i8]* @.str.26, i64 0, i64 0))
br label %497
497: ; preds = %495, %494
%498 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0))
br label %670
499: ; preds = %48
%500 = load i32, i32* %23
%501 = icmp eq i32 %500, 2
br i1 %501, label %502, label %663
502: ; preds = %499
%503 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0))
%504 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.27, i64 0, i64 0))
%505 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0))
%506 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.7, i64 0, i64 0))
store i32 0, i32* %26
%507 = call i32 (...) @getchar()
br label %508
508: ; preds = %518, %502
%509 = call i32 (...) @getchar()
%510 = trunc i32 %509 to i8
store i8 %510, i8* %28
%511 = sext i8 %510 to i32
%512 = icmp ne i32 %511, 10
br i1 %512, label %513, label %516
513: ; preds = %508
%514 = load i32, i32* %26
%515 = icmp slt i32 %514, 20
br label %516
516: ; preds = %513, %508
%517 = phi i1 [ false, %508 ], [ %515, %513 ]
br i1 %517, label %518, label %525
518: ; preds = %516
%519 = load i8, i8* %28
%520 = load i32, i32* %26
%521 = sext i32 %520 to i64
%522 = getelementptr inbounds [20 x i8], [20 x i8]* %10, i64 0, i64 %521
store i8 %519, i8* %522
%523 = load i32, i32* %26
%524 = add nsw i32 %523, 1
store i32 %524, i32* %26
br label %508
525: ; preds = %516
%526 = load i32, i32* %26
%527 = sext i32 %526 to i64
%528 = getelementptr inbounds [20 x i8], [20 x i8]* %10, i64 0, i64 %527
store i8 0, i8* %528
%529 = load i32, i32* %26
%530 = icmp sge i32 %529, 20
br i1 %530, label %531, label %539
531: ; preds = %525
br label %532
532: ; preds = %537, %531
%533 = call i32 (...) @getchar()
%534 = trunc i32 %533 to i8
store i8 %534, i8* %28
%535 = sext i8 %534 to i32
%536 = icmp ne i32 %535, 10
br i1 %536, label %537, label %538
537: ; preds = %532
br label %532
538: ; preds = %532
br label %539
539: ; preds = %538, %525
%540 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.8, i64 0, i64 0))
store i32 0, i32* %26
br label %541
541: ; preds = %551, %539
%542 = call i32 (...) @getchar()
%543 = trunc i32 %542 to i8
store i8 %543, i8* %28
%544 = sext i8 %543 to i32
%545 = icmp ne i32 %544, 10
br i1 %545, label %546, label %549
546: ; preds = %541
%547 = load i32, i32* %26
%548 = icmp slt i32 %547, 20
br label %549
549: ; preds = %546, %541
%550 = phi i1 [ false, %541 ], [ %548, %546 ]
br i1 %550, label %551, label %558
551: ; preds = %549
%552 = load i8, i8* %28
%553 = load i32, i32* %26
%554 = sext i32 %553 to i64
%555 = getelementptr inbounds [20 x i8], [20 x i8]* %11, i64 0, i64 %554
store i8 %552, i8* %555
%556 = load i32, i32* %26
%557 = add nsw i32 %556, 1
store i32 %557, i32* %26
br label %541
558: ; preds = %549
%559 = load i32, i32* %26
%560 = sext i32 %559 to i64
%561 = getelementptr inbounds [20 x i8], [20 x i8]* %11, i64 0, i64 %560
store i8 0, i8* %561
%562 = load i32, i32* %26
%563 = icmp sge i32 %562, 20
br i1 %563, label %564, label %572
564: ; preds = %558
br label %565
565: ; preds = %570, %564
%566 = call i32 (...) @getchar()
%567 = trunc i32 %566 to i8
store i8 %567, i8* %28
%568 = sext i8 %567 to i32
%569 = icmp ne i32 %568, 10
br i1 %569, label %570, label %571
570: ; preds = %565
br label %565
571: ; preds = %565
br label %572
572: ; preds = %571, %558
%573 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.9, i64 0, i64 0))
store i32 0, i32* %26
br label %574
574: ; preds = %591, %572
%575 = load i32, i32* %26
%576 = icmp slt i32 %575, 6
br i1 %576, label %577, label %598
577: ; preds = %574
br label %578
578: ; preds = %590, %577
%579 = call i32 (...) @getchar()
%580 = trunc i32 %579 to i8
store i8 %580, i8* %28
%581 = sext i8 %580 to i32
%582 = icmp eq i32 %581, 10
br i1 %582, label %588, label %583
583: ; preds = %578
%584 = load i8, i8* %28
%585 = sext i8 %584 to i32
%586 = call i32 @isalnum(i32 %585)
%587 = icmp eq i32 %586, 0
br label %588
588: ; preds = %583, %578
%589 = phi i1 [ true, %578 ], [ %587, %583 ]
br i1 %589, label %590, label %591
590: ; preds = %588
br label %578
591: ; preds = %588
%592 = load i8, i8* %28
%593 = load i32, i32* %26
%594 = sext i32 %593 to i64
%595 = getelementptr inbounds [6 x i8], [6 x i8]* %12, i64 0, i64 %594
store i8 %592, i8* %595
%596 = load i32, i32* %26
%597 = add nsw i32 %596, 1
store i32 %597, i32* %26
br label %574
598: ; preds = %574
%599 = load i32, i32* %26
%600 = sext i32 %599 to i64
%601 = getelementptr inbounds [20 x i8], [20 x i8]* %11, i64 0, i64 %600
store i8 0, i8* %601
%602 = load i32, i32* %26
%603 = icmp sge i32 %602, 6
br i1 %603, label %604, label %612
604: ; preds = %598
br label %605
605: ; preds = %610, %604
%606 = call i32 (...) @getchar()
%607 = trunc i32 %606 to i8
store i8 %607, i8* %28
%608 = sext i8 %607 to i32
%609 = icmp ne i32 %608, 10
br i1 %609, label %610, label %611
610: ; preds = %605
br label %605
611: ; preds = %605
br label %615
612: ; preds = %598
%613 = call i32 (...) @getchar()
%614 = trunc i32 %613 to i8
store i8 %614, i8* %28
br label %615
615: ; preds = %612, %611
%616 = load i8, i8* %17
%617 = sext i8 %616 to i32
%618 = icmp eq i32 %617, 0
br i1 %618, label %619, label %629
619: ; preds = %615
%620 = getelementptr inbounds [20 x i8], [20 x i8]* %1, i64 0, i64 0
%621 = getelementptr inbounds [20 x i8], [20 x i8]* %10, i64 0, i64 0
%622 = call i8* @strcpy(i8* %620, i8* %621)
%623 = getelementptr inbounds [20 x i8], [20 x i8]* %2, i64 0, i64 0
%624 = getelementptr inbounds [20 x i8], [20 x i8]* %11, i64 0, i64 0
%625 = call i8* @strcpy(i8* %623, i8* %624)
%626 = getelementptr inbounds [6 x i8], [6 x i8]* %7, i64 0, i64 0
%627 = getelementptr inbounds [6 x i8], [6 x i8]* %12, i64 0, i64 0
%628 = call i8* @strcpy(i8* %626, i8* %627)
store i8 1, i8* %17
br label %661
629: ; preds = %615
%630 = load i8, i8* %18
%631 = sext i8 %630 to i32
%632 = icmp eq i32 %631, 0
br i1 %632, label %633, label %643
633: ; preds = %629
%634 = getelementptr inbounds [20 x i8], [20 x i8]* %3, i64 0, i64 0
%635 = getelementptr inbounds [20 x i8], [20 x i8]* %10, i64 0, i64 0
%636 = call i8* @strcpy(i8* %634, i8* %635)
%637 = getelementptr inbounds [20 x i8], [20 x i8]* %4, i64 0, i64 0
%638 = getelementptr inbounds [20 x i8], [20 x i8]* %11, i64 0, i64 0
%639 = call i8* @strcpy(i8* %637, i8* %638)
%640 = getelementptr inbounds [6 x i8], [6 x i8]* %8, i64 0, i64 0
%641 = getelementptr inbounds [6 x i8], [6 x i8]* %12, i64 0, i64 0
%642 = call i8* @strcpy(i8* %640, i8* %641)
store i8 1, i8* %18
br label %660
643: ; preds = %629
%644 = load i8, i8* %19
%645 = sext i8 %644 to i32
%646 = icmp eq i32 %645, 0
br i1 %646, label %647, label %657
647: ; preds = %643
%648 = getelementptr inbounds [20 x i8], [20 x i8]* %5, i64 0, i64 0
%649 = getelementptr inbounds [20 x i8], [20 x i8]* %10, i64 0, i64 0
%650 = call i8* @strcpy(i8* %648, i8* %649)
%651 = getelementptr inbounds [20 x i8], [20 x i8]* %6, i64 0, i64 0
%652 = getelementptr inbounds [20 x i8], [20 x i8]* %11, i64 0, i64 0
%653 = call i8* @strcpy(i8* %651, i8* %652)
%654 = getelementptr inbounds [6 x i8], [6 x i8]* %9, i64 0, i64 0
%655 = getelementptr inbounds [6 x i8], [6 x i8]* %12, i64 0, i64 0
%656 = call i8* @strcpy(i8* %654, i8* %655)
store i8 1, i8* %19
br label %659
657: ; preds = %643
%658 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.28, i64 0, i64 0))
br label %659
659: ; preds = %657, %647
br label %660
660: ; preds = %659, %633
br label %661
661: ; preds = %660, %619
%662 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0))
br label %669
663: ; preds = %499
%664 = load i32, i32* %23
%665 = icmp eq i32 %664, 3
br i1 %665, label %666, label %668
666: ; preds = %663
%667 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0))
store i32 0, i32* %22
br label %668
668: ; preds = %666, %663
br label %669
669: ; preds = %668, %661
br label %670
670: ; preds = %669, %497
br label %33
671: ; preds = %33
%672 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.29, i64 0, i64 0))
%673 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.30, i64 0, i64 0))
%674 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.31, i64 0, i64 0))
%675 = load i8, i8* %17
%676 = sext i8 %675 to i32
%677 = icmp eq i32 %676, 1
br i1 %677, label %678, label %683
678: ; preds = %671
%679 = getelementptr inbounds [20 x i8], [20 x i8]* %1, i64 0, i64 0
%680 = getelementptr inbounds [20 x i8], [20 x i8]* %2, i64 0, i64 0
%681 = load i32, i32* %13
%682 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.32, i64 0, i64 0), i8* %679, i8* %680, i32 %681)
br label %683
683: ; preds = %678, %671
%684 = load i8, i8* %18
%685 = sext i8 %684 to i32
%686 = icmp eq i32 %685, 1
br i1 %686, label %687, label %692
687: ; preds = %683
%688 = getelementptr inbounds [20 x i8], [20 x i8]* %3, i64 0, i64 0
%689 = getelementptr inbounds [20 x i8], [20 x i8]* %4, i64 0, i64 0
%690 = load i32, i32* %14
%691 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.32, i64 0, i64 0), i8* %688, i8* %689, i32 %690)
br label %692
692: ; preds = %687, %683
%693 = load i8, i8* %19
%694 = sext i8 %693 to i32
%695 = icmp eq i32 %694, 1
br i1 %695, label %696, label %701
696: ; preds = %692
%697 = getelementptr inbounds [20 x i8], [20 x i8]* %5, i64 0, i64 0
%698 = getelementptr inbounds [20 x i8], [20 x i8]* %6, i64 0, i64 0
%699 = load i32, i32* %15
%700 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.32, i64 0, i64 0), i8* %697, i8* %698, i32 %699)
br label %701
701: ; preds = %696, %692
%702 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.31, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str.5 = [3 x i8] c"%d\00"
@.str.7 = [13 x i8] c"First Name: \00"
@.str.8 = [12 x i8] c"Last Name: \00"
@.str.9 = [11 x i8] c"Password: \00"
@.str.11 = [13 x i8] c"Account #%d\0A\00"
@.str.12 = [6 x i8] c"%s %s\00"
@.str.13 = [16 x i8] c"\0ABallance: $%d\0A\00"
@.str.18 = [10 x i8] c"Deposit: \00"
@.str.19 = [11 x i8] c"Retrieve: \00"
@.str.20 = [10 x i8] c"Tranfer: \00"
@.str.21 = [13 x i8] c"To account: \00"
@.str.22 = [12 x i8] c"Acc: %d\0A\00"
@.str.23 = [12 x i8] c"Acc: %d\0A\00"
@.str.24 = [12 x i8] c"Acc: %d\0A\00"
@.str.25 = [38 x i8] c"The specified account does not exist.\00"
@.str.29 = [26 x i8] c"-------------------------\00"
@.str.30 = [23 x i8] c"\0A|First\09|Last\09|Value\09|\00"
@.str.31 = [27 x i8] c"\0A-------------------------\00"
@.str.32 = [15 x i8] c"\0A|%s\09|%s\09|%d\09|\00"
@str.33 = [19 x i8] c"Welcome to bank.c!\00"
@str.38 = [14 x i8] c"~New Account~\00"
@str.40 = [45 x i8] c"Sorry, there are no more accounts availible.\00"
@str.43 = [8 x i8] c"~Login~\00"
@str.45 = [73 x i8] c"An account with that first name, last name, and password does not exist.\00"
@str.48 = [17 x i8] c"Login sucessful!\00"
@str.56 = [11 x i8] c"----------\00"
@str.57 = [20 x i8] c"Enter 1 to log out.\00"
@str.58 = [42 x i8] c"Enter 2 to deposit money to your account.\00"
@str.59 = [45 x i8] c"Enter 3 to retrieve money from your account.\00"
@str.60 = [46 x i8] c"Enter 4 to transfer money to another account.\00"
@str.61 = [19 x i8] c"Enter 1 to log in.\00"
@str.62 = [30 x i8] c"Enter 2 to create an account.\00"
@str.63 = [28 x i8] c"Enter 3 to end the program.\00"
define void @main() {
%1 = alloca [20 x i8]
%2 = alloca [20 x i8]
%3 = alloca [20 x i8]
%4 = alloca [20 x i8]
%5 = alloca [20 x i8]
%6 = alloca [20 x i8]
%7 = alloca [6 x i8]
%8 = alloca [6 x i8]
%9 = alloca [6 x i8]
%10 = alloca [20 x i8]
%11 = alloca [20 x i8]
%12 = alloca [6 x i8]
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = getelementptr inbounds [20 x i8], [20 x i8]* %1, i64 0, i64 0
%18 = getelementptr inbounds [20 x i8], [20 x i8]* %2, i64 0, i64 0
%19 = getelementptr inbounds [20 x i8], [20 x i8]* %3, i64 0, i64 0
%20 = getelementptr inbounds [20 x i8], [20 x i8]* %4, i64 0, i64 0
%21 = getelementptr inbounds [20 x i8], [20 x i8]* %5, i64 0, i64 0
%22 = getelementptr inbounds [20 x i8], [20 x i8]* %6, i64 0, i64 0
%23 = getelementptr inbounds [6 x i8], [6 x i8]* %7, i64 0, i64 0
%24 = getelementptr inbounds [6 x i8], [6 x i8]* %8, i64 0, i64 0
%25 = getelementptr inbounds [6 x i8], [6 x i8]* %9, i64 0, i64 0
%26 = getelementptr inbounds [20 x i8], [20 x i8]* %10, i64 0, i64 0
%27 = getelementptr inbounds [20 x i8], [20 x i8]* %11, i64 0, i64 0
%28 = getelementptr inbounds [6 x i8], [6 x i8]* %12, i64 0, i64 0
%29 = bitcast i32* %13 to i8*
%30 = bitcast i32* %14 to i8*
store i32 -1, i32* %14
%31 = bitcast i32* %15 to i8*
store i32 -1, i32* %15
%32 = bitcast i32* %16 to i8*
%33 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str.56, i64 0, i64 0))
%34 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @str.33, i64 0, i64 0))
%35 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str.56, i64 0, i64 0))
%36 = tail call i32 (i32, ...) bitcast (i32 (...)* @sleep to i32 (i32, ...)*)(i32 2)
%37 = getelementptr inbounds [20 x i8], [20 x i8]* %10, i64 0, i64 0
%38 = getelementptr inbounds [20 x i8], [20 x i8]* %11, i64 0, i64 0
%39 = getelementptr inbounds [6 x i8], [6 x i8]* %12, i64 0, i64 1
%40 = getelementptr inbounds [6 x i8], [6 x i8]* %12, i64 0, i64 2
%41 = getelementptr inbounds [6 x i8], [6 x i8]* %12, i64 0, i64 3
%42 = getelementptr inbounds [6 x i8], [6 x i8]* %12, i64 0, i64 4
%43 = getelementptr inbounds [6 x i8], [6 x i8]* %12, i64 0, i64 5
%44 = getelementptr inbounds [20 x i8], [20 x i8]* %11, i64 0, i64 6
%45 = getelementptr inbounds [20 x i8], [20 x i8]* %10, i64 0, i64 0
%46 = getelementptr inbounds [20 x i8], [20 x i8]* %11, i64 0, i64 0
%47 = getelementptr inbounds [6 x i8], [6 x i8]* %12, i64 0, i64 1
%48 = getelementptr inbounds [6 x i8], [6 x i8]* %12, i64 0, i64 2
%49 = getelementptr inbounds [6 x i8], [6 x i8]* %12, i64 0, i64 3
%50 = getelementptr inbounds [6 x i8], [6 x i8]* %12, i64 0, i64 4
%51 = getelementptr inbounds [6 x i8], [6 x i8]* %12, i64 0, i64 5
%52 = getelementptr inbounds [20 x i8], [20 x i8]* %11, i64 0, i64 6
br label %53
53: ; preds = %512, %0
%54 = phi i8 [ %519, %512 ], [ 0, %0 ]
%55 = phi i8 [ %518, %512 ], [ 0, %0 ]
%56 = phi i8 [ %517, %512 ], [ 0, %0 ]
%57 = phi i32 [ %516, %512 ], [ 0, %0 ]
%58 = phi i32 [ %515, %512 ], [ 0, %0 ]
%59 = phi i32 [ %514, %512 ], [ 0, %0 ]
br label %60
60: ; preds = %53, %71
%61 = call i32 (i32, ...) bitcast (i32 (...)* @sleep to i32 (i32, ...)*)(i32 4)
%62 = call i32 (...) @clrscr()
%63 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str.56, i64 0, i64 0))
store i32 -1, i32* %14
br label %64
64: ; preds = %60, %64
%65 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @str.61, i64 0, i64 0))
%66 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @str.62, i64 0, i64 0))
%67 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @str.63, i64 0, i64 0))
%68 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32* %14)
%69 = load i32, i32* %14
%70 = icmp slt i32 %69, 1
br i1 %70, label %64, label %71
71: ; preds = %64
switch i32 %69, label %60 [
i32 1, label %72
i32 2, label %364
i32 3, label %521
]
72: ; preds = %71
%73 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str.56, i64 0, i64 0))
%74 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([8 x i8], [8 x i8]* @str.43, i64 0, i64 0))
%75 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str.56, i64 0, i64 0))
%76 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.7, i64 0, i64 0))
%77 = call i32 (...) @getchar()
%78 = call i32 (...) @getchar()
%79 = and i32 %78, 255
%80 = icmp eq i32 %79, 10
br i1 %80, label %81, label %82
81: ; preds = %72
store i8 0, i8* %45
br label %102
82: ; preds = %72, %82
%83 = phi i64 [ %87, %82 ], [ 0, %72 ]
%84 = phi i32 [ %88, %82 ], [ %78, %72 ]
%85 = trunc i32 %84 to i8
%86 = getelementptr inbounds [20 x i8], [20 x i8]* %10, i64 0, i64 %83
store i8 %85, i8* %86
%87 = add nuw nsw i64 %83, 1
%88 = call i32 (...) @getchar()
%89 = and i32 %88, 255
%90 = icmp ne i32 %89, 10
%91 = icmp ult i64 %83, 19
%92 = select i1 %90, i1 %91, i1 false
br i1 %92, label %82, label %93
93: ; preds = %82
%94 = trunc i64 %87 to i32
%95 = and i64 %87, 4294967295
%96 = getelementptr inbounds [20 x i8], [20 x i8]* %10, i64 0, i64 %95
store i8 0, i8* %96
%97 = icmp ugt i32 %94, 19
br i1 %97, label %98, label %102
98: ; preds = %93, %98
%99 = call i32 (...) @getchar()
%100 = and i32 %99, 255
%101 = icmp eq i32 %100, 10
br i1 %101, label %102, label %98
102: ; preds = %98, %81, %93
%103 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.8, i64 0, i64 0))
%104 = call i32 (...) @getchar()
%105 = and i32 %104, 255
%106 = icmp eq i32 %105, 10
br i1 %106, label %107, label %108
107: ; preds = %102
store i8 0, i8* %46
br label %128
108: ; preds = %102, %108
%109 = phi i64 [ %113, %108 ], [ 0, %102 ]
%110 = phi i32 [ %114, %108 ], [ %104, %102 ]
%111 = trunc i32 %110 to i8
%112 = getelementptr inbounds [20 x i8], [20 x i8]* %11, i64 0, i64 %109
store i8 %111, i8* %112
%113 = add nuw nsw i64 %109, 1
%114 = call i32 (...) @getchar()
%115 = and i32 %114, 255
%116 = icmp ne i32 %115, 10
%117 = icmp ult i64 %109, 19
%118 = select i1 %116, i1 %117, i1 false
br i1 %118, label %108, label %119
119: ; preds = %108
%120 = trunc i64 %113 to i32
%121 = and i64 %113, 4294967295
%122 = getelementptr inbounds [20 x i8], [20 x i8]* %11, i64 0, i64 %121
store i8 0, i8* %122
%123 = icmp ugt i32 %120, 19
br i1 %123, label %124, label %128
124: ; preds = %119, %124
%125 = call i32 (...) @getchar()
%126 = and i32 %125, 255
%127 = icmp eq i32 %126, 10
br i1 %127, label %128, label %124
128: ; preds = %124, %107, %119
%129 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.9, i64 0, i64 0))
br label %130
130: ; preds = %134, %128
%131 = call i32 (...) @getchar()
%132 = shl i32 %131, 24
%133 = icmp eq i32 %132, 167772160
br i1 %133, label %134, label %135
134: ; preds = %130, %135
br label %130
135: ; preds = %130
%136 = ashr exact i32 %132, 24
%137 = call i32 @isalnum(i32 %136)
%138 = icmp eq i32 %137, 0
br i1 %138, label %134, label %139
139: ; preds = %135
%140 = trunc i32 %131 to i8
store i8 %140, i8* %28
br label %141
141: ; preds = %149, %139
%142 = call i32 (...) @getchar()
%143 = shl i32 %142, 24
%144 = icmp eq i32 %143, 167772160
br i1 %144, label %149, label %145
145: ; preds = %141
%146 = ashr exact i32 %143, 24
%147 = call i32 @isalnum(i32 %146)
%148 = icmp eq i32 %147, 0
br i1 %148, label %149, label %150
149: ; preds = %145, %141
br label %141
150: ; preds = %145
%151 = trunc i32 %142 to i8
store i8 %151, i8* %47
br label %152
152: ; preds = %160, %150
%153 = call i32 (...) @getchar()
%154 = shl i32 %153, 24
%155 = icmp eq i32 %154, 167772160
br i1 %155, label %160, label %156
156: ; preds = %152
%157 = ashr exact i32 %154, 24
%158 = call i32 @isalnum(i32 %157)
%159 = icmp eq i32 %158, 0
br i1 %159, label %160, label %161
160: ; preds = %156, %152
br label %152
161: ; preds = %156
%162 = trunc i32 %153 to i8
store i8 %162, i8* %48
br label %163
163: ; preds = %171, %161
%164 = call i32 (...) @getchar()
%165 = shl i32 %164, 24
%166 = icmp eq i32 %165, 167772160
br i1 %166, label %171, label %167
167: ; preds = %163
%168 = ashr exact i32 %165, 24
%169 = call i32 @isalnum(i32 %168)
%170 = icmp eq i32 %169, 0
br i1 %170, label %171, label %172
171: ; preds = %167, %163
br label %163
172: ; preds = %167
%173 = trunc i32 %164 to i8
store i8 %173, i8* %49
br label %174
174: ; preds = %182, %172
%175 = call i32 (...) @getchar()
%176 = shl i32 %175, 24
%177 = icmp eq i32 %176, 167772160
br i1 %177, label %182, label %178
178: ; preds = %174
%179 = ashr exact i32 %176, 24
%180 = call i32 @isalnum(i32 %179)
%181 = icmp eq i32 %180, 0
br i1 %181, label %182, label %183
182: ; preds = %178, %174
br label %174
183: ; preds = %178
%184 = trunc i32 %175 to i8
store i8 %184, i8* %50
br label %185
185: ; preds = %193, %183
%186 = call i32 (...) @getchar()
%187 = shl i32 %186, 24
%188 = icmp eq i32 %187, 167772160
br i1 %188, label %193, label %189
189: ; preds = %185
%190 = ashr exact i32 %187, 24
%191 = call i32 @isalnum(i32 %190)
%192 = icmp eq i32 %191, 0
br i1 %192, label %193, label %194
193: ; preds = %189, %185
br label %185
194: ; preds = %189
%195 = trunc i32 %186 to i8
store i8 %195, i8* %51
store i8 0, i8* %52
br label %196
196: ; preds = %194, %196
%197 = call i32 (...) @getchar()
%198 = and i32 %197, 255
%199 = icmp eq i32 %198, 10
br i1 %199, label %200, label %196
200: ; preds = %196
%201 = call i32 @strcmp(i8* %26, i8* %17)
%202 = icmp eq i32 %201, 0
br i1 %202, label %203, label %209
203: ; preds = %200
%204 = call i32 @strcmp(i8* %27, i8* %18)
%205 = icmp eq i32 %204, 0
br i1 %205, label %206, label %209
206: ; preds = %203
%207 = call i32 @strcmp(i8* %28, i8* %23)
%208 = icmp eq i32 %207, 0
br i1 %208, label %227, label %209
209: ; preds = %206, %203, %200
%210 = call i32 @strcmp(i8* %26, i8* %19)
%211 = icmp eq i32 %210, 0
br i1 %211, label %212, label %218
212: ; preds = %209
%213 = call i32 @strcmp(i8* %27, i8* %20)
%214 = icmp eq i32 %213, 0
br i1 %214, label %215, label %218
215: ; preds = %212
%216 = call i32 @strcmp(i8* %28, i8* %24)
%217 = icmp eq i32 %216, 0
br i1 %217, label %227, label %218
218: ; preds = %215, %212, %209
%219 = call i32 @strcmp(i8* %26, i8* %21)
%220 = icmp eq i32 %219, 0
br i1 %220, label %221, label %362
221: ; preds = %218
%222 = call i32 @strcmp(i8* %27, i8* %22)
%223 = icmp eq i32 %222, 0
br i1 %223, label %224, label %362
224: ; preds = %221
%225 = call i32 @strcmp(i8* %28, i8* %25)
%226 = icmp eq i32 %225, 0
br i1 %226, label %227, label %362
227: ; preds = %224, %206, %215
%228 = phi i1 [ false, %215 ], [ true, %206 ], [ false, %224 ]
%229 = phi i1 [ true, %215 ], [ false, %206 ], [ false, %224 ]
%230 = phi i32 [ 2, %215 ], [ 1, %206 ], [ 3, %224 ]
%231 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str.56, i64 0, i64 0))
%232 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @str.48, i64 0, i64 0))
%233 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str.56, i64 0, i64 0))
%234 = icmp eq i8 %56, 1
%235 = icmp eq i8 %55, 1
%236 = icmp eq i8 %54, 1
br label %237
237: ; preds = %266, %227
%238 = phi i32 [ %57, %227 ], [ %267, %266 ]
%239 = phi i32 [ %58, %227 ], [ %268, %266 ]
%240 = phi i32 [ %59, %227 ], [ %269, %266 ]
%241 = call i32 (i32, ...) bitcast (i32 (...)* @sleep to i32 (i32, ...)*)(i32 4)
%242 = call i32 (...) @clrscr()
%243 = select i1 %229, i32 %239, i32 %238
%244 = select i1 %228, i32 %240, i32 %243
%245 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str.56, i64 0, i64 0))
%246 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.11, i64 0, i64 0), i32 %230)
br i1 %228, label %247, label %249
247: ; preds = %237
%248 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.12, i64 0, i64 0), i8* %17, i8* %18)
br label %254
249: ; preds = %237
br i1 %229, label %250, label %252
250: ; preds = %249
%251 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.12, i64 0, i64 0), i8* %19, i8* %20)
br label %254
252: ; preds = %249
%253 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.12, i64 0, i64 0), i8* %21, i8* %22)
br label %254
254: ; preds = %250, %252, %247
%255 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.13, i64 0, i64 0), i32 %244)
%256 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str.56, i64 0, i64 0))
store i32 -1, i32* %15
br label %257
257: ; preds = %254, %257
%258 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @str.57, i64 0, i64 0))
%259 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @str.58, i64 0, i64 0))
%260 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([45 x i8], [45 x i8]* @str.59, i64 0, i64 0))
%261 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @str.60, i64 0, i64 0))
%262 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32* %15)
%263 = load i32, i32* %15
%264 = icmp slt i32 %263, 1
br i1 %264, label %257, label %265
265: ; preds = %257
switch i32 %263, label %266 [
i32 1, label %512
i32 2, label %270
i32 3, label %285
i32 4, label %302
]
266: ; preds = %265, %343, %281, %283, %278, %348, %356, %352, %360, %295, %300, %298
%267 = phi i32 [ %238, %278 ], [ %238, %281 ], [ %284, %283 ], [ %238, %295 ], [ %238, %298 ], [ %301, %300 ], [ %346, %348 ], [ %346, %352 ], [ %358, %356 ], [ %238, %360 ], [ %346, %343 ], [ %238, %265 ]
%268 = phi i32 [ %239, %278 ], [ %282, %281 ], [ %239, %283 ], [ %239, %295 ], [ %299, %298 ], [ %239, %300 ], [ %345, %348 ], [ %354, %352 ], [ %345, %356 ], [ %239, %360 ], [ %345, %343 ], [ %239, %265 ]
%269 = phi i32 [ %279, %278 ], [ %240, %281 ], [ %240, %283 ], [ %296, %295 ], [ %240, %298 ], [ %240, %300 ], [ %350, %348 ], [ %344, %352 ], [ %344, %356 ], [ %240, %360 ], [ %344, %343 ], [ %240, %265 ]
br label %237
270: ; preds = %265
store i32 -1, i32* %13
br label %271
271: ; preds = %270, %271
%272 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str.56, i64 0, i64 0))
%273 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.18, i64 0, i64 0))
%274 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32* %13)
%275 = load i32, i32* %13
%276 = icmp slt i32 %275, 0
br i1 %276, label %271, label %277
277: ; preds = %271
br i1 %228, label %278, label %280
278: ; preds = %277
%279 = add nsw i32 %275, %240
br label %266
280: ; preds = %277
br i1 %229, label %281, label %283
281: ; preds = %280
%282 = add nsw i32 %275, %239
br label %266
283: ; preds = %280
%284 = add nsw i32 %275, %238
br label %266
285: ; preds = %265
store i32 -1, i32* %13
br label %286
286: ; preds = %285, %286
%287 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str.56, i64 0, i64 0))
%288 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.19, i64 0, i64 0))
%289 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32* %13)
%290 = load i32, i32* %13
%291 = icmp slt i32 %290, 0
%292 = icmp slt i32 %244, %290
%293 = select i1 %291, i1 true, i1 %292
br i1 %293, label %286, label %294
294: ; preds = %286
br i1 %228, label %295, label %297
295: ; preds = %294
%296 = sub nsw i32 %240, %290
br label %266
297: ; preds = %294
br i1 %229, label %298, label %300
298: ; preds = %297
%299 = sub nsw i32 %239, %290
br label %266
300: ; preds = %297
%301 = sub nsw i32 %238, %290
br label %266
302: ; preds = %265
store i32 -1, i32* %13
br label %303
303: ; preds = %302, %303
%304 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str.56, i64 0, i64 0))
%305 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.20, i64 0, i64 0))
%306 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32* %13)
%307 = load i32, i32* %13
%308 = icmp slt i32 %307, 0
%309 = icmp slt i32 %244, %307
%310 = select i1 %308, i1 true, i1 %309
br i1 %310, label %303, label %311
311: ; preds = %303
store i32 -1, i32* %16
br label %312
312: ; preds = %311, %312
%313 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str.56, i64 0, i64 0))
%314 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.21, i64 0, i64 0))
%315 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32* %16)
%316 = load i32, i32* %16
%317 = icmp ugt i32 %316, 4
%318 = icmp eq i32 %316, %230
%319 = or i1 %317, %318
br i1 %319, label %312, label %320
320: ; preds = %312
%321 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str.56, i64 0, i64 0))
%322 = load i32, i32* %16
%323 = icmp eq i32 %322, 1
%324 = select i1 %323, i1 %234, i1 false
br i1 %324, label %331, label %325
325: ; preds = %320
%326 = icmp eq i32 %322, 2
%327 = select i1 %326, i1 %235, i1 false
br i1 %327, label %331, label %328
328: ; preds = %325
%329 = icmp eq i32 %322, 3
%330 = select i1 %329, i1 %236, i1 false
br i1 %330, label %331, label %360
331: ; preds = %328, %325, %320
%332 = load i32, i32* %13
br i1 %228, label %333, label %336
333: ; preds = %331
%334 = sub nsw i32 %240, %332
%335 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.22, i64 0, i64 0), i32 %334)
br label %343
336: ; preds = %331
br i1 %229, label %337, label %340
337: ; preds = %336
%338 = sub nsw i32 %239, %332
%339 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.23, i64 0, i64 0), i32 %338)
br label %343
340: ; preds = %336
%341 = sub nsw i32 %238, %332
%342 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.24, i64 0, i64 0), i32 %341)
br label %343
343: ; preds = %337, %340, %333
%344 = phi i32 [ %334, %333 ], [ %240, %337 ], [ %240, %340 ]
%345 = phi i32 [ %239, %333 ], [ %338, %337 ], [ %239, %340 ]
%346 = phi i32 [ %238, %333 ], [ %238, %337 ], [ %341, %340 ]
%347 = load i32, i32* %16
switch i32 %347, label %266 [
i32 1, label %348
i32 2, label %352
i32 3, label %356
]
348: ; preds = %343
%349 = load i32, i32* %13
%350 = add nsw i32 %349, %344
%351 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.22, i64 0, i64 0), i32 %350)
br label %266
352: ; preds = %343
%353 = load i32, i32* %13
%354 = add nsw i32 %353, %345
%355 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.23, i64 0, i64 0), i32 %354)
br label %266
356: ; preds = %343
%357 = load i32, i32* %13
%358 = add nsw i32 %357, %346
%359 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.24, i64 0, i64 0), i32 %358)
br label %266
360: ; preds = %328
%361 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([38 x i8], [38 x i8]* @.str.25, i64 0, i64 0))
br label %266
362: ; preds = %218, %221, %224
%363 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([73 x i8], [73 x i8]* @str.45, i64 0, i64 0))
br label %512
364: ; preds = %71
%365 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str.56, i64 0, i64 0))
%366 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @str.38, i64 0, i64 0))
%367 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str.56, i64 0, i64 0))
%368 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.7, i64 0, i64 0))
%369 = call i32 (...) @getchar()
%370 = call i32 (...) @getchar()
%371 = and i32 %370, 255
%372 = icmp eq i32 %371, 10
br i1 %372, label %373, label %374
373: ; preds = %364
store i8 0, i8* %37
br label %394
374: ; preds = %364, %374
%375 = phi i64 [ %379, %374 ], [ 0, %364 ]
%376 = phi i32 [ %380, %374 ], [ %370, %364 ]
%377 = trunc i32 %376 to i8
%378 = getelementptr inbounds [20 x i8], [20 x i8]* %10, i64 0, i64 %375
store i8 %377, i8* %378
%379 = add nuw nsw i64 %375, 1
%380 = call i32 (...) @getchar()
%381 = and i32 %380, 255
%382 = icmp ne i32 %381, 10
%383 = icmp ult i64 %375, 19
%384 = select i1 %382, i1 %383, i1 false
br i1 %384, label %374, label %385
385: ; preds = %374
%386 = trunc i64 %379 to i32
%387 = and i64 %379, 4294967295
%388 = getelementptr inbounds [20 x i8], [20 x i8]* %10, i64 0, i64 %387
store i8 0, i8* %388
%389 = icmp ugt i32 %386, 19
br i1 %389, label %390, label %394
390: ; preds = %385, %390
%391 = call i32 (...) @getchar()
%392 = and i32 %391, 255
%393 = icmp eq i32 %392, 10
br i1 %393, label %394, label %390
394: ; preds = %390, %373, %385
%395 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.8, i64 0, i64 0))
%396 = call i32 (...) @getchar()
%397 = and i32 %396, 255
%398 = icmp eq i32 %397, 10
br i1 %398, label %399, label %400
399: ; preds = %394
store i8 0, i8* %38
br label %420
400: ; preds = %394, %400
%401 = phi i64 [ %405, %400 ], [ 0, %394 ]
%402 = phi i32 [ %406, %400 ], [ %396, %394 ]
%403 = trunc i32 %402 to i8
%404 = getelementptr inbounds [20 x i8], [20 x i8]* %11, i64 0, i64 %401
store i8 %403, i8* %404
%405 = add nuw nsw i64 %401, 1
%406 = call i32 (...) @getchar()
%407 = and i32 %406, 255
%408 = icmp ne i32 %407, 10
%409 = icmp ult i64 %401, 19
%410 = select i1 %408, i1 %409, i1 false
br i1 %410, label %400, label %411
411: ; preds = %400
%412 = trunc i64 %405 to i32
%413 = and i64 %405, 4294967295
%414 = getelementptr inbounds [20 x i8], [20 x i8]* %11, i64 0, i64 %413
store i8 0, i8* %414
%415 = icmp ugt i32 %412, 19
br i1 %415, label %416, label %420
416: ; preds = %411, %416
%417 = call i32 (...) @getchar()
%418 = and i32 %417, 255
%419 = icmp eq i32 %418, 10
br i1 %419, label %420, label %416
420: ; preds = %416, %399, %411
%421 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.9, i64 0, i64 0))
br label %422
422: ; preds = %426, %420
%423 = call i32 (...) @getchar()
%424 = shl i32 %423, 24
%425 = icmp eq i32 %424, 167772160
br i1 %425, label %426, label %427
426: ; preds = %422, %427
br label %422
427: ; preds = %422
%428 = ashr exact i32 %424, 24
%429 = call i32 @isalnum(i32 %428)
%430 = icmp eq i32 %429, 0
br i1 %430, label %426, label %431
431: ; preds = %427
%432 = trunc i32 %423 to i8
store i8 %432, i8* %28
br label %433
433: ; preds = %441, %431
%434 = call i32 (...) @getchar()
%435 = shl i32 %434, 24
%436 = icmp eq i32 %435, 167772160
br i1 %436, label %441, label %437
437: ; preds = %433
%438 = ashr exact i32 %435, 24
%439 = call i32 @isalnum(i32 %438)
%440 = icmp eq i32 %439, 0
br i1 %440, label %441, label %442
441: ; preds = %437, %433
br label %433
442: ; preds = %437
%443 = trunc i32 %434 to i8
store i8 %443, i8* %39
br label %444
444: ; preds = %452, %442
%445 = call i32 (...) @getchar()
%446 = shl i32 %445, 24
%447 = icmp eq i32 %446, 167772160
br i1 %447, label %452, label %448
448: ; preds = %444
%449 = ashr exact i32 %446, 24
%450 = call i32 @isalnum(i32 %449)
%451 = icmp eq i32 %450, 0
br i1 %451, label %452, label %453
452: ; preds = %448, %444
br label %444
453: ; preds = %448
%454 = trunc i32 %445 to i8
store i8 %454, i8* %40
br label %455
455: ; preds = %463, %453
%456 = call i32 (...) @getchar()
%457 = shl i32 %456, 24
%458 = icmp eq i32 %457, 167772160
br i1 %458, label %463, label %459
459: ; preds = %455
%460 = ashr exact i32 %457, 24
%461 = call i32 @isalnum(i32 %460)
%462 = icmp eq i32 %461, 0
br i1 %462, label %463, label %464
463: ; preds = %459, %455
br label %455
464: ; preds = %459
%465 = trunc i32 %456 to i8
store i8 %465, i8* %41
br label %466
466: ; preds = %474, %464
%467 = call i32 (...) @getchar()
%468 = shl i32 %467, 24
%469 = icmp eq i32 %468, 167772160
br i1 %469, label %474, label %470
470: ; preds = %466
%471 = ashr exact i32 %468, 24
%472 = call i32 @isalnum(i32 %471)
%473 = icmp eq i32 %472, 0
br i1 %473, label %474, label %475
474: ; preds = %470, %466
br label %466
475: ; preds = %470
%476 = trunc i32 %467 to i8
store i8 %476, i8* %42
br label %477
477: ; preds = %485, %475
%478 = call i32 (...) @getchar()
%479 = shl i32 %478, 24
%480 = icmp eq i32 %479, 167772160
br i1 %480, label %485, label %481
481: ; preds = %477
%482 = ashr exact i32 %479, 24
%483 = call i32 @isalnum(i32 %482)
%484 = icmp eq i32 %483, 0
br i1 %484, label %485, label %486
485: ; preds = %481, %477
br label %477
486: ; preds = %481
%487 = trunc i32 %478 to i8
store i8 %487, i8* %43
store i8 0, i8* %44
br label %488
488: ; preds = %486, %488
%489 = call i32 (...) @getchar()
%490 = and i32 %489, 255
%491 = icmp eq i32 %490, 10
br i1 %491, label %492, label %488
492: ; preds = %488
%493 = icmp eq i8 %56, 0
br i1 %493, label %494, label %498
494: ; preds = %492
%495 = call i8* @strcpy(i8* %17, i8* %26)
%496 = call i8* @strcpy(i8* %18, i8* %27)
%497 = call i8* @strcpy(i8* %23, i8* %28)
br label %512
498: ; preds = %492
%499 = icmp eq i8 %55, 0
br i1 %499, label %500, label %504
500: ; preds = %498
%501 = call i8* @strcpy(i8* %19, i8* %26)
%502 = call i8* @strcpy(i8* %20, i8* %27)
%503 = call i8* @strcpy(i8* %24, i8* %28)
br label %512
504: ; preds = %498
%505 = icmp eq i8 %54, 0
br i1 %505, label %506, label %510
506: ; preds = %504
%507 = call i8* @strcpy(i8* %21, i8* %26)
%508 = call i8* @strcpy(i8* %22, i8* %27)
%509 = call i8* @strcpy(i8* %25, i8* %28)
br label %512
510: ; preds = %504
%511 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([45 x i8], [45 x i8]* @str.40, i64 0, i64 0))
br label %512
512: ; preds = %265, %494, %506, %510, %500, %362
%513 = phi i8* [ getelementptr inbounds ([11 x i8], [11 x i8]* @str.56, i64 0, i64 0), %362 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @str.56, i64 0, i64 0), %500 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @str.56, i64 0, i64 0), %510 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @str.56, i64 0, i64 0), %506 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @str.56, i64 0, i64 0), %494 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @str.56, i64 0, i64 0), %265 ]
%514 = phi i32 [ %59, %362 ], [ %59, %500 ], [ %59, %510 ], [ %59, %506 ], [ %59, %494 ], [ %240, %265 ]
%515 = phi i32 [ %58, %362 ], [ %58, %500 ], [ %58, %510 ], [ %58, %506 ], [ %58, %494 ], [ %239, %265 ]
%516 = phi i32 [ %57, %362 ], [ %57, %500 ], [ %57, %510 ], [ %57, %506 ], [ %57, %494 ], [ %238, %265 ]
%517 = phi i8 [ %56, %362 ], [ %56, %500 ], [ %56, %510 ], [ %56, %506 ], [ 1, %494 ], [ %56, %265 ]
%518 = phi i8 [ %55, %362 ], [ 1, %500 ], [ %55, %510 ], [ %55, %506 ], [ %55, %494 ], [ %55, %265 ]
%519 = phi i8 [ %54, %362 ], [ %54, %500 ], [ %54, %510 ], [ 1, %506 ], [ %54, %494 ], [ %54, %265 ]
%520 = call i32 @puts(i8* dereferenceable(1) %513)
br label %53
521: ; preds = %71
%522 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @str.56, i64 0, i64 0))
%523 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @.str.29, i64 0, i64 0))
%524 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.30, i64 0, i64 0))
%525 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.31, i64 0, i64 0))
%526 = icmp eq i8 %56, 1
br i1 %526, label %527, label %529
527: ; preds = %521
%528 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.32, i64 0, i64 0), i8* %17, i8* %18, i32 %59)
br label %529
529: ; preds = %527, %521
%530 = icmp eq i8 %55, 1
br i1 %530, label %531, label %533
531: ; preds = %529
%532 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.32, i64 0, i64 0), i8* %19, i8* %20, i32 %58)
br label %533
533: ; preds = %531, %529
%534 = icmp eq i8 %54, 1
br i1 %534, label %535, label %537
535: ; preds = %533
%536 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.32, i64 0, i64 0), i8* %21, i8* %22, i32 %57)
br label %537
537: ; preds = %535, %533
%538 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.31, i64 0, i64 0))
ret void
}