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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ COLOR_BLACK;
int /*<<< orphan*/ COLOR_PAIR(int);
int /*<<< orphan*/ COLOR_RED;
int /*<<< orphan*/ attroff(int /*<<< orphan*/);
int /*<<< orphan*/ attron(int /*<<< orphan*/);
int /*<<< orphan*/ clear();
int /*<<< orphan*/ endwin();
int /*<<< orphan*/ exit(int /*<<< orphan*/);
int /*<<< orphan*/ getmaxyx(int /*<<< orphan*/, int, int);
int /*<<< orphan*/ init_pair(int, int /*<<< orphan*/, int /*<<< orphan*/);
int /*<<< orphan*/ kbhit();
int /*<<< orphan*/ mvprintw(int, ...);
int nb_getch();
int rand();
int /*<<< orphan*/ refresh();
int /*<<< orphan*/ set_conio_terminal_mode();
int /*<<< orphan*/ srand(int);
int /*<<< orphan*/ stdscr;
int strlen(char const *);
int time(int /*<<< orphan*/ *);
int draw_arena(int btn_pl1, int btn_pl2) {
  int row, col, i;
  const char *btn_ascii[] = {"              .,-:;//;:=,",
                             "          . :H@@@MM@M#H/.,+%;,",
                             "       ,/X+ +M@@M@MM%=,-%HMMM@X/,",
                             "     -+@MM; $M@@MH+-,;XMMMM@MMMM@+-",
                             "    ;@M@@M- XM@X;. -+XXXXXHHH@M@M#@/.",
                             "  ,%MM@@MH ,@%=             .---=-=:=,.",
                             "  =@#@@@MX.,                -%HX$$%%%:;",
                             " =-./@M@M$                   .;@MMMM@MM:",
                             " X@/ -$MM/                    . +MM@@@M$",
                             ",@M@H: :@:                    . =X#@@@@-",
                             ",@@@MMX, .                    /H- ;@M@M=",
                             ".H@@@@M@+,                    %MM+..%#$.",
                             " /MMMM@MMH/.                  XM@MH; =;",
                             "  /%+%$XHH@$=              , .H@@@@MX,",
                             "   .=--------.           -%H.,@@@@@MX,",
                             "   .%MM@@@HHHXX$$$%+- .:$MMX =M@@MM%.",
                             "     =XMMM@MM@MM#H;,-+HMM@M+ /MMMX=",
                             "       =%@M@M#@$-.=$@MM@@@M; %M%=",
                             "         ,:+$+-,/H#MMMMMMM@= =,",
                             "               =++%%%%+/:-."};
  const char win_txt[] = "Winner!";
  const char loser_txt[] = "Loser!";
  const char play_again_txt[] = "Do you wish to play again? (y/n)";
  const char creator_txt[] = "Written with <3 by willeponken";
  getmaxyx(stdscr, row, col);
  init_pair(1, COLOR_RED, COLOR_BLACK);
  while (1) {
    clear();
    for (i = 0; i < 20; i++) {
      mvprintw((row - 20) / 2 + i, (col - 40) / 2, "%s\n", btn_ascii[i]);
    }
    mvprintw(row - 1, 1, "Player 1 (%d)", btn_pl1);
    mvprintw(row - 1, col - (floor(log10(abs(btn_pl2)))) - 13, "Player 2 (%d)",
             btn_pl2);
    mvprintw(0, (col - strlen(creator_txt)) / 2, "%s", creator_txt);
    refresh();
    srand(time(NULL));
    int wait_until = time(0) + (rand() % 4) + 1;
    int painted_ascii = 0;
    set_conio_terminal_mode();
    while (!kbhit()) {
      if (wait_until <= time(0) && painted_ascii == 0) {
        for (i = 0; i < 20; i++) {
          attron(COLOR_PAIR(1));
          mvprintw((row - 20) / 2 + i, (col - 40) / 2, "%s\n", btn_ascii[i]);
          attroff(COLOR_PAIR(1));
        }
        painted_ascii = 1;
        refresh();
      }
    }
    int btn_int, cont_game = 1, cont_ask = 1;
    while (cont_game == 1) {
      btn_int = nb_getch();
      if (btn_int == btn_pl1 && wait_until > time(0)) {
        mvprintw(row / 2, (col - 40 - strlen(loser_txt)) / 4, "%s", loser_txt);
        mvprintw(row / 2, col - (col - 40) / 4 - (strlen(win_txt) / 2), "%s",
                 win_txt);
        attron(COLOR_PAIR(1));
        mvprintw(row - 1, 1, "Player 1 (%d)", btn_pl1);
        attroff(COLOR_PAIR(1));
        cont_game = 0;
      } else if (btn_int == btn_pl2 && wait_until > time(0)) {
        mvprintw(row / 2, (col - 40 - strlen(win_txt)) / 4, "%s", win_txt);
        mvprintw(row / 2, col - (col - 40) / 4 - (strlen(loser_txt) / 2), "%s",
                 loser_txt);
        attron(COLOR_PAIR(1));
        mvprintw(row - 1, col - (floor(log10(abs(btn_pl2)))) - 13,
                 "Player 2 (%d)", btn_pl2);
        attroff(COLOR_PAIR(1));
        cont_game = 0;
      } else if (btn_int == btn_pl1 && wait_until <= time(0)) {
        mvprintw(row / 2, (col - 40 - strlen(win_txt)) / 4, "%s", win_txt);
        mvprintw(row / 2, col - (col - 40) / 4 - (strlen(loser_txt) / 2), "%s",
                 loser_txt);
        attron(COLOR_PAIR(1));
        mvprintw(row - 1, col - (floor(log10(abs(btn_pl2)))) - 13,
                 "Player 2 (%d)", btn_pl2);
        attroff(COLOR_PAIR(1));
        cont_game = 0;
      } else if (btn_int == btn_pl2 && wait_until <= time(0)) {
        mvprintw(row / 2, (col - 40 - strlen(loser_txt)) / 4, "%s", loser_txt);
        mvprintw(row / 2, col - (col - 40) / 4 - (strlen(win_txt) / 2), "%s",
                 win_txt);
        attron(COLOR_PAIR(1));
        mvprintw(row - 1, 1, "Player 1 (%d)", btn_pl1);
        attron(COLOR_PAIR(1));
        attroff(COLOR_PAIR(1));
        cont_game = 0;
      }
    }
    mvprintw(row - 1, (col - strlen(play_again_txt)) / 2, "%s", play_again_txt);
    refresh();
    while (cont_ask == 1) {
      btn_int = nb_getch();
      if (btn_int == 110) {
        endwin();
        exit(0);
      } else if (btn_int == 121)
        cont_ask = 0;
    }
  }
  return 0;
}


x86 assembly (clang, -O0):
<draw_arena>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1d0,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
lea    -0xc0(%rbp),%rdi
lea    0x2af1(%rip),%rsi
mov    $0xa0,%edx
call   10c0 <memcpy@plt>
mov    0x1068(%rip),%rax
mov    %rax,-0xc8(%rbp)
mov    0x1063(%rip),%eax
mov    %eax,-0xcf(%rbp)
mov    0x105a(%rip),%ax
mov    %ax,-0xcb(%rbp)
mov    0x104f(%rip),%al
mov    %al,-0xc9(%rbp)
lea    -0xf0(%rbp),%rdi
lea    0x1065(%rip),%rsi
mov    $0x21,%edx
call   10c0 <memcpy@plt>
mov    0x1084(%rip),%rax
mov    %rax,-0x110(%rbp)
mov    0x107e(%rip),%rax
mov    %rax,-0x108(%rbp)
mov    0x1078(%rip),%rax
mov    %rax,-0x100(%rbp)
mov    0x1073(%rip),%eax
mov    %eax,-0xf8(%rbp)
mov    0x106a(%rip),%ax
mov    %ax,-0xf4(%rbp)
mov    0x105f(%rip),%al
mov    %al,-0xf2(%rbp)
mov    0x2cc4(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%edx
call   10b0 <getmaxyx@plt>
mov    0x2c98(%rip),%rax
mov    (%rax),%esi
mov    0x2c9f(%rip),%rax
mov    (%rax),%edx
mov    $0x1,%edi
call   1070 <init_pair@plt>
mov    $0x0,%al
call   1140 <clear@plt>
movl   $0x0,-0x14(%rbp)
cmpl   $0x14,-0x14(%rbp)
jge    13a8 <draw_arena+0x158>
mov    -0xc(%rbp),%eax
sub    $0x14,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%edi
add    -0x14(%rbp),%edi
mov    -0x10(%rbp),%eax
sub    $0x28,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%esi
movslq -0x14(%rbp),%rax
mov    -0xc0(%rbp,%rax,8),%rcx
ff
lea    0xf64(%rip),%rdx
mov    $0x0,%al
call   1150 <mvprintw@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1353 <draw_arena+0x103>
mov    -0xc(%rbp),%edi
sub    $0x1,%edi
mov    -0x4(%rbp),%ecx
mov    $0x1,%esi
lea    0xf3e(%rip),%rdx
mov    $0x0,%al
call   1150 <mvprintw@plt>
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x13c(%rbp)
cvtsi2sdl -0x10(%rbp),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x8(%rbp),%edi
call   1050 <abs@plt>
cvtsi2sd %eax,%xmm0
call   1110 <log10@plt>
call   1160 <floor@plt>
mov    -0x13c(%rbp),%edi
movaps %xmm0,%xmm1
movsd  -0x138(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  0xbf0(%rip),%xmm1
subsd  %xmm1,%xmm0
mov    -0x8(%rbp),%edx
lea    0xeeb(%rip),%rsi
mov    $0x1,%al
call   1150 <mvprintw@plt>
mov    -0x10(%rbp),%eax
mov    %eax,-0x12c(%rbp)
lea    -0x110(%rbp),%rdi
call   1060 <strlen@plt>
mov    %eax,%ecx
mov    -0x12c(%rbp),%eax
sub    %ecx,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%esi
lea    -0x110(%rbp),%rcx
xor    %edi,%edi
lea    0xeb9(%rip),%rdx
mov    $0x0,%al
call   1150 <mvprintw@plt>
mov    $0x0,%al
call   10f0 <refresh@plt>
xor    %eax,%eax
mov    %eax,%edi
call   10d0 <time@plt>
mov    %eax,%edi
call   1090 <srand@plt>
xor    %eax,%eax
mov    %eax,%edi
call   10d0 <time@plt>
mov    %eax,-0x128(%rbp)
mov    $0x0,%al
call   1170 <rand@plt>
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    -0x128(%rbp),%eax
add    %edx,%eax
add    $0x1,%eax
mov    %eax,-0x114(%rbp)
movl   $0x0,-0x118(%rbp)
mov    $0x0,%al
call   1040 <set_conio_terminal_mode@plt>
mov    $0x0,%al
call   1080 <kbhit@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
test   $0x1,%al
jne    14d8 <draw_arena+0x288>
jmp    159e <draw_arena+0x34e>
mov    -0x114(%rbp),%eax
mov    %eax,-0x140(%rbp)
xor    %eax,%eax
mov    %eax,%edi
call   10d0 <time@plt>
mov    %eax,%ecx
mov    -0x140(%rbp),%eax
cmp    %ecx,%eax
jg     1599 <draw_arena+0x349>
cmpl   $0x0,-0x118(%rbp)
jne    1599 <draw_arena+0x349>
movl   $0x0,-0x14(%rbp)
cmpl   $0x14,-0x14(%rbp)
jge    1588 <draw_arena+0x338>
mov    $0x1,%edi
call   10e0 <COLOR_PAIR@plt>
mov    %eax,%edi
call   10a0 <attron@plt>
mov    -0xc(%rbp),%eax
sub    $0x14,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%edi
add    -0x14(%rbp),%edi
mov    -0x10(%rbp),%eax
sub    $0x28,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%esi
movslq -0x14(%rbp),%rax
mov    -0xc0(%rbp,%rax,8),%rcx
ff
lea    0xd95(%rip),%rdx
mov    $0x0,%al
call   1150 <mvprintw@plt>
mov    $0x1,%edi
call   10e0 <COLOR_PAIR@plt>
mov    %eax,%edi
call   1030 <attroff@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1511 <draw_arena+0x2c1>
movl   $0x1,-0x118(%rbp)
mov    $0x0,%al
call   10f0 <refresh@plt>
jmp    14bc <draw_arena+0x26c>
movl   $0x1,-0x120(%rbp)
movl   $0x1,-0x124(%rbp)
cmpl   $0x1,-0x120(%rbp)
jne    1b96 <draw_arena+0x946>
mov    $0x0,%al
call   1130 <nb_getch@plt>
mov    %eax,-0x11c(%rbp)
mov    -0x11c(%rbp),%eax
cmp    -0x4(%rbp),%eax
jne    1714 <draw_arena+0x4c4>
mov    -0x114(%rbp),%eax
mov    %eax,-0x144(%rbp)
xor    %eax,%eax
mov    %eax,%edi
call   10d0 <time@plt>
mov    %eax,%ecx
mov    -0x144(%rbp),%eax
cmp    %ecx,%eax
jle    1714 <draw_arena+0x4c4>
mov    -0xc(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x158(%rbp)
mov    -0x10(%rbp),%eax
sub    $0x28,%eax
mov    %eax,-0x154(%rbp)
lea    -0xcf(%rbp),%rdi
call   1060 <strlen@plt>
mov    -0x158(%rbp),%edi
mov    %eax,%ecx
mov    -0x154(%rbp),%eax
sub    %ecx,%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    %eax,%esi
lea    -0xcf(%rbp),%rcx
lea    0xcc6(%rip),%rdx
mov    $0x0,%al
call   1150 <mvprintw@plt>
mov    -0xc(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x148(%rbp)
mov    -0x10(%rbp),%eax
mov    %eax,-0x150(%rbp)
mov    -0x10(%rbp),%eax
sub    $0x28,%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x150(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x14c(%rbp)
lea    -0xc8(%rbp),%rdi
call   1060 <strlen@plt>
mov    -0x14c(%rbp),%esi
mov    -0x148(%rbp),%edi
mov    $0x2,%ecx
cltd
idiv   %ecx
sub    %eax,%esi
lea    -0xc8(%rbp),%rcx
lea    0xc57(%rip),%rdx
mov    $0x0,%al
call   1150 <mvprintw@plt>
mov    $0x1,%edi
call   10e0 <COLOR_PAIR@plt>
mov    %eax,%edi
call   10a0 <attron@plt>
mov    -0xc(%rbp),%edi
sub    $0x1,%edi
mov    -0x4(%rbp),%ecx
mov    $0x1,%esi
lea    0xc0e(%rip),%rdx
mov    $0x0,%al
call   1150 <mvprintw@plt>
mov    $0x1,%edi
call   10e0 <COLOR_PAIR@plt>
mov    %eax,%edi
call   1030 <attroff@plt>
movl   $0x0,-0x120(%rbp)
jmp    1b91 <draw_arena+0x941>
mov    -0x11c(%rbp),%eax
cmp    -0x8(%rbp),%eax
jne    18a1 <draw_arena+0x651>
mov    -0x114(%rbp),%eax
mov    %eax,-0x15c(%rbp)
xor    %eax,%eax
mov    %eax,%edi
call   10d0 <time@plt>
mov    %eax,%ecx
mov    -0x15c(%rbp),%eax
cmp    %ecx,%eax
jle    18a1 <draw_arena+0x651>
mov    -0xc(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x180(%rbp)
mov    -0x10(%rbp),%eax
sub    $0x28,%eax
mov    %eax,-0x17c(%rbp)
lea    -0xc8(%rbp),%rdi
call   1060 <strlen@plt>
mov    -0x180(%rbp),%edi
mov    %eax,%ecx
mov    -0x17c(%rbp),%eax
sub    %ecx,%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    %eax,%esi
lea    -0xc8(%rbp),%rcx
lea    0xb7e(%rip),%rdx
mov    $0x0,%al
call   1150 <mvprintw@plt>
mov    -0xc(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x170(%rbp)
mov    -0x10(%rbp),%eax
mov    %eax,-0x178(%rbp)
mov    -0x10(%rbp),%eax
sub    $0x28,%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x178(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x174(%rbp)
lea    -0xcf(%rbp),%rdi
call   1060 <strlen@plt>
mov    -0x174(%rbp),%esi
mov    -0x170(%rbp),%edi
mov    $0x2,%ecx
cltd
idiv   %ecx
sub    %eax,%esi
lea    -0xcf(%rbp),%rcx
lea    0xb0f(%rip),%rdx
mov    $0x0,%al
call   1150 <mvprintw@plt>
mov    $0x1,%edi
call   10e0 <COLOR_PAIR@plt>
mov    %eax,%edi
call   10a0 <attron@plt>
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x16c(%rbp)
cvtsi2sdl -0x10(%rbp),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x8(%rbp),%edi
call   1050 <abs@plt>
cvtsi2sd %eax,%xmm0
call   1110 <log10@plt>
call   1160 <floor@plt>
mov    -0x16c(%rbp),%edi
movaps %xmm0,%xmm1
movsd  -0x168(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  0x794(%rip),%xmm1
subsd  %xmm1,%xmm0
mov    -0x8(%rbp),%edx
lea    0xa8f(%rip),%rsi
mov    $0x1,%al
call   1150 <mvprintw@plt>
mov    $0x1,%edi
call   10e0 <COLOR_PAIR@plt>
mov    %eax,%edi
call   1030 <attroff@plt>
movl   $0x0,-0x120(%rbp)
jmp    1b8c <draw_arena+0x93c>
mov    -0x11c(%rbp),%eax
cmp    -0x4(%rbp),%eax
jne    1a2e <draw_arena+0x7de>
mov    -0x114(%rbp),%eax
mov    %eax,-0x184(%rbp)
xor    %eax,%eax
mov    %eax,%edi
call   10d0 <time@plt>
mov    %eax,%ecx
mov    -0x184(%rbp),%eax
cmp    %ecx,%eax
jg     1a2e <draw_arena+0x7de>
mov    -0xc(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x1a8(%rbp)
mov    -0x10(%rbp),%eax
sub    $0x28,%eax
mov    %eax,-0x1a4(%rbp)
lea    -0xc8(%rbp),%rdi
call   1060 <strlen@plt>
mov    -0x1a8(%rbp),%edi
mov    %eax,%ecx
mov    -0x1a4(%rbp),%eax
sub    %ecx,%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    %eax,%esi
lea    -0xc8(%rbp),%rcx
lea    0x9f1(%rip),%rdx
mov    $0x0,%al
call   1150 <mvprintw@plt>
mov    -0xc(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x198(%rbp)
mov    -0x10(%rbp),%eax
mov    %eax,-0x1a0(%rbp)
mov    -0x10(%rbp),%eax
sub    $0x28,%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x1a0(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x19c(%rbp)
lea    -0xcf(%rbp),%rdi
call   1060 <strlen@plt>
mov    -0x19c(%rbp),%esi
mov    -0x198(%rbp),%edi
mov    $0x2,%ecx
cltd
idiv   %ecx
sub    %eax,%esi
lea    -0xcf(%rbp),%rcx
lea    0x982(%rip),%rdx
mov    $0x0,%al
call   1150 <mvprintw@plt>
mov    $0x1,%edi
call   10e0 <COLOR_PAIR@plt>
mov    %eax,%edi
call   10a0 <attron@plt>
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x194(%rbp)
cvtsi2sdl -0x10(%rbp),%xmm0
movsd  %xmm0,-0x190(%rbp)
ff
mov    -0x8(%rbp),%edi
call   1050 <abs@plt>
cvtsi2sd %eax,%xmm0
call   1110 <log10@plt>
call   1160 <floor@plt>
mov    -0x194(%rbp),%edi
movaps %xmm0,%xmm1
movsd  -0x190(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  0x607(%rip),%xmm1
subsd  %xmm1,%xmm0
mov    -0x8(%rbp),%edx
lea    0x902(%rip),%rsi
mov    $0x1,%al
call   1150 <mvprintw@plt>
mov    $0x1,%edi
call   10e0 <COLOR_PAIR@plt>
mov    %eax,%edi
call   1030 <attroff@plt>
movl   $0x0,-0x120(%rbp)
jmp    1b87 <draw_arena+0x937>
mov    -0x11c(%rbp),%eax
cmp    -0x8(%rbp),%eax
jne    1b82 <draw_arena+0x932>
mov    -0x114(%rbp),%eax
mov    %eax,-0x1ac(%rbp)
xor    %eax,%eax
mov    %eax,%edi
call   10d0 <time@plt>
mov    %eax,%ecx
mov    -0x1ac(%rbp),%eax
cmp    %ecx,%eax
jg     1b82 <draw_arena+0x932>
mov    -0xc(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x1c0(%rbp)
mov    -0x10(%rbp),%eax
sub    $0x28,%eax
mov    %eax,-0x1bc(%rbp)
lea    -0xcf(%rbp),%rdi
call   1060 <strlen@plt>
mov    -0x1c0(%rbp),%edi
mov    %eax,%ecx
mov    -0x1bc(%rbp),%eax
sub    %ecx,%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    %eax,%esi
lea    -0xcf(%rbp),%rcx
lea    0x864(%rip),%rdx
mov    $0x0,%al
call   1150 <mvprintw@plt>
mov    -0xc(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x1b0(%rbp)
mov    -0x10(%rbp),%eax
mov    %eax,-0x1b8(%rbp)
mov    -0x10(%rbp),%eax
sub    $0x28,%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x1b8(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x1b4(%rbp)
lea    -0xc8(%rbp),%rdi
call   1060 <strlen@plt>
mov    -0x1b4(%rbp),%esi
mov    -0x1b0(%rbp),%edi
mov    $0x2,%ecx
cltd
idiv   %ecx
sub    %eax,%esi
lea    -0xc8(%rbp),%rcx
lea    0x7f5(%rip),%rdx
mov    $0x0,%al
call   1150 <mvprintw@plt>
mov    $0x1,%edi
call   10e0 <COLOR_PAIR@plt>
mov    %eax,%edi
call   10a0 <attron@plt>
mov    -0xc(%rbp),%edi
sub    $0x1,%edi
mov    -0x4(%rbp),%ecx
mov    $0x1,%esi
lea    0x7ac(%rip),%rdx
mov    $0x0,%al
call   1150 <mvprintw@plt>
mov    $0x1,%edi
call   10e0 <COLOR_PAIR@plt>
mov    %eax,%edi
call   10a0 <attron@plt>
mov    $0x1,%edi
call   10e0 <COLOR_PAIR@plt>
mov    %eax,%edi
call   1030 <attroff@plt>
movl   $0x0,-0x120(%rbp)
jmp    1b87 <draw_arena+0x937>
jmp    1b8c <draw_arena+0x93c>
jmp    1b91 <draw_arena+0x941>
jmp    15b2 <draw_arena+0x362>
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x1c8(%rbp)
mov    -0x10(%rbp),%eax
mov    %eax,-0x1c4(%rbp)
lea    -0xf0(%rbp),%rdi
call   1060 <strlen@plt>
mov    -0x1c8(%rbp),%edi
mov    %eax,%ecx
mov    -0x1c4(%rbp),%eax
sub    %ecx,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%esi
lea    -0xf0(%rbp),%rcx
lea    0x738(%rip),%rdx
mov    $0x0,%al
call   1150 <mvprintw@plt>
mov    $0x0,%al
call   10f0 <refresh@plt>
cmpl   $0x1,-0x124(%rbp)
jne    1c43 <draw_arena+0x9f3>
mov    $0x0,%al
call   1130 <nb_getch@plt>
mov    %eax,-0x11c(%rbp)
cmpl   $0x6e,-0x11c(%rbp)
jne    1c22 <draw_arena+0x9d2>
mov    $0x0,%al
call   1100 <endwin@plt>
xor    %edi,%edi
call   1120 <exit@plt>
cmpl   $0x79,-0x11c(%rbp)
jne    1c39 <draw_arena+0x9e9>
movl   $0x0,-0x124(%rbp)
jmp    1c3e <draw_arena+0x9ee>
jmp    1bed <draw_arena+0x99d>
jmp    1345 <draw_arena+0xf5>

x86 assembly (clang, -O2):
<draw_arena>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x78,%rsp
mov    %esi,%r15d
mov    %edi,%r13d
movabs $0x2172656e6e6957,%rax
mov    %rax,0x8(%rsp)
movl   $0x217265,0x3(%rsp)
movl   $0x65736f4c,(%rsp)
movaps 0x1117(%rip),%xmm0
movaps %xmm0,0x30(%rsp)
movaps 0x10fb(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
movb   $0x0,0x40(%rsp)
movups 0x1129(%rip),%xmm0
movups %xmm0,0x5f(%rsp)
movaps 0x110e(%rip),%xmm0
movaps %xmm0,0x50(%rsp)
mov    0x2d4a(%rip),%rax
mov    (%rax),%edi
call   10a0 <getmaxyx@plt>
mov    0x2d24(%rip),%rax
mov    (%rax),%esi
mov    0x2d2b(%rip),%rax
mov    (%rax),%edx
mov    $0x1,%edi
call   1060 <init_pair@plt>
mov    %r15d,%eax
neg    %eax
cmovs  %r15d,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x10(%rsp)
lea    0x1011(%rip),%rbx
lea    0x102a(%rip),%r14
mov    %r13d,0x1c(%rsp)
nopw   0x0(%rax,%rax,1)
xor    %eax,%eax
call   1120 <clear@plt>
xor    %edi,%edi
xor    %esi,%esi
mov    %rbx,%rdx
lea    0xd03(%rip),%rcx
xor    %eax,%eax
call   1130 <mvprintw@plt>
mov    $0x1,%edi
xor    %esi,%esi
mov    %rbx,%rdx
lea    0xd05(%rip),%rcx
xor    %eax,%eax
call   1130 <mvprintw@plt>
mov    $0x2,%edi
xor    %esi,%esi
mov    %rbx,%rdx
lea    0xd0c(%rip),%rcx
xor    %eax,%eax
call   1130 <mvprintw@plt>
mov    $0x3,%edi
xor    %esi,%esi
mov    %rbx,%rdx
lea    0xd16(%rip),%rcx
xor    %eax,%eax
call   1130 <mvprintw@plt>
mov    $0x4,%edi
xor    %esi,%esi
mov    %rbx,%rdx
lea    0xd22(%rip),%rcx
xor    %eax,%eax
call   1130 <mvprintw@plt>
mov    $0x5,%edi
xor    %esi,%esi
mov    %rbx,%rdx
lea    0xd30(%rip),%rcx
xor    %eax,%eax
call   1130 <mvprintw@plt>
mov    $0x6,%edi
xor    %esi,%esi
mov    %rbx,%rdx
lea    0xd40(%rip),%rcx
xor    %eax,%eax
call   1130 <mvprintw@plt>
mov    $0x7,%edi
xor    %esi,%esi
mov    %rbx,%rdx
lea    0xd50(%rip),%rcx
xor    %eax,%eax
call   1130 <mvprintw@plt>
mov    $0x8,%edi
xor    %esi,%esi
mov    %rbx,%rdx
lea    0xd61(%rip),%rcx
xor    %eax,%eax
call   1130 <mvprintw@plt>
mov    $0x9,%edi
xor    %esi,%esi
mov    %rbx,%rdx
lea    0xd72(%rip),%rcx
xor    %eax,%eax
call   1130 <mvprintw@plt>
mov    $0xa,%edi
xor    %esi,%esi
mov    %rbx,%rdx
lea    0xd83(%rip),%rcx
xor    %eax,%eax
call   1130 <mvprintw@plt>
mov    $0xb,%edi
xor    %esi,%esi
mov    %rbx,%rdx
lea    0xd94(%rip),%rcx
xor    %eax,%eax
call   1130 <mvprintw@plt>
mov    $0xc,%edi
xor    %esi,%esi
mov    %rbx,%rdx
lea    0xda5(%rip),%rcx
xor    %eax,%eax
call   1130 <mvprintw@plt>
mov    $0xd,%edi
xor    %esi,%esi
mov    %rbx,%rdx
lea    0xdb5(%rip),%rcx
xor    %eax,%eax
call   1130 <mvprintw@plt>
mov    $0xe,%edi
xor    %esi,%esi
mov    %rbx,%rdx
lea    0xdc4(%rip),%rcx
xor    %eax,%eax
call   1130 <mvprintw@plt>
mov    $0xf,%edi
xor    %esi,%esi
mov    %rbx,%rdx
lea    0xdd3(%rip),%rcx
xor    %eax,%eax
call   1130 <mvprintw@plt>
mov    $0x10,%edi
xor    %esi,%esi
mov    %rbx,%rdx
lea    0xde1(%rip),%rcx
xor    %eax,%eax
call   1130 <mvprintw@plt>
mov    $0x11,%edi
xor    %esi,%esi
mov    %rbx,%rdx
lea    0xded(%rip),%rcx
xor    %eax,%eax
call   1130 <mvprintw@plt>
mov    $0x12,%edi
xor    %esi,%esi
mov    %rbx,%rdx
lea    0xdf7(%rip),%rcx
xor    %eax,%eax
call   1130 <mvprintw@plt>
mov    $0x13,%edi
xor    %esi,%esi
mov    %rbx,%rdx
lea    0xdff(%rip),%rcx
xor    %eax,%eax
call   1130 <mvprintw@plt>
mov    $0x1,%esi
lea    0xe13(%rip),%rdx
mov    %r13d,%ecx
xor    %eax,%eax
call   1130 <mvprintw@plt>
movsd  0x10(%rsp),%xmm0
call   10f0 <log10@plt>
call   1140 <floor@plt>
xorpd  %xmm1,%xmm1
subsd  %xmm0,%xmm1
addsd  0xaf6(%rip),%xmm1
movapd %xmm1,%xmm0
lea    0xdec(%rip),%rsi
mov    %r15d,%edx
mov    $0x1,%al
call   1130 <mvprintw@plt>
lea    0x50(%rsp),%rbp
mov    %rbp,%rdi
call   1050 <strlen@plt>
xor    %edi,%edi
xor    %esi,%esi
mov    %r14,%rdx
mov    %rbp,%rcx
xor    %eax,%eax
call   1130 <mvprintw@plt>
xor    %eax,%eax
call   10d0 <refresh@plt>
xor    %edi,%edi
call   10b0 <time@plt>
mov    %eax,%edi
call   1080 <srand@plt>
xor    %edi,%edi
call   10b0 <time@plt>
mov    %eax,%ebp
xor    %eax,%eax
call   1150 <rand@plt>
mov    %eax,%r12d
lea    0x3(%r12),%eax
test   %r12d,%r12d
cmovns %r12d,%eax
and    $0xfffffffc,%eax
sub    %eax,%r12d
add    %ebp,%r12d
xor    %eax,%eax
call   1040 <set_conio_terminal_mode@plt>
xor    %eax,%eax
call   1070 <kbhit@plt>
test   %eax,%eax
je     1700 <draw_arena+0x4d0>
xor    %eax,%eax
call   1110 <nb_getch@plt>
mov    %eax,%ebp
cmp    %r13d,%eax
jne    15ae <draw_arena+0x37e>
xor    %edi,%edi
call   10b0 <time@plt>
cmp    %eax,%r12d
jge    17b0 <draw_arena+0x580>
cmp    %r15d,%ebp
jne    15c3 <draw_arena+0x393>
xor    %edi,%edi
call   10b0 <time@plt>
cmp    %eax,%r12d
jge    1670 <draw_arena+0x440>
cmp    %r13d,%ebp
jne    15d8 <draw_arena+0x3a8>
xor    %edi,%edi
call   10b0 <time@plt>
cmp    %eax,%r12d
jl     1670 <draw_arena+0x440>
cmp    %r15d,%ebp
jne    1590 <draw_arena+0x360>
xor    %edi,%edi
call   10b0 <time@plt>
cmp    %eax,%r12d
jge    1590 <draw_arena+0x360>
mov    %rsp,%rbx
mov    %rbx,%rdi
call   1050 <strlen@plt>
xor    %edi,%edi
xor    %esi,%esi
lea    0xd10(%rip),%r14
mov    %r14,%rdx
mov    %rbx,%rcx
xor    %eax,%eax
call   1130 <mvprintw@plt>
lea    0x8(%rsp),%rbx
mov    %rbx,%rdi
call   1050 <strlen@plt>
xor    %edi,%edi
mov    %r14,%rdx
mov    %rbx,%rcx
xor    %eax,%eax
call   1130 <mvprintw@plt>
mov    $0x1,%edi
call   10c0 <COLOR_PAIR@plt>
mov    %eax,%edi
call   1090 <attron@plt>
mov    $0x1,%esi
lea    0xcae(%rip),%rdx
mov    %r13d,%ecx
xor    %eax,%eax
call   1130 <mvprintw@plt>
mov    $0x1,%edi
call   10c0 <COLOR_PAIR@plt>
mov    %eax,%edi
call   1090 <attron@plt>
jmp    1816 <draw_arena+0x5e6>
cs nopw 0x0(%rax,%rax,1)
nop
lea    0x8(%rsp),%rbx
mov    %rbx,%rdi
call   1050 <strlen@plt>
xor    %edi,%edi
xor    %esi,%esi
lea    0xc87(%rip),%r14
mov    %r14,%rdx
mov    %rbx,%rcx
xor    %eax,%eax
call   1130 <mvprintw@plt>
mov    %rsp,%rbx
mov    %rbx,%rdi
call   1050 <strlen@plt>
xor    %edi,%edi
mov    %r14,%rdx
mov    %rbx,%rcx
xor    %eax,%eax
call   1130 <mvprintw@plt>
mov    $0x1,%edi
call   10c0 <COLOR_PAIR@plt>
mov    %eax,%edi
call   1090 <attron@plt>
movsd  0x10(%rsp),%xmm0
call   10f0 <log10@plt>
call   1140 <floor@plt>
xorpd  %xmm1,%xmm1
subsd  %xmm0,%xmm1
addsd  0x920(%rip),%xmm1
movapd %xmm1,%xmm0
lea    0xc16(%rip),%rsi
mov    %r15d,%edx
mov    $0x1,%al
call   1130 <mvprintw@plt>
jmp    1816 <draw_arena+0x5e6>
nopw   0x0(%rax,%rax,1)
xor    %ebp,%ebp
jmp    171f <draw_arena+0x4ef>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
xor    %eax,%eax
call   1070 <kbhit@plt>
test   %eax,%eax
jne    1590 <draw_arena+0x360>
xor    %edi,%edi
call   10b0 <time@plt>
cmp    %eax,%r12d
jge    1710 <draw_arena+0x4e0>
test   %ebp,%ebp
jne    1710 <draw_arena+0x4e0>
mov    %r15d,%r13d
lea    0xbdb(%rip),%rbx
mov    %rbx,%rbp
xor    %r15d,%r15d
lea    0xba9(%rip),%r14
cs nopw 0x0(%rax,%rax,1)
mov    $0x1,%edi
call   10c0 <COLOR_PAIR@plt>
mov    %eax,%edi
call   1090 <attron@plt>
movslq 0x0(%rbp),%rcx
add    %rbx,%rcx
mov    %r15d,%edi
xor    %esi,%esi
mov    %r14,%rdx
xor    %eax,%eax
call   1130 <mvprintw@plt>
mov    $0x1,%edi
call   10c0 <COLOR_PAIR@plt>
mov    %eax,%edi
call   1030 <attroff@plt>
add    $0x1,%r15
add    $0x4,%rbp
cmp    $0x14,%r15
jne    1750 <draw_arena+0x520>
xor    %eax,%eax
call   10d0 <refresh@plt>
mov    $0x1,%ebp
mov    %r13d,%r15d
mov    0x1c(%rsp),%r13d
jmp    1710 <draw_arena+0x4e0>
nop
mov    %rsp,%rbx
mov    %rbx,%rdi
call   1050 <strlen@plt>
xor    %edi,%edi
xor    %esi,%esi
lea    0xb49(%rip),%r14
mov    %r14,%rdx
mov    %rbx,%rcx
xor    %eax,%eax
call   1130 <mvprintw@plt>
lea    0x8(%rsp),%rbx
mov    %rbx,%rdi
call   1050 <strlen@plt>
xor    %edi,%edi
mov    %r14,%rdx
mov    %rbx,%rcx
xor    %eax,%eax
call   1130 <mvprintw@plt>
mov    $0x1,%edi
call   10c0 <COLOR_PAIR@plt>
mov    %eax,%edi
call   1090 <attron@plt>
mov    $0x1,%esi
lea    0xae7(%rip),%rdx
mov    %r13d,%ecx
xor    %eax,%eax
call   1130 <mvprintw@plt>
lea    0xad2(%rip),%rbx
mov    $0x1,%edi
call   10c0 <COLOR_PAIR@plt>
mov    %eax,%edi
call   1030 <attroff@plt>
lea    0x20(%rsp),%rbp
mov    %rbp,%rdi
call   1050 <strlen@plt>
xor    %esi,%esi
mov    %r14,%rdx
mov    %rbp,%rcx
xor    %eax,%eax
call   1130 <mvprintw@plt>
xor    %eax,%eax
call   10d0 <refresh@plt>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
xor    %eax,%eax
call   1110 <nb_getch@plt>
cmp    $0x79,%eax
je     12f0 <draw_arena+0xc0>
cmp    $0x6e,%eax
jne    1860 <draw_arena+0x630>
xor    %eax,%eax
call   10e0 <endwin@plt>
xor    %edi,%edi
call   1100 <exit@plt>

LLVM IR (-O0):
@.str = [26 x i8] c" .,-:;//;:=,\00"
@.str.1 = [31 x i8] c" . :H@@@MM@M#H/.,+%;,\00"
@.str.2 = [34 x i8] c" ,/X+ +M@@M@MM%=,-%HMMM@X/,\00"
@.str.3 = [36 x i8] c" -+@MM; $M@@MH+-,;XMMMM@MMMM@+-\00"
@.str.4 = [38 x i8] c" ;@M@@M- XM@X;. -+XXXXXHHH@M@M#@/.\00"
@.str.5 = [40 x i8] c" ,%MM@@MH ,@%= .---=-=:=,.\00"
@.str.6 = [40 x i8] c" =@#@@@MX., -%HX$$%%%:;\00"
@.str.7 = [41 x i8] c" =-./@M@M$ .;@MMMM@MM:\00"
@.str.8 = [41 x i8] c" X@/ -$MM/ . +MM@@@M$\00"
@.str.9 = [41 x i8] c",@M@H: :@: . =X#@@@@-\00"
@.str.10 = [41 x i8] c",@@@MMX, . /H- ;@M@M=\00"
@.str.11 = [41 x i8] c".H@@@@M@+, %MM+..%#$.\00"
@.str.12 = [40 x i8] c" /MMMM@MMH/. XM@MH; =;\00"
@.str.13 = [39 x i8] c" /%+%$XHH@$= , .H@@@@MX,\00"
@.str.14 = [39 x i8] c" .=--------. -%H.,@@@@@MX,\00"
@.str.15 = [38 x i8] c" .%MM@@@HHHXX$$$%+- .:$MMX =M@@MM%.\00"
@.str.16 = [36 x i8] c" =XMMM@MM@MM#H;,-+HMM@M+ /MMMX=\00"
@.str.17 = [34 x i8] c" =%@M@M#@$-.=$@MM@@@M; %M%=\00"
@.str.18 = [32 x i8] c" ,:+$+-,/H#MMMMMMM@= =,\00"
@.str.19 = [28 x i8] c" =++%%%%+/:-.\00"
@__const.draw_arena.btn_ascii = [20 x i8*] [i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.1, i32 0, i32 0), i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.2, i32 0, i32 0), i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.3, i32 0, i32 0), i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.4, i32 0, i32 0), i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.5, i32 0, i32 0), i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.6, i32 0, i32 0), i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.7, i32 0, i32 0), i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.8, i32 0, i32 0), i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.9, i32 0, i32 0), i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.10, i32 0, i32 0), i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.11, i32 0, i32 0), i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.12, i32 0, i32 0), i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.13, i32 0, i32 0), i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.14, i32 0, i32 0), i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.15, i32 0, i32 0), i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.16, i32 0, i32 0), i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.17, i32 0, i32 0), i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.18, i32 0, i32 0), i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.19, i32 0, i32 0)]
@__const.draw_arena.win_txt = [8 x i8] c"Winner!\00"
@__const.draw_arena.loser_txt = [7 x i8] c"Loser!\00"
@__const.draw_arena.play_again_txt = [33 x i8] c"Do you wish to play again? (y/n)\00"
@__const.draw_arena.creator_txt = [31 x i8] c"Written with <3 by willeponken\00"
@stdscr = global i32 0
@COLOR_RED = global i32 0
@COLOR_BLACK = global i32 0
@.str.20 = [4 x i8] c"%s\0A\00"
@.str.21 = [14 x i8] c"Player 1 (%d)\00"
@.str.22 = [14 x i8] c"Player 2 (%d)\00"
@.str.23 = [3 x i8] c"%s\00"
define i32 @draw_arena(i32 %0, i32 %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca [20 x i8*]
%9 = alloca [8 x i8]
%10 = alloca [7 x i8]
%11 = alloca [33 x i8]
%12 = alloca [31 x i8]
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
store i32 %0, i32* %3
store i32 %1, i32* %4
%18 = bitcast [20 x i8*]* %8 to i8*
%19 = bitcast [8 x i8]* %9 to i8*
%20 = bitcast [7 x i8]* %10 to i8*
%21 = bitcast [33 x i8]* %11 to i8*
%22 = bitcast [31 x i8]* %12 to i8*
%23 = load i32, i32* @stdscr
%24 = load i32, i32* %5
%25 = load i32, i32* %6
%26 = call i32 @getmaxyx(i32 %23, i32 %24, i32 %25)
%27 = load i32, i32* @COLOR_RED
%28 = load i32, i32* @COLOR_BLACK
%29 = call i32 @init_pair(i32 1, i32 %27, i32 %28)
br label %30
30: ; preds = %2, %341
%31 = call i32 (...) @clear()
store i32 0, i32* %7
br label %32
32: ; preds = %49, %30
%33 = load i32, i32* %7
%34 = icmp slt i32 %33, 20
br i1 %34, label %35, label %52
35: ; preds = %32
%36 = load i32, i32* %5
%37 = sub nsw i32 %36, 20
%38 = sdiv i32 %37, 2
%39 = load i32, i32* %7
%40 = add nsw i32 %38, %39
%41 = load i32, i32* %6
%42 = sub nsw i32 %41, 40
%43 = sdiv i32 %42, 2
%44 = load i32, i32* %7
%45 = sext i32 %44 to i64
%46 = getelementptr inbounds [20 x i8*], [20 x i8*]* %8, i64 0, i64 %45
%47 = load i8*, i8** %46
%48 = call i32 (i32, ...) @mvprintw(i32 %40, i32 %43, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0), i8* %47)
br label %49
49: ; preds = %35
%50 = load i32, i32* %7
%51 = add nsw i32 %50, 1
store i32 %51, i32* %7
br label %32
52: ; preds = %32
%53 = load i32, i32* %5
%54 = sub nsw i32 %53, 1
%55 = load i32, i32* %3
%56 = call i32 (i32, ...) @mvprintw(i32 %54, i32 1, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.21, i64 0, i64 0), i32 %55)
%57 = load i32, i32* %5
%58 = sub nsw i32 %57, 1
%59 = load i32, i32* %6
%60 = sitofp i32 %59 to double
%61 = load i32, i32* %4
%62 = call i32 @abs(i32 %61)
%63 = sitofp i32 %62 to double
%64 = call double @log10(double %63)
%65 = call double @llvm.floor.f64(double %64)
%66 = fsub double %60, %65
%67 = fsub double %66, 1.300000e+01
%68 = load i32, i32* %4
%69 = call i32 (i32, ...) @mvprintw(i32 %58, double %67, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.22, i64 0, i64 0), i32 %68)
%70 = load i32, i32* %6
%71 = getelementptr inbounds [31 x i8], [31 x i8]* %12, i64 0, i64 0
%72 = call i32 @strlen(i8* %71)
%73 = sub nsw i32 %70, %72
%74 = sdiv i32 %73, 2
%75 = getelementptr inbounds [31 x i8], [31 x i8]* %12, i64 0, i64 0
%76 = call i32 (i32, ...) @mvprintw(i32 0, i32 %74, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.23, i64 0, i64 0), i8* %75)
%77 = call i32 (...) @refresh()
%78 = call i32 @time(i32* null)
%79 = call i32 @srand(i32 %78)
%80 = call i32 @time(i32* null)
%81 = call i32 (...) @rand()
%82 = srem i32 %81, 4
%83 = add nsw i32 %80, %82
%84 = add nsw i32 %83, 1
store i32 %84, i32* %13
store i32 0, i32* %14
%85 = call i32 (...) @set_conio_terminal_mode()
br label %86
86: ; preds = %124, %52
%87 = call i32 (...) @kbhit()
%88 = icmp ne i32 %87, 0
%89 = xor i1 %88, true
br i1 %89, label %90, label %125
90: ; preds = %86
%91 = load i32, i32* %13
%92 = call i32 @time(i32* null)
%93 = icmp sle i32 %91, %92
br i1 %93, label %94, label %124
94: ; preds = %90
%95 = load i32, i32* %14
%96 = icmp eq i32 %95, 0
br i1 %96, label %97, label %124
97: ; preds = %94
store i32 0, i32* %7
br label %98
98: ; preds = %119, %97
%99 = load i32, i32* %7
%100 = icmp slt i32 %99, 20
br i1 %100, label %101, label %122
101: ; preds = %98
%102 = call i32 @COLOR_PAIR(i32 1)
%103 = call i32 @attron(i32 %102)
%104 = load i32, i32* %5
%105 = sub nsw i32 %104, 20
%106 = sdiv i32 %105, 2
%107 = load i32, i32* %7
%108 = add nsw i32 %106, %107
%109 = load i32, i32* %6
%110 = sub nsw i32 %109, 40
%111 = sdiv i32 %110, 2
%112 = load i32, i32* %7
%113 = sext i32 %112 to i64
%114 = getelementptr inbounds [20 x i8*], [20 x i8*]* %8, i64 0, i64 %113
%115 = load i8*, i8** %114
%116 = call i32 (i32, ...) @mvprintw(i32 %108, i32 %111, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0), i8* %115)
%117 = call i32 @COLOR_PAIR(i32 1)
%118 = call i32 @attroff(i32 %117)
br label %119
119: ; preds = %101
%120 = load i32, i32* %7
%121 = add nsw i32 %120, 1
store i32 %121, i32* %7
br label %98
122: ; preds = %98
store i32 1, i32* %14
%123 = call i32 (...) @refresh()
br label %124
124: ; preds = %122, %94, %90
br label %86
125: ; preds = %86
store i32 1, i32* %16
store i32 1, i32* %17
br label %126
126: ; preds = %313, %125
%127 = load i32, i32* %16
%128 = icmp eq i32 %127, 1
br i1 %128, label %129, label %314
129: ; preds = %126
%130 = call i32 (...) @nb_getch()
store i32 %130, i32* %15
%131 = load i32, i32* %15
%132 = load i32, i32* %3
%133 = icmp eq i32 %131, %132
br i1 %133, label %134, label %170
134: ; preds = %129
%135 = load i32, i32* %13
%136 = call i32 @time(i32* null)
%137 = icmp sgt i32 %135, %136
br i1 %137, label %138, label %170
138: ; preds = %134
%139 = load i32, i32* %5
%140 = sdiv i32 %139, 2
%141 = load i32, i32* %6
%142 = sub nsw i32 %141, 40
%143 = getelementptr inbounds [7 x i8], [7 x i8]* %10, i64 0, i64 0
%144 = call i32 @strlen(i8* %143)
%145 = sub nsw i32 %142, %144
%146 = sdiv i32 %145, 4
%147 = getelementptr inbounds [7 x i8], [7 x i8]* %10, i64 0, i64 0
%148 = call i32 (i32, ...) @mvprintw(i32 %140, i32 %146, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.23, i64 0, i64 0), i8* %147)
%149 = load i32, i32* %5
%150 = sdiv i32 %149, 2
%151 = load i32, i32* %6
%152 = load i32, i32* %6
%153 = sub nsw i32 %152, 40
%154 = sdiv i32 %153, 4
%155 = sub nsw i32 %151, %154
%156 = getelementptr inbounds [8 x i8], [8 x i8]* %9, i64 0, i64 0
%157 = call i32 @strlen(i8* %156)
%158 = sdiv i32 %157, 2
%159 = sub nsw i32 %155, %158
%160 = getelementptr inbounds [8 x i8], [8 x i8]* %9, i64 0, i64 0
%161 = call i32 (i32, ...) @mvprintw(i32 %150, i32 %159, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.23, i64 0, i64 0), i8* %160)
%162 = call i32 @COLOR_PAIR(i32 1)
%163 = call i32 @attron(i32 %162)
%164 = load i32, i32* %5
%165 = sub nsw i32 %164, 1
%166 = load i32, i32* %3
%167 = call i32 (i32, ...) @mvprintw(i32 %165, i32 1, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.21, i64 0, i64 0), i32 %166)
%168 = call i32 @COLOR_PAIR(i32 1)
%169 = call i32 @attroff(i32 %168)
store i32 0, i32* %16
br label %313
170: ; preds = %134, %129
%171 = load i32, i32* %15
%172 = load i32, i32* %4
%173 = icmp eq i32 %171, %172
br i1 %173, label %174, label %219
174: ; preds = %170
%175 = load i32, i32* %13
%176 = call i32 @time(i32* null)
%177 = icmp sgt i32 %175, %176
br i1 %177, label %178, label %219
178: ; preds = %174
%179 = load i32, i32* %5
%180 = sdiv i32 %179, 2
%181 = load i32, i32* %6
%182 = sub nsw i32 %181, 40
%183 = getelementptr inbounds [8 x i8], [8 x i8]* %9, i64 0, i64 0
%184 = call i32 @strlen(i8* %183)
%185 = sub nsw i32 %182, %184
%186 = sdiv i32 %185, 4
%187 = getelementptr inbounds [8 x i8], [8 x i8]* %9, i64 0, i64 0
%188 = call i32 (i32, ...) @mvprintw(i32 %180, i32 %186, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.23, i64 0, i64 0), i8* %187)
%189 = load i32, i32* %5
%190 = sdiv i32 %189, 2
%191 = load i32, i32* %6
%192 = load i32, i32* %6
%193 = sub nsw i32 %192, 40
%194 = sdiv i32 %193, 4
%195 = sub nsw i32 %191, %194
%196 = getelementptr inbounds [7 x i8], [7 x i8]* %10, i64 0, i64 0
%197 = call i32 @strlen(i8* %196)
%198 = sdiv i32 %197, 2
%199 = sub nsw i32 %195, %198
%200 = getelementptr inbounds [7 x i8], [7 x i8]* %10, i64 0, i64 0
%201 = call i32 (i32, ...) @mvprintw(i32 %190, i32 %199, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.23, i64 0, i64 0), i8* %200)
%202 = call i32 @COLOR_PAIR(i32 1)
%203 = call i32 @attron(i32 %202)
%204 = load i32, i32* %5
%205 = sub nsw i32 %204, 1
%206 = load i32, i32* %6
%207 = sitofp i32 %206 to double
%208 = load i32, i32* %4
%209 = call i32 @abs(i32 %208)
%210 = sitofp i32 %209 to double
%211 = call double @log10(double %210)
%212 = call double @llvm.floor.f64(double %211)
%213 = fsub double %207, %212
%214 = fsub double %213, 1.300000e+01
%215 = load i32, i32* %4
%216 = call i32 (i32, ...) @mvprintw(i32 %205, double %214, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.22, i64 0, i64 0), i32 %215)
%217 = call i32 @COLOR_PAIR(i32 1)
%218 = call i32 @attroff(i32 %217)
store i32 0, i32* %16
br label %312
219: ; preds = %174, %170
%220 = load i32, i32* %15
%221 = load i32, i32* %3
%222 = icmp eq i32 %220, %221
br i1 %222, label %223, label %268
223: ; preds = %219
%224 = load i32, i32* %13
%225 = call i32 @time(i32* null)
%226 = icmp sle i32 %224, %225
br i1 %226, label %227, label %268
227: ; preds = %223
%228 = load i32, i32* %5
%229 = sdiv i32 %228, 2
%230 = load i32, i32* %6
%231 = sub nsw i32 %230, 40
%232 = getelementptr inbounds [8 x i8], [8 x i8]* %9, i64 0, i64 0
%233 = call i32 @strlen(i8* %232)
%234 = sub nsw i32 %231, %233
%235 = sdiv i32 %234, 4
%236 = getelementptr inbounds [8 x i8], [8 x i8]* %9, i64 0, i64 0
%237 = call i32 (i32, ...) @mvprintw(i32 %229, i32 %235, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.23, i64 0, i64 0), i8* %236)
%238 = load i32, i32* %5
%239 = sdiv i32 %238, 2
%240 = load i32, i32* %6
%241 = load i32, i32* %6
%242 = sub nsw i32 %241, 40
%243 = sdiv i32 %242, 4
%244 = sub nsw i32 %240, %243
%245 = getelementptr inbounds [7 x i8], [7 x i8]* %10, i64 0, i64 0
%246 = call i32 @strlen(i8* %245)
%247 = sdiv i32 %246, 2
%248 = sub nsw i32 %244, %247
%249 = getelementptr inbounds [7 x i8], [7 x i8]* %10, i64 0, i64 0
%250 = call i32 (i32, ...) @mvprintw(i32 %239, i32 %248, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.23, i64 0, i64 0), i8* %249)
%251 = call i32 @COLOR_PAIR(i32 1)
%252 = call i32 @attron(i32 %251)
%253 = load i32, i32* %5
%254 = sub nsw i32 %253, 1
%255 = load i32, i32* %6
%256 = sitofp i32 %255 to double
%257 = load i32, i32* %4
%258 = call i32 @abs(i32 %257)
%259 = sitofp i32 %258 to double
%260 = call double @log10(double %259)
%261 = call double @llvm.floor.f64(double %260)
%262 = fsub double %256, %261
%263 = fsub double %262, 1.300000e+01
%264 = load i32, i32* %4
%265 = call i32 (i32, ...) @mvprintw(i32 %254, double %263, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.22, i64 0, i64 0), i32 %264)
%266 = call i32 @COLOR_PAIR(i32 1)
%267 = call i32 @attroff(i32 %266)
store i32 0, i32* %16
br label %311
268: ; preds = %223, %219
%269 = load i32, i32* %15
%270 = load i32, i32* %4
%271 = icmp eq i32 %269, %270
br i1 %271, label %272, label %310
272: ; preds = %268
%273 = load i32, i32* %13
%274 = call i32 @time(i32* null)
%275 = icmp sle i32 %273, %274
br i1 %275, label %276, label %310
276: ; preds = %272
%277 = load i32, i32* %5
%278 = sdiv i32 %277, 2
%279 = load i32, i32* %6
%280 = sub nsw i32 %279, 40
%281 = getelementptr inbounds [7 x i8], [7 x i8]* %10, i64 0, i64 0
%282 = call i32 @strlen(i8* %281)
%283 = sub nsw i32 %280, %282
%284 = sdiv i32 %283, 4
%285 = getelementptr inbounds [7 x i8], [7 x i8]* %10, i64 0, i64 0
%286 = call i32 (i32, ...) @mvprintw(i32 %278, i32 %284, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.23, i64 0, i64 0), i8* %285)
%287 = load i32, i32* %5
%288 = sdiv i32 %287, 2
%289 = load i32, i32* %6
%290 = load i32, i32* %6
%291 = sub nsw i32 %290, 40
%292 = sdiv i32 %291, 4
%293 = sub nsw i32 %289, %292
%294 = getelementptr inbounds [8 x i8], [8 x i8]* %9, i64 0, i64 0
%295 = call i32 @strlen(i8* %294)
%296 = sdiv i32 %295, 2
%297 = sub nsw i32 %293, %296
%298 = getelementptr inbounds [8 x i8], [8 x i8]* %9, i64 0, i64 0
%299 = call i32 (i32, ...) @mvprintw(i32 %288, i32 %297, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.23, i64 0, i64 0), i8* %298)
%300 = call i32 @COLOR_PAIR(i32 1)
%301 = call i32 @attron(i32 %300)
%302 = load i32, i32* %5
%303 = sub nsw i32 %302, 1
%304 = load i32, i32* %3
%305 = call i32 (i32, ...) @mvprintw(i32 %303, i32 1, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.21, i64 0, i64 0), i32 %304)
%306 = call i32 @COLOR_PAIR(i32 1)
%307 = call i32 @attron(i32 %306)
%308 = call i32 @COLOR_PAIR(i32 1)
%309 = call i32 @attroff(i32 %308)
store i32 0, i32* %16
br label %310
310: ; preds = %276, %272, %268
br label %311
311: ; preds = %310, %227
br label %312
312: ; preds = %311, %178
br label %313
313: ; preds = %312, %138
br label %126
314: ; preds = %126
%315 = load i32, i32* %5
%316 = sub nsw i32 %315, 1
%317 = load i32, i32* %6
%318 = getelementptr inbounds [33 x i8], [33 x i8]* %11, i64 0, i64 0
%319 = call i32 @strlen(i8* %318)
%320 = sub nsw i32 %317, %319
%321 = sdiv i32 %320, 2
%322 = getelementptr inbounds [33 x i8], [33 x i8]* %11, i64 0, i64 0
%323 = call i32 (i32, ...) @mvprintw(i32 %316, i32 %321, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.23, i64 0, i64 0), i8* %322)
%324 = call i32 (...) @refresh()
br label %325
325: ; preds = %340, %314
%326 = load i32, i32* %17
%327 = icmp eq i32 %326, 1
br i1 %327, label %328, label %341
328: ; preds = %325
%329 = call i32 (...) @nb_getch()
store i32 %329, i32* %15
%330 = load i32, i32* %15
%331 = icmp eq i32 %330, 110
br i1 %331, label %332, label %335
332: ; preds = %328
%333 = call i32 (...) @endwin()
%334 = call i32 @exit(i32 0)
unreachable
335: ; preds = %328
%336 = load i32, i32* %15
%337 = icmp eq i32 %336, 121
br i1 %337, label %338, label %339
338: ; preds = %335
store i32 0, i32* %17
br label %339
339: ; preds = %338, %335
br label %340
340: ; preds = %339
br label %325
341: ; preds = %325
br label %30
}

LLVM IR (-O2):
@.str = [26 x i8] c" .,-:;//;:=,\00"
@.str.1 = [31 x i8] c" . :H@@@MM@M#H/.,+%;,\00"
@.str.2 = [34 x i8] c" ,/X+ +M@@M@MM%=,-%HMMM@X/,\00"
@.str.3 = [36 x i8] c" -+@MM; $M@@MH+-,;XMMMM@MMMM@+-\00"
@.str.4 = [38 x i8] c" ;@M@@M- XM@X;. -+XXXXXHHH@M@M#@/.\00"
@.str.5 = [40 x i8] c" ,%MM@@MH ,@%= .---=-=:=,.\00"
@.str.6 = [40 x i8] c" =@#@@@MX., -%HX$$%%%:;\00"
@.str.7 = [41 x i8] c" =-./@M@M$ .;@MMMM@MM:\00"
@.str.8 = [41 x i8] c" X@/ -$MM/ . +MM@@@M$\00"
@.str.9 = [41 x i8] c",@M@H: :@: . =X#@@@@-\00"
@.str.10 = [41 x i8] c",@@@MMX, . /H- ;@M@M=\00"
@.str.11 = [41 x i8] c".H@@@@M@+, %MM+..%#$.\00"
@.str.12 = [40 x i8] c" /MMMM@MMH/. XM@MH; =;\00"
@.str.13 = [39 x i8] c" /%+%$XHH@$= , .H@@@@MX,\00"
@.str.14 = [39 x i8] c" .=--------. -%H.,@@@@@MX,\00"
@.str.15 = [38 x i8] c" .%MM@@@HHHXX$$$%+- .:$MMX =M@@MM%.\00"
@.str.16 = [36 x i8] c" =XMMM@MM@MM#H;,-+HMM@M+ /MMMX=\00"
@.str.17 = [34 x i8] c" =%@M@M#@$-.=$@MM@@@M; %M%=\00"
@.str.18 = [32 x i8] c" ,:+$+-,/H#MMMMMMM@= =,\00"
@.str.19 = [28 x i8] c" =++%%%%+/:-.\00"
@reltable.draw_arena = [20 x i32] [i32 trunc (i64 sub (i64 ptrtoint ([26 x i8]* @.str to i64), i64 ptrtoint ([20 x i32]* @reltable.draw_arena to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([31 x i8]* @.str.1 to i64), i64 ptrtoint ([20 x i32]* @reltable.draw_arena to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([34 x i8]* @.str.2 to i64), i64 ptrtoint ([20 x i32]* @reltable.draw_arena to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([36 x i8]* @.str.3 to i64), i64 ptrtoint ([20 x i32]* @reltable.draw_arena to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([38 x i8]* @.str.4 to i64), i64 ptrtoint ([20 x i32]* @reltable.draw_arena to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([40 x i8]* @.str.5 to i64), i64 ptrtoint ([20 x i32]* @reltable.draw_arena to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([40 x i8]* @.str.6 to i64), i64 ptrtoint ([20 x i32]* @reltable.draw_arena to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([41 x i8]* @.str.7 to i64), i64 ptrtoint ([20 x i32]* @reltable.draw_arena to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([41 x i8]* @.str.8 to i64), i64 ptrtoint ([20 x i32]* @reltable.draw_arena to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([41 x i8]* @.str.9 to i64), i64 ptrtoint ([20 x i32]* @reltable.draw_arena to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([41 x i8]* @.str.10 to i64), i64 ptrtoint ([20 x i32]* @reltable.draw_arena to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([41 x i8]* @.str.11 to i64), i64 ptrtoint ([20 x i32]* @reltable.draw_arena to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([40 x i8]* @.str.12 to i64), i64 ptrtoint ([20 x i32]* @reltable.draw_arena to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([39 x i8]* @.str.13 to i64), i64 ptrtoint ([20 x i32]* @reltable.draw_arena to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([39 x i8]* @.str.14 to i64), i64 ptrtoint ([20 x i32]* @reltable.draw_arena to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([38 x i8]* @.str.15 to i64), i64 ptrtoint ([20 x i32]* @reltable.draw_arena to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([36 x i8]* @.str.16 to i64), i64 ptrtoint ([20 x i32]* @reltable.draw_arena to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([34 x i8]* @.str.17 to i64), i64 ptrtoint ([20 x i32]* @reltable.draw_arena to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([32 x i8]* @.str.18 to i64), i64 ptrtoint ([20 x i32]* @reltable.draw_arena to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([28 x i8]* @.str.19 to i64), i64 ptrtoint ([20 x i32]* @reltable.draw_arena to i64)) to i32)]
@__const.draw_arena.loser_txt = [7 x i8] c"Loser!\00"
@__const.draw_arena.play_again_txt = [33 x i8] c"Do you wish to play again? (y/n)\00"
@__const.draw_arena.creator_txt = [31 x i8] c"Written with <3 by willeponken\00"
@stdscr = global i32 0
@COLOR_RED = global i32 0
@COLOR_BLACK = global i32 0
@.str.20 = [4 x i8] c"%s\0A\00"
@.str.21 = [14 x i8] c"Player 1 (%d)\00"
@.str.22 = [14 x i8] c"Player 2 (%d)\00"
@.str.23 = [3 x i8] c"%s\00"
define i32 @draw_arena(i32 %0, i32 %1) {
%3 = alloca i64
%4 = alloca [7 x i8]
%5 = alloca [33 x i8]
%6 = alloca [31 x i8]
%7 = bitcast i64* %3 to i8*
store i64 9414454201444695, i64* %3
%8 = getelementptr inbounds [7 x i8], [7 x i8]* %4, i64 0, i64 0
%9 = getelementptr inbounds [33 x i8], [33 x i8]* %5, i64 0, i64 0
%10 = getelementptr inbounds [31 x i8], [31 x i8]* %6, i64 0, i64 0
%11 = load i32, i32* @stdscr
%12 = tail call i32 @getmaxyx(i32 %11, i32 undef, i32 undef)
%13 = load i32, i32* @COLOR_RED
%14 = load i32, i32* @COLOR_BLACK
%15 = tail call i32 @init_pair(i32 1, i32 %13, i32 %14)
%16 = call i32 @llvm.abs.i32(i32 %1, i1 true)
%17 = sitofp i32 %16 to double
br label %18
18: ; preds = %151, %2
%19 = call i32 (...) @clear()
%20 = call i32 (i32, ...) @mvprintw(i32 0, i32 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0), i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str, i64 0, i64 0))
%21 = call i32 (i32, ...) @mvprintw(i32 1, i32 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0), i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.1, i64 0, i64 0))
%22 = call i32 (i32, ...) @mvprintw(i32 2, i32 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0), i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.2, i64 0, i64 0))
%23 = call i32 (i32, ...) @mvprintw(i32 3, i32 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0), i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.3, i64 0, i64 0))
%24 = call i32 (i32, ...) @mvprintw(i32 4, i32 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0), i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.4, i64 0, i64 0))
%25 = call i32 (i32, ...) @mvprintw(i32 5, i32 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0), i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.5, i64 0, i64 0))
%26 = call i32 (i32, ...) @mvprintw(i32 6, i32 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0), i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.6, i64 0, i64 0))
%27 = call i32 (i32, ...) @mvprintw(i32 7, i32 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0), i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.7, i64 0, i64 0))
%28 = call i32 (i32, ...) @mvprintw(i32 8, i32 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0), i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.8, i64 0, i64 0))
%29 = call i32 (i32, ...) @mvprintw(i32 9, i32 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0), i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.9, i64 0, i64 0))
%30 = call i32 (i32, ...) @mvprintw(i32 10, i32 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0), i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.10, i64 0, i64 0))
%31 = call i32 (i32, ...) @mvprintw(i32 11, i32 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0), i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.11, i64 0, i64 0))
%32 = call i32 (i32, ...) @mvprintw(i32 12, i32 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0), i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.12, i64 0, i64 0))
%33 = call i32 (i32, ...) @mvprintw(i32 13, i32 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0), i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.13, i64 0, i64 0))
%34 = call i32 (i32, ...) @mvprintw(i32 14, i32 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0), i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.14, i64 0, i64 0))
%35 = call i32 (i32, ...) @mvprintw(i32 15, i32 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0), i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.15, i64 0, i64 0))
%36 = call i32 (i32, ...) @mvprintw(i32 16, i32 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0), i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.16, i64 0, i64 0))
%37 = call i32 (i32, ...) @mvprintw(i32 17, i32 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0), i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.17, i64 0, i64 0))
%38 = call i32 (i32, ...) @mvprintw(i32 18, i32 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0), i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.18, i64 0, i64 0))
%39 = call i32 (i32, ...) @mvprintw(i32 19, i32 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0), i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.19, i64 0, i64 0))
%40 = call i32 (i32, ...) @mvprintw(i32 undef, i32 1, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.21, i64 0, i64 0), i32 %0)
%41 = call double @log10(double %17)
%42 = call double @llvm.floor.f64(double %41)
%43 = fsub double 0.000000e+00, %42
%44 = fadd double %43, -1.300000e+01
%45 = call i32 (i32, ...) @mvprintw(i32 undef, double %44, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.22, i64 0, i64 0), i32 %1)
%46 = call i32 @strlen(i8* %10)
%47 = call i32 (i32, ...) @mvprintw(i32 0, i32 0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.23, i64 0, i64 0), i8* %10)
%48 = call i32 (...) @refresh()
%49 = call i32 @time(i32* null)
%50 = call i32 @srand(i32 %49)
%51 = call i32 @time(i32* null)
%52 = call i32 (...) @rand()
%53 = srem i32 %52, 4
%54 = add nsw i32 %53, %51
%55 = call i32 (...) @set_conio_terminal_mode()
%56 = call i32 (...) @kbhit()
%57 = icmp eq i32 %56, 0
br i1 %57, label %58, label %82
58: ; preds = %18, %78
%59 = phi i32 [ %79, %78 ], [ 0, %18 ]
%60 = call i32 @time(i32* null)
%61 = icmp slt i32 %54, %60
%62 = icmp eq i32 %59, 0
%63 = select i1 %61, i1 %62, i1 false
br i1 %63, label %64, label %78
64: ; preds = %58, %64
%65 = phi i64 [ %74, %64 ], [ 0, %58 ]
%66 = call i32 @COLOR_PAIR(i32 1)
%67 = call i32 @attron(i32 %66)
%68 = shl i64 %65, 2
%69 = call i8* @llvm.load.relative.i64(i8* bitcast ([20 x i32]* @reltable.draw_arena to i8*), i64 %68)
%70 = trunc i64 %65 to i32
%71 = call i32 (i32, ...) @mvprintw(i32 %70, i32 0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0), i8* %69)
%72 = call i32 @COLOR_PAIR(i32 1)
%73 = call i32 @attroff(i32 %72)
%74 = add nuw nsw i64 %65, 1
%75 = icmp eq i64 %74, 20
br i1 %75, label %76, label %64
76: ; preds = %64
%77 = call i32 (...) @refresh()
br label %78
78: ; preds = %76, %58
%79 = phi i32 [ 1, %76 ], [ %59, %58 ]
%80 = call i32 (...) @kbhit()
%81 = icmp eq i32 %80, 0
br i1 %81, label %58, label %82
82: ; preds = %78, %18
br label %83
83: ; preds = %131, %82
%84 = call i32 (...) @nb_getch()
%85 = icmp eq i32 %84, %0
br i1 %85, label %86, label %97
86: ; preds = %83
%87 = call i32 @time(i32* null)
%88 = icmp slt i32 %54, %87
br i1 %88, label %97, label %89
89: ; preds = %86
%90 = call i32 @strlen(i8* %8)
%91 = call i32 (i32, ...) @mvprintw(i32 0, i32 0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.23, i64 0, i64 0), i8* %8)
%92 = call i32 @strlen(i8* %7)
%93 = call i32 (i32, ...) @mvprintw(i32 0, i32 undef, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.23, i64 0, i64 0), i64* %3)
%94 = call i32 @COLOR_PAIR(i32 1)
%95 = call i32 @attron(i32 %94)
%96 = call i32 (i32, ...) @mvprintw(i32 undef, i32 1, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.21, i64 0, i64 0), i32 %0)
br label %145
97: ; preds = %86, %83
%98 = icmp eq i32 %84, %1
br i1 %98, label %99, label %114
99: ; preds = %97
%100 = call i32 @time(i32* null)
%101 = icmp slt i32 %54, %100
br i1 %101, label %114, label %102
102: ; preds = %99
%103 = call i32 @strlen(i8* %7)
%104 = call i32 (i32, ...) @mvprintw(i32 0, i32 0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.23, i64 0, i64 0), i64* %3)
%105 = call i32 @strlen(i8* %8)
%106 = call i32 (i32, ...) @mvprintw(i32 0, i32 undef, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.23, i64 0, i64 0), i8* %8)
%107 = call i32 @COLOR_PAIR(i32 1)
%108 = call i32 @attron(i32 %107)
%109 = call double @log10(double %17)
%110 = call double @llvm.floor.f64(double %109)
%111 = fsub double 0.000000e+00, %110
%112 = fadd double %111, -1.300000e+01
%113 = call i32 (i32, ...) @mvprintw(i32 undef, double %112, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.22, i64 0, i64 0), i32 %1)
br label %145
114: ; preds = %99, %97
br i1 %85, label %115, label %130
115: ; preds = %114
%116 = call i32 @time(i32* null)
%117 = icmp slt i32 %54, %116
br i1 %117, label %118, label %130
118: ; preds = %115
%119 = call i32 @strlen(i8* %7)
%120 = call i32 (i32, ...) @mvprintw(i32 0, i32 0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.23, i64 0, i64 0), i64* %3)
%121 = call i32 @strlen(i8* %8)
%122 = call i32 (i32, ...) @mvprintw(i32 0, i32 undef, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.23, i64 0, i64 0), i8* %8)
%123 = call i32 @COLOR_PAIR(i32 1)
%124 = call i32 @attron(i32 %123)
%125 = call double @log10(double %17)
%126 = call double @llvm.floor.f64(double %125)
%127 = fsub double 0.000000e+00, %126
%128 = fadd double %127, -1.300000e+01
%129 = call i32 (i32, ...) @mvprintw(i32 undef, double %128, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.22, i64 0, i64 0), i32 %1)
br label %145
130: ; preds = %115, %114
br i1 %98, label %132, label %131
131: ; preds = %130, %132
br label %83
132: ; preds = %130
%133 = call i32 @time(i32* null)
%134 = icmp slt i32 %54, %133
br i1 %134, label %135, label %131
135: ; preds = %132
%136 = call i32 @strlen(i8* %8)
%137 = call i32 (i32, ...) @mvprintw(i32 0, i32 0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.23, i64 0, i64 0), i8* %8)
%138 = call i32 @strlen(i8* %7)
%139 = call i32 (i32, ...) @mvprintw(i32 0, i32 undef, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.23, i64 0, i64 0), i64* %3)
%140 = call i32 @COLOR_PAIR(i32 1)
%141 = call i32 @attron(i32 %140)
%142 = call i32 (i32, ...) @mvprintw(i32 undef, i32 1, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.21, i64 0, i64 0), i32 %0)
%143 = call i32 @COLOR_PAIR(i32 1)
%144 = call i32 @attron(i32 %143)
br label %145
145: ; preds = %102, %135, %118, %89
%146 = call i32 @COLOR_PAIR(i32 1)
%147 = call i32 @attroff(i32 %146)
%148 = call i32 @strlen(i8* %9)
%149 = call i32 (i32, ...) @mvprintw(i32 undef, i32 0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.23, i64 0, i64 0), i8* %9)
%150 = call i32 (...) @refresh()
br label %151
151: ; preds = %151, %145
%152 = call i32 (...) @nb_getch()
switch i32 %152, label %151 [
i32 110, label %153
i32 121, label %18
]
153: ; preds = %151
%154 = call i32 (...) @endwin()
%155 = call i32 @exit(i32 0)
unreachable
}