#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int convert(int);
int /*<<< orphan*/ fflush(int /*<<< orphan*/);
int /*<<< orphan*/ mypause();
int /*<<< orphan*/ pic(int);
int /*<<< orphan*/ printf(char *, ...);
int rand();
int /*<<< orphan*/ scanf(char *, ...);
int /*<<< orphan*/ shuff(int *);
int /*<<< orphan*/ stdin;
int /*<<< orphan*/ tolower(char);
int play() {
  int i;
  int playerSum = 0;
  int dealerSum = 0;
  int playerCards[5] = {0};
  int dealerCards[5] = {0};
  int cards[52];
  int aChoice;
  shuff(cards);
  playerCards[0] = cards[0];
  playerCards[1] = cards[1];
  dealerCards[0] = cards[2];
  dealerCards[1] = cards[3];
  printf("컴퓨터의 카드 중 하나:\n");
  pic(dealerCards[0]);
  printf("\n");
  printf("플레이어의 카드:\n");
  pic(playerCards[0]);
  pic(playerCards[1]);
  i = 0;
  for (i = 0; i < 2; i++) {
    if (playerCards[i] % 100 == 1) {
      printf("%d번째 카드 A의 값을 1또는 11로 선택해주세요 : ", i + 1);
      do {
        scanf("%i", &aChoice);
        fflush(stdin);
        switch (aChoice) {
        case 1:
          break;
        case 11:
          break;
        default:
          printf("\t1 또는 11로 답해주세요!!\n");
          break;
        }
      } while (aChoice != 1 && aChoice != 11);
      if (aChoice == 11) {
        printf("당신은 A의 값을 11로 선택했습니다.\n");
        playerSum = playerSum + 11;
      } else if (aChoice == 1) {
        printf("당신은 A의 값을 1로 선택했습니다.\n");
        playerSum = playerSum + 1;
      }
    } else if (convert(playerCards[i]) % 100 == 10)
      playerSum = playerSum + 10;
    else
      playerSum = playerSum + playerCards[i] % 100;
    if (playerSum > 21) {
      printf("현재 플레이어의 카드의 합은:%d\n\n", playerSum);
      printf("Computer의 승리입니다!베팅한 금액을 잃습니다\n");
      mypause();
      return 1;
    } else if (playerSum == 21) {
      printf("현재 플레이어의 카드의 합은:%d\n\n", playerSum);
      printf("Player의 승리입니다!, 베팅한 금액만큼 돈을 얻습니다\n");
      mypause();
      return 1;
    }
  }
  printf("현재 플레이어의 카드의 합은:%d\n\n", playerSum);
  for (i = 0; i < 3; i++) {
    char choice = 'n';
    printf("카드를 새로 받으시겠습니까? y또는 n으로 답해주세요: ");
    do {
      scanf("%c", &choice);
      fflush(stdin);
      tolower(choice);
      if (choice != 'y' && choice != 'n')
        printf("\ty또는 n으로 답해주세요!!\n");
    } while (choice != 'y' && choice != 'n');
    if (choice == 'y') {
      printf("새로운 카드를 받았습니다.\n");
      playerCards[i + 2] = cards[i + 4];
      printf(" 당신의 %d번째 카드입니다:\n", i + 3);
      pic(playerCards[i + 2]);
      if (playerCards[i + 2] % 100 == 1) {
        printf("%d번째 카드 A의 값을 11(Y)또는 1(N)중에서 선택해주세요.: ",
               i + 3);
        do {
          scanf("%c", &choice);
          fflush(stdin);
          tolower(choice);
          if (choice != 'y' || choice != 'n')
            printf("\ty또는 n으로 답해주세요!!\n");
        } while (choice != 'y' && choice != 'n');
        if (choice == 'y') {
          printf("플레이어는 A의 값을 11로 정했습니다.\n");
          playerSum = playerSum + 11;
        } else if (choice == 'n') {
          printf("플레이어는 A의 값을 1로 정했습니다..\n");
          playerSum = playerSum + 1;
        }
      } else if (convert(playerCards[i + 2]) % 100 == 10)
        playerSum = playerSum + 10;
      else
        playerSum = playerSum + playerCards[i + 2] % 100;
      if (playerSum > 21) {
        printf("플레이어의 현재 카드의 합은: %i\n\n", playerSum);
        printf("Computer의 승리입니다.!베팅한 금액을 잃습니다\n");
        mypause();
        return 0;
      } else if (playerSum == 21) {
        printf("플레이어의 현재 카드의 합은: %i\n\n", playerSum);
        printf("Player의 승리입니다!베팅한 금액만큼 돈을 얻습니다\n");
        mypause();
        return 1;
      } else
        printf("플레이어의 현재 카드의 합은: %i\n\n", playerSum);
    } else {
      printf("플레이어의 현재 카드의 합은: %i\n\n", playerSum);
      break;
    }
  }
  if (i == 3) {
    printf("당신의 5개의 card의 합이 21보다 작으므로 player의 승리입니다\n");
    mypause();
    return 0;
  }
  printf("Computer의 카드는:\n");
  pic(dealerCards[0]);
  pic(dealerCards[1]);
  if (dealerCards[0] % 100 + dealerCards[1] % 100 == 2) {
    dealerSum = 12;
    printf("컴퓨터의 현재 카드의 합은: %i\n\n", dealerSum);
  } else if ((convert(dealerCards[0])) % 100 +
                 (convert(dealerCards[1])) % 100 ==
             1) {
    dealerSum = 21;
    printf("컴퓨터의 현재 카드의 합은: %i\n\n", dealerSum);
    printf("Computer의 승리입니다!베팅한 금액을 잃습니다.\n");
    mypause();
    return 0;
  } else if (dealerCards[0] % 100 == 1 || dealerCards[1] % 100 == 1) {
    dealerSum = (dealerCards[0] + dealerCards[1]) % 100 + (rand() % 2) * 10;
    printf("컴퓨터의 현재 카드의 합은: %i\n\n", dealerSum);
  } else {
    dealerSum =
        (convert(dealerCards[0])) % 100 + (convert(dealerCards[1])) % 100;
    printf("컴퓨터의 현재 카드이 합은: %i\n\n", dealerSum);
  }
  for (i = 0; i < 3 && dealerSum < 17; i++) {
    dealerCards[i + 2] = cards[i + 7];
    printf("Computer의 카드는  %i 입니다.: \n", i + 3);
    pic(dealerCards[i + 2]);
    if (dealerCards[i + 2] % 100 == 1) {
      if (dealerSum + 11 <= 21) {
        printf("Computer는 A의 값을 11로 정했습니다.\n");
        dealerSum = dealerSum + 11;
        printf("컴퓨터이 현재 카드의 합은: %i\n\n", dealerSum);
      } else {
        printf("Compuer는 A의 값을 1로 정했습니다\n");
        dealerSum = dealerSum + 1;
        printf("컴퓨터의 현재 카드의 합은: %i\n\n", dealerSum);
      }
    } else {
      dealerSum = dealerSum + convert(dealerCards[i + 2]) % 100;
      printf("Computer의 현재 카드의 합은 : %i\n\n", dealerSum);
    }
  }
  if (i == 3) {
    printf("컴퓨터의 5장의 카드의 합이 21을 넘지 않았으므로 컴퓨터의 "
           "승리입니다.\n");
    mypause();
    return 0;
  }
  if (dealerSum > 21 || playerSum > dealerSum) {
    printf("Player의 승리입니다.!베팅한 금액만큼 돈을 얻습니다.\n");
    mypause();
    return 1;
  } else if (playerSum == dealerSum) {
    printf("player와 computer가 같은 점수를 획득했습니다!\n");
    mypause();
    return 3;
  } else if (playerSum < dealerSum) {
    printf("Computer의 승리입니다! 베팅한 금액을 잃습니다.\n");
    mypause();
    return 0;
  }
  return 3;
}


x86 assembly (clang, -O0):
<play>:
push   %rbp
mov    %rsp,%rbp
sub    $0x160,%rsp
movl   $0x0,-0xc(%rbp)
movl   $0x0,-0x10(%rbp)
lea    -0x30(%rbp),%rdi
xor    %esi,%esi
mov    $0x14,%edx
call   1060 <memset@plt>
lea    -0x50(%rbp),%rdi
xor    %esi,%esi
mov    $0x14,%edx
call   1060 <memset@plt>
lea    -0x120(%rbp),%rdi
call   1070 <shuff@plt>
mov    -0x120(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x11c(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x118(%rbp),%eax
mov    %eax,-0x50(%rbp)
mov    -0x114(%rbp),%eax
mov    %eax,-0x4c(%rbp)
lea    0xdf0(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x50(%rbp),%edi
call   1040 <pic@plt>
lea    0xf06(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xded(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x30(%rbp),%edi
call   1040 <pic@plt>
mov    -0x2c(%rbp),%edi
call   1040 <pic@plt>
movl   $0x0,-0x8(%rbp)
movl   $0x0,-0x8(%rbp)
cmpl   $0x2,-0x8(%rbp)
jge    146d <play+0x2cd>
movslq -0x8(%rbp),%rax
mov    -0x30(%rbp,%rax,4),%eax
mov    $0x64,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
jne    1388 <play+0x1e8>
mov    -0x8(%rbp),%esi
add    $0x1,%esi
lea    0xdb1(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xde3(%rip),%rdi
xor    %eax,%eax
lea    -0x124(%rbp),%rsi
call   10a0 <scanf@plt>
mov    0x2d3c(%rip),%rax
mov    (%rax),%edi
call   1090 <fflush@plt>
mov    -0x124(%rbp),%eax
mov    %eax,-0x12c(%rbp)
sub    $0x1,%eax
je     12e1 <play+0x141>
jmp    12cd <play+0x12d>
mov    -0x12c(%rbp),%eax
sub    $0xb,%eax
je     12e6 <play+0x146>
jmp    12eb <play+0x14b>
jmp    12f9 <play+0x159>
jmp    12f9 <play+0x159>
lea    0xd8b(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    12fe <play+0x15e>
xor    %eax,%eax
cmpl   $0x1,-0x124(%rbp)
mov    %al,-0x12d(%rbp)
je     1323 <play+0x183>
cmpl   $0xb,-0x124(%rbp)
setne  %al
mov    %al,-0x12d(%rbp)
mov    -0x12d(%rbp),%al
test   $0x1,%al
jne    1290 <play+0xf0>
cmpl   $0xb,-0x124(%rbp)
jne    135a <play+0x1ba>
lea    0xd5b(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0xc(%rbp),%eax
add    $0xb,%eax
mov    %eax,-0xc(%rbp)
jmp    1383 <play+0x1e3>
cmpl   $0x1,-0x124(%rbp)
jne    137e <play+0x1de>
lea    0xd63(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1383 <play+0x1e3>
jmp    13dd <play+0x23d>
movslq -0x8(%rbp),%rax
mov    -0x30(%rbp,%rax,4),%edi
call   1030 <convert@plt>
mov    $0x64,%ecx
cltd
idiv   %ecx
cmp    $0xa,%edx
jne    13b4 <play+0x214>
mov    -0xc(%rbp),%eax
add    $0xa,%eax
mov    %eax,-0xc(%rbp)
jmp    13d8 <play+0x238>
mov    -0xc(%rbp),%eax
mov    %eax,-0x134(%rbp)
movslq -0x8(%rbp),%rax
mov    -0x30(%rbp,%rax,4),%eax
mov    $0x64,%ecx
cltd
idiv   %ecx
mov    -0x134(%rbp),%eax
add    %edx,%eax
mov    %eax,-0xc(%rbp)
jmp    13dd <play+0x23d>
cmpl   $0x15,-0xc(%rbp)
jle    1419 <play+0x279>
mov    -0xc(%rbp),%esi
lea    0xd10(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xd2f(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    $0x0,%al
call   10b0 <mypause@plt>
movl   $0x1,-0x4(%rbp)
jmp    1bc2 <play+0xa22>
cmpl   $0x15,-0xc(%rbp)
jne    1455 <play+0x2b5>
mov    -0xc(%rbp),%esi
lea    0xcd4(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xd31(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    $0x0,%al
call   10b0 <mypause@plt>
movl   $0x1,-0x4(%rbp)
jmp    1bc2 <play+0xa22>
jmp    145a <play+0x2ba>
jmp    145f <play+0x2bf>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1259 <play+0xb9>
mov    -0xc(%rbp),%esi
lea    0xc8a(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x3,-0x8(%rbp)
jge    17df <play+0x63f>
movb   $0x6e,-0x125(%rbp)
lea    0xd17(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xd53(%rip),%rdi
lea    -0x125(%rbp),%rsi
mov    $0x0,%al
call   10a0 <scanf@plt>
mov    0x2b28(%rip),%rax
mov    (%rax),%edi
call   1090 <fflush@plt>
movsbl -0x125(%rbp),%edi
call   1080 <tolower@plt>
movsbl -0x125(%rbp),%eax
cmp    $0x79,%eax
je     1501 <play+0x361>
movsbl -0x125(%rbp),%eax
cmp    $0x6e,%eax
je     1501 <play+0x361>
lea    0xd07(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    1506 <play+0x366>
movsbl -0x125(%rbp),%ecx
xor    %eax,%eax
cmp    $0x79,%ecx
mov    %al,-0x135(%rbp)
je     1531 <play+0x391>
movsbl -0x125(%rbp),%eax
cmp    $0x6e,%eax
setne  %al
mov    %al,-0x135(%rbp)
mov    -0x135(%rbp),%al
test   $0x1,%al
jne    14a4 <play+0x304>
movsbl -0x125(%rbp),%eax
cmp    $0x79,%eax
jne    17b6 <play+0x616>
lea    0xccf(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x4,%eax
cltq
mov    -0x120(%rbp,%rax,4),%ecx
mov    -0x8(%rbp),%eax
add    $0x2,%eax
cltq
mov    %ecx,-0x30(%rbp,%rax,4)
mov    -0x8(%rbp),%esi
add    $0x3,%esi
lea    0xcc6(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x2,%eax
cltq
mov    -0x30(%rbp,%rax,4),%edi
call   1040 <pic@plt>
mov    -0x8(%rbp),%eax
add    $0x2,%eax
cltq
mov    -0x30(%rbp,%rax,4),%eax
mov    $0x64,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
jne    16c6 <play+0x526>
mov    -0x8(%rbp),%esi
add    $0x3,%esi
lea    0xcaa(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xc29(%rip),%rdi
lea    -0x125(%rbp),%rsi
mov    $0x0,%al
call   10a0 <scanf@plt>
mov    0x29fe(%rip),%rax
mov    (%rax),%edi
call   1090 <fflush@plt>
movsbl -0x125(%rbp),%edi
call   1080 <tolower@plt>
movsbl -0x125(%rbp),%eax
cmp    $0x79,%eax
jne    161d <play+0x47d>
movsbl -0x125(%rbp),%eax
cmp    $0x6e,%eax
je     162b <play+0x48b>
lea    0xbdd(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    1630 <play+0x490>
movsbl -0x125(%rbp),%ecx
xor    %eax,%eax
cmp    $0x79,%ecx
mov    %al,-0x136(%rbp)
je     165b <play+0x4bb>
movsbl -0x125(%rbp),%eax
cmp    $0x6e,%eax
setne  %al
mov    %al,-0x136(%rbp)
mov    -0x136(%rbp),%al
test   $0x1,%al
jne    15ce <play+0x42e>
movsbl -0x125(%rbp),%eax
cmp    $0x79,%eax
jne    1695 <play+0x4f5>
lea    0xc3d(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0xc(%rbp),%eax
add    $0xb,%eax
mov    %eax,-0xc(%rbp)
jmp    16c1 <play+0x521>
movsbl -0x125(%rbp),%eax
cmp    $0x6e,%eax
jne    16bc <play+0x51c>
lea    0xc45(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    16c1 <play+0x521>
jmp    1723 <play+0x583>
mov    -0x8(%rbp),%eax
add    $0x2,%eax
cltq
mov    -0x30(%rbp,%rax,4),%edi
call   1030 <convert@plt>
mov    $0x64,%ecx
cltd
idiv   %ecx
cmp    $0xa,%edx
jne    16f6 <play+0x556>
mov    -0xc(%rbp),%eax
add    $0xa,%eax
mov    %eax,-0xc(%rbp)
jmp    171e <play+0x57e>
mov    -0xc(%rbp),%eax
mov    %eax,-0x13c(%rbp)
mov    -0x8(%rbp),%eax
add    $0x2,%eax
cltq
mov    -0x30(%rbp,%rax,4),%eax
mov    $0x64,%ecx
cltd
idiv   %ecx
mov    -0x13c(%rbp),%eax
add    %edx,%eax
mov    %eax,-0xc(%rbp)
jmp    1723 <play+0x583>
cmpl   $0x15,-0xc(%rbp)
jle    175f <play+0x5bf>
mov    -0xc(%rbp),%esi
lea    0xbee(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xc0e(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    $0x0,%al
call   10b0 <mypause@plt>
movl   $0x0,-0x4(%rbp)
jmp    1bc2 <play+0xa22>
cmpl   $0x15,-0xc(%rbp)
jne    179b <play+0x5fb>
mov    -0xc(%rbp),%esi
lea    0xbb2(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xc11(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    $0x0,%al
call   10b0 <mypause@plt>
movl   $0x1,-0x4(%rbp)
jmp    1bc2 <play+0xa22>
mov    -0xc(%rbp),%esi
lea    0xb80(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    17b1 <play+0x611>
jmp    17cc <play+0x62c>
mov    -0xc(%rbp),%esi
lea    0xb65(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    17df <play+0x63f>
jmp    17d1 <play+0x631>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1485 <play+0x2e5>
cmpl   $0x3,-0x8(%rbp)
jne    180a <play+0x66a>
lea    0xbe8(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    $0x0,%al
call   10b0 <mypause@plt>
movl   $0x0,-0x4(%rbp)
jmp    1bc2 <play+0xa22>
lea    0xc19(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x50(%rbp),%edi
call   1040 <pic@plt>
mov    -0x4c(%rbp),%edi
call   1040 <pic@plt>
mov    -0x50(%rbp),%eax
mov    $0x64,%ecx
cltd
idiv   %ecx
mov    %edx,-0x140(%rbp)
mov    -0x4c(%rbp),%eax
mov    $0x64,%ecx
cltd
idiv   %ecx
mov    %edx,%eax
mov    -0x140(%rbp),%edx
add    %eax,%edx
cmp    $0x2,%edx
jne    1874 <play+0x6d4>
movl   $0xc,-0x10(%rbp)
mov    -0x10(%rbp),%esi
lea    0xbda(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    19a5 <play+0x805>
mov    -0x50(%rbp),%edi
call   1030 <convert@plt>
mov    $0x64,%ecx
cltd
idiv   %ecx
mov    %edx,-0x144(%rbp)
mov    -0x4c(%rbp),%edi
call   1030 <convert@plt>
mov    $0x64,%ecx
cltd
idiv   %ecx
mov    %edx,%eax
mov    -0x144(%rbp),%edx
add    %eax,%edx
cmp    $0x1,%edx
jne    18e6 <play+0x746>
movl   $0x15,-0x10(%rbp)
mov    -0x10(%rbp),%esi
lea    0xb84(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xba1(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    $0x0,%al
call   10b0 <mypause@plt>
movl   $0x0,-0x4(%rbp)
jmp    1bc2 <play+0xa22>
mov    -0x50(%rbp),%eax
mov    $0x64,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
je     190e <play+0x76e>
mov    -0x4c(%rbp),%eax
mov    $0x64,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
jne    1957 <play+0x7b7>
mov    -0x50(%rbp),%eax
add    -0x4c(%rbp),%eax
mov    $0x64,%ecx
cltd
idiv   %ecx
mov    %edx,-0x148(%rbp)
mov    $0x0,%al
call   10c0 <rand@plt>
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %edx,%eax
mov    -0x148(%rbp),%edx
imul   $0xa,%eax,%eax
add    %eax,%edx
mov    %edx,-0x10(%rbp)
mov    -0x10(%rbp),%esi
lea    0xaf7(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    199b <play+0x7fb>
mov    -0x50(%rbp),%edi
call   1030 <convert@plt>
mov    $0x64,%ecx
cltd
idiv   %ecx
mov    %edx,-0x14c(%rbp)
mov    -0x4c(%rbp),%edi
call   1030 <convert@plt>
mov    $0x64,%ecx
cltd
idiv   %ecx
mov    %edx,%eax
mov    -0x14c(%rbp),%edx
add    %eax,%edx
mov    %edx,-0x10(%rbp)
mov    -0x10(%rbp),%esi
lea    0xb18(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    19a0 <play+0x800>
jmp    19a5 <play+0x805>
movl   $0x0,-0x8(%rbp)
xor    %eax,%eax
cmpl   $0x3,-0x8(%rbp)
mov    %al,-0x14d(%rbp)
jge    19cb <play+0x82b>
cmpl   $0x11,-0x10(%rbp)
setl   %al
mov    %al,-0x14d(%rbp)
mov    -0x14d(%rbp),%al
test   $0x1,%al
jne    19de <play+0x83e>
jmp    1af5 <play+0x955>
mov    -0x8(%rbp),%eax
add    $0x7,%eax
cltq
mov    -0x120(%rbp,%rax,4),%ecx
mov    -0x8(%rbp),%eax
add    $0x2,%eax
cltq
mov    %ecx,-0x50(%rbp,%rax,4)
mov    -0x8(%rbp),%esi
add    $0x3,%esi
lea    0xad1(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x2,%eax
cltq
mov    -0x50(%rbp,%rax,4),%edi
call   1040 <pic@plt>
mov    -0x8(%rbp),%eax
add    $0x2,%eax
cltq
mov    -0x50(%rbp,%rax,4),%eax
mov    $0x64,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
jne    1aa4 <play+0x904>
mov    -0x10(%rbp),%eax
add    $0xb,%eax
cmp    $0x15,%eax
jg     1a77 <play+0x8d7>
lea    0xaae(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x10(%rbp),%eax
add    $0xb,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%esi
lea    0xac4(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    1a9f <play+0x8ff>
lea    0xadc(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%esi
lea    0x9aa(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    1ae2 <play+0x942>
mov    -0x10(%rbp),%eax
mov    %eax,-0x154(%rbp)
mov    -0x8(%rbp),%eax
add    $0x2,%eax
cltq
mov    -0x50(%rbp,%rax,4),%edi
call   1030 <convert@plt>
mov    $0x64,%ecx
cltd
idiv   %ecx
mov    -0x154(%rbp),%eax
add    %edx,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%esi
lea    0xaac(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    1ae7 <play+0x947>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    19ac <play+0x80c>
cmpl   $0x3,-0x8(%rbp)
jne    1b20 <play+0x980>
lea    0xaac(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    $0x0,%al
call   10b0 <mypause@plt>
movl   $0x0,-0x4(%rbp)
jmp    1bc2 <play+0xa22>
cmpl   $0x15,-0x10(%rbp)
jg     1b36 <play+0x996>
mov    -0xc(%rbp),%eax
cmp    -0x10(%rbp),%eax
jle    1b57 <play+0x9b7>
lea    0xad7(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    $0x0,%al
call   10b0 <mypause@plt>
movl   $0x1,-0x4(%rbp)
jmp    1bc2 <play+0xa22>
mov    -0xc(%rbp),%eax
cmp    -0x10(%rbp),%eax
jne    1b84 <play+0x9e4>
lea    0xaf2(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    $0x0,%al
call   10b0 <mypause@plt>
movl   $0x3,-0x4(%rbp)
jmp    1bc2 <play+0xa22>
mov    -0xc(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    1bb1 <play+0xa11>
lea    0xb01(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    $0x0,%al
call   10b0 <mypause@plt>
movl   $0x0,-0x4(%rbp)
jmp    1bc2 <play+0xa22>
jmp    1bb6 <play+0xa16>
jmp    1bbb <play+0xa1b>
movl   $0x3,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x160,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<play>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xf8,%rsp
lea    0x20(%rsp),%rdi
call   1080 <shuff@plt>
movslq 0x20(%rsp),%rbp
mov    0x24(%rsp),%r15d
mov    0x28(%rsp),%ebx
mov    0x2c(%rsp),%eax
mov    %eax,0x1c(%rsp)
lea    0x1049(%rip),%rdi
call   1050 <puts@plt>
mov    %ebx,0xc(%rsp)
mov    %ebx,%edi
call   1060 <pic@plt>
mov    $0xa,%ebx
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x1043(%rip),%rdi
call   1050 <puts@plt>
mov    %ebp,%edi
call   1060 <pic@plt>
mov    %r15d,%edi
call   1060 <pic@plt>
imul   $0x51eb851f,%rbp,%rax
mov    %rax,%rcx
shr    $0x3f,%rcx
sar    $0x25,%rax
add    %ecx,%eax
imul   $0x64,%eax,%eax
mov    %ebp,%r13d
sub    %eax,%r13d
cmp    $0x1,%r13d
jne    12c7 <play+0x117>
lea    0xdb0(%rip),%rdi
mov    $0x1,%esi
xor    %eax,%eax
call   1070 <printf@plt>
lea    0xddd(%rip),%r14
lea    0x8(%rsp),%r13
mov    0x2d79(%rip),%rbp
lea    0x142a(%rip),%r12
cs nopw 0x0(%rax,%rax,1)
mov    %r14,%rdi
mov    %r13,%rsi
xor    %eax,%eax
call   10b0 <scanf@plt>
mov    0x0(%rbp),%edi
call   10a0 <fflush@plt>
mov    0x8(%rsp),%ebx
cmp    $0x1,%ebx
je     12af <play+0xff>
cmp    $0xb,%ebx
je     12af <play+0xff>
mov    %r12,%rdi
call   1050 <puts@plt>
mov    0x8(%rsp),%ebx
cmp    $0xb,%ebx
je     1306 <play+0x156>
cmp    $0x1,%ebx
jne    1280 <play+0xd0>
mov    $0x1,%ebx
lea    0x137c(%rip),%rdi
jmp    130d <play+0x15d>
mov    %ebp,%edi
call   1040 <convert@plt>
cltq
imul   $0x51eb851f,%rax,%rcx
mov    %rcx,%rdx
shr    $0x3f,%rdx
sar    $0x25,%rcx
add    %edx,%ecx
imul   $0x64,%ecx,%ecx
sub    %ecx,%eax
cmp    $0xa,%eax
je     1312 <play+0x162>
cmp    $0x16,%r13d
jge    13ff <play+0x24f>
mov    %r13d,%ebx
cmp    $0x15,%r13d
jne    1312 <play+0x162>
jmp    1424 <play+0x274>
lea    0x1363(%rip),%rdi
call   1050 <puts@plt>
movslq %r15d,%rax
imul   $0x51eb851f,%rax,%rax
mov    %rax,%rcx
shr    $0x3f,%rcx
sar    $0x25,%rax
add    %ecx,%eax
imul   $0x64,%eax,%eax
mov    %r15d,%r13d
sub    %eax,%r13d
cmp    $0x1,%r13d
jne    13ba <play+0x20a>
lea    0xcbd(%rip),%rdi
mov    $0x2,%esi
xor    %eax,%eax
call   1070 <printf@plt>
lea    0xcea(%rip),%r14
lea    0x8(%rsp),%r12
mov    0x2c86(%rip),%rbp
lea    0x1337(%rip),%r15
nopl   0x0(%rax)
mov    %r14,%rdi
mov    %r12,%rsi
xor    %eax,%eax
call   10b0 <scanf@plt>
mov    0x0(%rbp),%edi
call   10a0 <fflush@plt>
mov    0x8(%rsp),%eax
cmp    $0x1,%eax
je     139f <play+0x1ef>
cmp    $0xb,%eax
je     139f <play+0x1ef>
mov    %r15,%rdi
call   1050 <puts@plt>
mov    0x8(%rsp),%eax
cmp    $0xb,%eax
je     13e7 <play+0x237>
cmp    $0x1,%eax
jne    1370 <play+0x1c0>
lea    0x1291(%rip),%rdi
call   1050 <puts@plt>
add    $0x1,%ebx
jmp    13f6 <play+0x246>
mov    %r15d,%edi
call   1040 <convert@plt>
cltq
imul   $0x51eb851f,%rax,%rcx
mov    %rcx,%rdx
shr    $0x3f,%rdx
sar    $0x25,%rcx
add    %edx,%ecx
imul   $0x64,%ecx,%ecx
sub    %ecx,%eax
cmp    $0xa,%eax
jne    1419 <play+0x269>
add    $0xa,%ebx
jmp    13f6 <play+0x246>
lea    0x1282(%rip),%rdi
call   1050 <puts@plt>
add    $0xb,%ebx
mov    %ebx,%r13d
cmp    $0x15,%r13d
jle    1422 <play+0x272>
lea    0xc3d(%rip),%rdi
mov    %r13d,%esi
xor    %eax,%eax
call   1070 <printf@plt>
lea    0x11ed(%rip),%rdi
jmp    143e <play+0x28e>
add    %ebx,%r13d
cmp    $0x15,%r13d
jg     13ff <play+0x24f>
jne    1463 <play+0x2b3>
lea    0xc18(%rip),%rdi
mov    $0x15,%esi
xor    %eax,%eax
call   1070 <printf@plt>
lea    0x117f(%rip),%rdi
call   1050 <puts@plt>
xor    %eax,%eax
call   10c0 <mypause@plt>
mov    $0x1,%ebp
mov    %ebp,%eax
add    $0xf8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
lea    0xbd9(%rip),%rdi
mov    %r13d,%esi
xor    %eax,%eax
call   1070 <printf@plt>
lea    0xbf5(%rip),%rbx
lea    0xc38(%rip),%rbp
lea    0x7(%rsp),%r15
mov    0x2b5a(%rip),%r12
xor    %r14d,%r14d
movb   $0x6e,0x7(%rsp)
mov    %rbx,%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    %rbp,%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   10b0 <scanf@plt>
mov    (%r12),%edi
call   10a0 <fflush@plt>
movsbl 0x7(%rsp),%edi
call   1090 <tolower@plt>
movzbl 0x7(%rsp),%eax
cmp    $0x6e,%al
je     14de <play+0x32e>
cmp    $0x79,%al
je     14de <play+0x32e>
lea    0x10c6(%rip),%rdi
call   1050 <puts@plt>
movzbl 0x7(%rsp),%eax
cmp    $0x6e,%al
je     162a <play+0x47a>
cmp    $0x79,%al
jne    14a0 <play+0x2f0>
lea    0xf9b(%rip),%rdi
call   1050 <puts@plt>
movslq 0x30(%rsp,%r14,4),%rbx
mov    %r14,0x10(%rsp)
lea    0x3(%r14),%esi
lea    0xbb2(%rip),%rdi
mov    %esi,0x18(%rsp)
xor    %eax,%eax
call   1070 <printf@plt>
mov    %ebx,%edi
call   1060 <pic@plt>
imul   $0x51eb851f,%rbx,%rax
mov    %rax,%rcx
shr    $0x3f,%rcx
sar    $0x25,%rax
add    %ecx,%eax
imul   $0x64,%eax,%eax
mov    %ebx,%r14d
sub    %eax,%r14d
cmp    $0x1,%r14d
jne    15ab <play+0x3fb>
lea    0xb9c(%rip),%rdi
mov    0x18(%rsp),%esi
xor    %eax,%eax
call   1070 <printf@plt>
lea    0xb17(%rip),%rbx
mov    0x10(%rsp),%r14
xchg   %ax,%ax
mov    %rbp,%rdi
mov    %r15,%rsi
xor    %eax,%eax
call   10b0 <scanf@plt>
mov    (%r12),%edi
call   10a0 <fflush@plt>
movsbl 0x7(%rsp),%edi
call   1090 <tolower@plt>
lea    0x1013(%rip),%rdi
call   1050 <puts@plt>
movzbl 0x7(%rsp),%eax
cmp    $0x6e,%al
je     15d8 <play+0x428>
cmp    $0x79,%al
jne    1560 <play+0x3b0>
lea    0xfc7(%rip),%rdi
call   1050 <puts@plt>
add    $0xb,%r13d
jmp    15f9 <play+0x449>
mov    %ebx,%edi
call   1040 <convert@plt>
cltq
imul   $0x51eb851f,%rax,%rcx
mov    %rcx,%rdx
shr    $0x3f,%rdx
sar    $0x25,%rcx
add    %edx,%ecx
imul   $0x64,%ecx,%ecx
sub    %ecx,%eax
cmp    $0xa,%eax
jne    15ea <play+0x43a>
add    $0xa,%r13d
jmp    15ed <play+0x43d>
lea    0xf55(%rip),%rdi
call   1050 <puts@plt>
add    $0x1,%r13d
jmp    15f9 <play+0x449>
add    %r14d,%r13d
lea    0xa7c(%rip),%rbx
mov    0x10(%rsp),%r14
cmp    $0x15,%r13d
jg     194d <play+0x79d>
je     1958 <play+0x7a8>
lea    0xb1f(%rip),%rdi
mov    %r13d,%esi
xor    %eax,%eax
call   1070 <printf@plt>
add    $0x1,%r14
cmp    $0x3,%r14
jne    1491 <play+0x2e1>
jmp    1641 <play+0x491>
lea    0xafe(%rip),%rdi
mov    %r13d,%esi
xor    %eax,%eax
call   1070 <printf@plt>
cmp    $0x3,%r14d
jne    164d <play+0x49d>
lea    0xdf3(%rip),%rdi
jmp    18f1 <play+0x741>
lea    0xc15(%rip),%rdi
call   1050 <puts@plt>
mov    0xc(%rsp),%ebx
mov    %ebx,%edi
call   1060 <pic@plt>
mov    0x1c(%rsp),%r15d
mov    %r15d,%edi
call   1060 <pic@plt>
mov    %ebx,%edi
movslq %ebx,%rax
imul   $0x51eb851f,%rax,%rax
mov    %rax,%rcx
shr    $0x3f,%rcx
sar    $0x25,%rax
add    %ecx,%eax
imul   $0x64,%eax,%eax
mov    %ebx,%ebp
sub    %eax,%ebp
movslq %r15d,%rbx
imul   $0x51eb851f,%rbx,%rax
mov    %rax,%rcx
shr    $0x3f,%rcx
sar    $0x25,%rax
add    %ecx,%eax
imul   $0x64,%eax,%eax
sub    %eax,%ebx
lea    (%rbx,%rbp,1),%eax
cmp    $0x2,%eax
jne    16d2 <play+0x522>
lea    0xaa1(%rip),%rdi
mov    $0xc,%ebp
mov    $0xc,%esi
xor    %eax,%eax
call   1070 <printf@plt>
jmp    17f6 <play+0x646>
call   1040 <convert@plt>
movslq %eax,%r14
imul   $0x51eb851f,%r14,%rax
mov    %rax,%rcx
shr    $0x3f,%rcx
sar    $0x25,%rax
add    %ecx,%eax
imul   $0x64,%eax,%eax
sub    %eax,%r14d
mov    %r15d,%edi
call   1040 <convert@plt>
cltq
imul   $0x51eb851f,%rax,%rcx
mov    %rcx,%rdx
shr    $0x3f,%rdx
sar    $0x25,%rcx
add    %edx,%ecx
imul   $0x64,%ecx,%ecx
sub    %ecx,%eax
add    %r14d,%eax
cmp    $0x1,%eax
jne    1745 <play+0x595>
lea    0xa37(%rip),%rdi
xor    %ebp,%ebp
mov    $0x15,%esi
xor    %eax,%eax
call   1070 <printf@plt>
lea    0xcc2(%rip),%rdi
call   1050 <puts@plt>
jmp    18f8 <play+0x748>
cmp    $0x1,%ebp
je     17a3 <play+0x5f3>
cmp    $0x1,%ebx
je     17a3 <play+0x5f3>
mov    0xc(%rsp),%edi
call   1040 <convert@plt>
movslq %eax,%rbx
imul   $0x51eb851f,%rbx,%rax
mov    %rax,%rcx
shr    $0x3f,%rcx
sar    $0x25,%rax
add    %ecx,%eax
imul   $0x64,%eax,%eax
sub    %eax,%ebx
mov    %r15d,%edi
call   1040 <convert@plt>
movslq %eax,%rbp
imul   $0x51eb851f,%rbp,%rax
mov    %rax,%rcx
shr    $0x3f,%rcx
sar    $0x25,%rax
add    %ecx,%eax
imul   $0x64,%eax,%eax
sub    %eax,%ebp
add    %ebx,%ebp
lea    0x9e7(%rip),%rdi
jmp    17e4 <play+0x634>
add    0xc(%rsp),%r15d
movslq %r15d,%rbx
imul   $0x51eb851f,%rbx,%rax
mov    %rax,%rcx
shr    $0x3f,%rcx
sar    $0x25,%rax
add    %ecx,%eax
imul   $0x64,%eax,%eax
sub    %eax,%ebx
xor    %eax,%eax
call   10d0 <rand@plt>
mov    %eax,%ecx
shr    $0x1f,%ecx
add    %eax,%ecx
and    $0xfffffffe,%ecx
sub    %ecx,%eax
lea    (%rax,%rax,4),%eax
lea    (%rbx,%rax,2),%ebp
lea    0x979(%rip),%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1070 <printf@plt>
cmp    $0x10,%ebp
jg     1904 <play+0x754>
lea    0x9b6(%rip),%r14
lea    0xa02(%rip),%r12
xor    %r15d,%r15d
nopw   0x0(%rax,%rax,1)
movslq 0x3c(%rsp,%r15,4),%rbx
lea    0x3(%r15),%esi
mov    %r14,%rdi
xor    %eax,%eax
call   1070 <printf@plt>
mov    %ebx,%edi
call   1060 <pic@plt>
imul   $0x51eb851f,%rbx,%rax
mov    %rax,%rcx
shr    $0x3f,%rcx
sar    $0x25,%rax
add    %ecx,%eax
imul   $0x64,%eax,%eax
mov    %ebx,%ecx
sub    %eax,%ecx
cmp    $0x1,%ecx
jne    1870 <play+0x6c0>
cmp    $0xa,%ebp
jg     18b0 <play+0x700>
add    $0xb,%ebp
lea    0xb75(%rip),%rdi
call   1050 <puts@plt>
lea    0x976(%rip),%rdi
jmp    18c6 <play+0x716>
nopw   0x0(%rax,%rax,1)
mov    %ebx,%edi
call   1040 <convert@plt>
movslq %eax,%rbx
imul   $0x51eb851f,%rbx,%rax
mov    %rax,%rcx
shr    $0x3f,%rcx
sar    $0x25,%rax
add    %ecx,%eax
imul   $0x64,%eax,%eax
sub    %eax,%ebx
add    %ebp,%ebx
mov    %r12,%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1070 <printf@plt>
mov    %ebx,%ebp
jmp    18cf <play+0x71f>
cs nopw 0x0(%rax,%rax,1)
nop
lea    0xaeb(%rip),%rdi
call   1050 <puts@plt>
add    $0x1,%ebp
lea    0x897(%rip),%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1070 <printf@plt>
lea    0x1(%r15),%rax
cmp    $0x1,%r15
ja     18e5 <play+0x735>
mov    %rax,%r15
cmp    $0x11,%ebp
jl     1810 <play+0x660>
cmp    $0x3,%eax
jne    1904 <play+0x754>
lea    0xa50(%rip),%rdi
call   1050 <puts@plt>
xor    %ebp,%ebp
xor    %eax,%eax
call   10c0 <mypause@plt>
jmp    144f <play+0x29f>
cmp    $0x15,%ebp
jg     192d <play+0x77d>
cmp    %ebp,%r13d
jg     192d <play+0x77d>
jne    1939 <play+0x789>
lea    0x9a8(%rip),%rdi
call   1050 <puts@plt>
xor    %eax,%eax
call   10c0 <mypause@plt>
mov    $0x3,%ebp
jmp    144f <play+0x29f>
lea    0x9c6(%rip),%rdi
jmp    143e <play+0x28e>
mov    $0x3,%ebp
jge    144f <play+0x29f>
lea    0x935(%rip),%rdi
jmp    18f1 <play+0x741>
xor    %ebp,%ebp
lea    0xba0(%rip),%rbx
jmp    196a <play+0x7ba>
mov    $0x1,%ebp
mov    $0x15,%r13d
lea    0xb47(%rip),%rbx
lea    0x7be(%rip),%rdi
mov    %r13d,%esi
xor    %eax,%eax
call   1070 <printf@plt>
mov    %rbx,%rdi
call   1050 <puts@plt>
jmp    18f8 <play+0x748>

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

LLVM IR (-O2):
@.str.3 = [64 x i8] c"%d\EB\B2\88\EC\A7\B8 \EC\B9\B4\EB\93\9C A\EC\9D\98 \EA\B0\92\EC\9D\84 1\EB\98\90\EB\8A\94 11\EB\A1\9C \EC\84\A0\ED\83\9D\ED\95\B4\EC\A3\BC\EC\84\B8\EC\9A\94 : \00"
@.str.4 = [3 x i8] c"%i\00"
@stdin = global i32 0
@.str.8 = [45 x i8] c"\ED\98\84\EC\9E\AC \ED\94\8C\EB\A0\88\EC\9D\B4\EC\96\B4\EC\9D\98 \EC\B9\B4\EB\93\9C\EC\9D\98 \ED\95\A9\EC\9D\80:%d\0A\0A\00"
@.str.11 = [74 x i8] c"\EC\B9\B4\EB\93\9C\EB\A5\BC \EC\83\88\EB\A1\9C \EB\B0\9B\EC\9C\BC\EC\8B\9C\EA\B2\A0\EC\8A\B5\EB\8B\88\EA\B9\8C? y\EB\98\90\EB\8A\94 n\EC\9C\BC\EB\A1\9C \EB\8B\B5\ED\95\B4\EC\A3\BC\EC\84\B8\EC\9A\94: \00"
@.str.12 = [3 x i8] c"%c\00"
@.str.15 = [38 x i8] c" \EB\8B\B9\EC\8B\A0\EC\9D\98 %d\EB\B2\88\EC\A7\B8 \EC\B9\B4\EB\93\9C\EC\9E\85\EB\8B\88\EB\8B\A4:\0A\00"
@.str.16 = [76 x i8] c"%d\EB\B2\88\EC\A7\B8 \EC\B9\B4\EB\93\9C A\EC\9D\98 \EA\B0\92\EC\9D\84 11(Y)\EB\98\90\EB\8A\94 1(N)\EC\A4\91\EC\97\90\EC\84\9C \EC\84\A0\ED\83\9D\ED\95\B4\EC\A3\BC\EC\84\B8\EC\9A\94.: \00"
@.str.19 = [46 x i8] c"\ED\94\8C\EB\A0\88\EC\9D\B4\EC\96\B4\EC\9D\98 \ED\98\84\EC\9E\AC \EC\B9\B4\EB\93\9C\EC\9D\98 \ED\95\A9\EC\9D\80: %i\0A\0A\00"
@.str.24 = [43 x i8] c"\EC\BB\B4\ED\93\A8\ED\84\B0\EC\9D\98 \ED\98\84\EC\9E\AC \EC\B9\B4\EB\93\9C\EC\9D\98 \ED\95\A9\EC\9D\80: %i\0A\0A\00"
@.str.26 = [43 x i8] c"\EC\BB\B4\ED\93\A8\ED\84\B0\EC\9D\98 \ED\98\84\EC\9E\AC \EC\B9\B4\EB\93\9C\EC\9D\B4 \ED\95\A9\EC\9D\80: %i\0A\0A\00"
@.str.27 = [40 x i8] c"Computer\EC\9D\98 \EC\B9\B4\EB\93\9C\EB\8A\94 %i \EC\9E\85\EB\8B\88\EB\8B\A4.: \0A\00"
@.str.29 = [43 x i8] c"\EC\BB\B4\ED\93\A8\ED\84\B0\EC\9D\B4 \ED\98\84\EC\9E\AC \EC\B9\B4\EB\93\9C\EC\9D\98 \ED\95\A9\EC\9D\80: %i\0A\0A\00"
@.str.31 = [43 x i8] c"Computer\EC\9D\98 \ED\98\84\EC\9E\AC \EC\B9\B4\EB\93\9C\EC\9D\98 \ED\95\A9\EC\9D\80 : %i\0A\0A\00"
@str = [32 x i8] c"\EC\BB\B4\ED\93\A8\ED\84\B0\EC\9D\98 \EC\B9\B4\EB\93\9C \EC\A4\91 \ED\95\98\EB\82\98:\00"
@str.36 = [24 x i8] c"\ED\94\8C\EB\A0\88\EC\9D\B4\EC\96\B4\EC\9D\98 \EC\B9\B4\EB\93\9C:\00"
@str.37 = [23 x i8] c"Computer\EC\9D\98 \EC\B9\B4\EB\93\9C\EB\8A\94:\00"
@str.38 = [63 x i8] c"Computer\EC\9D\98 \EC\8A\B9\EB\A6\AC\EC\9E\85\EB\8B\88\EB\8B\A4! \EB\B2\A0\ED\8C\85\ED\95\9C \EA\B8\88\EC\95\A1\EC\9D\84 \EC\9E\83\EC\8A\B5\EB\8B\88\EB\8B\A4.\00"
@str.39 = [59 x i8] c"player\EC\99\80 computer\EA\B0\80 \EA\B0\99\EC\9D\80 \EC\A0\90\EC\88\98\EB\A5\BC \ED\9A\8D\EB\93\9D\ED\96\88\EC\8A\B5\EB\8B\88\EB\8B\A4!\00"
@str.40 = [71 x i8] c"Player\EC\9D\98 \EC\8A\B9\EB\A6\AC\EC\9E\85\EB\8B\88\EB\8B\A4.!\EB\B2\A0\ED\8C\85\ED\95\9C \EA\B8\88\EC\95\A1\EB\A7\8C\ED\81\BC \EB\8F\88\EC\9D\84 \EC\96\BB\EC\8A\B5\EB\8B\88\EB\8B\A4.\00"
@str.41 = [97 x i8] c"\EC\BB\B4\ED\93\A8\ED\84\B0\EC\9D\98 5\EC\9E\A5\EC\9D\98 \EC\B9\B4\EB\93\9C\EC\9D\98 \ED\95\A9\EC\9D\B4 21\EC\9D\84 \EB\84\98\EC\A7\80 \EC\95\8A\EC\95\98\EC\9C\BC\EB\AF\80\EB\A1\9C \EC\BB\B4\ED\93\A8\ED\84\B0\EC\9D\98 \EC\8A\B9\EB\A6\AC\EC\9E\85\EB\8B\88\EB\8B\A4.\00"
@str.42 = [44 x i8] c"Compuer\EB\8A\94 A\EC\9D\98 \EA\B0\92\EC\9D\84 1\EB\A1\9C \EC\A0\95\ED\96\88\EC\8A\B5\EB\8B\88\EB\8B\A4\00"
@str.43 = [47 x i8] c"Computer\EB\8A\94 A\EC\9D\98 \EA\B0\92\EC\9D\84 11\EB\A1\9C \EC\A0\95\ED\96\88\EC\8A\B5\EB\8B\88\EB\8B\A4.\00"
@str.44 = [62 x i8] c"Computer\EC\9D\98 \EC\8A\B9\EB\A6\AC\EC\9E\85\EB\8B\88\EB\8B\A4!\EB\B2\A0\ED\8C\85\ED\95\9C \EA\B8\88\EC\95\A1\EC\9D\84 \EC\9E\83\EC\8A\B5\EB\8B\88\EB\8B\A4.\00"
@str.45 = [81 x i8] c"\EB\8B\B9\EC\8B\A0\EC\9D\98 5\EA\B0\9C\EC\9D\98 card\EC\9D\98 \ED\95\A9\EC\9D\B4 21\EB\B3\B4\EB\8B\A4 \EC\9E\91\EC\9C\BC\EB\AF\80\EB\A1\9C player\EC\9D\98 \EC\8A\B9\EB\A6\AC\EC\9E\85\EB\8B\88\EB\8B\A4\00"
@str.46 = [37 x i8] c"\EC\83\88\EB\A1\9C\EC\9A\B4 \EC\B9\B4\EB\93\9C\EB\A5\BC \EB\B0\9B\EC\95\98\EC\8A\B5\EB\8B\88\EB\8B\A4.\00"
@str.47 = [69 x i8] c"Player\EC\9D\98 \EC\8A\B9\EB\A6\AC\EC\9E\85\EB\8B\88\EB\8B\A4!\EB\B2\A0\ED\8C\85\ED\95\9C \EA\B8\88\EC\95\A1\EB\A7\8C\ED\81\BC \EB\8F\88\EC\9D\84 \EC\96\BB\EC\8A\B5\EB\8B\88\EB\8B\A4\00"
@str.48 = [62 x i8] c"Computer\EC\9D\98 \EC\8A\B9\EB\A6\AC\EC\9E\85\EB\8B\88\EB\8B\A4.!\EB\B2\A0\ED\8C\85\ED\95\9C \EA\B8\88\EC\95\A1\EC\9D\84 \EC\9E\83\EC\8A\B5\EB\8B\88\EB\8B\A4\00"
@str.50 = [51 x i8] c"\ED\94\8C\EB\A0\88\EC\9D\B4\EC\96\B4\EB\8A\94 A\EC\9D\98 \EA\B0\92\EC\9D\84 1\EB\A1\9C \EC\A0\95\ED\96\88\EC\8A\B5\EB\8B\88\EB\8B\A4..\00"
@str.51 = [51 x i8] c"\ED\94\8C\EB\A0\88\EC\9D\B4\EC\96\B4\EB\8A\94 A\EC\9D\98 \EA\B0\92\EC\9D\84 11\EB\A1\9C \EC\A0\95\ED\96\88\EC\8A\B5\EB\8B\88\EB\8B\A4.\00"
@str.52 = [35 x i8] c"\09y\EB\98\90\EB\8A\94 n\EC\9C\BC\EB\A1\9C \EB\8B\B5\ED\95\B4\EC\A3\BC\EC\84\B8\EC\9A\94!!\00"
@str.53 = [71 x i8] c"Player\EC\9D\98 \EC\8A\B9\EB\A6\AC\EC\9E\85\EB\8B\88\EB\8B\A4!, \EB\B2\A0\ED\8C\85\ED\95\9C \EA\B8\88\EC\95\A1\EB\A7\8C\ED\81\BC \EB\8F\88\EC\9D\84 \EC\96\BB\EC\8A\B5\EB\8B\88\EB\8B\A4\00"
@str.54 = [61 x i8] c"Computer\EC\9D\98 \EC\8A\B9\EB\A6\AC\EC\9E\85\EB\8B\88\EB\8B\A4!\EB\B2\A0\ED\8C\85\ED\95\9C \EA\B8\88\EC\95\A1\EC\9D\84 \EC\9E\83\EC\8A\B5\EB\8B\88\EB\8B\A4\00"
@str.55 = [47 x i8] c"\EB\8B\B9\EC\8B\A0\EC\9D\80 A\EC\9D\98 \EA\B0\92\EC\9D\84 1\EB\A1\9C \EC\84\A0\ED\83\9D\ED\96\88\EC\8A\B5\EB\8B\88\EB\8B\A4.\00"
@str.56 = [48 x i8] c"\EB\8B\B9\EC\8B\A0\EC\9D\80 A\EC\9D\98 \EA\B0\92\EC\9D\84 11\EB\A1\9C \EC\84\A0\ED\83\9D\ED\96\88\EC\8A\B5\EB\8B\88\EB\8B\A4.\00"
@str.57 = [34 x i8] c"\091 \EB\98\90\EB\8A\94 11\EB\A1\9C \EB\8B\B5\ED\95\B4\EC\A3\BC\EC\84\B8\EC\9A\94!!\00"
define i32 @play() {
%1 = alloca [52 x i32]
%2 = alloca i32
%3 = alloca i8
%4 = bitcast [52 x i32]* %1 to i8*
%5 = bitcast i32* %2 to i8*
%6 = getelementptr inbounds [52 x i32], [52 x i32]* %1, i64 0, i64 0
%7 = call i32 @shuff(i32* %6)
%8 = load i32, i32* %6
%9 = getelementptr inbounds [52 x i32], [52 x i32]* %1, i64 0, i64 1
%10 = load i32, i32* %9
%11 = getelementptr inbounds [52 x i32], [52 x i32]* %1, i64 0, i64 2
%12 = load i32, i32* %11
%13 = getelementptr inbounds [52 x i32], [52 x i32]* %1, i64 0, i64 3
%14 = load i32, i32* %13
%15 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @str, i64 0, i64 0))
%16 = call i32 @pic(i32 %12)
%17 = call i32 @putchar(i32 10)
%18 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @str.36, i64 0, i64 0))
%19 = call i32 @pic(i32 %8)
%20 = call i32 @pic(i32 %10)
%21 = srem i32 %8, 100
%22 = icmp eq i32 %21, 1
br i1 %22, label %64, label %77
23: ; preds = %74, %76
%24 = phi i8* [ getelementptr inbounds ([47 x i8], [47 x i8]* @str.55, i64 0, i64 0), %76 ], [ getelementptr inbounds ([48 x i8], [48 x i8]* @str.56, i64 0, i64 0), %74 ]
%25 = phi i32 [ 1, %76 ], [ %75, %74 ]
%26 = call i32 @puts(i8* dereferenceable(1) %24)
br label %27
27: ; preds = %23, %77, %88
%28 = phi i32 [ %21, %88 ], [ 10, %77 ], [ %25, %23 ]
%29 = srem i32 %10, 100
%30 = icmp eq i32 %29, 1
br i1 %30, label %39, label %31
31: ; preds = %27
%32 = call i32 @convert(i32 %10)
%33 = srem i32 %32, 100
%34 = icmp eq i32 %33, 10
br i1 %34, label %37, label %35
35: ; preds = %31
%36 = add nsw i32 %29, %28
br label %57
37: ; preds = %31
%38 = add nsw i32 %28, 10
br label %57
39: ; preds = %27
%40 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([64 x i8], [64 x i8]* @.str.3, i64 0, i64 0), i32 2)
br label %41
41: ; preds = %49, %39
%42 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %2)
%43 = load i32, i32* @stdin
%44 = call i32 @fflush(i32 %43)
%45 = load i32, i32* %2
switch i32 %45, label %46 [
i32 1, label %49
i32 11, label %49
]
46: ; preds = %41
%47 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([34 x i8], [34 x i8]* @str.57, i64 0, i64 0))
%48 = load i32, i32* %2
br label %49
49: ; preds = %46, %41, %41
%50 = phi i32 [ %45, %41 ], [ %45, %41 ], [ %48, %46 ]
switch i32 %50, label %41 [
i32 11, label %54
i32 1, label %51
]
51: ; preds = %49
%52 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([47 x i8], [47 x i8]* @str.55, i64 0, i64 0))
%53 = add nsw i32 %28, 1
br label %57
54: ; preds = %49
%55 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([48 x i8], [48 x i8]* @str.56, i64 0, i64 0))
%56 = add nsw i32 %28, 11
br label %57
57: ; preds = %54, %51, %37, %35
%58 = phi i32 [ %56, %54 ], [ %53, %51 ], [ %38, %37 ], [ %36, %35 ]
%59 = icmp sgt i32 %58, 21
br i1 %59, label %83, label %60
60: ; preds = %57
%61 = icmp eq i32 %58, 21
br i1 %61, label %90, label %62
62: ; preds = %60
%63 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([45 x i8], [45 x i8]* @.str.8, i64 0, i64 0), i32 %58)
br label %94
64: ; preds = %0
%65 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([64 x i8], [64 x i8]* @.str.3, i64 0, i64 0), i32 1)
br label %66
66: ; preds = %74, %64
%67 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %2)
%68 = load i32, i32* @stdin
%69 = call i32 @fflush(i32 %68)
%70 = load i32, i32* %2
switch i32 %70, label %71 [
i32 1, label %74
i32 11, label %74
]
71: ; preds = %66
%72 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([34 x i8], [34 x i8]* @str.57, i64 0, i64 0))
%73 = load i32, i32* %2
br label %74
74: ; preds = %66, %66, %71
%75 = phi i32 [ %70, %66 ], [ %70, %66 ], [ %73, %71 ]
switch i32 %75, label %66 [
i32 11, label %23
i32 1, label %76
]
76: ; preds = %74
br label %23
77: ; preds = %0
%78 = call i32 @convert(i32 %8)
%79 = srem i32 %78, 100
%80 = icmp eq i32 %79, 10
br i1 %80, label %27, label %81
81: ; preds = %77
%82 = icmp sgt i32 %21, 21
br i1 %82, label %83, label %88
83: ; preds = %57, %81
%84 = phi i32 [ %21, %81 ], [ %58, %57 ]
%85 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([45 x i8], [45 x i8]* @.str.8, i64 0, i64 0), i32 %84)
%86 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([61 x i8], [61 x i8]* @str.54, i64 0, i64 0))
%87 = call i32 (...) @mypause()
br label %270
88: ; preds = %81
%89 = icmp eq i32 %21, 21
br i1 %89, label %90, label %27
90: ; preds = %60, %88
%91 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([45 x i8], [45 x i8]* @.str.8, i64 0, i64 0), i32 21)
%92 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([71 x i8], [71 x i8]* @str.53, i64 0, i64 0))
%93 = call i32 (...) @mypause()
br label %270
94: ; preds = %62, %157
%95 = phi i64 [ 0, %62 ], [ %159, %157 ]
%96 = phi i32 [ %58, %62 ], [ %146, %157 ]
store i8 110, i8* %3
%97 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([74 x i8], [74 x i8]* @.str.11, i64 0, i64 0))
br label %98
98: ; preds = %108, %94
%99 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.12, i64 0, i64 0), i8* %3)
%100 = load i32, i32* @stdin
%101 = call i32 @fflush(i32 %100)
%102 = load i8, i8* %3
%103 = call i32 @tolower(i8 signext %102)
%104 = load i8, i8* %3
switch i8 %104, label %105 [
i8 121, label %108
i8 110, label %108
]
105: ; preds = %98
%106 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @str.52, i64 0, i64 0))
%107 = load i8, i8* %3
br label %108
108: ; preds = %98, %98, %105
%109 = phi i8 [ %104, %98 ], [ %104, %98 ], [ %107, %105 ]
switch i8 %109, label %98 [
i8 121, label %110
i8 110, label %161
]
110: ; preds = %108
%111 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @str.46, i64 0, i64 0))
%112 = add nuw nsw i64 %95, 4
%113 = getelementptr inbounds [52 x i32], [52 x i32]* %1, i64 0, i64 %112
%114 = load i32, i32* %113
%115 = trunc i64 %95 to i32
%116 = add i32 %115, 3
%117 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([38 x i8], [38 x i8]* @.str.15, i64 0, i64 0), i32 %116)
%118 = call i32 @pic(i32 %114)
%119 = srem i32 %114, 100
%120 = icmp eq i32 %119, 1
br i1 %120, label %121, label %137
121: ; preds = %110
%122 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @.str.16, i64 0, i64 0), i32 %116)
br label %123
123: ; preds = %123, %121
%124 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.12, i64 0, i64 0), i8* %3)
%125 = load i32, i32* @stdin
%126 = call i32 @fflush(i32 %125)
%127 = load i8, i8* %3
%128 = call i32 @tolower(i8 signext %127)
%129 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @str.52, i64 0, i64 0))
%130 = load i8, i8* %3
switch i8 %130, label %123 [
i8 121, label %131
i8 110, label %134
]
131: ; preds = %123
%132 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([51 x i8], [51 x i8]* @str.51, i64 0, i64 0))
%133 = add nsw i32 %96, 11
br label %145
134: ; preds = %123
%135 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([51 x i8], [51 x i8]* @str.50, i64 0, i64 0))
%136 = add nsw i32 %96, 1
br label %145
137: ; preds = %110
%138 = call i32 @convert(i32 %114)
%139 = srem i32 %138, 100
%140 = icmp eq i32 %139, 10
br i1 %140, label %141, label %143
141: ; preds = %137
%142 = add nsw i32 %96, 10
br label %145
143: ; preds = %137
%144 = add nsw i32 %119, %96
br label %145
145: ; preds = %141, %143, %131, %134
%146 = phi i32 [ %133, %131 ], [ %136, %134 ], [ %142, %141 ], [ %144, %143 ]
%147 = icmp sgt i32 %146, 21
br i1 %147, label %150, label %148
148: ; preds = %145
%149 = icmp eq i32 %146, 21
br i1 %149, label %150, label %157
150: ; preds = %148, %145
%151 = phi i32 [ %146, %145 ], [ 21, %148 ]
%152 = phi i8* [ getelementptr inbounds ([62 x i8], [62 x i8]* @str.48, i64 0, i64 0), %145 ], [ getelementptr inbounds ([69 x i8], [69 x i8]* @str.47, i64 0, i64 0), %148 ]
%153 = phi i32 [ 0, %145 ], [ 1, %148 ]
%154 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @.str.19, i64 0, i64 0), i32 %151)
%155 = call i32 @puts(i8* dereferenceable(1) %152)
%156 = call i32 (...) @mypause()
br label %270
157: ; preds = %148
%158 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @.str.19, i64 0, i64 0), i32 %146)
%159 = add nuw nsw i64 %95, 1
%160 = icmp eq i64 %159, 3
br i1 %160, label %165, label %94
161: ; preds = %108
%162 = trunc i64 %95 to i32
%163 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @.str.19, i64 0, i64 0), i32 %96)
%164 = icmp eq i32 %162, 3
br i1 %164, label %165, label %168
165: ; preds = %157, %161
%166 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([81 x i8], [81 x i8]* @str.45, i64 0, i64 0))
%167 = call i32 (...) @mypause()
br label %270
168: ; preds = %161
%169 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @str.37, i64 0, i64 0))
%170 = call i32 @pic(i32 %12)
%171 = call i32 @pic(i32 %14)
%172 = srem i32 %12, 100
%173 = srem i32 %14, 100
%174 = add nsw i32 %173, %172
%175 = icmp eq i32 %174, 2
br i1 %175, label %176, label %178
176: ; preds = %168
%177 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.24, i64 0, i64 0), i32 12)
br label %211
178: ; preds = %168
%179 = call i32 @convert(i32 %12)
%180 = srem i32 %179, 100
%181 = call i32 @convert(i32 %14)
%182 = srem i32 %181, 100
%183 = add nsw i32 %182, %180
%184 = icmp eq i32 %183, 1
br i1 %184, label %185, label %189
185: ; preds = %178
%186 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.24, i64 0, i64 0), i32 21)
%187 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([62 x i8], [62 x i8]* @str.44, i64 0, i64 0))
%188 = call i32 (...) @mypause()
br label %270
189: ; preds = %178
%190 = icmp eq i32 %172, 1
%191 = icmp eq i32 %173, 1
%192 = select i1 %190, i1 true, i1 %191
br i1 %192, label %193, label %201
193: ; preds = %189
%194 = add nsw i32 %14, %12
%195 = srem i32 %194, 100
%196 = call i32 (...) @rand()
%197 = srem i32 %196, 2
%198 = mul nsw i32 %197, 10
%199 = add nsw i32 %198, %195
%200 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.24, i64 0, i64 0), i32 %199)
br label %208
201: ; preds = %189
%202 = call i32 @convert(i32 %12)
%203 = srem i32 %202, 100
%204 = call i32 @convert(i32 %14)
%205 = srem i32 %204, 100
%206 = add nsw i32 %205, %203
%207 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.26, i64 0, i64 0), i32 %206)
br label %208
208: ; preds = %201, %193
%209 = phi i32 [ %199, %193 ], [ %206, %201 ]
%210 = icmp slt i32 %209, 17
br i1 %210, label %211, label %252
211: ; preds = %176, %208
%212 = phi i32 [ %209, %208 ], [ 12, %176 ]
br label %213
213: ; preds = %211, %240
%214 = phi i64 [ %242, %240 ], [ 0, %211 ]
%215 = phi i32 [ %241, %240 ], [ %212, %211 ]
%216 = add nuw nsw i64 %214, 7
%217 = getelementptr inbounds [52 x i32], [52 x i32]* %1, i64 0, i64 %216
%218 = load i32, i32* %217
%219 = trunc i64 %214 to i32
%220 = add nuw nsw i32 %219, 3
%221 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([40 x i8], [40 x i8]* @.str.27, i64 0, i64 0), i32 %220)
%222 = call i32 @pic(i32 %218)
%223 = srem i32 %218, 100
%224 = icmp eq i32 %223, 1
br i1 %224, label %225, label %235
225: ; preds = %213
%226 = add nsw i32 %215, 11
%227 = icmp slt i32 %215, 11
br i1 %227, label %228, label %231
228: ; preds = %225
%229 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([47 x i8], [47 x i8]* @str.43, i64 0, i64 0))
%230 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.29, i64 0, i64 0), i32 %226)
br label %240
231: ; preds = %225
%232 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([44 x i8], [44 x i8]* @str.42, i64 0, i64 0))
%233 = add nuw nsw i32 %215, 1
%234 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.24, i64 0, i64 0), i32 %233)
br label %240
235: ; preds = %213
%236 = call i32 @convert(i32 %218)
%237 = srem i32 %236, 100
%238 = add nsw i32 %237, %215
%239 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @.str.31, i64 0, i64 0), i32 %238)
br label %240
240: ; preds = %235, %231, %228
%241 = phi i32 [ %226, %228 ], [ %233, %231 ], [ %238, %235 ]
%242 = add nuw nsw i64 %214, 1
%243 = icmp ult i64 %214, 2
%244 = icmp slt i32 %241, 17
%245 = select i1 %243, i1 %244, i1 false
br i1 %245, label %213, label %246
246: ; preds = %240
%247 = trunc i64 %242 to i32
%248 = icmp eq i32 %247, 3
br i1 %248, label %249, label %252
249: ; preds = %246
%250 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([97 x i8], [97 x i8]* @str.41, i64 0, i64 0))
%251 = call i32 (...) @mypause()
br label %270
252: ; preds = %208, %246
%253 = phi i32 [ %241, %246 ], [ %209, %208 ]
%254 = icmp sgt i32 %253, 21
%255 = icmp sgt i32 %96, %253
%256 = select i1 %254, i1 true, i1 %255
br i1 %256, label %257, label %260
257: ; preds = %252
%258 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([71 x i8], [71 x i8]* @str.40, i64 0, i64 0))
%259 = call i32 (...) @mypause()
br label %270
260: ; preds = %252
%261 = icmp eq i32 %96, %253
br i1 %261, label %262, label %265
262: ; preds = %260
%263 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([59 x i8], [59 x i8]* @str.39, i64 0, i64 0))
%264 = call i32 (...) @mypause()
br label %270
265: ; preds = %260
%266 = icmp slt i32 %96, %253
br i1 %266, label %267, label %270
267: ; preds = %265
%268 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([63 x i8], [63 x i8]* @str.38, i64 0, i64 0))
%269 = call i32 (...) @mypause()
br label %270
270: ; preds = %150, %265, %267, %262, %257, %249, %185, %165, %90, %83
%271 = phi i32 [ 1, %83 ], [ 1, %90 ], [ 0, %165 ], [ 0, %249 ], [ 1, %257 ], [ 3, %262 ], [ 0, %267 ], [ 0, %185 ], [ 3, %265 ], [ %153, %150 ]
ret i32 %271
}