
int getch_fl(int cursor_char)

{
  bool bVar1;
  undefined *puVar2;
  undefined *puVar3;
  undefined *puVar4;
  short *psVar5;
  int iVar6;
  FILE *script;
  char *in_a1;
  char *in_a2;
  int iVar7;
  int iVar8;
  char *pcVar9;
  undefined4 uVar10;
  char *UTF8Text;
  undefined4 *puVar11;
  int *piVar12;
  undefined *puVar13;
  int return_char;
  FILE *local_2c;
  
  puVar4 = PTR___stack_chk_guard_0002c460;
  puVar3 = PTR_stdscr_0002c42c;
  puVar2 = PTR_COLS_0002c3b8;
  puVar13 = PTR_LINES_0002c368;
  local_2c = *(FILE **)PTR___stack_chk_guard_0002c460;
  psVar5 = *(short **)PTR_stdscr_0002c42c;
  pcVar9 = (char *)0xffffffff;
  if (psVar5 == (short *)0x0) {
    UTF8Text = (char *)0xffffffff;
  }
  else {
    pcVar9 = (char *)(int)*psVar5;
    UTF8Text = (char *)(int)psVar5[1];
  }
  if (cursor_char == 0) {
    (*(code *)PTR_curs_set_0002c47c)(0);
    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);
    (*(code *)PTR_wmove_0002c4a8)
              (*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)
    ;
    (*(code *)PTR_cbreak_0002c3cc)();
    get_widech(&return_char);
  }
  else {
    if (PTR_DAT_0002c228[-0x3a73] != '\0') {
      (*(code *)PTR_curs_set_0002c47c)(1);
      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);
      (*(code *)PTR_cbreak_0002c3cc)();
      get_widech(&return_char);
      (*(code *)PTR_curs_set_0002c47c)(0);
      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);
      pcVar9 = in_a1;
      UTF8Text = in_a2;
      goto LAB_00015c10;
    }
    wideaddch_rev(cursor_char);
    (*(code *)PTR_curs_set_0002c47c)(0);
    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);
    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar13 + -1,*(int *)puVar2 + -1);
    if (*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2) {
      (*(code *)PTR_cbreak_0002c3cc)();
      get_widech(&return_char);
    }
    else {
      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);
      bVar1 = false;
      while( true ) {
        iVar6 = get_widech(&return_char);
        if (iVar6 != -1) break;
        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,pcVar9,UTF8Text);
        if (bVar1) {
          wideaddch_rev(cursor_char);
        }
        else {
          wideaddch(cursor_char);
        }
        bVar1 = (bool)(bVar1 ^ 1);
        (*(code *)PTR_wmove_0002c4a8)
                  (*(undefined4 *)puVar3,*(int *)puVar13 + -1,*(int *)puVar2 + -1);
      }
    }
    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,pcVar9,UTF8Text);
    wideaddch(cursor_char);
  }
  (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3);
LAB_00015c10:
  if (local_2c == *(FILE **)puVar4) {
    return return_char;
  }
  script = local_2c;
  puVar13 = PTR___stack_chk_fail_0002c440;
  (*(code *)PTR___stack_chk_fail_0002c440)();
  piVar12 = *(int **)(puVar13 + 0x16540);
  puVar11 = *(undefined4 **)(puVar13 + 0x16604);
  (**(code **)(puVar13 + 0x16680))(*puVar11,*piVar12 + -1,0);
  (**(code **)(puVar13 + 0x16530))(*puVar11);
  uVar10 = *puVar11;
  iVar8 = *piVar12;
  iVar7 = **(int **)(puVar13 + 0x16590);
  iVar6 = utf8len(UTF8Text);
  (**(code **)(puVar13 + 0x16680))(uVar10,iVar8 + -1,(iVar7 - iVar6) + -2);
  wideaddstr_rev(UTF8Text);
  (**(code **)(puVar13 + 0x16680))(*puVar11,*piVar12 + -1,0);
  wideaddstr_rev(pcVar9);
  do {
    iVar6 = getch_fl(0);
    if (iVar6 == 0x1b) {
      iVar6 = 0;
      if ((char *)**(int **)(puVar13 + 0x16430) == UTF8Text) {
        pcVar9 = *(char **)(*(int *)(puVar13 + 0x16400) + -0x3aa0);
        if ((pcVar9 == (char *)0x0) || (*pcVar9 == '\0')) {
          iVar6 = 0;
          do_exit(script);
        }
        else {
          iVar6 = 1;
          seek_label(script,pcVar9,(char *)0x0);
        }
      }
      goto LAB_00015f58;
    }
  } while ((iVar6 != 10) && (iVar6 != 0x20));
  iVar6 = 0;
LAB_00015f58:
  (**(code **)(puVar13 + 0x16680))(*puVar11,*piVar12 + -1,0);
  (**(code **)(puVar13 + 0x16530))(*puVar11);
  return iVar6;
}



undefined4 FUN_00015b34(int param_1,int param_2,int param_3)

{
  bool bVar1;
  undefined *puVar2;
  undefined *puVar3;
  undefined *puVar4;
  short *psVar5;
  int iVar6;
  int iVar7;
  char *pcVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  undefined4 uVar12;
  int iVar13;
  undefined4 *puVar14;
  int *piVar15;
  undefined *puVar16;
  undefined4 local_30;
  int local_2c;
  
  puVar4 = PTR___stack_chk_guard_0002c460;
  puVar3 = PTR_stdscr_0002c42c;
  puVar2 = PTR_COLS_0002c3b8;
  puVar16 = PTR_LINES_0002c368;
  local_2c = *(int *)PTR___stack_chk_guard_0002c460;
  psVar5 = *(short **)PTR_stdscr_0002c42c;
  iVar11 = -1;
  if (psVar5 == (short *)0x0) {
    iVar13 = -1;
  }
  else {
    iVar11 = (int)*psVar5;
    iVar13 = (int)psVar5[1];
  }
  if (param_1 == 0) {
    (*(code *)PTR_curs_set_0002c47c)(0);
    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);
    (*(code *)PTR_wmove_0002c4a8)
              (*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)
    ;
    (*(code *)PTR_cbreak_0002c3cc)();
    get_widech(&local_30);
  }
  else {
    if (PTR_DAT_0002c228[-0x3a73] != '\0') {
      (*(code *)PTR_curs_set_0002c47c)(1);
      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);
      (*(code *)PTR_cbreak_0002c3cc)();
      get_widech(&local_30);
      (*(code *)PTR_curs_set_0002c47c)(0);
      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);
      iVar11 = param_2;
      iVar13 = param_3;
      goto LAB_00015c10;
    }
    wideaddch_rev(param_1);
    (*(code *)PTR_curs_set_0002c47c)(0);
    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);
    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);
    if (*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2) {
      (*(code *)PTR_cbreak_0002c3cc)();
      get_widech(&local_30);
    }
    else {
      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);
      bVar1 = false;
      while( true ) {
        iVar6 = get_widech(&local_30);
        if (iVar6 != -1) break;
        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);
        if (bVar1) {
          wideaddch_rev(param_1);
        }
        else {
          wideaddch(param_1);
        }
        bVar1 = (bool)(bVar1 ^ 1);
        (*(code *)PTR_wmove_0002c4a8)
                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);
      }
    }
    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);
    wideaddch(param_1);
  }
  (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11);
LAB_00015c10:
  if (local_2c == *(int *)puVar4) {
    return local_30;
  }
  iVar6 = local_2c;
  puVar16 = PTR___stack_chk_fail_0002c440;
  (*(code *)PTR___stack_chk_fail_0002c440)();
  piVar15 = *(int **)(puVar16 + 0x16540);
  puVar14 = *(undefined4 **)(puVar16 + 0x16604);
  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);
  (**(code **)(puVar16 + 0x16530))(*puVar14);
  uVar12 = *puVar14;
  iVar10 = *piVar15;
  iVar9 = **(int **)(puVar16 + 0x16590);
  iVar7 = utf8len(iVar13);
  (**(code **)(puVar16 + 0x16680))(uVar12,iVar10 + -1,(iVar9 - iVar7) + -2);
  wideaddstr_rev(iVar13);
  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);
  wideaddstr_rev(iVar11);
  do {
    iVar11 = FUN_00015b34(0);
    if (iVar11 == 0x1b) {
      uVar12 = 0;
      if (**(int **)(puVar16 + 0x16430) == iVar13) {
        pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0);
        if ((pcVar8 == (char *)0x0) || (*pcVar8 == '\0')) {
          uVar12 = 0;
          do_exit(iVar6);
        }
        else {
          uVar12 = 1;
          seek_label(iVar6,pcVar8,0);
        }
      }
      goto LAB_00015f58;
    }
  } while ((iVar11 != 10) && (iVar11 != 0x20));
  uVar12 = 0;
LAB_00015f58:
  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);
  (**(code **)(puVar16 + 0x16530))(*puVar14);
  return uVar12;
}


lui gp,0x2
addiu gp,gp,-0x1934
addu gp,gp,t9
addiu sp,sp,-0x48
sw s5,0x34(sp)
sw s0,0x20(sp)
lw s5,-0x7da0(gp)
lw s0,-0x7dd4(gp)
sw gp,0x10(sp)
sw s2,0x28(sp)
or s2,a0,zero
sw ra,0x44(sp)
sw s8,0x40(sp)
sw s7,0x3c(sp)
sw s6,0x38(sp)
sw s4,0x30(sp)
sw s3,0x2c(sp)
sw s1,0x24(sp)
lw v1,0x0(s5)
lw v0,0x0(s0)
sw v1,0x1c(sp)
beq v0,zero,0x00015dc8
_li s3,-0x1
lh s3,0x0(v0)
lh s4,0x2(v0)
beq s2,zero,0x00015d48
_lw t9,-0x7d84(gp)
lw v0,-0x7fd8(gp)
lbu s1,-0x3a73(v0)
beq s1,zero,0x00015c50
_lw t9,-0x7fbc(gp)
lw t9,-0x7d84(gp)
jalr t9
_li a0,0x1
lw gp,0x10(sp)
lw t9,-0x7de4(gp)
jalr t9
_lw a0,0x0(s0)
lw gp,0x10(sp)
lw t9,-0x7e34(gp)
jalr t9
_nop
lw gp,0x10(sp)
lw t9,-0x7fb8(gp)
bal 0x0001999c
_addiu a0,sp,0x18
lw gp,0x10(sp)
lw t9,-0x7d84(gp)
jalr t9
_or a0,zero,zero
lw gp,0x10(sp)
lw t9,-0x7de4(gp)
jalr t9
_lw a0,0x0(s0)
lw gp,0x10(sp)
lw a0,0x1c(sp)
lw v1,0x0(s5)
bne a0,v1,0x00015e1c
_lw v0,0x18(sp)
lw ra,0x44(sp)
lw s8,0x40(sp)
lw s7,0x3c(sp)
lw s6,0x38(sp)
lw s5,0x34(sp)
lw s4,0x30(sp)
lw s3,0x2c(sp)
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
jr ra
_addiu sp,sp,0x48
lw s7,-0x7e48(gp)
lw s6,-0x7e98(gp)
bal 0x00019624
_or a0,s2,zero
lw gp,0x10(sp)
lw t9,-0x7d84(gp)
jalr t9
_or a0,zero,zero
lw gp,0x10(sp)
lw t9,-0x7de4(gp)
jalr t9
_lw a0,0x0(s0)
lw gp,0x10(sp)
lw a2,0x0(s7)
lw a1,0x0(s6)
lw a0,0x0(s0)
lw t9,-0x7d58(gp)
addiu a2,a2,-0x1
jalr t9
_addiu a1,a1,-0x1
lw gp,0x10(sp)
lw v0,-0x7fd8(gp)
lw a0,-0x3f50(v0)
slti v0,a0,0x2
bne v0,zero,0x00015dd0
_lw t9,-0x7d70(gp)
sra a0,a0,0x1
jalr t9
_addiu s8,sp,0x18
b 0x00015d00
_lw gp,0x10(sp)
lw t9,-0x7fbc(gp)
bal 0x00019624
_or a0,s2,zero
lw gp,0x10(sp)
lw a2,0x0(s7)
xori s1,s1,0x1
lw a1,0x0(s6)
lw t9,-0x7d58(gp)
lw a0,0x0(s0)
addiu a2,a2,-0x1
jalr t9
_addiu a1,a1,-0x1
lw gp,0x10(sp)
lw t9,-0x7fb8(gp)
bal 0x0001999c
_or a0,s8,zero
li v1,-0x1
bne v0,v1,0x00015df0
_lw gp,0x10(sp)
lw t9,-0x7d58(gp)
or a2,s4,zero
lw a0,0x0(s0)
jalr t9
_or a1,s3,zero
bne s1,zero,0x00015ccc
_lw gp,0x10(sp)
lw t9,-0x7fb4(gp)
bal 0x00019524
_or a0,s2,zero
b 0x00015cdc
_lw gp,0x10(sp)
jalr t9
_or a0,zero,zero
lw gp,0x10(sp)
lw t9,-0x7de4(gp)
jalr t9
_lw a0,0x0(s0)
lw gp,0x10(sp)
lw a0,0x0(s0)
lw v0,-0x7e48(gp)
lw t9,-0x7d58(gp)
lw a2,0x0(v0)
lw v0,-0x7e98(gp)
addiu a2,a2,-0x1
lw a1,0x0(v0)
jalr t9
_addiu a1,a1,-0x1
lw gp,0x10(sp)
lw t9,-0x7e34(gp)
jalr t9
_nop
lw gp,0x10(sp)
lw t9,-0x7fb8(gp)
bal 0x0001999c
_addiu a0,sp,0x18
lw gp,0x10(sp)
lw a0,0x0(s0)
or a2,s4,zero
lw t9,-0x7d58(gp)
jalr t9
_or a1,s3,zero
b 0x00015c10
_lw gp,0x10(sp)
b 0x00015b98
_li s4,-0x1
lw t9,-0x7e34(gp)
jalr t9
_nop
lw gp,0x10(sp)
lw t9,-0x7fb8(gp)
bal 0x0001999c
_addiu a0,sp,0x18
lw gp,0x10(sp)
lw t9,-0x7d58(gp)
or a2,s4,zero
lw a0,0x0(s0)
jalr t9
_or a1,s3,zero
lw gp,0x10(sp)
lw t9,-0x7fb4(gp)
bal 0x00019524
_or a0,s2,zero
b 0x00015dac
_lw gp,0x10(sp)
lw t9,-0x7dc0(gp)
jalr t9
_nop
(translation_unit "undefined4 FUN_00015b34(int param_1,int param_2,int param_3)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  short *psVar5;\n  int iVar6;\n  int iVar7;\n  char *pcVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  int iVar13;\n  undefined4 *puVar14;\n  int *piVar15;\n  undefined *puVar16;\n  undefined4 local_30;\n  int local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_0002c460;\n  puVar3 = PTR_stdscr_0002c42c;\n  puVar2 = PTR_COLS_0002c3b8;\n  puVar16 = PTR_LINES_0002c368;\n  local_2c = *(int *)PTR___stack_chk_guard_0002c460;\n  psVar5 = *(short **)PTR_stdscr_0002c42c;\n  iVar11 = -1;\n  if (psVar5 == (short *)0x0) {\n    iVar13 = -1;\n  }\n  else {\n    iVar11 = (int)*psVar5;\n    iVar13 = (int)psVar5[1];\n  }\n  if (param_1 == 0) {\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)\n              (*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)\n    ;\n    (*(code *)PTR_cbreak_0002c3cc)();\n    get_widech(&local_30);\n  }\n  else {\n    if (PTR_DAT_0002c228[-0x3a73] != '\0') {\n      (*(code *)PTR_curs_set_0002c47c)(1);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n      (*(code *)PTR_curs_set_0002c47c)(0);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      iVar11 = param_2;\n      iVar13 = param_3;\n      goto LAB_00015c10;\n    }\n    wideaddch_rev(param_1);\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n    if (*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2) {\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n    }\n    else {\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }\n    }\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n    wideaddch(param_1);\n  }\n  (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11);\nLAB_00015c10:\n  if (local_2c == *(int *)puVar4) {\n    return local_30;\n  }\n  iVar6 = local_2c;\n  puVar16 = PTR___stack_chk_fail_0002c440;\n  (*(code *)PTR___stack_chk_fail_0002c440)();\n  piVar15 = *(int **)(puVar16 + 0x16540);\n  puVar14 = *(undefined4 **)(puVar16 + 0x16604);\n  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);\n  (**(code **)(puVar16 + 0x16530))(*puVar14);\n  uVar12 = *puVar14;\n  iVar10 = *piVar15;\n  iVar9 = **(int **)(puVar16 + 0x16590);\n  iVar7 = utf8len(iVar13);\n  (**(code **)(puVar16 + 0x16680))(uVar12,iVar10 + -1,(iVar9 - iVar7) + -2);\n  wideaddstr_rev(iVar13);\n  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);\n  wideaddstr_rev(iVar11);\n  do {\n    iVar11 = FUN_00015b34(0);\n    if (iVar11 == 0x1b) {\n      uVar12 = 0;\n      if (**(int **)(puVar16 + 0x16430) == iVar13) {\n        pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0);\n        if ((pcVar8 == (char *)0x0) || (*pcVar8 == '\0')) {\n          uVar12 = 0;\n          do_exit(iVar6);\n        }\n        else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }\n      }\n      goto LAB_00015f58;\n    }\n  } while ((iVar11 != 10) && (iVar11 != 0x20));\n  uVar12 = 0;\nLAB_00015f58:\n  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);\n  (**(code **)(puVar16 + 0x16530))(*puVar14);\n  return uVar12;\n}\n\n" (function_definition "undefined4 FUN_00015b34(int param_1,int param_2,int param_3)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  short *psVar5;\n  int iVar6;\n  int iVar7;\n  char *pcVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  int iVar13;\n  undefined4 *puVar14;\n  int *piVar15;\n  undefined *puVar16;\n  undefined4 local_30;\n  int local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_0002c460;\n  puVar3 = PTR_stdscr_0002c42c;\n  puVar2 = PTR_COLS_0002c3b8;\n  puVar16 = PTR_LINES_0002c368;\n  local_2c = *(int *)PTR___stack_chk_guard_0002c460;\n  psVar5 = *(short **)PTR_stdscr_0002c42c;\n  iVar11 = -1;\n  if (psVar5 == (short *)0x0) {\n    iVar13 = -1;\n  }\n  else {\n    iVar11 = (int)*psVar5;\n    iVar13 = (int)psVar5[1];\n  }\n  if (param_1 == 0) {\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)\n              (*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)\n    ;\n    (*(code *)PTR_cbreak_0002c3cc)();\n    get_widech(&local_30);\n  }\n  else {\n    if (PTR_DAT_0002c228[-0x3a73] != '\0') {\n      (*(code *)PTR_curs_set_0002c47c)(1);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n      (*(code *)PTR_curs_set_0002c47c)(0);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      iVar11 = param_2;\n      iVar13 = param_3;\n      goto LAB_00015c10;\n    }\n    wideaddch_rev(param_1);\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n    if (*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2) {\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n    }\n    else {\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }\n    }\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n    wideaddch(param_1);\n  }\n  (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11);\nLAB_00015c10:\n  if (local_2c == *(int *)puVar4) {\n    return local_30;\n  }\n  iVar6 = local_2c;\n  puVar16 = PTR___stack_chk_fail_0002c440;\n  (*(code *)PTR___stack_chk_fail_0002c440)();\n  piVar15 = *(int **)(puVar16 + 0x16540);\n  puVar14 = *(undefined4 **)(puVar16 + 0x16604);\n  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);\n  (**(code **)(puVar16 + 0x16530))(*puVar14);\n  uVar12 = *puVar14;\n  iVar10 = *piVar15;\n  iVar9 = **(int **)(puVar16 + 0x16590);\n  iVar7 = utf8len(iVar13);\n  (**(code **)(puVar16 + 0x16680))(uVar12,iVar10 + -1,(iVar9 - iVar7) + -2);\n  wideaddstr_rev(iVar13);\n  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);\n  wideaddstr_rev(iVar11);\n  do {\n    iVar11 = FUN_00015b34(0);\n    if (iVar11 == 0x1b) {\n      uVar12 = 0;\n      if (**(int **)(puVar16 + 0x16430) == iVar13) {\n        pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0);\n        if ((pcVar8 == (char *)0x0) || (*pcVar8 == '\0')) {\n          uVar12 = 0;\n          do_exit(iVar6);\n        }\n        else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }\n      }\n      goto LAB_00015f58;\n    }\n  } while ((iVar11 != 10) && (iVar11 != 0x20));\n  uVar12 = 0;\nLAB_00015f58:\n  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);\n  (**(code **)(puVar16 + 0x16530))(*puVar14);\n  return uVar12;\n}" type_identifier (function_declarator "FUN_00015b34(int param_1,int param_2,int param_3)" identifier (parameter_list "(int param_1,int param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  short *psVar5;\n  int iVar6;\n  int iVar7;\n  char *pcVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  int iVar13;\n  undefined4 *puVar14;\n  int *piVar15;\n  undefined *puVar16;\n  undefined4 local_30;\n  int local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_0002c460;\n  puVar3 = PTR_stdscr_0002c42c;\n  puVar2 = PTR_COLS_0002c3b8;\n  puVar16 = PTR_LINES_0002c368;\n  local_2c = *(int *)PTR___stack_chk_guard_0002c460;\n  psVar5 = *(short **)PTR_stdscr_0002c42c;\n  iVar11 = -1;\n  if (psVar5 == (short *)0x0) {\n    iVar13 = -1;\n  }\n  else {\n    iVar11 = (int)*psVar5;\n    iVar13 = (int)psVar5[1];\n  }\n  if (param_1 == 0) {\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)\n              (*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)\n    ;\n    (*(code *)PTR_cbreak_0002c3cc)();\n    get_widech(&local_30);\n  }\n  else {\n    if (PTR_DAT_0002c228[-0x3a73] != '\0') {\n      (*(code *)PTR_curs_set_0002c47c)(1);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n      (*(code *)PTR_curs_set_0002c47c)(0);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      iVar11 = param_2;\n      iVar13 = param_3;\n      goto LAB_00015c10;\n    }\n    wideaddch_rev(param_1);\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n    if (*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2) {\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n    }\n    else {\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }\n    }\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n    wideaddch(param_1);\n  }\n  (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11);\nLAB_00015c10:\n  if (local_2c == *(int *)puVar4) {\n    return local_30;\n  }\n  iVar6 = local_2c;\n  puVar16 = PTR___stack_chk_fail_0002c440;\n  (*(code *)PTR___stack_chk_fail_0002c440)();\n  piVar15 = *(int **)(puVar16 + 0x16540);\n  puVar14 = *(undefined4 **)(puVar16 + 0x16604);\n  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);\n  (**(code **)(puVar16 + 0x16530))(*puVar14);\n  uVar12 = *puVar14;\n  iVar10 = *piVar15;\n  iVar9 = **(int **)(puVar16 + 0x16590);\n  iVar7 = utf8len(iVar13);\n  (**(code **)(puVar16 + 0x16680))(uVar12,iVar10 + -1,(iVar9 - iVar7) + -2);\n  wideaddstr_rev(iVar13);\n  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);\n  wideaddstr_rev(iVar11);\n  do {\n    iVar11 = FUN_00015b34(0);\n    if (iVar11 == 0x1b) {\n      uVar12 = 0;\n      if (**(int **)(puVar16 + 0x16430) == iVar13) {\n        pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0);\n        if ((pcVar8 == (char *)0x0) || (*pcVar8 == '\0')) {\n          uVar12 = 0;\n          do_exit(iVar6);\n        }\n        else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }\n      }\n      goto LAB_00015f58;\n    }\n  } while ((iVar11 != 10) && (iVar11 != 0x20));\n  uVar12 = 0;\nLAB_00015f58:\n  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);\n  (**(code **)(puVar16 + 0x16530))(*puVar14);\n  return uVar12;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "short *psVar5;" (sized_type_specifier "short" short) (pointer_declarator "*psVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "undefined4 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "undefined *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar4 = PTR___stack_chk_guard_0002c460;" (assignment_expression "puVar4 = PTR___stack_chk_guard_0002c460" identifier = identifier) ;) (expression_statement "puVar3 = PTR_stdscr_0002c42c;" (assignment_expression "puVar3 = PTR_stdscr_0002c42c" identifier = identifier) ;) (expression_statement "puVar2 = PTR_COLS_0002c3b8;" (assignment_expression "puVar2 = PTR_COLS_0002c3b8" identifier = identifier) ;) (expression_statement "puVar16 = PTR_LINES_0002c368;" (assignment_expression "puVar16 = PTR_LINES_0002c368" identifier = identifier) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0002c460;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0002c460" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0002c460" * (cast_expression "(int *)PTR___stack_chk_guard_0002c460" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "psVar5 = *(short **)PTR_stdscr_0002c42c;" (assignment_expression "psVar5 = *(short **)PTR_stdscr_0002c42c" identifier = (pointer_expression "*(short **)PTR_stdscr_0002c42c" * (cast_expression "(short **)PTR_stdscr_0002c42c" ( (type_descriptor "short **" (sized_type_specifier "short" short) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "iVar11 = -1;" (assignment_expression "iVar11 = -1" identifier = number_literal) ;) (if_statement "if (psVar5 == (short *)0x0) {\n    iVar13 = -1;\n  }\n  else {\n    iVar11 = (int)*psVar5;\n    iVar13 = (int)psVar5[1];\n  }" if (parenthesized_expression "(psVar5 == (short *)0x0)" ( (binary_expression "psVar5 == (short *)0x0" identifier == (cast_expression "(short *)0x0" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar13 = -1;\n  }" { (expression_statement "iVar13 = -1;" (assignment_expression "iVar13 = -1" identifier = number_literal) ;) }) (else_clause "else {\n    iVar11 = (int)*psVar5;\n    iVar13 = (int)psVar5[1];\n  }" else (compound_statement "{\n    iVar11 = (int)*psVar5;\n    iVar13 = (int)psVar5[1];\n  }" { (expression_statement "iVar11 = (int)*psVar5;" (assignment_expression "iVar11 = (int)*psVar5" identifier = (cast_expression "(int)*psVar5" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*psVar5" * identifier))) ;) (expression_statement "iVar13 = (int)psVar5[1];" (assignment_expression "iVar13 = (int)psVar5[1]" identifier = (cast_expression "(int)psVar5[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "psVar5[1]" identifier [ number_literal ]))) ;) }))) (if_statement "if (param_1 == 0) {\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)\n              (*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)\n    ;\n    (*(code *)PTR_cbreak_0002c3cc)();\n    get_widech(&local_30);\n  }\n  else {\n    if (PTR_DAT_0002c228[-0x3a73] != '\0') {\n      (*(code *)PTR_curs_set_0002c47c)(1);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n      (*(code *)PTR_curs_set_0002c47c)(0);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      iVar11 = param_2;\n      iVar13 = param_3;\n      goto LAB_00015c10;\n    }\n    wideaddch_rev(param_1);\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n    if (*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2) {\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n    }\n    else {\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }\n    }\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n    wideaddch(param_1);\n  }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)\n              (*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)\n    ;\n    (*(code *)PTR_cbreak_0002c3cc)();\n    get_widech(&local_30);\n  }" { (expression_statement "(*(code *)PTR_curs_set_0002c47c)(0);" (call_expression "(*(code *)PTR_curs_set_0002c47c)(0)" (parenthesized_expression "(*(code *)PTR_curs_set_0002c47c)" ( (pointer_expression "*(code *)PTR_curs_set_0002c47c" * (cast_expression "(code *)PTR_curs_set_0002c47c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0)" ( number_literal ))) ;) (expression_statement "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);" (call_expression "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3)" (parenthesized_expression "(*(code *)PTR_wrefresh_0002c41c)" ( (pointer_expression "*(code *)PTR_wrefresh_0002c41c" * (cast_expression "(code *)PTR_wrefresh_0002c41c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (expression_statement "(*(code *)PTR_wmove_0002c4a8)\n              (*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)\n    ;" (call_expression "(*(code *)PTR_wmove_0002c4a8)\n              (*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)" (parenthesized_expression "(*(code *)PTR_wmove_0002c4a8)" ( (pointer_expression "*(code *)PTR_wmove_0002c4a8" * (cast_expression "(code *)PTR_wmove_0002c4a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (binary_expression "*(int *)PTR_LINES_0002c368 + -1" (pointer_expression "*(int *)PTR_LINES_0002c368" * (cast_expression "(int *)PTR_LINES_0002c368" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) , (binary_expression "*(int *)PTR_COLS_0002c3b8 + -1" (pointer_expression "*(int *)PTR_COLS_0002c3b8" * (cast_expression "(int *)PTR_COLS_0002c3b8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))) ;) (expression_statement "(*(code *)PTR_cbreak_0002c3cc)();" (call_expression "(*(code *)PTR_cbreak_0002c3cc)()" (parenthesized_expression "(*(code *)PTR_cbreak_0002c3cc)" ( (pointer_expression "*(code *)PTR_cbreak_0002c3cc" * (cast_expression "(code *)PTR_cbreak_0002c3cc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "get_widech(&local_30);" (call_expression "get_widech(&local_30)" identifier (argument_list "(&local_30)" ( (pointer_expression "&local_30" & identifier) ))) ;) }) (else_clause "else {\n    if (PTR_DAT_0002c228[-0x3a73] != '\0') {\n      (*(code *)PTR_curs_set_0002c47c)(1);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n      (*(code *)PTR_curs_set_0002c47c)(0);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      iVar11 = param_2;\n      iVar13 = param_3;\n      goto LAB_00015c10;\n    }\n    wideaddch_rev(param_1);\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n    if (*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2) {\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n    }\n    else {\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }\n    }\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n    wideaddch(param_1);\n  }" else (compound_statement "{\n    if (PTR_DAT_0002c228[-0x3a73] != '\0') {\n      (*(code *)PTR_curs_set_0002c47c)(1);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n      (*(code *)PTR_curs_set_0002c47c)(0);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      iVar11 = param_2;\n      iVar13 = param_3;\n      goto LAB_00015c10;\n    }\n    wideaddch_rev(param_1);\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n    if (*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2) {\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n    }\n    else {\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }\n    }\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n    wideaddch(param_1);\n  }" { (if_statement "if (PTR_DAT_0002c228[-0x3a73] != '\0') {\n      (*(code *)PTR_curs_set_0002c47c)(1);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n      (*(code *)PTR_curs_set_0002c47c)(0);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      iVar11 = param_2;\n      iVar13 = param_3;\n      goto LAB_00015c10;\n    }" if (parenthesized_expression "(PTR_DAT_0002c228[-0x3a73] != '\0')" ( (binary_expression "PTR_DAT_0002c228[-0x3a73] != '\0'" (subscript_expression "PTR_DAT_0002c228[-0x3a73]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      (*(code *)PTR_curs_set_0002c47c)(1);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n      (*(code *)PTR_curs_set_0002c47c)(0);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      iVar11 = param_2;\n      iVar13 = param_3;\n      goto LAB_00015c10;\n    }" { (expression_statement "(*(code *)PTR_curs_set_0002c47c)(1);" (call_expression "(*(code *)PTR_curs_set_0002c47c)(1)" (parenthesized_expression "(*(code *)PTR_curs_set_0002c47c)" ( (pointer_expression "*(code *)PTR_curs_set_0002c47c" * (cast_expression "(code *)PTR_curs_set_0002c47c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(1)" ( number_literal ))) ;) (expression_statement "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);" (call_expression "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3)" (parenthesized_expression "(*(code *)PTR_wrefresh_0002c41c)" ( (pointer_expression "*(code *)PTR_wrefresh_0002c41c" * (cast_expression "(code *)PTR_wrefresh_0002c41c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (expression_statement "(*(code *)PTR_cbreak_0002c3cc)();" (call_expression "(*(code *)PTR_cbreak_0002c3cc)()" (parenthesized_expression "(*(code *)PTR_cbreak_0002c3cc)" ( (pointer_expression "*(code *)PTR_cbreak_0002c3cc" * (cast_expression "(code *)PTR_cbreak_0002c3cc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "get_widech(&local_30);" (call_expression "get_widech(&local_30)" identifier (argument_list "(&local_30)" ( (pointer_expression "&local_30" & identifier) ))) ;) (expression_statement "(*(code *)PTR_curs_set_0002c47c)(0);" (call_expression "(*(code *)PTR_curs_set_0002c47c)(0)" (parenthesized_expression "(*(code *)PTR_curs_set_0002c47c)" ( (pointer_expression "*(code *)PTR_curs_set_0002c47c" * (cast_expression "(code *)PTR_curs_set_0002c47c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0)" ( number_literal ))) ;) (expression_statement "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);" (call_expression "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3)" (parenthesized_expression "(*(code *)PTR_wrefresh_0002c41c)" ( (pointer_expression "*(code *)PTR_wrefresh_0002c41c" * (cast_expression "(code *)PTR_wrefresh_0002c41c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (expression_statement "iVar11 = param_2;" (assignment_expression "iVar11 = param_2" identifier = identifier) ;) (expression_statement "iVar13 = param_3;" (assignment_expression "iVar13 = param_3" identifier = identifier) ;) (goto_statement "goto LAB_00015c10;" goto statement_identifier ;) })) (expression_statement "wideaddch_rev(param_1);" (call_expression "wideaddch_rev(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "(*(code *)PTR_curs_set_0002c47c)(0);" (call_expression "(*(code *)PTR_curs_set_0002c47c)(0)" (parenthesized_expression "(*(code *)PTR_curs_set_0002c47c)" ( (pointer_expression "*(code *)PTR_curs_set_0002c47c" * (cast_expression "(code *)PTR_curs_set_0002c47c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0)" ( number_literal ))) ;) (expression_statement "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);" (call_expression "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3)" (parenthesized_expression "(*(code *)PTR_wrefresh_0002c41c)" ( (pointer_expression "*(code *)PTR_wrefresh_0002c41c" * (cast_expression "(code *)PTR_wrefresh_0002c41c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (expression_statement "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);" (call_expression "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1)" (parenthesized_expression "(*(code *)PTR_wmove_0002c4a8)" ( (pointer_expression "*(code *)PTR_wmove_0002c4a8" * (cast_expression "(code *)PTR_wmove_0002c4a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (binary_expression "*(int *)puVar16 + -1" (pointer_expression "*(int *)puVar16" * (cast_expression "(int *)puVar16" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) , (binary_expression "*(int *)puVar2 + -1" (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))) ;) (if_statement "if (*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2) {\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n    }\n    else {\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }\n    }" if (parenthesized_expression "(*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2)" ( (binary_expression "*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2" (pointer_expression "*(int *)(PTR_DAT_0002c228 + -0x3f50)" * (cast_expression "(int *)(PTR_DAT_0002c228 + -0x3f50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0002c228 + -0x3f50)" ( (binary_expression "PTR_DAT_0002c228 + -0x3f50" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n    }" { (expression_statement "(*(code *)PTR_cbreak_0002c3cc)();" (call_expression "(*(code *)PTR_cbreak_0002c3cc)()" (parenthesized_expression "(*(code *)PTR_cbreak_0002c3cc)" ( (pointer_expression "*(code *)PTR_cbreak_0002c3cc" * (cast_expression "(code *)PTR_cbreak_0002c3cc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "get_widech(&local_30);" (call_expression "get_widech(&local_30)" identifier (argument_list "(&local_30)" ( (pointer_expression "&local_30" & identifier) ))) ;) }) (else_clause "else {\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }\n    }" else (compound_statement "{\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }\n    }" { (expression_statement "(*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);" (call_expression "(*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1)" (parenthesized_expression "(*(code *)PTR_halfdelay_0002c490)" ( (pointer_expression "*(code *)PTR_halfdelay_0002c490" * (cast_expression "(code *)PTR_halfdelay_0002c490" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1)" ( (binary_expression "*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1" (pointer_expression "*(int *)(PTR_DAT_0002c228 + -0x3f50)" * (cast_expression "(int *)(PTR_DAT_0002c228 + -0x3f50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0002c228 + -0x3f50)" ( (binary_expression "PTR_DAT_0002c228 + -0x3f50" identifier + number_literal) )))) >> number_literal) ))) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (while_statement "while( true ) {\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }" { (expression_statement "iVar6 = get_widech(&local_30);" (assignment_expression "iVar6 = get_widech(&local_30)" identifier = (call_expression "get_widech(&local_30)" identifier (argument_list "(&local_30)" ( (pointer_expression "&local_30" & identifier) )))) ;) (if_statement "if (iVar6 != -1) break;" if (parenthesized_expression "(iVar6 != -1)" ( (binary_expression "iVar6 != -1" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);" (call_expression "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13)" (parenthesized_expression "(*(code *)PTR_wmove_0002c4a8)" ( (pointer_expression "*(code *)PTR_wmove_0002c4a8" * (cast_expression "(code *)PTR_wmove_0002c4a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3,iVar11,iVar13)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , identifier , identifier ))) ;) (if_statement "if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n          wideaddch_rev(param_1);\n        }" { (expression_statement "wideaddch_rev(param_1);" (call_expression "wideaddch_rev(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) }) (else_clause "else {\n          wideaddch(param_1);\n        }" else (compound_statement "{\n          wideaddch(param_1);\n        }" { (expression_statement "wideaddch(param_1);" (call_expression "wideaddch(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) }))) (expression_statement "bVar1 = (bool)(bVar1 ^ 1);" (assignment_expression "bVar1 = (bool)(bVar1 ^ 1)" identifier = (cast_expression "(bool)(bVar1 ^ 1)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(bVar1 ^ 1)" ( (binary_expression "bVar1 ^ 1" identifier ^ number_literal) )))) ;) (expression_statement "(*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);" (call_expression "(*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1)" (parenthesized_expression "(*(code *)PTR_wmove_0002c4a8)" ( (pointer_expression "*(code *)PTR_wmove_0002c4a8" * (cast_expression "(code *)PTR_wmove_0002c4a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (binary_expression "*(int *)puVar16 + -1" (pointer_expression "*(int *)puVar16" * (cast_expression "(int *)puVar16" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) , (binary_expression "*(int *)puVar2 + -1" (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))) ;) })) }))) (expression_statement "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);" (call_expression "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13)" (parenthesized_expression "(*(code *)PTR_wmove_0002c4a8)" ( (pointer_expression "*(code *)PTR_wmove_0002c4a8" * (cast_expression "(code *)PTR_wmove_0002c4a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3,iVar11,iVar13)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , identifier , identifier ))) ;) (expression_statement "wideaddch(param_1);" (call_expression "wideaddch(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) }))) (expression_statement "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11);" (call_expression "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11)" (parenthesized_expression "(*(code *)PTR_wmove_0002c4a8)" ( (pointer_expression "*(code *)PTR_wmove_0002c4a8" * (cast_expression "(code *)PTR_wmove_0002c4a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3,iVar11)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , identifier ))) ;) (labeled_statement "LAB_00015c10:\n  if (local_2c == *(int *)puVar4) {\n    return local_30;\n  }" statement_identifier : (if_statement "if (local_2c == *(int *)puVar4) {\n    return local_30;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar4)" ( (binary_expression "local_2c == *(int *)puVar4" identifier == (pointer_expression "*(int *)puVar4" * (cast_expression "(int *)puVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return local_30;\n  }" { (return_statement "return local_30;" return identifier ;) }))) (expression_statement "iVar6 = local_2c;" (assignment_expression "iVar6 = local_2c" identifier = identifier) ;) (expression_statement "puVar16 = PTR___stack_chk_fail_0002c440;" (assignment_expression "puVar16 = PTR___stack_chk_fail_0002c440" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0002c440)();" (call_expression "(*(code *)PTR___stack_chk_fail_0002c440)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0002c440)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0002c440" * (cast_expression "(code *)PTR___stack_chk_fail_0002c440" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar15 = *(int **)(puVar16 + 0x16540);" (assignment_expression "piVar15 = *(int **)(puVar16 + 0x16540)" identifier = (pointer_expression "*(int **)(puVar16 + 0x16540)" * (cast_expression "(int **)(puVar16 + 0x16540)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x16540)" ( (binary_expression "puVar16 + 0x16540" identifier + number_literal) ))))) ;) (expression_statement "puVar14 = *(undefined4 **)(puVar16 + 0x16604);" (assignment_expression "puVar14 = *(undefined4 **)(puVar16 + 0x16604)" identifier = (pointer_expression "*(undefined4 **)(puVar16 + 0x16604)" * (cast_expression "(undefined4 **)(puVar16 + 0x16604)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x16604)" ( (binary_expression "puVar16 + 0x16604" identifier + number_literal) ))))) ;) (expression_statement "(**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);" (call_expression "(**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0)" (parenthesized_expression "(**(code **)(puVar16 + 0x16680))" ( (pointer_expression "**(code **)(puVar16 + 0x16680)" * (pointer_expression "*(code **)(puVar16 + 0x16680)" * (cast_expression "(code **)(puVar16 + 0x16680)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x16680)" ( (binary_expression "puVar16 + 0x16680" identifier + number_literal) ))))) )) (argument_list "(*puVar14,*piVar15 + -1,0)" ( (pointer_expression "*puVar14" * identifier) , (binary_expression "*piVar15 + -1" (pointer_expression "*piVar15" * identifier) + number_literal) , number_literal ))) ;) (expression_statement "(**(code **)(puVar16 + 0x16530))(*puVar14);" (call_expression "(**(code **)(puVar16 + 0x16530))(*puVar14)" (parenthesized_expression "(**(code **)(puVar16 + 0x16530))" ( (pointer_expression "**(code **)(puVar16 + 0x16530)" * (pointer_expression "*(code **)(puVar16 + 0x16530)" * (cast_expression "(code **)(puVar16 + 0x16530)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x16530)" ( (binary_expression "puVar16 + 0x16530" identifier + number_literal) ))))) )) (argument_list "(*puVar14)" ( (pointer_expression "*puVar14" * identifier) ))) ;) (expression_statement "uVar12 = *puVar14;" (assignment_expression "uVar12 = *puVar14" identifier = (pointer_expression "*puVar14" * identifier)) ;) (expression_statement "iVar10 = *piVar15;" (assignment_expression "iVar10 = *piVar15" identifier = (pointer_expression "*piVar15" * identifier)) ;) (expression_statement "iVar9 = **(int **)(puVar16 + 0x16590);" (assignment_expression "iVar9 = **(int **)(puVar16 + 0x16590)" identifier = (pointer_expression "**(int **)(puVar16 + 0x16590)" * (pointer_expression "*(int **)(puVar16 + 0x16590)" * (cast_expression "(int **)(puVar16 + 0x16590)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x16590)" ( (binary_expression "puVar16 + 0x16590" identifier + number_literal) )))))) ;) (expression_statement "iVar7 = utf8len(iVar13);" (assignment_expression "iVar7 = utf8len(iVar13)" identifier = (call_expression "utf8len(iVar13)" identifier (argument_list "(iVar13)" ( identifier )))) ;) (expression_statement "(**(code **)(puVar16 + 0x16680))(uVar12,iVar10 + -1,(iVar9 - iVar7) + -2);" (call_expression "(**(code **)(puVar16 + 0x16680))(uVar12,iVar10 + -1,(iVar9 - iVar7) + -2)" (parenthesized_expression "(**(code **)(puVar16 + 0x16680))" ( (pointer_expression "**(code **)(puVar16 + 0x16680)" * (pointer_expression "*(code **)(puVar16 + 0x16680)" * (cast_expression "(code **)(puVar16 + 0x16680)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x16680)" ( (binary_expression "puVar16 + 0x16680" identifier + number_literal) ))))) )) (argument_list "(uVar12,iVar10 + -1,(iVar9 - iVar7) + -2)" ( identifier , (binary_expression "iVar10 + -1" identifier + number_literal) , (binary_expression "(iVar9 - iVar7) + -2" (parenthesized_expression "(iVar9 - iVar7)" ( (binary_expression "iVar9 - iVar7" identifier - identifier) )) + number_literal) ))) ;) (expression_statement "wideaddstr_rev(iVar13);" (call_expression "wideaddstr_rev(iVar13)" identifier (argument_list "(iVar13)" ( identifier ))) ;) (expression_statement "(**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);" (call_expression "(**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0)" (parenthesized_expression "(**(code **)(puVar16 + 0x16680))" ( (pointer_expression "**(code **)(puVar16 + 0x16680)" * (pointer_expression "*(code **)(puVar16 + 0x16680)" * (cast_expression "(code **)(puVar16 + 0x16680)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x16680)" ( (binary_expression "puVar16 + 0x16680" identifier + number_literal) ))))) )) (argument_list "(*puVar14,*piVar15 + -1,0)" ( (pointer_expression "*puVar14" * identifier) , (binary_expression "*piVar15 + -1" (pointer_expression "*piVar15" * identifier) + number_literal) , number_literal ))) ;) (expression_statement "wideaddstr_rev(iVar11);" (call_expression "wideaddstr_rev(iVar11)" identifier (argument_list "(iVar11)" ( identifier ))) ;) (do_statement "do {\n    iVar11 = FUN_00015b34(0);\n    if (iVar11 == 0x1b) {\n      uVar12 = 0;\n      if (**(int **)(puVar16 + 0x16430) == iVar13) {\n        pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0);\n        if ((pcVar8 == (char *)0x0) || (*pcVar8 == '\0')) {\n          uVar12 = 0;\n          do_exit(iVar6);\n        }\n        else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }\n      }\n      goto LAB_00015f58;\n    }\n  } while ((iVar11 != 10) && (iVar11 != 0x20));" do (compound_statement "{\n    iVar11 = FUN_00015b34(0);\n    if (iVar11 == 0x1b) {\n      uVar12 = 0;\n      if (**(int **)(puVar16 + 0x16430) == iVar13) {\n        pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0);\n        if ((pcVar8 == (char *)0x0) || (*pcVar8 == '\0')) {\n          uVar12 = 0;\n          do_exit(iVar6);\n        }\n        else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }\n      }\n      goto LAB_00015f58;\n    }\n  }" { (expression_statement "iVar11 = FUN_00015b34(0);" (assignment_expression "iVar11 = FUN_00015b34(0)" identifier = (call_expression "FUN_00015b34(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (if_statement "if (iVar11 == 0x1b) {\n      uVar12 = 0;\n      if (**(int **)(puVar16 + 0x16430) == iVar13) {\n        pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0);\n        if ((pcVar8 == (char *)0x0) || (*pcVar8 == '\0')) {\n          uVar12 = 0;\n          do_exit(iVar6);\n        }\n        else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }\n      }\n      goto LAB_00015f58;\n    }" if (parenthesized_expression "(iVar11 == 0x1b)" ( (binary_expression "iVar11 == 0x1b" identifier == number_literal) )) (compound_statement "{\n      uVar12 = 0;\n      if (**(int **)(puVar16 + 0x16430) == iVar13) {\n        pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0);\n        if ((pcVar8 == (char *)0x0) || (*pcVar8 == '\0')) {\n          uVar12 = 0;\n          do_exit(iVar6);\n        }\n        else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }\n      }\n      goto LAB_00015f58;\n    }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (if_statement "if (**(int **)(puVar16 + 0x16430) == iVar13) {\n        pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0);\n        if ((pcVar8 == (char *)0x0) || (*pcVar8 == '\0')) {\n          uVar12 = 0;\n          do_exit(iVar6);\n        }\n        else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }\n      }" if (parenthesized_expression "(**(int **)(puVar16 + 0x16430) == iVar13)" ( (binary_expression "**(int **)(puVar16 + 0x16430) == iVar13" (pointer_expression "**(int **)(puVar16 + 0x16430)" * (pointer_expression "*(int **)(puVar16 + 0x16430)" * (cast_expression "(int **)(puVar16 + 0x16430)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x16430)" ( (binary_expression "puVar16 + 0x16430" identifier + number_literal) ))))) == identifier) )) (compound_statement "{\n        pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0);\n        if ((pcVar8 == (char *)0x0) || (*pcVar8 == '\0')) {\n          uVar12 = 0;\n          do_exit(iVar6);\n        }\n        else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }\n      }" { (expression_statement "pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0);" (assignment_expression "pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0)" identifier = (pointer_expression "*(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0)" * (cast_expression "(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar16 + 0x16400) + -0x3aa0)" ( (binary_expression "*(int *)(puVar16 + 0x16400) + -0x3aa0" (pointer_expression "*(int *)(puVar16 + 0x16400)" * (cast_expression "(int *)(puVar16 + 0x16400)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x16400)" ( (binary_expression "puVar16 + 0x16400" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if ((pcVar8 == (char *)0x0) || (*pcVar8 == '\0')) {\n          uVar12 = 0;\n          do_exit(iVar6);\n        }\n        else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }" if (parenthesized_expression "((pcVar8 == (char *)0x0) || (*pcVar8 == '\0'))" ( (binary_expression "(pcVar8 == (char *)0x0) || (*pcVar8 == '\0')" (parenthesized_expression "(pcVar8 == (char *)0x0)" ( (binary_expression "pcVar8 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(*pcVar8 == '\0')" ( (binary_expression "*pcVar8 == '\0'" (pointer_expression "*pcVar8" * identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n          uVar12 = 0;\n          do_exit(iVar6);\n        }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "do_exit(iVar6);" (call_expression "do_exit(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))) ;) }) (else_clause "else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }" else (compound_statement "{\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }" { (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" identifier = number_literal) ;) (expression_statement "seek_label(iVar6,pcVar8,0);" (call_expression "seek_label(iVar6,pcVar8,0)" identifier (argument_list "(iVar6,pcVar8,0)" ( identifier , identifier , number_literal ))) ;) }))) })) (goto_statement "goto LAB_00015f58;" goto statement_identifier ;) })) }) while (parenthesized_expression "((iVar11 != 10) && (iVar11 != 0x20))" ( (binary_expression "(iVar11 != 10) && (iVar11 != 0x20)" (parenthesized_expression "(iVar11 != 10)" ( (binary_expression "iVar11 != 10" identifier != number_literal) )) && (parenthesized_expression "(iVar11 != 0x20)" ( (binary_expression "iVar11 != 0x20" identifier != number_literal) ))) )) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00015f58:\n  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);" statement_identifier : (expression_statement "(**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);" (call_expression "(**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0)" (parenthesized_expression "(**(code **)(puVar16 + 0x16680))" ( (pointer_expression "**(code **)(puVar16 + 0x16680)" * (pointer_expression "*(code **)(puVar16 + 0x16680)" * (cast_expression "(code **)(puVar16 + 0x16680)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x16680)" ( (binary_expression "puVar16 + 0x16680" identifier + number_literal) ))))) )) (argument_list "(*puVar14,*piVar15 + -1,0)" ( (pointer_expression "*puVar14" * identifier) , (binary_expression "*piVar15 + -1" (pointer_expression "*piVar15" * identifier) + number_literal) , number_literal ))) ;)) (expression_statement "(**(code **)(puVar16 + 0x16530))(*puVar14);" (call_expression "(**(code **)(puVar16 + 0x16530))(*puVar14)" (parenthesized_expression "(**(code **)(puVar16 + 0x16530))" ( (pointer_expression "**(code **)(puVar16 + 0x16530)" * (pointer_expression "*(code **)(puVar16 + 0x16530)" * (cast_expression "(code **)(puVar16 + 0x16530)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x16530)" ( (binary_expression "puVar16 + 0x16530" identifier + number_literal) ))))) )) (argument_list "(*puVar14)" ( (pointer_expression "*puVar14" * identifier) ))) ;) (return_statement "return uVar12;" return identifier ;) })))
(translation_unit "int getch_fl(int cursor_char)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  short *psVar5;\n  int iVar6;\n  FILE *script;\n  char *in_a1;\n  char *in_a2;\n  int iVar7;\n  int iVar8;\n  char *pcVar9;\n  undefined4 uVar10;\n  char *UTF8Text;\n  undefined4 *puVar11;\n  int *piVar12;\n  undefined *puVar13;\n  int return_char;\n  FILE *local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_0002c460;\n  puVar3 = PTR_stdscr_0002c42c;\n  puVar2 = PTR_COLS_0002c3b8;\n  puVar13 = PTR_LINES_0002c368;\n  local_2c = *(FILE **)PTR___stack_chk_guard_0002c460;\n  psVar5 = *(short **)PTR_stdscr_0002c42c;\n  pcVar9 = (char *)0xffffffff;\n  if (psVar5 == (short *)0x0) {\n    UTF8Text = (char *)0xffffffff;\n  }\n  else {\n    pcVar9 = (char *)(int)*psVar5;\n    UTF8Text = (char *)(int)psVar5[1];\n  }\n  if (cursor_char == 0) {\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)\n              (*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)\n    ;\n    (*(code *)PTR_cbreak_0002c3cc)();\n    get_widech(&return_char);\n  }\n  else {\n    if (PTR_DAT_0002c228[-0x3a73] != '\0') {\n      (*(code *)PTR_curs_set_0002c47c)(1);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&return_char);\n      (*(code *)PTR_curs_set_0002c47c)(0);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      pcVar9 = in_a1;\n      UTF8Text = in_a2;\n      goto LAB_00015c10;\n    }\n    wideaddch_rev(cursor_char);\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar13 + -1,*(int *)puVar2 + -1);\n    if (*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2) {\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&return_char);\n    }\n    else {\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&return_char);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,pcVar9,UTF8Text);\n        if (bVar1) {\n          wideaddch_rev(cursor_char);\n        }\n        else {\n          wideaddch(cursor_char);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar13 + -1,*(int *)puVar2 + -1);\n      }\n    }\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,pcVar9,UTF8Text);\n    wideaddch(cursor_char);\n  }\n  (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3);\nLAB_00015c10:\n  if (local_2c == *(FILE **)puVar4) {\n    return return_char;\n  }\n  script = local_2c;\n  puVar13 = PTR___stack_chk_fail_0002c440;\n  (*(code *)PTR___stack_chk_fail_0002c440)();\n  piVar12 = *(int **)(puVar13 + 0x16540);\n  puVar11 = *(undefined4 **)(puVar13 + 0x16604);\n  (**(code **)(puVar13 + 0x16680))(*puVar11,*piVar12 + -1,0);\n  (**(code **)(puVar13 + 0x16530))(*puVar11);\n  uVar10 = *puVar11;\n  iVar8 = *piVar12;\n  iVar7 = **(int **)(puVar13 + 0x16590);\n  iVar6 = utf8len(UTF8Text);\n  (**(code **)(puVar13 + 0x16680))(uVar10,iVar8 + -1,(iVar7 - iVar6) + -2);\n  wideaddstr_rev(UTF8Text);\n  (**(code **)(puVar13 + 0x16680))(*puVar11,*piVar12 + -1,0);\n  wideaddstr_rev(pcVar9);\n  do {\n    iVar6 = getch_fl(0);\n    if (iVar6 == 0x1b) {\n      iVar6 = 0;\n      if ((char *)**(int **)(puVar13 + 0x16430) == UTF8Text) {\n        pcVar9 = *(char **)(*(int *)(puVar13 + 0x16400) + -0x3aa0);\n        if ((pcVar9 == (char *)0x0) || (*pcVar9 == '\0')) {\n          iVar6 = 0;\n          do_exit(script);\n        }\n        else {\n          iVar6 = 1;\n          seek_label(script,pcVar9,(char *)0x0);\n        }\n      }\n      goto LAB_00015f58;\n    }\n  } while ((iVar6 != 10) && (iVar6 != 0x20));\n  iVar6 = 0;\nLAB_00015f58:\n  (**(code **)(puVar13 + 0x16680))(*puVar11,*piVar12 + -1,0);\n  (**(code **)(puVar13 + 0x16530))(*puVar11);\n  return iVar6;\n}\n\n" (function_definition "int getch_fl(int cursor_char)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  short *psVar5;\n  int iVar6;\n  FILE *script;\n  char *in_a1;\n  char *in_a2;\n  int iVar7;\n  int iVar8;\n  char *pcVar9;\n  undefined4 uVar10;\n  char *UTF8Text;\n  undefined4 *puVar11;\n  int *piVar12;\n  undefined *puVar13;\n  int return_char;\n  FILE *local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_0002c460;\n  puVar3 = PTR_stdscr_0002c42c;\n  puVar2 = PTR_COLS_0002c3b8;\n  puVar13 = PTR_LINES_0002c368;\n  local_2c = *(FILE **)PTR___stack_chk_guard_0002c460;\n  psVar5 = *(short **)PTR_stdscr_0002c42c;\n  pcVar9 = (char *)0xffffffff;\n  if (psVar5 == (short *)0x0) {\n    UTF8Text = (char *)0xffffffff;\n  }\n  else {\n    pcVar9 = (char *)(int)*psVar5;\n    UTF8Text = (char *)(int)psVar5[1];\n  }\n  if (cursor_char == 0) {\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)\n              (*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)\n    ;\n    (*(code *)PTR_cbreak_0002c3cc)();\n    get_widech(&return_char);\n  }\n  else {\n    if (PTR_DAT_0002c228[-0x3a73] != '\0') {\n      (*(code *)PTR_curs_set_0002c47c)(1);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&return_char);\n      (*(code *)PTR_curs_set_0002c47c)(0);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      pcVar9 = in_a1;\n      UTF8Text = in_a2;\n      goto LAB_00015c10;\n    }\n    wideaddch_rev(cursor_char);\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar13 + -1,*(int *)puVar2 + -1);\n    if (*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2) {\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&return_char);\n    }\n    else {\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&return_char);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,pcVar9,UTF8Text);\n        if (bVar1) {\n          wideaddch_rev(cursor_char);\n        }\n        else {\n          wideaddch(cursor_char);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar13 + -1,*(int *)puVar2 + -1);\n      }\n    }\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,pcVar9,UTF8Text);\n    wideaddch(cursor_char);\n  }\n  (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3);\nLAB_00015c10:\n  if (local_2c == *(FILE **)puVar4) {\n    return return_char;\n  }\n  script = local_2c;\n  puVar13 = PTR___stack_chk_fail_0002c440;\n  (*(code *)PTR___stack_chk_fail_0002c440)();\n  piVar12 = *(int **)(puVar13 + 0x16540);\n  puVar11 = *(undefined4 **)(puVar13 + 0x16604);\n  (**(code **)(puVar13 + 0x16680))(*puVar11,*piVar12 + -1,0);\n  (**(code **)(puVar13 + 0x16530))(*puVar11);\n  uVar10 = *puVar11;\n  iVar8 = *piVar12;\n  iVar7 = **(int **)(puVar13 + 0x16590);\n  iVar6 = utf8len(UTF8Text);\n  (**(code **)(puVar13 + 0x16680))(uVar10,iVar8 + -1,(iVar7 - iVar6) + -2);\n  wideaddstr_rev(UTF8Text);\n  (**(code **)(puVar13 + 0x16680))(*puVar11,*piVar12 + -1,0);\n  wideaddstr_rev(pcVar9);\n  do {\n    iVar6 = getch_fl(0);\n    if (iVar6 == 0x1b) {\n      iVar6 = 0;\n      if ((char *)**(int **)(puVar13 + 0x16430) == UTF8Text) {\n        pcVar9 = *(char **)(*(int *)(puVar13 + 0x16400) + -0x3aa0);\n        if ((pcVar9 == (char *)0x0) || (*pcVar9 == '\0')) {\n          iVar6 = 0;\n          do_exit(script);\n        }\n        else {\n          iVar6 = 1;\n          seek_label(script,pcVar9,(char *)0x0);\n        }\n      }\n      goto LAB_00015f58;\n    }\n  } while ((iVar6 != 10) && (iVar6 != 0x20));\n  iVar6 = 0;\nLAB_00015f58:\n  (**(code **)(puVar13 + 0x16680))(*puVar11,*piVar12 + -1,0);\n  (**(code **)(puVar13 + 0x16530))(*puVar11);\n  return iVar6;\n}" primitive_type (function_declarator "getch_fl(int cursor_char)" identifier (parameter_list "(int cursor_char)" ( (parameter_declaration "int cursor_char" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  short *psVar5;\n  int iVar6;\n  FILE *script;\n  char *in_a1;\n  char *in_a2;\n  int iVar7;\n  int iVar8;\n  char *pcVar9;\n  undefined4 uVar10;\n  char *UTF8Text;\n  undefined4 *puVar11;\n  int *piVar12;\n  undefined *puVar13;\n  int return_char;\n  FILE *local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_0002c460;\n  puVar3 = PTR_stdscr_0002c42c;\n  puVar2 = PTR_COLS_0002c3b8;\n  puVar13 = PTR_LINES_0002c368;\n  local_2c = *(FILE **)PTR___stack_chk_guard_0002c460;\n  psVar5 = *(short **)PTR_stdscr_0002c42c;\n  pcVar9 = (char *)0xffffffff;\n  if (psVar5 == (short *)0x0) {\n    UTF8Text = (char *)0xffffffff;\n  }\n  else {\n    pcVar9 = (char *)(int)*psVar5;\n    UTF8Text = (char *)(int)psVar5[1];\n  }\n  if (cursor_char == 0) {\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)\n              (*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)\n    ;\n    (*(code *)PTR_cbreak_0002c3cc)();\n    get_widech(&return_char);\n  }\n  else {\n    if (PTR_DAT_0002c228[-0x3a73] != '\0') {\n      (*(code *)PTR_curs_set_0002c47c)(1);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&return_char);\n      (*(code *)PTR_curs_set_0002c47c)(0);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      pcVar9 = in_a1;\n      UTF8Text = in_a2;\n      goto LAB_00015c10;\n    }\n    wideaddch_rev(cursor_char);\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar13 + -1,*(int *)puVar2 + -1);\n    if (*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2) {\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&return_char);\n    }\n    else {\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&return_char);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,pcVar9,UTF8Text);\n        if (bVar1) {\n          wideaddch_rev(cursor_char);\n        }\n        else {\n          wideaddch(cursor_char);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar13 + -1,*(int *)puVar2 + -1);\n      }\n    }\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,pcVar9,UTF8Text);\n    wideaddch(cursor_char);\n  }\n  (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3);\nLAB_00015c10:\n  if (local_2c == *(FILE **)puVar4) {\n    return return_char;\n  }\n  script = local_2c;\n  puVar13 = PTR___stack_chk_fail_0002c440;\n  (*(code *)PTR___stack_chk_fail_0002c440)();\n  piVar12 = *(int **)(puVar13 + 0x16540);\n  puVar11 = *(undefined4 **)(puVar13 + 0x16604);\n  (**(code **)(puVar13 + 0x16680))(*puVar11,*piVar12 + -1,0);\n  (**(code **)(puVar13 + 0x16530))(*puVar11);\n  uVar10 = *puVar11;\n  iVar8 = *piVar12;\n  iVar7 = **(int **)(puVar13 + 0x16590);\n  iVar6 = utf8len(UTF8Text);\n  (**(code **)(puVar13 + 0x16680))(uVar10,iVar8 + -1,(iVar7 - iVar6) + -2);\n  wideaddstr_rev(UTF8Text);\n  (**(code **)(puVar13 + 0x16680))(*puVar11,*piVar12 + -1,0);\n  wideaddstr_rev(pcVar9);\n  do {\n    iVar6 = getch_fl(0);\n    if (iVar6 == 0x1b) {\n      iVar6 = 0;\n      if ((char *)**(int **)(puVar13 + 0x16430) == UTF8Text) {\n        pcVar9 = *(char **)(*(int *)(puVar13 + 0x16400) + -0x3aa0);\n        if ((pcVar9 == (char *)0x0) || (*pcVar9 == '\0')) {\n          iVar6 = 0;\n          do_exit(script);\n        }\n        else {\n          iVar6 = 1;\n          seek_label(script,pcVar9,(char *)0x0);\n        }\n      }\n      goto LAB_00015f58;\n    }\n  } while ((iVar6 != 10) && (iVar6 != 0x20));\n  iVar6 = 0;\nLAB_00015f58:\n  (**(code **)(puVar13 + 0x16680))(*puVar11,*piVar12 + -1,0);\n  (**(code **)(puVar13 + 0x16530))(*puVar11);\n  return iVar6;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "short *psVar5;" (sized_type_specifier "short" short) (pointer_declarator "*psVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "FILE *script;" type_identifier (pointer_declarator "*script" * identifier) ;) (declaration "char *in_a1;" primitive_type (pointer_declarator "*in_a1" * identifier) ;) (declaration "char *in_a2;" primitive_type (pointer_declarator "*in_a2" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "char *UTF8Text;" primitive_type (pointer_declarator "*UTF8Text" * identifier) ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "undefined *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "int return_char;" primitive_type identifier ;) (declaration "FILE *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (expression_statement "puVar4 = PTR___stack_chk_guard_0002c460;" (assignment_expression "puVar4 = PTR___stack_chk_guard_0002c460" identifier = identifier) ;) (expression_statement "puVar3 = PTR_stdscr_0002c42c;" (assignment_expression "puVar3 = PTR_stdscr_0002c42c" identifier = identifier) ;) (expression_statement "puVar2 = PTR_COLS_0002c3b8;" (assignment_expression "puVar2 = PTR_COLS_0002c3b8" identifier = identifier) ;) (expression_statement "puVar13 = PTR_LINES_0002c368;" (assignment_expression "puVar13 = PTR_LINES_0002c368" identifier = identifier) ;) (expression_statement "local_2c = *(FILE **)PTR___stack_chk_guard_0002c460;" (assignment_expression "local_2c = *(FILE **)PTR___stack_chk_guard_0002c460" identifier = (pointer_expression "*(FILE **)PTR___stack_chk_guard_0002c460" * (cast_expression "(FILE **)PTR___stack_chk_guard_0002c460" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "psVar5 = *(short **)PTR_stdscr_0002c42c;" (assignment_expression "psVar5 = *(short **)PTR_stdscr_0002c42c" identifier = (pointer_expression "*(short **)PTR_stdscr_0002c42c" * (cast_expression "(short **)PTR_stdscr_0002c42c" ( (type_descriptor "short **" (sized_type_specifier "short" short) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "pcVar9 = (char *)0xffffffff;" (assignment_expression "pcVar9 = (char *)0xffffffff" identifier = (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (psVar5 == (short *)0x0) {\n    UTF8Text = (char *)0xffffffff;\n  }\n  else {\n    pcVar9 = (char *)(int)*psVar5;\n    UTF8Text = (char *)(int)psVar5[1];\n  }" if (parenthesized_expression "(psVar5 == (short *)0x0)" ( (binary_expression "psVar5 == (short *)0x0" identifier == (cast_expression "(short *)0x0" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    UTF8Text = (char *)0xffffffff;\n  }" { (expression_statement "UTF8Text = (char *)0xffffffff;" (assignment_expression "UTF8Text = (char *)0xffffffff" identifier = (cast_expression "(char *)0xffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    pcVar9 = (char *)(int)*psVar5;\n    UTF8Text = (char *)(int)psVar5[1];\n  }" else (compound_statement "{\n    pcVar9 = (char *)(int)*psVar5;\n    UTF8Text = (char *)(int)psVar5[1];\n  }" { (expression_statement "pcVar9 = (char *)(int)*psVar5;" (assignment_expression "pcVar9 = (char *)(int)*psVar5" identifier = (cast_expression "(char *)(int)*psVar5" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)*psVar5" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*psVar5" * identifier)))) ;) (expression_statement "UTF8Text = (char *)(int)psVar5[1];" (assignment_expression "UTF8Text = (char *)(int)psVar5[1]" identifier = (cast_expression "(char *)(int)psVar5[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)psVar5[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "psVar5[1]" identifier [ number_literal ])))) ;) }))) (if_statement "if (cursor_char == 0) {\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)\n              (*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)\n    ;\n    (*(code *)PTR_cbreak_0002c3cc)();\n    get_widech(&return_char);\n  }\n  else {\n    if (PTR_DAT_0002c228[-0x3a73] != '\0') {\n      (*(code *)PTR_curs_set_0002c47c)(1);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&return_char);\n      (*(code *)PTR_curs_set_0002c47c)(0);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      pcVar9 = in_a1;\n      UTF8Text = in_a2;\n      goto LAB_00015c10;\n    }\n    wideaddch_rev(cursor_char);\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar13 + -1,*(int *)puVar2 + -1);\n    if (*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2) {\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&return_char);\n    }\n    else {\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&return_char);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,pcVar9,UTF8Text);\n        if (bVar1) {\n          wideaddch_rev(cursor_char);\n        }\n        else {\n          wideaddch(cursor_char);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar13 + -1,*(int *)puVar2 + -1);\n      }\n    }\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,pcVar9,UTF8Text);\n    wideaddch(cursor_char);\n  }" if (parenthesized_expression "(cursor_char == 0)" ( (binary_expression "cursor_char == 0" identifier == number_literal) )) (compound_statement "{\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)\n              (*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)\n    ;\n    (*(code *)PTR_cbreak_0002c3cc)();\n    get_widech(&return_char);\n  }" { (expression_statement "(*(code *)PTR_curs_set_0002c47c)(0);" (call_expression "(*(code *)PTR_curs_set_0002c47c)(0)" (parenthesized_expression "(*(code *)PTR_curs_set_0002c47c)" ( (pointer_expression "*(code *)PTR_curs_set_0002c47c" * (cast_expression "(code *)PTR_curs_set_0002c47c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0)" ( number_literal ))) ;) (expression_statement "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);" (call_expression "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3)" (parenthesized_expression "(*(code *)PTR_wrefresh_0002c41c)" ( (pointer_expression "*(code *)PTR_wrefresh_0002c41c" * (cast_expression "(code *)PTR_wrefresh_0002c41c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (expression_statement "(*(code *)PTR_wmove_0002c4a8)\n              (*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)\n    ;" (call_expression "(*(code *)PTR_wmove_0002c4a8)\n              (*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)" (parenthesized_expression "(*(code *)PTR_wmove_0002c4a8)" ( (pointer_expression "*(code *)PTR_wmove_0002c4a8" * (cast_expression "(code *)PTR_wmove_0002c4a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (binary_expression "*(int *)PTR_LINES_0002c368 + -1" (pointer_expression "*(int *)PTR_LINES_0002c368" * (cast_expression "(int *)PTR_LINES_0002c368" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) , (binary_expression "*(int *)PTR_COLS_0002c3b8 + -1" (pointer_expression "*(int *)PTR_COLS_0002c3b8" * (cast_expression "(int *)PTR_COLS_0002c3b8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))) ;) (expression_statement "(*(code *)PTR_cbreak_0002c3cc)();" (call_expression "(*(code *)PTR_cbreak_0002c3cc)()" (parenthesized_expression "(*(code *)PTR_cbreak_0002c3cc)" ( (pointer_expression "*(code *)PTR_cbreak_0002c3cc" * (cast_expression "(code *)PTR_cbreak_0002c3cc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "get_widech(&return_char);" (call_expression "get_widech(&return_char)" identifier (argument_list "(&return_char)" ( (pointer_expression "&return_char" & identifier) ))) ;) }) (else_clause "else {\n    if (PTR_DAT_0002c228[-0x3a73] != '\0') {\n      (*(code *)PTR_curs_set_0002c47c)(1);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&return_char);\n      (*(code *)PTR_curs_set_0002c47c)(0);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      pcVar9 = in_a1;\n      UTF8Text = in_a2;\n      goto LAB_00015c10;\n    }\n    wideaddch_rev(cursor_char);\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar13 + -1,*(int *)puVar2 + -1);\n    if (*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2) {\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&return_char);\n    }\n    else {\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&return_char);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,pcVar9,UTF8Text);\n        if (bVar1) {\n          wideaddch_rev(cursor_char);\n        }\n        else {\n          wideaddch(cursor_char);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar13 + -1,*(int *)puVar2 + -1);\n      }\n    }\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,pcVar9,UTF8Text);\n    wideaddch(cursor_char);\n  }" else (compound_statement "{\n    if (PTR_DAT_0002c228[-0x3a73] != '\0') {\n      (*(code *)PTR_curs_set_0002c47c)(1);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&return_char);\n      (*(code *)PTR_curs_set_0002c47c)(0);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      pcVar9 = in_a1;\n      UTF8Text = in_a2;\n      goto LAB_00015c10;\n    }\n    wideaddch_rev(cursor_char);\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar13 + -1,*(int *)puVar2 + -1);\n    if (*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2) {\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&return_char);\n    }\n    else {\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&return_char);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,pcVar9,UTF8Text);\n        if (bVar1) {\n          wideaddch_rev(cursor_char);\n        }\n        else {\n          wideaddch(cursor_char);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar13 + -1,*(int *)puVar2 + -1);\n      }\n    }\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,pcVar9,UTF8Text);\n    wideaddch(cursor_char);\n  }" { (if_statement "if (PTR_DAT_0002c228[-0x3a73] != '\0') {\n      (*(code *)PTR_curs_set_0002c47c)(1);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&return_char);\n      (*(code *)PTR_curs_set_0002c47c)(0);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      pcVar9 = in_a1;\n      UTF8Text = in_a2;\n      goto LAB_00015c10;\n    }" if (parenthesized_expression "(PTR_DAT_0002c228[-0x3a73] != '\0')" ( (binary_expression "PTR_DAT_0002c228[-0x3a73] != '\0'" (subscript_expression "PTR_DAT_0002c228[-0x3a73]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      (*(code *)PTR_curs_set_0002c47c)(1);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&return_char);\n      (*(code *)PTR_curs_set_0002c47c)(0);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      pcVar9 = in_a1;\n      UTF8Text = in_a2;\n      goto LAB_00015c10;\n    }" { (expression_statement "(*(code *)PTR_curs_set_0002c47c)(1);" (call_expression "(*(code *)PTR_curs_set_0002c47c)(1)" (parenthesized_expression "(*(code *)PTR_curs_set_0002c47c)" ( (pointer_expression "*(code *)PTR_curs_set_0002c47c" * (cast_expression "(code *)PTR_curs_set_0002c47c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(1)" ( number_literal ))) ;) (expression_statement "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);" (call_expression "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3)" (parenthesized_expression "(*(code *)PTR_wrefresh_0002c41c)" ( (pointer_expression "*(code *)PTR_wrefresh_0002c41c" * (cast_expression "(code *)PTR_wrefresh_0002c41c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (expression_statement "(*(code *)PTR_cbreak_0002c3cc)();" (call_expression "(*(code *)PTR_cbreak_0002c3cc)()" (parenthesized_expression "(*(code *)PTR_cbreak_0002c3cc)" ( (pointer_expression "*(code *)PTR_cbreak_0002c3cc" * (cast_expression "(code *)PTR_cbreak_0002c3cc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "get_widech(&return_char);" (call_expression "get_widech(&return_char)" identifier (argument_list "(&return_char)" ( (pointer_expression "&return_char" & identifier) ))) ;) (expression_statement "(*(code *)PTR_curs_set_0002c47c)(0);" (call_expression "(*(code *)PTR_curs_set_0002c47c)(0)" (parenthesized_expression "(*(code *)PTR_curs_set_0002c47c)" ( (pointer_expression "*(code *)PTR_curs_set_0002c47c" * (cast_expression "(code *)PTR_curs_set_0002c47c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0)" ( number_literal ))) ;) (expression_statement "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);" (call_expression "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3)" (parenthesized_expression "(*(code *)PTR_wrefresh_0002c41c)" ( (pointer_expression "*(code *)PTR_wrefresh_0002c41c" * (cast_expression "(code *)PTR_wrefresh_0002c41c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (expression_statement "pcVar9 = in_a1;" (assignment_expression "pcVar9 = in_a1" identifier = identifier) ;) (expression_statement "UTF8Text = in_a2;" (assignment_expression "UTF8Text = in_a2" identifier = identifier) ;) (goto_statement "goto LAB_00015c10;" goto statement_identifier ;) })) (expression_statement "wideaddch_rev(cursor_char);" (call_expression "wideaddch_rev(cursor_char)" identifier (argument_list "(cursor_char)" ( identifier ))) ;) (expression_statement "(*(code *)PTR_curs_set_0002c47c)(0);" (call_expression "(*(code *)PTR_curs_set_0002c47c)(0)" (parenthesized_expression "(*(code *)PTR_curs_set_0002c47c)" ( (pointer_expression "*(code *)PTR_curs_set_0002c47c" * (cast_expression "(code *)PTR_curs_set_0002c47c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0)" ( number_literal ))) ;) (expression_statement "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);" (call_expression "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3)" (parenthesized_expression "(*(code *)PTR_wrefresh_0002c41c)" ( (pointer_expression "*(code *)PTR_wrefresh_0002c41c" * (cast_expression "(code *)PTR_wrefresh_0002c41c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (expression_statement "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar13 + -1,*(int *)puVar2 + -1);" (call_expression "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar13 + -1,*(int *)puVar2 + -1)" (parenthesized_expression "(*(code *)PTR_wmove_0002c4a8)" ( (pointer_expression "*(code *)PTR_wmove_0002c4a8" * (cast_expression "(code *)PTR_wmove_0002c4a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3,*(int *)puVar13 + -1,*(int *)puVar2 + -1)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (binary_expression "*(int *)puVar13 + -1" (pointer_expression "*(int *)puVar13" * (cast_expression "(int *)puVar13" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) , (binary_expression "*(int *)puVar2 + -1" (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))) ;) (if_statement "if (*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2) {\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&return_char);\n    }\n    else {\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&return_char);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,pcVar9,UTF8Text);\n        if (bVar1) {\n          wideaddch_rev(cursor_char);\n        }\n        else {\n          wideaddch(cursor_char);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar13 + -1,*(int *)puVar2 + -1);\n      }\n    }" if (parenthesized_expression "(*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2)" ( (binary_expression "*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2" (pointer_expression "*(int *)(PTR_DAT_0002c228 + -0x3f50)" * (cast_expression "(int *)(PTR_DAT_0002c228 + -0x3f50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0002c228 + -0x3f50)" ( (binary_expression "PTR_DAT_0002c228 + -0x3f50" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&return_char);\n    }" { (expression_statement "(*(code *)PTR_cbreak_0002c3cc)();" (call_expression "(*(code *)PTR_cbreak_0002c3cc)()" (parenthesized_expression "(*(code *)PTR_cbreak_0002c3cc)" ( (pointer_expression "*(code *)PTR_cbreak_0002c3cc" * (cast_expression "(code *)PTR_cbreak_0002c3cc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "get_widech(&return_char);" (call_expression "get_widech(&return_char)" identifier (argument_list "(&return_char)" ( (pointer_expression "&return_char" & identifier) ))) ;) }) (else_clause "else {\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&return_char);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,pcVar9,UTF8Text);\n        if (bVar1) {\n          wideaddch_rev(cursor_char);\n        }\n        else {\n          wideaddch(cursor_char);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar13 + -1,*(int *)puVar2 + -1);\n      }\n    }" else (compound_statement "{\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&return_char);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,pcVar9,UTF8Text);\n        if (bVar1) {\n          wideaddch_rev(cursor_char);\n        }\n        else {\n          wideaddch(cursor_char);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar13 + -1,*(int *)puVar2 + -1);\n      }\n    }" { (expression_statement "(*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);" (call_expression "(*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1)" (parenthesized_expression "(*(code *)PTR_halfdelay_0002c490)" ( (pointer_expression "*(code *)PTR_halfdelay_0002c490" * (cast_expression "(code *)PTR_halfdelay_0002c490" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1)" ( (binary_expression "*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1" (pointer_expression "*(int *)(PTR_DAT_0002c228 + -0x3f50)" * (cast_expression "(int *)(PTR_DAT_0002c228 + -0x3f50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0002c228 + -0x3f50)" ( (binary_expression "PTR_DAT_0002c228 + -0x3f50" identifier + number_literal) )))) >> number_literal) ))) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (while_statement "while( true ) {\n        iVar6 = get_widech(&return_char);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,pcVar9,UTF8Text);\n        if (bVar1) {\n          wideaddch_rev(cursor_char);\n        }\n        else {\n          wideaddch(cursor_char);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar13 + -1,*(int *)puVar2 + -1);\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        iVar6 = get_widech(&return_char);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,pcVar9,UTF8Text);\n        if (bVar1) {\n          wideaddch_rev(cursor_char);\n        }\n        else {\n          wideaddch(cursor_char);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar13 + -1,*(int *)puVar2 + -1);\n      }" { (expression_statement "iVar6 = get_widech(&return_char);" (assignment_expression "iVar6 = get_widech(&return_char)" identifier = (call_expression "get_widech(&return_char)" identifier (argument_list "(&return_char)" ( (pointer_expression "&return_char" & identifier) )))) ;) (if_statement "if (iVar6 != -1) break;" if (parenthesized_expression "(iVar6 != -1)" ( (binary_expression "iVar6 != -1" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,pcVar9,UTF8Text);" (call_expression "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,pcVar9,UTF8Text)" (parenthesized_expression "(*(code *)PTR_wmove_0002c4a8)" ( (pointer_expression "*(code *)PTR_wmove_0002c4a8" * (cast_expression "(code *)PTR_wmove_0002c4a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3,pcVar9,UTF8Text)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , identifier , identifier ))) ;) (if_statement "if (bVar1) {\n          wideaddch_rev(cursor_char);\n        }\n        else {\n          wideaddch(cursor_char);\n        }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n          wideaddch_rev(cursor_char);\n        }" { (expression_statement "wideaddch_rev(cursor_char);" (call_expression "wideaddch_rev(cursor_char)" identifier (argument_list "(cursor_char)" ( identifier ))) ;) }) (else_clause "else {\n          wideaddch(cursor_char);\n        }" else (compound_statement "{\n          wideaddch(cursor_char);\n        }" { (expression_statement "wideaddch(cursor_char);" (call_expression "wideaddch(cursor_char)" identifier (argument_list "(cursor_char)" ( identifier ))) ;) }))) (expression_statement "bVar1 = (bool)(bVar1 ^ 1);" (assignment_expression "bVar1 = (bool)(bVar1 ^ 1)" identifier = (cast_expression "(bool)(bVar1 ^ 1)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(bVar1 ^ 1)" ( (binary_expression "bVar1 ^ 1" identifier ^ number_literal) )))) ;) (expression_statement "(*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar13 + -1,*(int *)puVar2 + -1);" (call_expression "(*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar13 + -1,*(int *)puVar2 + -1)" (parenthesized_expression "(*(code *)PTR_wmove_0002c4a8)" ( (pointer_expression "*(code *)PTR_wmove_0002c4a8" * (cast_expression "(code *)PTR_wmove_0002c4a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3,*(int *)puVar13 + -1,*(int *)puVar2 + -1)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (binary_expression "*(int *)puVar13 + -1" (pointer_expression "*(int *)puVar13" * (cast_expression "(int *)puVar13" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) , (binary_expression "*(int *)puVar2 + -1" (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))) ;) })) }))) (expression_statement "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,pcVar9,UTF8Text);" (call_expression "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,pcVar9,UTF8Text)" (parenthesized_expression "(*(code *)PTR_wmove_0002c4a8)" ( (pointer_expression "*(code *)PTR_wmove_0002c4a8" * (cast_expression "(code *)PTR_wmove_0002c4a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3,pcVar9,UTF8Text)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , identifier , identifier ))) ;) (expression_statement "wideaddch(cursor_char);" (call_expression "wideaddch(cursor_char)" identifier (argument_list "(cursor_char)" ( identifier ))) ;) }))) (expression_statement "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3);" (call_expression "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3)" (parenthesized_expression "(*(code *)PTR_wmove_0002c4a8)" ( (pointer_expression "*(code *)PTR_wmove_0002c4a8" * (cast_expression "(code *)PTR_wmove_0002c4a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (labeled_statement "LAB_00015c10:\n  if (local_2c == *(FILE **)puVar4) {\n    return return_char;\n  }" statement_identifier : (if_statement "if (local_2c == *(FILE **)puVar4) {\n    return return_char;\n  }" if (parenthesized_expression "(local_2c == *(FILE **)puVar4)" ( (binary_expression "local_2c == *(FILE **)puVar4" identifier == (pointer_expression "*(FILE **)puVar4" * (cast_expression "(FILE **)puVar4" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return return_char;\n  }" { (return_statement "return return_char;" return identifier ;) }))) (expression_statement "script = local_2c;" (assignment_expression "script = local_2c" identifier = identifier) ;) (expression_statement "puVar13 = PTR___stack_chk_fail_0002c440;" (assignment_expression "puVar13 = PTR___stack_chk_fail_0002c440" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0002c440)();" (call_expression "(*(code *)PTR___stack_chk_fail_0002c440)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0002c440)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0002c440" * (cast_expression "(code *)PTR___stack_chk_fail_0002c440" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar12 = *(int **)(puVar13 + 0x16540);" (assignment_expression "piVar12 = *(int **)(puVar13 + 0x16540)" identifier = (pointer_expression "*(int **)(puVar13 + 0x16540)" * (cast_expression "(int **)(puVar13 + 0x16540)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x16540)" ( (binary_expression "puVar13 + 0x16540" identifier + number_literal) ))))) ;) (expression_statement "puVar11 = *(undefined4 **)(puVar13 + 0x16604);" (assignment_expression "puVar11 = *(undefined4 **)(puVar13 + 0x16604)" identifier = (pointer_expression "*(undefined4 **)(puVar13 + 0x16604)" * (cast_expression "(undefined4 **)(puVar13 + 0x16604)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x16604)" ( (binary_expression "puVar13 + 0x16604" identifier + number_literal) ))))) ;) (expression_statement "(**(code **)(puVar13 + 0x16680))(*puVar11,*piVar12 + -1,0);" (call_expression "(**(code **)(puVar13 + 0x16680))(*puVar11,*piVar12 + -1,0)" (parenthesized_expression "(**(code **)(puVar13 + 0x16680))" ( (pointer_expression "**(code **)(puVar13 + 0x16680)" * (pointer_expression "*(code **)(puVar13 + 0x16680)" * (cast_expression "(code **)(puVar13 + 0x16680)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x16680)" ( (binary_expression "puVar13 + 0x16680" identifier + number_literal) ))))) )) (argument_list "(*puVar11,*piVar12 + -1,0)" ( (pointer_expression "*puVar11" * identifier) , (binary_expression "*piVar12 + -1" (pointer_expression "*piVar12" * identifier) + number_literal) , number_literal ))) ;) (expression_statement "(**(code **)(puVar13 + 0x16530))(*puVar11);" (call_expression "(**(code **)(puVar13 + 0x16530))(*puVar11)" (parenthesized_expression "(**(code **)(puVar13 + 0x16530))" ( (pointer_expression "**(code **)(puVar13 + 0x16530)" * (pointer_expression "*(code **)(puVar13 + 0x16530)" * (cast_expression "(code **)(puVar13 + 0x16530)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x16530)" ( (binary_expression "puVar13 + 0x16530" identifier + number_literal) ))))) )) (argument_list "(*puVar11)" ( (pointer_expression "*puVar11" * identifier) ))) ;) (expression_statement "uVar10 = *puVar11;" (assignment_expression "uVar10 = *puVar11" identifier = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "iVar8 = *piVar12;" (assignment_expression "iVar8 = *piVar12" identifier = (pointer_expression "*piVar12" * identifier)) ;) (expression_statement "iVar7 = **(int **)(puVar13 + 0x16590);" (assignment_expression "iVar7 = **(int **)(puVar13 + 0x16590)" identifier = (pointer_expression "**(int **)(puVar13 + 0x16590)" * (pointer_expression "*(int **)(puVar13 + 0x16590)" * (cast_expression "(int **)(puVar13 + 0x16590)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x16590)" ( (binary_expression "puVar13 + 0x16590" identifier + number_literal) )))))) ;) (expression_statement "iVar6 = utf8len(UTF8Text);" (assignment_expression "iVar6 = utf8len(UTF8Text)" identifier = (call_expression "utf8len(UTF8Text)" identifier (argument_list "(UTF8Text)" ( identifier )))) ;) (expression_statement "(**(code **)(puVar13 + 0x16680))(uVar10,iVar8 + -1,(iVar7 - iVar6) + -2);" (call_expression "(**(code **)(puVar13 + 0x16680))(uVar10,iVar8 + -1,(iVar7 - iVar6) + -2)" (parenthesized_expression "(**(code **)(puVar13 + 0x16680))" ( (pointer_expression "**(code **)(puVar13 + 0x16680)" * (pointer_expression "*(code **)(puVar13 + 0x16680)" * (cast_expression "(code **)(puVar13 + 0x16680)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x16680)" ( (binary_expression "puVar13 + 0x16680" identifier + number_literal) ))))) )) (argument_list "(uVar10,iVar8 + -1,(iVar7 - iVar6) + -2)" ( identifier , (binary_expression "iVar8 + -1" identifier + number_literal) , (binary_expression "(iVar7 - iVar6) + -2" (parenthesized_expression "(iVar7 - iVar6)" ( (binary_expression "iVar7 - iVar6" identifier - identifier) )) + number_literal) ))) ;) (expression_statement "wideaddstr_rev(UTF8Text);" (call_expression "wideaddstr_rev(UTF8Text)" identifier (argument_list "(UTF8Text)" ( identifier ))) ;) (expression_statement "(**(code **)(puVar13 + 0x16680))(*puVar11,*piVar12 + -1,0);" (call_expression "(**(code **)(puVar13 + 0x16680))(*puVar11,*piVar12 + -1,0)" (parenthesized_expression "(**(code **)(puVar13 + 0x16680))" ( (pointer_expression "**(code **)(puVar13 + 0x16680)" * (pointer_expression "*(code **)(puVar13 + 0x16680)" * (cast_expression "(code **)(puVar13 + 0x16680)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x16680)" ( (binary_expression "puVar13 + 0x16680" identifier + number_literal) ))))) )) (argument_list "(*puVar11,*piVar12 + -1,0)" ( (pointer_expression "*puVar11" * identifier) , (binary_expression "*piVar12 + -1" (pointer_expression "*piVar12" * identifier) + number_literal) , number_literal ))) ;) (expression_statement "wideaddstr_rev(pcVar9);" (call_expression "wideaddstr_rev(pcVar9)" identifier (argument_list "(pcVar9)" ( identifier ))) ;) (do_statement "do {\n    iVar6 = getch_fl(0);\n    if (iVar6 == 0x1b) {\n      iVar6 = 0;\n      if ((char *)**(int **)(puVar13 + 0x16430) == UTF8Text) {\n        pcVar9 = *(char **)(*(int *)(puVar13 + 0x16400) + -0x3aa0);\n        if ((pcVar9 == (char *)0x0) || (*pcVar9 == '\0')) {\n          iVar6 = 0;\n          do_exit(script);\n        }\n        else {\n          iVar6 = 1;\n          seek_label(script,pcVar9,(char *)0x0);\n        }\n      }\n      goto LAB_00015f58;\n    }\n  } while ((iVar6 != 10) && (iVar6 != 0x20));" do (compound_statement "{\n    iVar6 = getch_fl(0);\n    if (iVar6 == 0x1b) {\n      iVar6 = 0;\n      if ((char *)**(int **)(puVar13 + 0x16430) == UTF8Text) {\n        pcVar9 = *(char **)(*(int *)(puVar13 + 0x16400) + -0x3aa0);\n        if ((pcVar9 == (char *)0x0) || (*pcVar9 == '\0')) {\n          iVar6 = 0;\n          do_exit(script);\n        }\n        else {\n          iVar6 = 1;\n          seek_label(script,pcVar9,(char *)0x0);\n        }\n      }\n      goto LAB_00015f58;\n    }\n  }" { (expression_statement "iVar6 = getch_fl(0);" (assignment_expression "iVar6 = getch_fl(0)" identifier = (call_expression "getch_fl(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (if_statement "if (iVar6 == 0x1b) {\n      iVar6 = 0;\n      if ((char *)**(int **)(puVar13 + 0x16430) == UTF8Text) {\n        pcVar9 = *(char **)(*(int *)(puVar13 + 0x16400) + -0x3aa0);\n        if ((pcVar9 == (char *)0x0) || (*pcVar9 == '\0')) {\n          iVar6 = 0;\n          do_exit(script);\n        }\n        else {\n          iVar6 = 1;\n          seek_label(script,pcVar9,(char *)0x0);\n        }\n      }\n      goto LAB_00015f58;\n    }" if (parenthesized_expression "(iVar6 == 0x1b)" ( (binary_expression "iVar6 == 0x1b" identifier == number_literal) )) (compound_statement "{\n      iVar6 = 0;\n      if ((char *)**(int **)(puVar13 + 0x16430) == UTF8Text) {\n        pcVar9 = *(char **)(*(int *)(puVar13 + 0x16400) + -0x3aa0);\n        if ((pcVar9 == (char *)0x0) || (*pcVar9 == '\0')) {\n          iVar6 = 0;\n          do_exit(script);\n        }\n        else {\n          iVar6 = 1;\n          seek_label(script,pcVar9,(char *)0x0);\n        }\n      }\n      goto LAB_00015f58;\n    }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (if_statement "if ((char *)**(int **)(puVar13 + 0x16430) == UTF8Text) {\n        pcVar9 = *(char **)(*(int *)(puVar13 + 0x16400) + -0x3aa0);\n        if ((pcVar9 == (char *)0x0) || (*pcVar9 == '\0')) {\n          iVar6 = 0;\n          do_exit(script);\n        }\n        else {\n          iVar6 = 1;\n          seek_label(script,pcVar9,(char *)0x0);\n        }\n      }" if (parenthesized_expression "((char *)**(int **)(puVar13 + 0x16430) == UTF8Text)" ( (binary_expression "(char *)**(int **)(puVar13 + 0x16430) == UTF8Text" (cast_expression "(char *)**(int **)(puVar13 + 0x16430)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(int **)(puVar13 + 0x16430)" * (pointer_expression "*(int **)(puVar13 + 0x16430)" * (cast_expression "(int **)(puVar13 + 0x16430)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x16430)" ( (binary_expression "puVar13 + 0x16430" identifier + number_literal) )))))) == identifier) )) (compound_statement "{\n        pcVar9 = *(char **)(*(int *)(puVar13 + 0x16400) + -0x3aa0);\n        if ((pcVar9 == (char *)0x0) || (*pcVar9 == '\0')) {\n          iVar6 = 0;\n          do_exit(script);\n        }\n        else {\n          iVar6 = 1;\n          seek_label(script,pcVar9,(char *)0x0);\n        }\n      }" { (expression_statement "pcVar9 = *(char **)(*(int *)(puVar13 + 0x16400) + -0x3aa0);" (assignment_expression "pcVar9 = *(char **)(*(int *)(puVar13 + 0x16400) + -0x3aa0)" identifier = (pointer_expression "*(char **)(*(int *)(puVar13 + 0x16400) + -0x3aa0)" * (cast_expression "(char **)(*(int *)(puVar13 + 0x16400) + -0x3aa0)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar13 + 0x16400) + -0x3aa0)" ( (binary_expression "*(int *)(puVar13 + 0x16400) + -0x3aa0" (pointer_expression "*(int *)(puVar13 + 0x16400)" * (cast_expression "(int *)(puVar13 + 0x16400)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 0x16400)" ( (binary_expression "puVar13 + 0x16400" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if ((pcVar9 == (char *)0x0) || (*pcVar9 == '\0')) {\n          iVar6 = 0;\n          do_exit(script);\n        }\n        else {\n          iVar6 = 1;\n          seek_label(script,pcVar9,(char *)0x0);\n        }" if (parenthesized_expression "((pcVar9 == (char *)0x0) || (*pcVar9 == '\0'))" ( (binary_expression "(pcVar9 == (char *)0x0) || (*pcVar9 == '\0')" (parenthesized_expression "(pcVar9 == (char *)0x0)" ( (binary_expression "pcVar9 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(*pcVar9 == '\0')" ( (binary_expression "*pcVar9 == '\0'" (pointer_expression "*pcVar9" * identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n          iVar6 = 0;\n          do_exit(script);\n        }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "do_exit(script);" (call_expression "do_exit(script)" identifier (argument_list "(script)" ( identifier ))) ;) }) (else_clause "else {\n          iVar6 = 1;\n          seek_label(script,pcVar9,(char *)0x0);\n        }" else (compound_statement "{\n          iVar6 = 1;\n          seek_label(script,pcVar9,(char *)0x0);\n        }" { (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (expression_statement "seek_label(script,pcVar9,(char *)0x0);" (call_expression "seek_label(script,pcVar9,(char *)0x0)" identifier (argument_list "(script,pcVar9,(char *)0x0)" ( identifier , identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) }))) })) (goto_statement "goto LAB_00015f58;" goto statement_identifier ;) })) }) while (parenthesized_expression "((iVar6 != 10) && (iVar6 != 0x20))" ( (binary_expression "(iVar6 != 10) && (iVar6 != 0x20)" (parenthesized_expression "(iVar6 != 10)" ( (binary_expression "iVar6 != 10" identifier != number_literal) )) && (parenthesized_expression "(iVar6 != 0x20)" ( (binary_expression "iVar6 != 0x20" identifier != number_literal) ))) )) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00015f58:\n  (**(code **)(puVar13 + 0x16680))(*puVar11,*piVar12 + -1,0);" statement_identifier : (expression_statement "(**(code **)(puVar13 + 0x16680))(*puVar11,*piVar12 + -1,0);" (call_expression "(**(code **)(puVar13 + 0x16680))(*puVar11,*piVar12 + -1,0)" (parenthesized_expression "(**(code **)(puVar13 + 0x16680))" ( (pointer_expression "**(code **)(puVar13 + 0x16680)" * (pointer_expression "*(code **)(puVar13 + 0x16680)" * (cast_expression "(code **)(puVar13 + 0x16680)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x16680)" ( (binary_expression "puVar13 + 0x16680" identifier + number_literal) ))))) )) (argument_list "(*puVar11,*piVar12 + -1,0)" ( (pointer_expression "*puVar11" * identifier) , (binary_expression "*piVar12 + -1" (pointer_expression "*piVar12" * identifier) + number_literal) , number_literal ))) ;)) (expression_statement "(**(code **)(puVar13 + 0x16530))(*puVar11);" (call_expression "(**(code **)(puVar13 + 0x16530))(*puVar11)" (parenthesized_expression "(**(code **)(puVar13 + 0x16530))" ( (pointer_expression "**(code **)(puVar13 + 0x16530)" * (pointer_expression "*(code **)(puVar13 + 0x16530)" * (cast_expression "(code **)(puVar13 + 0x16530)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x16530)" ( (binary_expression "puVar13 + 0x16530" identifier + number_literal) ))))) )) (argument_list "(*puVar11)" ( (pointer_expression "*puVar11" * identifier) ))) ;) (return_statement "return iVar6;" return identifier ;) })))
(translation_unit "undefined4 FUN_00015b34(int param_1,int param_2,int param_3)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  short *psVar5;\n  int iVar6;\n  int iVar7;\n  char *pcVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  int iVar13;\n  undefined4 *puVar14;\n  int *piVar15;\n  undefined *puVar16;\n  undefined4 local_30;\n  int local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_0002c460;\n  puVar3 = PTR_stdscr_0002c42c;\n  puVar2 = PTR_COLS_0002c3b8;\n  puVar16 = PTR_LINES_0002c368;\n  local_2c = *(int *)PTR___stack_chk_guard_0002c460;\n  psVar5 = *(short **)PTR_stdscr_0002c42c;\n  iVar11 = -1;\n  if (psVar5 == (short *)0x0) {\n    iVar13 = -1;\n  }\n  else {\n    iVar11 = (int)*psVar5;\n    iVar13 = (int)psVar5[1];\n  }\n  if (param_1 == 0) {\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)\n              (*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)\n    ;\n    (*(code *)PTR_cbreak_0002c3cc)();\n    get_widech(&local_30);\n  }\n  else {\n    if (PTR_DAT_0002c228[-0x3a73] != '\0') {\n      (*(code *)PTR_curs_set_0002c47c)(1);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n      (*(code *)PTR_curs_set_0002c47c)(0);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      iVar11 = param_2;\n      iVar13 = param_3;\n      goto LAB_00015c10;\n    }\n    wideaddch_rev(param_1);\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n    if (*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2) {\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n    }\n    else {\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }\n    }\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n    wideaddch(param_1);\n  }\n  (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11);\nLAB_00015c10:\n  if (local_2c == *(int *)puVar4) {\n    return local_30;\n  }\n  iVar6 = local_2c;\n  puVar16 = PTR___stack_chk_fail_0002c440;\n  (*(code *)PTR___stack_chk_fail_0002c440)();\n  piVar15 = *(int **)(puVar16 + 0x16540);\n  puVar14 = *(undefined4 **)(puVar16 + 0x16604);\n  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);\n  (**(code **)(puVar16 + 0x16530))(*puVar14);\n  uVar12 = *puVar14;\n  iVar10 = *piVar15;\n  iVar9 = **(int **)(puVar16 + 0x16590);\n  iVar7 = utf8len(iVar13);\n  (**(code **)(puVar16 + 0x16680))(uVar12,iVar10 + -1,(iVar9 - iVar7) + -2);\n  wideaddstr_rev(iVar13);\n  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);\n  wideaddstr_rev(iVar11);\n  do {\n    iVar11 = FUN_00015b34(0);\n    if (iVar11 == 0x1b) {\n      uVar12 = 0;\n      if (**(int **)(puVar16 + 0x16430) == iVar13) {\n        pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0);\n        if ((pcVar8 == (char *)0x0) || (*pcVar8 == '\0')) {\n          uVar12 = 0;\n          do_exit(iVar6);\n        }\n        else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }\n      }\n      goto LAB_00015f58;\n    }\n  } while ((iVar11 != 10) && (iVar11 != 0x20));\n  uVar12 = 0;\nLAB_00015f58:\n  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);\n  (**(code **)(puVar16 + 0x16530))(*puVar14);\n  return uVar12;\n}\n\n" (function_definition "undefined4 FUN_00015b34(int param_1,int param_2,int param_3)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  short *psVar5;\n  int iVar6;\n  int iVar7;\n  char *pcVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  int iVar13;\n  undefined4 *puVar14;\n  int *piVar15;\n  undefined *puVar16;\n  undefined4 local_30;\n  int local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_0002c460;\n  puVar3 = PTR_stdscr_0002c42c;\n  puVar2 = PTR_COLS_0002c3b8;\n  puVar16 = PTR_LINES_0002c368;\n  local_2c = *(int *)PTR___stack_chk_guard_0002c460;\n  psVar5 = *(short **)PTR_stdscr_0002c42c;\n  iVar11 = -1;\n  if (psVar5 == (short *)0x0) {\n    iVar13 = -1;\n  }\n  else {\n    iVar11 = (int)*psVar5;\n    iVar13 = (int)psVar5[1];\n  }\n  if (param_1 == 0) {\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)\n              (*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)\n    ;\n    (*(code *)PTR_cbreak_0002c3cc)();\n    get_widech(&local_30);\n  }\n  else {\n    if (PTR_DAT_0002c228[-0x3a73] != '\0') {\n      (*(code *)PTR_curs_set_0002c47c)(1);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n      (*(code *)PTR_curs_set_0002c47c)(0);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      iVar11 = param_2;\n      iVar13 = param_3;\n      goto LAB_00015c10;\n    }\n    wideaddch_rev(param_1);\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n    if (*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2) {\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n    }\n    else {\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }\n    }\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n    wideaddch(param_1);\n  }\n  (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11);\nLAB_00015c10:\n  if (local_2c == *(int *)puVar4) {\n    return local_30;\n  }\n  iVar6 = local_2c;\n  puVar16 = PTR___stack_chk_fail_0002c440;\n  (*(code *)PTR___stack_chk_fail_0002c440)();\n  piVar15 = *(int **)(puVar16 + 0x16540);\n  puVar14 = *(undefined4 **)(puVar16 + 0x16604);\n  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);\n  (**(code **)(puVar16 + 0x16530))(*puVar14);\n  uVar12 = *puVar14;\n  iVar10 = *piVar15;\n  iVar9 = **(int **)(puVar16 + 0x16590);\n  iVar7 = utf8len(iVar13);\n  (**(code **)(puVar16 + 0x16680))(uVar12,iVar10 + -1,(iVar9 - iVar7) + -2);\n  wideaddstr_rev(iVar13);\n  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);\n  wideaddstr_rev(iVar11);\n  do {\n    iVar11 = FUN_00015b34(0);\n    if (iVar11 == 0x1b) {\n      uVar12 = 0;\n      if (**(int **)(puVar16 + 0x16430) == iVar13) {\n        pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0);\n        if ((pcVar8 == (char *)0x0) || (*pcVar8 == '\0')) {\n          uVar12 = 0;\n          do_exit(iVar6);\n        }\n        else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }\n      }\n      goto LAB_00015f58;\n    }\n  } while ((iVar11 != 10) && (iVar11 != 0x20));\n  uVar12 = 0;\nLAB_00015f58:\n  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);\n  (**(code **)(puVar16 + 0x16530))(*puVar14);\n  return uVar12;\n}" type_identifier (function_declarator "FUN_00015b34(int param_1,int param_2,int param_3)" identifier (parameter_list "(int param_1,int param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  short *psVar5;\n  int iVar6;\n  int iVar7;\n  char *pcVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  int iVar13;\n  undefined4 *puVar14;\n  int *piVar15;\n  undefined *puVar16;\n  undefined4 local_30;\n  int local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_0002c460;\n  puVar3 = PTR_stdscr_0002c42c;\n  puVar2 = PTR_COLS_0002c3b8;\n  puVar16 = PTR_LINES_0002c368;\n  local_2c = *(int *)PTR___stack_chk_guard_0002c460;\n  psVar5 = *(short **)PTR_stdscr_0002c42c;\n  iVar11 = -1;\n  if (psVar5 == (short *)0x0) {\n    iVar13 = -1;\n  }\n  else {\n    iVar11 = (int)*psVar5;\n    iVar13 = (int)psVar5[1];\n  }\n  if (param_1 == 0) {\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)\n              (*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)\n    ;\n    (*(code *)PTR_cbreak_0002c3cc)();\n    get_widech(&local_30);\n  }\n  else {\n    if (PTR_DAT_0002c228[-0x3a73] != '\0') {\n      (*(code *)PTR_curs_set_0002c47c)(1);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n      (*(code *)PTR_curs_set_0002c47c)(0);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      iVar11 = param_2;\n      iVar13 = param_3;\n      goto LAB_00015c10;\n    }\n    wideaddch_rev(param_1);\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n    if (*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2) {\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n    }\n    else {\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }\n    }\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n    wideaddch(param_1);\n  }\n  (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11);\nLAB_00015c10:\n  if (local_2c == *(int *)puVar4) {\n    return local_30;\n  }\n  iVar6 = local_2c;\n  puVar16 = PTR___stack_chk_fail_0002c440;\n  (*(code *)PTR___stack_chk_fail_0002c440)();\n  piVar15 = *(int **)(puVar16 + 0x16540);\n  puVar14 = *(undefined4 **)(puVar16 + 0x16604);\n  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);\n  (**(code **)(puVar16 + 0x16530))(*puVar14);\n  uVar12 = *puVar14;\n  iVar10 = *piVar15;\n  iVar9 = **(int **)(puVar16 + 0x16590);\n  iVar7 = utf8len(iVar13);\n  (**(code **)(puVar16 + 0x16680))(uVar12,iVar10 + -1,(iVar9 - iVar7) + -2);\n  wideaddstr_rev(iVar13);\n  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);\n  wideaddstr_rev(iVar11);\n  do {\n    iVar11 = FUN_00015b34(0);\n    if (iVar11 == 0x1b) {\n      uVar12 = 0;\n      if (**(int **)(puVar16 + 0x16430) == iVar13) {\n        pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0);\n        if ((pcVar8 == (char *)0x0) || (*pcVar8 == '\0')) {\n          uVar12 = 0;\n          do_exit(iVar6);\n        }\n        else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }\n      }\n      goto LAB_00015f58;\n    }\n  } while ((iVar11 != 10) && (iVar11 != 0x20));\n  uVar12 = 0;\nLAB_00015f58:\n  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);\n  (**(code **)(puVar16 + 0x16530))(*puVar14);\n  return uVar12;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "short *psVar5;" (sized_type_specifier "short" short) (pointer_declarator "*psVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "undefined4 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "undefined *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar4 = PTR___stack_chk_guard_0002c460;" (assignment_expression "puVar4 = PTR___stack_chk_guard_0002c460" identifier = identifier) ;) (expression_statement "puVar3 = PTR_stdscr_0002c42c;" (assignment_expression "puVar3 = PTR_stdscr_0002c42c" identifier = identifier) ;) (expression_statement "puVar2 = PTR_COLS_0002c3b8;" (assignment_expression "puVar2 = PTR_COLS_0002c3b8" identifier = identifier) ;) (expression_statement "puVar16 = PTR_LINES_0002c368;" (assignment_expression "puVar16 = PTR_LINES_0002c368" identifier = identifier) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0002c460;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0002c460" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0002c460" * (cast_expression "(int *)PTR___stack_chk_guard_0002c460" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "psVar5 = *(short **)PTR_stdscr_0002c42c;" (assignment_expression "psVar5 = *(short **)PTR_stdscr_0002c42c" identifier = (pointer_expression "*(short **)PTR_stdscr_0002c42c" * (cast_expression "(short **)PTR_stdscr_0002c42c" ( (type_descriptor "short **" (sized_type_specifier "short" short) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "iVar11 = -1;" (assignment_expression "iVar11 = -1" identifier = number_literal) ;) (if_statement "if (psVar5 == (short *)0x0) {\n    iVar13 = -1;\n  }\n  else {\n    iVar11 = (int)*psVar5;\n    iVar13 = (int)psVar5[1];\n  }" if (parenthesized_expression "(psVar5 == (short *)0x0)" ( (binary_expression "psVar5 == (short *)0x0" identifier == (cast_expression "(short *)0x0" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar13 = -1;\n  }" { (expression_statement "iVar13 = -1;" (assignment_expression "iVar13 = -1" identifier = number_literal) ;) }) (else_clause "else {\n    iVar11 = (int)*psVar5;\n    iVar13 = (int)psVar5[1];\n  }" else (compound_statement "{\n    iVar11 = (int)*psVar5;\n    iVar13 = (int)psVar5[1];\n  }" { (expression_statement "iVar11 = (int)*psVar5;" (assignment_expression "iVar11 = (int)*psVar5" identifier = (cast_expression "(int)*psVar5" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*psVar5" * identifier))) ;) (expression_statement "iVar13 = (int)psVar5[1];" (assignment_expression "iVar13 = (int)psVar5[1]" identifier = (cast_expression "(int)psVar5[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "psVar5[1]" identifier [ number_literal ]))) ;) }))) (if_statement "if (param_1 == 0) {\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)\n              (*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)\n    ;\n    (*(code *)PTR_cbreak_0002c3cc)();\n    get_widech(&local_30);\n  }\n  else {\n    if (PTR_DAT_0002c228[-0x3a73] != '\0') {\n      (*(code *)PTR_curs_set_0002c47c)(1);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n      (*(code *)PTR_curs_set_0002c47c)(0);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      iVar11 = param_2;\n      iVar13 = param_3;\n      goto LAB_00015c10;\n    }\n    wideaddch_rev(param_1);\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n    if (*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2) {\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n    }\n    else {\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }\n    }\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n    wideaddch(param_1);\n  }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)\n              (*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)\n    ;\n    (*(code *)PTR_cbreak_0002c3cc)();\n    get_widech(&local_30);\n  }" { (expression_statement "(*(code *)PTR_curs_set_0002c47c)(0);" (call_expression "(*(code *)PTR_curs_set_0002c47c)(0)" (parenthesized_expression "(*(code *)PTR_curs_set_0002c47c)" ( (pointer_expression "*(code *)PTR_curs_set_0002c47c" * (cast_expression "(code *)PTR_curs_set_0002c47c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0)" ( number_literal ))) ;) (expression_statement "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);" (call_expression "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3)" (parenthesized_expression "(*(code *)PTR_wrefresh_0002c41c)" ( (pointer_expression "*(code *)PTR_wrefresh_0002c41c" * (cast_expression "(code *)PTR_wrefresh_0002c41c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (expression_statement "(*(code *)PTR_wmove_0002c4a8)\n              (*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)\n    ;" (call_expression "(*(code *)PTR_wmove_0002c4a8)\n              (*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)" (parenthesized_expression "(*(code *)PTR_wmove_0002c4a8)" ( (pointer_expression "*(code *)PTR_wmove_0002c4a8" * (cast_expression "(code *)PTR_wmove_0002c4a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (binary_expression "*(int *)PTR_LINES_0002c368 + -1" (pointer_expression "*(int *)PTR_LINES_0002c368" * (cast_expression "(int *)PTR_LINES_0002c368" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) , (binary_expression "*(int *)PTR_COLS_0002c3b8 + -1" (pointer_expression "*(int *)PTR_COLS_0002c3b8" * (cast_expression "(int *)PTR_COLS_0002c3b8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))) ;) (expression_statement "(*(code *)PTR_cbreak_0002c3cc)();" (call_expression "(*(code *)PTR_cbreak_0002c3cc)()" (parenthesized_expression "(*(code *)PTR_cbreak_0002c3cc)" ( (pointer_expression "*(code *)PTR_cbreak_0002c3cc" * (cast_expression "(code *)PTR_cbreak_0002c3cc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "get_widech(&local_30);" (call_expression "get_widech(&local_30)" identifier (argument_list "(&local_30)" ( (pointer_expression "&local_30" & identifier) ))) ;) }) (else_clause "else {\n    if (PTR_DAT_0002c228[-0x3a73] != '\0') {\n      (*(code *)PTR_curs_set_0002c47c)(1);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n      (*(code *)PTR_curs_set_0002c47c)(0);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      iVar11 = param_2;\n      iVar13 = param_3;\n      goto LAB_00015c10;\n    }\n    wideaddch_rev(param_1);\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n    if (*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2) {\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n    }\n    else {\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }\n    }\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n    wideaddch(param_1);\n  }" else (compound_statement "{\n    if (PTR_DAT_0002c228[-0x3a73] != '\0') {\n      (*(code *)PTR_curs_set_0002c47c)(1);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n      (*(code *)PTR_curs_set_0002c47c)(0);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      iVar11 = param_2;\n      iVar13 = param_3;\n      goto LAB_00015c10;\n    }\n    wideaddch_rev(param_1);\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n    if (*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2) {\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n    }\n    else {\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }\n    }\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n    wideaddch(param_1);\n  }" { (if_statement "if (PTR_DAT_0002c228[-0x3a73] != '\0') {\n      (*(code *)PTR_curs_set_0002c47c)(1);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n      (*(code *)PTR_curs_set_0002c47c)(0);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      iVar11 = param_2;\n      iVar13 = param_3;\n      goto LAB_00015c10;\n    }" if (parenthesized_expression "(PTR_DAT_0002c228[-0x3a73] != '\0')" ( (binary_expression "PTR_DAT_0002c228[-0x3a73] != '\0'" (subscript_expression "PTR_DAT_0002c228[-0x3a73]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      (*(code *)PTR_curs_set_0002c47c)(1);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n      (*(code *)PTR_curs_set_0002c47c)(0);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      iVar11 = param_2;\n      iVar13 = param_3;\n      goto LAB_00015c10;\n    }" { (expression_statement "(*(code *)PTR_curs_set_0002c47c)(1);" (call_expression "(*(code *)PTR_curs_set_0002c47c)(1)" (parenthesized_expression "(*(code *)PTR_curs_set_0002c47c)" ( (pointer_expression "*(code *)PTR_curs_set_0002c47c" * (cast_expression "(code *)PTR_curs_set_0002c47c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(1)" ( number_literal ))) ;) (expression_statement "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);" (call_expression "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3)" (parenthesized_expression "(*(code *)PTR_wrefresh_0002c41c)" ( (pointer_expression "*(code *)PTR_wrefresh_0002c41c" * (cast_expression "(code *)PTR_wrefresh_0002c41c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (expression_statement "(*(code *)PTR_cbreak_0002c3cc)();" (call_expression "(*(code *)PTR_cbreak_0002c3cc)()" (parenthesized_expression "(*(code *)PTR_cbreak_0002c3cc)" ( (pointer_expression "*(code *)PTR_cbreak_0002c3cc" * (cast_expression "(code *)PTR_cbreak_0002c3cc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "get_widech(&local_30);" (call_expression "get_widech(&local_30)" identifier (argument_list "(&local_30)" ( (pointer_expression "&local_30" & identifier) ))) ;) (expression_statement "(*(code *)PTR_curs_set_0002c47c)(0);" (call_expression "(*(code *)PTR_curs_set_0002c47c)(0)" (parenthesized_expression "(*(code *)PTR_curs_set_0002c47c)" ( (pointer_expression "*(code *)PTR_curs_set_0002c47c" * (cast_expression "(code *)PTR_curs_set_0002c47c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0)" ( number_literal ))) ;) (expression_statement "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);" (call_expression "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3)" (parenthesized_expression "(*(code *)PTR_wrefresh_0002c41c)" ( (pointer_expression "*(code *)PTR_wrefresh_0002c41c" * (cast_expression "(code *)PTR_wrefresh_0002c41c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (expression_statement "iVar11 = param_2;" (assignment_expression "iVar11 = param_2" identifier = identifier) ;) (expression_statement "iVar13 = param_3;" (assignment_expression "iVar13 = param_3" identifier = identifier) ;) (goto_statement "goto LAB_00015c10;" goto statement_identifier ;) })) (expression_statement "wideaddch_rev(param_1);" (call_expression "wideaddch_rev(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "(*(code *)PTR_curs_set_0002c47c)(0);" (call_expression "(*(code *)PTR_curs_set_0002c47c)(0)" (parenthesized_expression "(*(code *)PTR_curs_set_0002c47c)" ( (pointer_expression "*(code *)PTR_curs_set_0002c47c" * (cast_expression "(code *)PTR_curs_set_0002c47c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0)" ( number_literal ))) ;) (expression_statement "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);" (call_expression "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3)" (parenthesized_expression "(*(code *)PTR_wrefresh_0002c41c)" ( (pointer_expression "*(code *)PTR_wrefresh_0002c41c" * (cast_expression "(code *)PTR_wrefresh_0002c41c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (expression_statement "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);" (call_expression "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1)" (parenthesized_expression "(*(code *)PTR_wmove_0002c4a8)" ( (pointer_expression "*(code *)PTR_wmove_0002c4a8" * (cast_expression "(code *)PTR_wmove_0002c4a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (binary_expression "*(int *)puVar16 + -1" (pointer_expression "*(int *)puVar16" * (cast_expression "(int *)puVar16" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) , (binary_expression "*(int *)puVar2 + -1" (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))) ;) (if_statement "if (*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2) {\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n    }\n    else {\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }\n    }" if (parenthesized_expression "(*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2)" ( (binary_expression "*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2" (pointer_expression "*(int *)(PTR_DAT_0002c228 + -0x3f50)" * (cast_expression "(int *)(PTR_DAT_0002c228 + -0x3f50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0002c228 + -0x3f50)" ( (binary_expression "PTR_DAT_0002c228 + -0x3f50" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n    }" { (expression_statement "(*(code *)PTR_cbreak_0002c3cc)();" (call_expression "(*(code *)PTR_cbreak_0002c3cc)()" (parenthesized_expression "(*(code *)PTR_cbreak_0002c3cc)" ( (pointer_expression "*(code *)PTR_cbreak_0002c3cc" * (cast_expression "(code *)PTR_cbreak_0002c3cc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "get_widech(&local_30);" (call_expression "get_widech(&local_30)" identifier (argument_list "(&local_30)" ( (pointer_expression "&local_30" & identifier) ))) ;) }) (else_clause "else {\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }\n    }" else (compound_statement "{\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }\n    }" { (expression_statement "(*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);" (call_expression "(*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1)" (parenthesized_expression "(*(code *)PTR_halfdelay_0002c490)" ( (pointer_expression "*(code *)PTR_halfdelay_0002c490" * (cast_expression "(code *)PTR_halfdelay_0002c490" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1)" ( (binary_expression "*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1" (pointer_expression "*(int *)(PTR_DAT_0002c228 + -0x3f50)" * (cast_expression "(int *)(PTR_DAT_0002c228 + -0x3f50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0002c228 + -0x3f50)" ( (binary_expression "PTR_DAT_0002c228 + -0x3f50" identifier + number_literal) )))) >> number_literal) ))) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (while_statement "while( true ) {\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }" { (expression_statement "iVar6 = get_widech(&local_30);" (assignment_expression "iVar6 = get_widech(&local_30)" identifier = (call_expression "get_widech(&local_30)" identifier (argument_list "(&local_30)" ( (pointer_expression "&local_30" & identifier) )))) ;) (if_statement "if (iVar6 != -1) break;" if (parenthesized_expression "(iVar6 != -1)" ( (binary_expression "iVar6 != -1" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);" (call_expression "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13)" (parenthesized_expression "(*(code *)PTR_wmove_0002c4a8)" ( (pointer_expression "*(code *)PTR_wmove_0002c4a8" * (cast_expression "(code *)PTR_wmove_0002c4a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3,iVar11,iVar13)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , identifier , identifier ))) ;) (if_statement "if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n          wideaddch_rev(param_1);\n        }" { (expression_statement "wideaddch_rev(param_1);" (call_expression "wideaddch_rev(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) }) (else_clause "else {\n          wideaddch(param_1);\n        }" else (compound_statement "{\n          wideaddch(param_1);\n        }" { (expression_statement "wideaddch(param_1);" (call_expression "wideaddch(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) }))) (expression_statement "bVar1 = (bool)(bVar1 ^ 1);" (assignment_expression "bVar1 = (bool)(bVar1 ^ 1)" identifier = (cast_expression "(bool)(bVar1 ^ 1)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(bVar1 ^ 1)" ( (binary_expression "bVar1 ^ 1" identifier ^ number_literal) )))) ;) (expression_statement "(*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);" (call_expression "(*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1)" (parenthesized_expression "(*(code *)PTR_wmove_0002c4a8)" ( (pointer_expression "*(code *)PTR_wmove_0002c4a8" * (cast_expression "(code *)PTR_wmove_0002c4a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (binary_expression "*(int *)puVar16 + -1" (pointer_expression "*(int *)puVar16" * (cast_expression "(int *)puVar16" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) , (binary_expression "*(int *)puVar2 + -1" (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))) ;) })) }))) (expression_statement "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);" (call_expression "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13)" (parenthesized_expression "(*(code *)PTR_wmove_0002c4a8)" ( (pointer_expression "*(code *)PTR_wmove_0002c4a8" * (cast_expression "(code *)PTR_wmove_0002c4a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3,iVar11,iVar13)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , identifier , identifier ))) ;) (expression_statement "wideaddch(param_1);" (call_expression "wideaddch(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) }))) (expression_statement "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11);" (call_expression "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11)" (parenthesized_expression "(*(code *)PTR_wmove_0002c4a8)" ( (pointer_expression "*(code *)PTR_wmove_0002c4a8" * (cast_expression "(code *)PTR_wmove_0002c4a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)puVar3,iVar11)" ( (pointer_expression "*(undefined4 *)puVar3" * (cast_expression "(undefined4 *)puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , identifier ))) ;) (labeled_statement "LAB_00015c10:\n  if (local_2c == *(int *)puVar4) {\n    return local_30;\n  }" statement_identifier : (if_statement "if (local_2c == *(int *)puVar4) {\n    return local_30;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar4)" ( (binary_expression "local_2c == *(int *)puVar4" identifier == (pointer_expression "*(int *)puVar4" * (cast_expression "(int *)puVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return local_30;\n  }" { (return_statement "return local_30;" return identifier ;) }))) (expression_statement "iVar6 = local_2c;" (assignment_expression "iVar6 = local_2c" identifier = identifier) ;) (expression_statement "puVar16 = PTR___stack_chk_fail_0002c440;" (assignment_expression "puVar16 = PTR___stack_chk_fail_0002c440" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0002c440)();" (call_expression "(*(code *)PTR___stack_chk_fail_0002c440)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0002c440)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0002c440" * (cast_expression "(code *)PTR___stack_chk_fail_0002c440" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar15 = *(int **)(puVar16 + 0x16540);" (assignment_expression "piVar15 = *(int **)(puVar16 + 0x16540)" identifier = (pointer_expression "*(int **)(puVar16 + 0x16540)" * (cast_expression "(int **)(puVar16 + 0x16540)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x16540)" ( (binary_expression "puVar16 + 0x16540" identifier + number_literal) ))))) ;) (expression_statement "puVar14 = *(undefined4 **)(puVar16 + 0x16604);" (assignment_expression "puVar14 = *(undefined4 **)(puVar16 + 0x16604)" identifier = (pointer_expression "*(undefined4 **)(puVar16 + 0x16604)" * (cast_expression "(undefined4 **)(puVar16 + 0x16604)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x16604)" ( (binary_expression "puVar16 + 0x16604" identifier + number_literal) ))))) ;) (expression_statement "(**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);" (call_expression "(**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0)" (parenthesized_expression "(**(code **)(puVar16 + 0x16680))" ( (pointer_expression "**(code **)(puVar16 + 0x16680)" * (pointer_expression "*(code **)(puVar16 + 0x16680)" * (cast_expression "(code **)(puVar16 + 0x16680)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x16680)" ( (binary_expression "puVar16 + 0x16680" identifier + number_literal) ))))) )) (argument_list "(*puVar14,*piVar15 + -1,0)" ( (pointer_expression "*puVar14" * identifier) , (binary_expression "*piVar15 + -1" (pointer_expression "*piVar15" * identifier) + number_literal) , number_literal ))) ;) (expression_statement "(**(code **)(puVar16 + 0x16530))(*puVar14);" (call_expression "(**(code **)(puVar16 + 0x16530))(*puVar14)" (parenthesized_expression "(**(code **)(puVar16 + 0x16530))" ( (pointer_expression "**(code **)(puVar16 + 0x16530)" * (pointer_expression "*(code **)(puVar16 + 0x16530)" * (cast_expression "(code **)(puVar16 + 0x16530)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x16530)" ( (binary_expression "puVar16 + 0x16530" identifier + number_literal) ))))) )) (argument_list "(*puVar14)" ( (pointer_expression "*puVar14" * identifier) ))) ;) (expression_statement "uVar12 = *puVar14;" (assignment_expression "uVar12 = *puVar14" identifier = (pointer_expression "*puVar14" * identifier)) ;) (expression_statement "iVar10 = *piVar15;" (assignment_expression "iVar10 = *piVar15" identifier = (pointer_expression "*piVar15" * identifier)) ;) (expression_statement "iVar9 = **(int **)(puVar16 + 0x16590);" (assignment_expression "iVar9 = **(int **)(puVar16 + 0x16590)" identifier = (pointer_expression "**(int **)(puVar16 + 0x16590)" * (pointer_expression "*(int **)(puVar16 + 0x16590)" * (cast_expression "(int **)(puVar16 + 0x16590)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x16590)" ( (binary_expression "puVar16 + 0x16590" identifier + number_literal) )))))) ;) (expression_statement "iVar7 = utf8len(iVar13);" (assignment_expression "iVar7 = utf8len(iVar13)" identifier = (call_expression "utf8len(iVar13)" identifier (argument_list "(iVar13)" ( identifier )))) ;) (expression_statement "(**(code **)(puVar16 + 0x16680))(uVar12,iVar10 + -1,(iVar9 - iVar7) + -2);" (call_expression "(**(code **)(puVar16 + 0x16680))(uVar12,iVar10 + -1,(iVar9 - iVar7) + -2)" (parenthesized_expression "(**(code **)(puVar16 + 0x16680))" ( (pointer_expression "**(code **)(puVar16 + 0x16680)" * (pointer_expression "*(code **)(puVar16 + 0x16680)" * (cast_expression "(code **)(puVar16 + 0x16680)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x16680)" ( (binary_expression "puVar16 + 0x16680" identifier + number_literal) ))))) )) (argument_list "(uVar12,iVar10 + -1,(iVar9 - iVar7) + -2)" ( identifier , (binary_expression "iVar10 + -1" identifier + number_literal) , (binary_expression "(iVar9 - iVar7) + -2" (parenthesized_expression "(iVar9 - iVar7)" ( (binary_expression "iVar9 - iVar7" identifier - identifier) )) + number_literal) ))) ;) (expression_statement "wideaddstr_rev(iVar13);" (call_expression "wideaddstr_rev(iVar13)" identifier (argument_list "(iVar13)" ( identifier ))) ;) (expression_statement "(**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);" (call_expression "(**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0)" (parenthesized_expression "(**(code **)(puVar16 + 0x16680))" ( (pointer_expression "**(code **)(puVar16 + 0x16680)" * (pointer_expression "*(code **)(puVar16 + 0x16680)" * (cast_expression "(code **)(puVar16 + 0x16680)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x16680)" ( (binary_expression "puVar16 + 0x16680" identifier + number_literal) ))))) )) (argument_list "(*puVar14,*piVar15 + -1,0)" ( (pointer_expression "*puVar14" * identifier) , (binary_expression "*piVar15 + -1" (pointer_expression "*piVar15" * identifier) + number_literal) , number_literal ))) ;) (expression_statement "wideaddstr_rev(iVar11);" (call_expression "wideaddstr_rev(iVar11)" identifier (argument_list "(iVar11)" ( identifier ))) ;) (do_statement "do {\n    iVar11 = FUN_00015b34(0);\n    if (iVar11 == 0x1b) {\n      uVar12 = 0;\n      if (**(int **)(puVar16 + 0x16430) == iVar13) {\n        pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0);\n        if ((pcVar8 == (char *)0x0) || (*pcVar8 == '\0')) {\n          uVar12 = 0;\n          do_exit(iVar6);\n        }\n        else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }\n      }\n      goto LAB_00015f58;\n    }\n  } while ((iVar11 != 10) && (iVar11 != 0x20));" do (compound_statement "{\n    iVar11 = FUN_00015b34(0);\n    if (iVar11 == 0x1b) {\n      uVar12 = 0;\n      if (**(int **)(puVar16 + 0x16430) == iVar13) {\n        pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0);\n        if ((pcVar8 == (char *)0x0) || (*pcVar8 == '\0')) {\n          uVar12 = 0;\n          do_exit(iVar6);\n        }\n        else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }\n      }\n      goto LAB_00015f58;\n    }\n  }" { (expression_statement "iVar11 = FUN_00015b34(0);" (assignment_expression "iVar11 = FUN_00015b34(0)" identifier = (call_expression "FUN_00015b34(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (if_statement "if (iVar11 == 0x1b) {\n      uVar12 = 0;\n      if (**(int **)(puVar16 + 0x16430) == iVar13) {\n        pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0);\n        if ((pcVar8 == (char *)0x0) || (*pcVar8 == '\0')) {\n          uVar12 = 0;\n          do_exit(iVar6);\n        }\n        else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }\n      }\n      goto LAB_00015f58;\n    }" if (parenthesized_expression "(iVar11 == 0x1b)" ( (binary_expression "iVar11 == 0x1b" identifier == number_literal) )) (compound_statement "{\n      uVar12 = 0;\n      if (**(int **)(puVar16 + 0x16430) == iVar13) {\n        pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0);\n        if ((pcVar8 == (char *)0x0) || (*pcVar8 == '\0')) {\n          uVar12 = 0;\n          do_exit(iVar6);\n        }\n        else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }\n      }\n      goto LAB_00015f58;\n    }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (if_statement "if (**(int **)(puVar16 + 0x16430) == iVar13) {\n        pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0);\n        if ((pcVar8 == (char *)0x0) || (*pcVar8 == '\0')) {\n          uVar12 = 0;\n          do_exit(iVar6);\n        }\n        else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }\n      }" if (parenthesized_expression "(**(int **)(puVar16 + 0x16430) == iVar13)" ( (binary_expression "**(int **)(puVar16 + 0x16430) == iVar13" (pointer_expression "**(int **)(puVar16 + 0x16430)" * (pointer_expression "*(int **)(puVar16 + 0x16430)" * (cast_expression "(int **)(puVar16 + 0x16430)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x16430)" ( (binary_expression "puVar16 + 0x16430" identifier + number_literal) ))))) == identifier) )) (compound_statement "{\n        pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0);\n        if ((pcVar8 == (char *)0x0) || (*pcVar8 == '\0')) {\n          uVar12 = 0;\n          do_exit(iVar6);\n        }\n        else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }\n      }" { (expression_statement "pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0);" (assignment_expression "pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0)" identifier = (pointer_expression "*(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0)" * (cast_expression "(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar16 + 0x16400) + -0x3aa0)" ( (binary_expression "*(int *)(puVar16 + 0x16400) + -0x3aa0" (pointer_expression "*(int *)(puVar16 + 0x16400)" * (cast_expression "(int *)(puVar16 + 0x16400)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x16400)" ( (binary_expression "puVar16 + 0x16400" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if ((pcVar8 == (char *)0x0) || (*pcVar8 == '\0')) {\n          uVar12 = 0;\n          do_exit(iVar6);\n        }\n        else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }" if (parenthesized_expression "((pcVar8 == (char *)0x0) || (*pcVar8 == '\0'))" ( (binary_expression "(pcVar8 == (char *)0x0) || (*pcVar8 == '\0')" (parenthesized_expression "(pcVar8 == (char *)0x0)" ( (binary_expression "pcVar8 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(*pcVar8 == '\0')" ( (binary_expression "*pcVar8 == '\0'" (pointer_expression "*pcVar8" * identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n          uVar12 = 0;\n          do_exit(iVar6);\n        }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "do_exit(iVar6);" (call_expression "do_exit(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))) ;) }) (else_clause "else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }" else (compound_statement "{\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }" { (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" identifier = number_literal) ;) (expression_statement "seek_label(iVar6,pcVar8,0);" (call_expression "seek_label(iVar6,pcVar8,0)" identifier (argument_list "(iVar6,pcVar8,0)" ( identifier , identifier , number_literal ))) ;) }))) })) (goto_statement "goto LAB_00015f58;" goto statement_identifier ;) })) }) while (parenthesized_expression "((iVar11 != 10) && (iVar11 != 0x20))" ( (binary_expression "(iVar11 != 10) && (iVar11 != 0x20)" (parenthesized_expression "(iVar11 != 10)" ( (binary_expression "iVar11 != 10" identifier != number_literal) )) && (parenthesized_expression "(iVar11 != 0x20)" ( (binary_expression "iVar11 != 0x20" identifier != number_literal) ))) )) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00015f58:\n  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);" statement_identifier : (expression_statement "(**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);" (call_expression "(**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0)" (parenthesized_expression "(**(code **)(puVar16 + 0x16680))" ( (pointer_expression "**(code **)(puVar16 + 0x16680)" * (pointer_expression "*(code **)(puVar16 + 0x16680)" * (cast_expression "(code **)(puVar16 + 0x16680)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x16680)" ( (binary_expression "puVar16 + 0x16680" identifier + number_literal) ))))) )) (argument_list "(*puVar14,*piVar15 + -1,0)" ( (pointer_expression "*puVar14" * identifier) , (binary_expression "*piVar15 + -1" (pointer_expression "*piVar15" * identifier) + number_literal) , number_literal ))) ;)) (expression_statement "(**(code **)(puVar16 + 0x16530))(*puVar14);" (call_expression "(**(code **)(puVar16 + 0x16530))(*puVar14)" (parenthesized_expression "(**(code **)(puVar16 + 0x16530))" ( (pointer_expression "**(code **)(puVar16 + 0x16530)" * (pointer_expression "*(code **)(puVar16 + 0x16530)" * (cast_expression "(code **)(puVar16 + 0x16530)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x16530)" ( (binary_expression "puVar16 + 0x16530" identifier + number_literal) ))))) )) (argument_list "(*puVar14)" ( (pointer_expression "*puVar14" * identifier) ))) ;) (return_statement "return uVar12;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier short) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT) ))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT ^ LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))) ;) })) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , IDENT ))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * IDENT) , (binary_expression (pointer_expression * IDENT) + LIT) , LIT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) , (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) + LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * IDENT) , (binary_expression (pointer_expression * IDENT) + LIT) , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) }))) })) (goto_statement goto statement_identifier ;) })) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * IDENT) , (binary_expression (pointer_expression * IDENT) + LIT) , LIT ))) ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * IDENT) ))) ;) (return_statement return IDENT ;) })))
(function_definition "undefined4 FUN_00015b34(int param_1,int param_2,int param_3)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  short *psVar5;\n  int iVar6;\n  int iVar7;\n  char *pcVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  int iVar13;\n  undefined4 *puVar14;\n  int *piVar15;\n  undefined *puVar16;\n  undefined4 local_30;\n  int local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_0002c460;\n  puVar3 = PTR_stdscr_0002c42c;\n  puVar2 = PTR_COLS_0002c3b8;\n  puVar16 = PTR_LINES_0002c368;\n  local_2c = *(int *)PTR___stack_chk_guard_0002c460;\n  psVar5 = *(short **)PTR_stdscr_0002c42c;\n  iVar11 = -1;\n  if (psVar5 == (short *)0x0) {\n    iVar13 = -1;\n  }\n  else {\n    iVar11 = (int)*psVar5;\n    iVar13 = (int)psVar5[1];\n  }\n  if (param_1 == 0) {\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)\n              (*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)\n    ;\n    (*(code *)PTR_cbreak_0002c3cc)();\n    get_widech(&local_30);\n  }\n  else {\n    if (PTR_DAT_0002c228[-0x3a73] != '\0') {\n      (*(code *)PTR_curs_set_0002c47c)(1);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n      (*(code *)PTR_curs_set_0002c47c)(0);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      iVar11 = param_2;\n      iVar13 = param_3;\n      goto LAB_00015c10;\n    }\n    wideaddch_rev(param_1);\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n    if (*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2) {\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n    }\n    else {\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }\n    }\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n    wideaddch(param_1);\n  }\n  (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11);\nLAB_00015c10:\n  if (local_2c == *(int *)puVar4) {\n    return local_30;\n  }\n  iVar6 = local_2c;\n  puVar16 = PTR___stack_chk_fail_0002c440;\n  (*(code *)PTR___stack_chk_fail_0002c440)();\n  piVar15 = *(int **)(puVar16 + 0x16540);\n  puVar14 = *(undefined4 **)(puVar16 + 0x16604);\n  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);\n  (**(code **)(puVar16 + 0x16530))(*puVar14);\n  uVar12 = *puVar14;\n  iVar10 = *piVar15;\n  iVar9 = **(int **)(puVar16 + 0x16590);\n  iVar7 = utf8len(iVar13);\n  (**(code **)(puVar16 + 0x16680))(uVar12,iVar10 + -1,(iVar9 - iVar7) + -2);\n  wideaddstr_rev(iVar13);\n  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);\n  wideaddstr_rev(iVar11);\n  do {\n    iVar11 = FUN_00015b34(0);\n    if (iVar11 == 0x1b) {\n      uVar12 = 0;\n      if (**(int **)(puVar16 + 0x16430) == iVar13) {\n        pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0);\n        if ((pcVar8 == (char *)0x0) || (*pcVar8 == '\0')) {\n          uVar12 = 0;\n          do_exit(iVar6);\n        }\n        else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }\n      }\n      goto LAB_00015f58;\n    }\n  } while ((iVar11 != 10) && (iVar11 != 0x20));\n  uVar12 = 0;\nLAB_00015f58:\n  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);\n  (**(code **)(puVar16 + 0x16530))(*puVar14);\n  return uVar12;\n}" (type_identifier "undefined4") (function_declarator "FUN_00015b34(int param_1,int param_2,int param_3)" (identifier "FUN_00015b34") (parameter_list "(int param_1,int param_2,int param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  bool bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  short *psVar5;\n  int iVar6;\n  int iVar7;\n  char *pcVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  undefined4 uVar12;\n  int iVar13;\n  undefined4 *puVar14;\n  int *piVar15;\n  undefined *puVar16;\n  undefined4 local_30;\n  int local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_0002c460;\n  puVar3 = PTR_stdscr_0002c42c;\n  puVar2 = PTR_COLS_0002c3b8;\n  puVar16 = PTR_LINES_0002c368;\n  local_2c = *(int *)PTR___stack_chk_guard_0002c460;\n  psVar5 = *(short **)PTR_stdscr_0002c42c;\n  iVar11 = -1;\n  if (psVar5 == (short *)0x0) {\n    iVar13 = -1;\n  }\n  else {\n    iVar11 = (int)*psVar5;\n    iVar13 = (int)psVar5[1];\n  }\n  if (param_1 == 0) {\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)\n              (*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)\n    ;\n    (*(code *)PTR_cbreak_0002c3cc)();\n    get_widech(&local_30);\n  }\n  else {\n    if (PTR_DAT_0002c228[-0x3a73] != '\0') {\n      (*(code *)PTR_curs_set_0002c47c)(1);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n      (*(code *)PTR_curs_set_0002c47c)(0);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      iVar11 = param_2;\n      iVar13 = param_3;\n      goto LAB_00015c10;\n    }\n    wideaddch_rev(param_1);\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n    if (*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2) {\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n    }\n    else {\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }\n    }\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n    wideaddch(param_1);\n  }\n  (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11);\nLAB_00015c10:\n  if (local_2c == *(int *)puVar4) {\n    return local_30;\n  }\n  iVar6 = local_2c;\n  puVar16 = PTR___stack_chk_fail_0002c440;\n  (*(code *)PTR___stack_chk_fail_0002c440)();\n  piVar15 = *(int **)(puVar16 + 0x16540);\n  puVar14 = *(undefined4 **)(puVar16 + 0x16604);\n  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);\n  (**(code **)(puVar16 + 0x16530))(*puVar14);\n  uVar12 = *puVar14;\n  iVar10 = *piVar15;\n  iVar9 = **(int **)(puVar16 + 0x16590);\n  iVar7 = utf8len(iVar13);\n  (**(code **)(puVar16 + 0x16680))(uVar12,iVar10 + -1,(iVar9 - iVar7) + -2);\n  wideaddstr_rev(iVar13);\n  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);\n  wideaddstr_rev(iVar11);\n  do {\n    iVar11 = FUN_00015b34(0);\n    if (iVar11 == 0x1b) {\n      uVar12 = 0;\n      if (**(int **)(puVar16 + 0x16430) == iVar13) {\n        pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0);\n        if ((pcVar8 == (char *)0x0) || (*pcVar8 == '\0')) {\n          uVar12 = 0;\n          do_exit(iVar6);\n        }\n        else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }\n      }\n      goto LAB_00015f58;\n    }\n  } while ((iVar11 != 10) && (iVar11 != 0x20));\n  uVar12 = 0;\nLAB_00015f58:\n  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);\n  (**(code **)(puVar16 + 0x16530))(*puVar14);\n  return uVar12;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined *puVar4;" (type_identifier "undefined") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "short *psVar5;" (sized_type_specifier "short" (short "short")) (pointer_declarator "*psVar5" (* "*") (identifier "psVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "char *pcVar8;" (primitive_type "char") (pointer_declarator "*pcVar8" (* "*") (identifier "pcVar8")) (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "undefined4 uVar12;" (type_identifier "undefined4") (identifier "uVar12") (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "undefined4 *puVar14;" (type_identifier "undefined4") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "int *piVar15;" (primitive_type "int") (pointer_declarator "*piVar15" (* "*") (identifier "piVar15")) (; ";")) (declaration "undefined *puVar16;" (type_identifier "undefined") (pointer_declarator "*puVar16" (* "*") (identifier "puVar16")) (; ";")) (declaration "undefined4 local_30;" (type_identifier "undefined4") (identifier "local_30") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (expression_statement "puVar4 = PTR___stack_chk_guard_0002c460;" (assignment_expression "puVar4 = PTR___stack_chk_guard_0002c460" (identifier "puVar4") (= "=") (identifier "PTR___stack_chk_guard_0002c460")) (; ";")) (expression_statement "puVar3 = PTR_stdscr_0002c42c;" (assignment_expression "puVar3 = PTR_stdscr_0002c42c" (identifier "puVar3") (= "=") (identifier "PTR_stdscr_0002c42c")) (; ";")) (expression_statement "puVar2 = PTR_COLS_0002c3b8;" (assignment_expression "puVar2 = PTR_COLS_0002c3b8" (identifier "puVar2") (= "=") (identifier "PTR_COLS_0002c3b8")) (; ";")) (expression_statement "puVar16 = PTR_LINES_0002c368;" (assignment_expression "puVar16 = PTR_LINES_0002c368" (identifier "puVar16") (= "=") (identifier "PTR_LINES_0002c368")) (; ";")) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0002c460;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0002c460" (identifier "local_2c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_0002c460" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_0002c460" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_0002c460")))) (; ";")) (expression_statement "psVar5 = *(short **)PTR_stdscr_0002c42c;" (assignment_expression "psVar5 = *(short **)PTR_stdscr_0002c42c" (identifier "psVar5") (= "=") (pointer_expression "*(short **)PTR_stdscr_0002c42c" (* "*") (cast_expression "(short **)PTR_stdscr_0002c42c" (( "(") (type_descriptor "short **" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR_stdscr_0002c42c")))) (; ";")) (expression_statement "iVar11 = -1;" (assignment_expression "iVar11 = -1" (identifier "iVar11") (= "=") (number_literal "-1")) (; ";")) (if_statement "if (psVar5 == (short *)0x0) {\n    iVar13 = -1;\n  }\n  else {\n    iVar11 = (int)*psVar5;\n    iVar13 = (int)psVar5[1];\n  }" (if "if") (parenthesized_expression "(psVar5 == (short *)0x0)" (( "(") (binary_expression "psVar5 == (short *)0x0" (identifier "psVar5") (== "==") (cast_expression "(short *)0x0" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    iVar13 = -1;\n  }" ({ "{") (expression_statement "iVar13 = -1;" (assignment_expression "iVar13 = -1" (identifier "iVar13") (= "=") (number_literal "-1")) (; ";")) (} "}")) (else_clause "else {\n    iVar11 = (int)*psVar5;\n    iVar13 = (int)psVar5[1];\n  }" (else "else") (compound_statement "{\n    iVar11 = (int)*psVar5;\n    iVar13 = (int)psVar5[1];\n  }" ({ "{") (expression_statement "iVar11 = (int)*psVar5;" (assignment_expression "iVar11 = (int)*psVar5" (identifier "iVar11") (= "=") (cast_expression "(int)*psVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*psVar5" (* "*") (identifier "psVar5")))) (; ";")) (expression_statement "iVar13 = (int)psVar5[1];" (assignment_expression "iVar13 = (int)psVar5[1]" (identifier "iVar13") (= "=") (cast_expression "(int)psVar5[1]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "psVar5[1]" (identifier "psVar5") ([ "[") (number_literal "1") (] "]")))) (; ";")) (} "}")))) (if_statement "if (param_1 == 0) {\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)\n              (*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)\n    ;\n    (*(code *)PTR_cbreak_0002c3cc)();\n    get_widech(&local_30);\n  }\n  else {\n    if (PTR_DAT_0002c228[-0x3a73] != '\0') {\n      (*(code *)PTR_curs_set_0002c47c)(1);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n      (*(code *)PTR_curs_set_0002c47c)(0);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      iVar11 = param_2;\n      iVar13 = param_3;\n      goto LAB_00015c10;\n    }\n    wideaddch_rev(param_1);\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n    if (*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2) {\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n    }\n    else {\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }\n    }\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n    wideaddch(param_1);\n  }" (if "if") (parenthesized_expression "(param_1 == 0)" (( "(") (binary_expression "param_1 == 0" (identifier "param_1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)\n              (*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)\n    ;\n    (*(code *)PTR_cbreak_0002c3cc)();\n    get_widech(&local_30);\n  }" ({ "{") (expression_statement "(*(code *)PTR_curs_set_0002c47c)(0);" (call_expression "(*(code *)PTR_curs_set_0002c47c)(0)" (parenthesized_expression "(*(code *)PTR_curs_set_0002c47c)" (( "(") (pointer_expression "*(code *)PTR_curs_set_0002c47c" (* "*") (cast_expression "(code *)PTR_curs_set_0002c47c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_curs_set_0002c47c"))) () ")")) (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (expression_statement "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);" (call_expression "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3)" (parenthesized_expression "(*(code *)PTR_wrefresh_0002c41c)" (( "(") (pointer_expression "*(code *)PTR_wrefresh_0002c41c" (* "*") (cast_expression "(code *)PTR_wrefresh_0002c41c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_wrefresh_0002c41c"))) () ")")) (argument_list "(*(undefined4 *)puVar3)" (( "(") (pointer_expression "*(undefined4 *)puVar3" (* "*") (cast_expression "(undefined4 *)puVar3" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar3"))) () ")"))) (; ";")) (expression_statement "(*(code *)PTR_wmove_0002c4a8)\n              (*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)\n    ;" (call_expression "(*(code *)PTR_wmove_0002c4a8)\n              (*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)" (parenthesized_expression "(*(code *)PTR_wmove_0002c4a8)" (( "(") (pointer_expression "*(code *)PTR_wmove_0002c4a8" (* "*") (cast_expression "(code *)PTR_wmove_0002c4a8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_wmove_0002c4a8"))) () ")")) (argument_list "(*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)" (( "(") (pointer_expression "*(undefined4 *)puVar3" (* "*") (cast_expression "(undefined4 *)puVar3" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar3"))) (, ",") (binary_expression "*(int *)PTR_LINES_0002c368 + -1" (pointer_expression "*(int *)PTR_LINES_0002c368" (* "*") (cast_expression "(int *)PTR_LINES_0002c368" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_LINES_0002c368"))) (+ "+") (number_literal "-1")) (, ",") (binary_expression "*(int *)PTR_COLS_0002c3b8 + -1" (pointer_expression "*(int *)PTR_COLS_0002c3b8" (* "*") (cast_expression "(int *)PTR_COLS_0002c3b8" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_COLS_0002c3b8"))) (+ "+") (number_literal "-1")) () ")"))) (; ";")) (expression_statement "(*(code *)PTR_cbreak_0002c3cc)();" (call_expression "(*(code *)PTR_cbreak_0002c3cc)()" (parenthesized_expression "(*(code *)PTR_cbreak_0002c3cc)" (( "(") (pointer_expression "*(code *)PTR_cbreak_0002c3cc" (* "*") (cast_expression "(code *)PTR_cbreak_0002c3cc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_cbreak_0002c3cc"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "get_widech(&local_30);" (call_expression "get_widech(&local_30)" (identifier "get_widech") (argument_list "(&local_30)" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) () ")"))) (; ";")) (} "}")) (else_clause "else {\n    if (PTR_DAT_0002c228[-0x3a73] != '\0') {\n      (*(code *)PTR_curs_set_0002c47c)(1);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n      (*(code *)PTR_curs_set_0002c47c)(0);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      iVar11 = param_2;\n      iVar13 = param_3;\n      goto LAB_00015c10;\n    }\n    wideaddch_rev(param_1);\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n    if (*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2) {\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n    }\n    else {\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }\n    }\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n    wideaddch(param_1);\n  }" (else "else") (compound_statement "{\n    if (PTR_DAT_0002c228[-0x3a73] != '\0') {\n      (*(code *)PTR_curs_set_0002c47c)(1);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n      (*(code *)PTR_curs_set_0002c47c)(0);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      iVar11 = param_2;\n      iVar13 = param_3;\n      goto LAB_00015c10;\n    }\n    wideaddch_rev(param_1);\n    (*(code *)PTR_curs_set_0002c47c)(0);\n    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n    if (*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2) {\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n    }\n    else {\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }\n    }\n    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n    wideaddch(param_1);\n  }" ({ "{") (if_statement "if (PTR_DAT_0002c228[-0x3a73] != '\0') {\n      (*(code *)PTR_curs_set_0002c47c)(1);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n      (*(code *)PTR_curs_set_0002c47c)(0);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      iVar11 = param_2;\n      iVar13 = param_3;\n      goto LAB_00015c10;\n    }" (if "if") (parenthesized_expression "(PTR_DAT_0002c228[-0x3a73] != '\0')" (( "(") (binary_expression "PTR_DAT_0002c228[-0x3a73] != '\0'" (subscript_expression "PTR_DAT_0002c228[-0x3a73]" (identifier "PTR_DAT_0002c228") ([ "[") (number_literal "-0x3a73") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      (*(code *)PTR_curs_set_0002c47c)(1);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n      (*(code *)PTR_curs_set_0002c47c)(0);\n      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);\n      iVar11 = param_2;\n      iVar13 = param_3;\n      goto LAB_00015c10;\n    }" ({ "{") (expression_statement "(*(code *)PTR_curs_set_0002c47c)(1);" (call_expression "(*(code *)PTR_curs_set_0002c47c)(1)" (parenthesized_expression "(*(code *)PTR_curs_set_0002c47c)" (( "(") (pointer_expression "*(code *)PTR_curs_set_0002c47c" (* "*") (cast_expression "(code *)PTR_curs_set_0002c47c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_curs_set_0002c47c"))) () ")")) (argument_list "(1)" (( "(") (number_literal "1") () ")"))) (; ";")) (expression_statement "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);" (call_expression "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3)" (parenthesized_expression "(*(code *)PTR_wrefresh_0002c41c)" (( "(") (pointer_expression "*(code *)PTR_wrefresh_0002c41c" (* "*") (cast_expression "(code *)PTR_wrefresh_0002c41c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_wrefresh_0002c41c"))) () ")")) (argument_list "(*(undefined4 *)puVar3)" (( "(") (pointer_expression "*(undefined4 *)puVar3" (* "*") (cast_expression "(undefined4 *)puVar3" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar3"))) () ")"))) (; ";")) (expression_statement "(*(code *)PTR_cbreak_0002c3cc)();" (call_expression "(*(code *)PTR_cbreak_0002c3cc)()" (parenthesized_expression "(*(code *)PTR_cbreak_0002c3cc)" (( "(") (pointer_expression "*(code *)PTR_cbreak_0002c3cc" (* "*") (cast_expression "(code *)PTR_cbreak_0002c3cc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_cbreak_0002c3cc"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "get_widech(&local_30);" (call_expression "get_widech(&local_30)" (identifier "get_widech") (argument_list "(&local_30)" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) () ")"))) (; ";")) (expression_statement "(*(code *)PTR_curs_set_0002c47c)(0);" (call_expression "(*(code *)PTR_curs_set_0002c47c)(0)" (parenthesized_expression "(*(code *)PTR_curs_set_0002c47c)" (( "(") (pointer_expression "*(code *)PTR_curs_set_0002c47c" (* "*") (cast_expression "(code *)PTR_curs_set_0002c47c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_curs_set_0002c47c"))) () ")")) (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (expression_statement "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);" (call_expression "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3)" (parenthesized_expression "(*(code *)PTR_wrefresh_0002c41c)" (( "(") (pointer_expression "*(code *)PTR_wrefresh_0002c41c" (* "*") (cast_expression "(code *)PTR_wrefresh_0002c41c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_wrefresh_0002c41c"))) () ")")) (argument_list "(*(undefined4 *)puVar3)" (( "(") (pointer_expression "*(undefined4 *)puVar3" (* "*") (cast_expression "(undefined4 *)puVar3" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar3"))) () ")"))) (; ";")) (expression_statement "iVar11 = param_2;" (assignment_expression "iVar11 = param_2" (identifier "iVar11") (= "=") (identifier "param_2")) (; ";")) (expression_statement "iVar13 = param_3;" (assignment_expression "iVar13 = param_3" (identifier "iVar13") (= "=") (identifier "param_3")) (; ";")) (goto_statement "goto LAB_00015c10;" (goto "goto") (statement_identifier "LAB_00015c10") (; ";")) (} "}"))) (expression_statement "wideaddch_rev(param_1);" (call_expression "wideaddch_rev(param_1)" (identifier "wideaddch_rev") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "(*(code *)PTR_curs_set_0002c47c)(0);" (call_expression "(*(code *)PTR_curs_set_0002c47c)(0)" (parenthesized_expression "(*(code *)PTR_curs_set_0002c47c)" (( "(") (pointer_expression "*(code *)PTR_curs_set_0002c47c" (* "*") (cast_expression "(code *)PTR_curs_set_0002c47c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_curs_set_0002c47c"))) () ")")) (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (expression_statement "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);" (call_expression "(*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3)" (parenthesized_expression "(*(code *)PTR_wrefresh_0002c41c)" (( "(") (pointer_expression "*(code *)PTR_wrefresh_0002c41c" (* "*") (cast_expression "(code *)PTR_wrefresh_0002c41c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_wrefresh_0002c41c"))) () ")")) (argument_list "(*(undefined4 *)puVar3)" (( "(") (pointer_expression "*(undefined4 *)puVar3" (* "*") (cast_expression "(undefined4 *)puVar3" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar3"))) () ")"))) (; ";")) (expression_statement "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);" (call_expression "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1)" (parenthesized_expression "(*(code *)PTR_wmove_0002c4a8)" (( "(") (pointer_expression "*(code *)PTR_wmove_0002c4a8" (* "*") (cast_expression "(code *)PTR_wmove_0002c4a8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_wmove_0002c4a8"))) () ")")) (argument_list "(*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1)" (( "(") (pointer_expression "*(undefined4 *)puVar3" (* "*") (cast_expression "(undefined4 *)puVar3" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar3"))) (, ",") (binary_expression "*(int *)puVar16 + -1" (pointer_expression "*(int *)puVar16" (* "*") (cast_expression "(int *)puVar16" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar16"))) (+ "+") (number_literal "-1")) (, ",") (binary_expression "*(int *)puVar2 + -1" (pointer_expression "*(int *)puVar2" (* "*") (cast_expression "(int *)puVar2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar2"))) (+ "+") (number_literal "-1")) () ")"))) (; ";")) (if_statement "if (*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2) {\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n    }\n    else {\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }\n    }" (if "if") (parenthesized_expression "(*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2)" (( "(") (binary_expression "*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2" (pointer_expression "*(int *)(PTR_DAT_0002c228 + -0x3f50)" (* "*") (cast_expression "(int *)(PTR_DAT_0002c228 + -0x3f50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0002c228 + -0x3f50)" (( "(") (binary_expression "PTR_DAT_0002c228 + -0x3f50" (identifier "PTR_DAT_0002c228") (+ "+") (number_literal "-0x3f50")) () ")")))) (< "<") (number_literal "2")) () ")")) (compound_statement "{\n      (*(code *)PTR_cbreak_0002c3cc)();\n      get_widech(&local_30);\n    }" ({ "{") (expression_statement "(*(code *)PTR_cbreak_0002c3cc)();" (call_expression "(*(code *)PTR_cbreak_0002c3cc)()" (parenthesized_expression "(*(code *)PTR_cbreak_0002c3cc)" (( "(") (pointer_expression "*(code *)PTR_cbreak_0002c3cc" (* "*") (cast_expression "(code *)PTR_cbreak_0002c3cc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_cbreak_0002c3cc"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "get_widech(&local_30);" (call_expression "get_widech(&local_30)" (identifier "get_widech") (argument_list "(&local_30)" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) () ")"))) (; ";")) (} "}")) (else_clause "else {\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }\n    }" (else "else") (compound_statement "{\n      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);\n      bVar1 = false;\n      while( true ) {\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }\n    }" ({ "{") (expression_statement "(*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);" (call_expression "(*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1)" (parenthesized_expression "(*(code *)PTR_halfdelay_0002c490)" (( "(") (pointer_expression "*(code *)PTR_halfdelay_0002c490" (* "*") (cast_expression "(code *)PTR_halfdelay_0002c490" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_halfdelay_0002c490"))) () ")")) (argument_list "(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1)" (( "(") (binary_expression "*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1" (pointer_expression "*(int *)(PTR_DAT_0002c228 + -0x3f50)" (* "*") (cast_expression "(int *)(PTR_DAT_0002c228 + -0x3f50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0002c228 + -0x3f50)" (( "(") (binary_expression "PTR_DAT_0002c228 + -0x3f50" (identifier "PTR_DAT_0002c228") (+ "+") (number_literal "-0x3f50")) () ")")))) (>> ">>") (number_literal "1")) () ")"))) (; ";")) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" (identifier "bVar1") (= "=") (false "false")) (; ";")) (while_statement "while( true ) {\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        iVar6 = get_widech(&local_30);\n        if (iVar6 != -1) break;\n        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);\n        if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }\n        bVar1 = (bool)(bVar1 ^ 1);\n        (*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);\n      }" ({ "{") (expression_statement "iVar6 = get_widech(&local_30);" (assignment_expression "iVar6 = get_widech(&local_30)" (identifier "iVar6") (= "=") (call_expression "get_widech(&local_30)" (identifier "get_widech") (argument_list "(&local_30)" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) () ")")))) (; ";")) (if_statement "if (iVar6 != -1) break;" (if "if") (parenthesized_expression "(iVar6 != -1)" (( "(") (binary_expression "iVar6 != -1" (identifier "iVar6") (!= "!=") (number_literal "-1")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);" (call_expression "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13)" (parenthesized_expression "(*(code *)PTR_wmove_0002c4a8)" (( "(") (pointer_expression "*(code *)PTR_wmove_0002c4a8" (* "*") (cast_expression "(code *)PTR_wmove_0002c4a8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_wmove_0002c4a8"))) () ")")) (argument_list "(*(undefined4 *)puVar3,iVar11,iVar13)" (( "(") (pointer_expression "*(undefined4 *)puVar3" (* "*") (cast_expression "(undefined4 *)puVar3" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar3"))) (, ",") (identifier "iVar11") (, ",") (identifier "iVar13") () ")"))) (; ";")) (if_statement "if (bVar1) {\n          wideaddch_rev(param_1);\n        }\n        else {\n          wideaddch(param_1);\n        }" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (compound_statement "{\n          wideaddch_rev(param_1);\n        }" ({ "{") (expression_statement "wideaddch_rev(param_1);" (call_expression "wideaddch_rev(param_1)" (identifier "wideaddch_rev") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (} "}")) (else_clause "else {\n          wideaddch(param_1);\n        }" (else "else") (compound_statement "{\n          wideaddch(param_1);\n        }" ({ "{") (expression_statement "wideaddch(param_1);" (call_expression "wideaddch(param_1)" (identifier "wideaddch") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (} "}")))) (expression_statement "bVar1 = (bool)(bVar1 ^ 1);" (assignment_expression "bVar1 = (bool)(bVar1 ^ 1)" (identifier "bVar1") (= "=") (cast_expression "(bool)(bVar1 ^ 1)" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (parenthesized_expression "(bVar1 ^ 1)" (( "(") (binary_expression "bVar1 ^ 1" (identifier "bVar1") (^ "^") (number_literal "1")) () ")")))) (; ";")) (expression_statement "(*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);" (call_expression "(*(code *)PTR_wmove_0002c4a8)\n                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1)" (parenthesized_expression "(*(code *)PTR_wmove_0002c4a8)" (( "(") (pointer_expression "*(code *)PTR_wmove_0002c4a8" (* "*") (cast_expression "(code *)PTR_wmove_0002c4a8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_wmove_0002c4a8"))) () ")")) (argument_list "(*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1)" (( "(") (pointer_expression "*(undefined4 *)puVar3" (* "*") (cast_expression "(undefined4 *)puVar3" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar3"))) (, ",") (binary_expression "*(int *)puVar16 + -1" (pointer_expression "*(int *)puVar16" (* "*") (cast_expression "(int *)puVar16" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar16"))) (+ "+") (number_literal "-1")) (, ",") (binary_expression "*(int *)puVar2 + -1" (pointer_expression "*(int *)puVar2" (* "*") (cast_expression "(int *)puVar2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar2"))) (+ "+") (number_literal "-1")) () ")"))) (; ";")) (} "}"))) (} "}")))) (expression_statement "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);" (call_expression "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13)" (parenthesized_expression "(*(code *)PTR_wmove_0002c4a8)" (( "(") (pointer_expression "*(code *)PTR_wmove_0002c4a8" (* "*") (cast_expression "(code *)PTR_wmove_0002c4a8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_wmove_0002c4a8"))) () ")")) (argument_list "(*(undefined4 *)puVar3,iVar11,iVar13)" (( "(") (pointer_expression "*(undefined4 *)puVar3" (* "*") (cast_expression "(undefined4 *)puVar3" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar3"))) (, ",") (identifier "iVar11") (, ",") (identifier "iVar13") () ")"))) (; ";")) (expression_statement "wideaddch(param_1);" (call_expression "wideaddch(param_1)" (identifier "wideaddch") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (} "}")))) (expression_statement "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11);" (call_expression "(*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11)" (parenthesized_expression "(*(code *)PTR_wmove_0002c4a8)" (( "(") (pointer_expression "*(code *)PTR_wmove_0002c4a8" (* "*") (cast_expression "(code *)PTR_wmove_0002c4a8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_wmove_0002c4a8"))) () ")")) (argument_list "(*(undefined4 *)puVar3,iVar11)" (( "(") (pointer_expression "*(undefined4 *)puVar3" (* "*") (cast_expression "(undefined4 *)puVar3" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar3"))) (, ",") (identifier "iVar11") () ")"))) (; ";")) (labeled_statement "LAB_00015c10:\n  if (local_2c == *(int *)puVar4) {\n    return local_30;\n  }" (statement_identifier "LAB_00015c10") (: ":") (if_statement "if (local_2c == *(int *)puVar4) {\n    return local_30;\n  }" (if "if") (parenthesized_expression "(local_2c == *(int *)puVar4)" (( "(") (binary_expression "local_2c == *(int *)puVar4" (identifier "local_2c") (== "==") (pointer_expression "*(int *)puVar4" (* "*") (cast_expression "(int *)puVar4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar4")))) () ")")) (compound_statement "{\n    return local_30;\n  }" ({ "{") (return_statement "return local_30;" (return "return") (identifier "local_30") (; ";")) (} "}")))) (expression_statement "iVar6 = local_2c;" (assignment_expression "iVar6 = local_2c" (identifier "iVar6") (= "=") (identifier "local_2c")) (; ";")) (expression_statement "puVar16 = PTR___stack_chk_fail_0002c440;" (assignment_expression "puVar16 = PTR___stack_chk_fail_0002c440" (identifier "puVar16") (= "=") (identifier "PTR___stack_chk_fail_0002c440")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_0002c440)();" (call_expression "(*(code *)PTR___stack_chk_fail_0002c440)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0002c440)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_0002c440" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_0002c440" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_0002c440"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar15 = *(int **)(puVar16 + 0x16540);" (assignment_expression "piVar15 = *(int **)(puVar16 + 0x16540)" (identifier "piVar15") (= "=") (pointer_expression "*(int **)(puVar16 + 0x16540)" (* "*") (cast_expression "(int **)(puVar16 + 0x16540)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x16540)" (( "(") (binary_expression "puVar16 + 0x16540" (identifier "puVar16") (+ "+") (number_literal "0x16540")) () ")"))))) (; ";")) (expression_statement "puVar14 = *(undefined4 **)(puVar16 + 0x16604);" (assignment_expression "puVar14 = *(undefined4 **)(puVar16 + 0x16604)" (identifier "puVar14") (= "=") (pointer_expression "*(undefined4 **)(puVar16 + 0x16604)" (* "*") (cast_expression "(undefined4 **)(puVar16 + 0x16604)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x16604)" (( "(") (binary_expression "puVar16 + 0x16604" (identifier "puVar16") (+ "+") (number_literal "0x16604")) () ")"))))) (; ";")) (expression_statement "(**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);" (call_expression "(**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0)" (parenthesized_expression "(**(code **)(puVar16 + 0x16680))" (( "(") (pointer_expression "**(code **)(puVar16 + 0x16680)" (* "*") (pointer_expression "*(code **)(puVar16 + 0x16680)" (* "*") (cast_expression "(code **)(puVar16 + 0x16680)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x16680)" (( "(") (binary_expression "puVar16 + 0x16680" (identifier "puVar16") (+ "+") (number_literal "0x16680")) () ")"))))) () ")")) (argument_list "(*puVar14,*piVar15 + -1,0)" (( "(") (pointer_expression "*puVar14" (* "*") (identifier "puVar14")) (, ",") (binary_expression "*piVar15 + -1" (pointer_expression "*piVar15" (* "*") (identifier "piVar15")) (+ "+") (number_literal "-1")) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "(**(code **)(puVar16 + 0x16530))(*puVar14);" (call_expression "(**(code **)(puVar16 + 0x16530))(*puVar14)" (parenthesized_expression "(**(code **)(puVar16 + 0x16530))" (( "(") (pointer_expression "**(code **)(puVar16 + 0x16530)" (* "*") (pointer_expression "*(code **)(puVar16 + 0x16530)" (* "*") (cast_expression "(code **)(puVar16 + 0x16530)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x16530)" (( "(") (binary_expression "puVar16 + 0x16530" (identifier "puVar16") (+ "+") (number_literal "0x16530")) () ")"))))) () ")")) (argument_list "(*puVar14)" (( "(") (pointer_expression "*puVar14" (* "*") (identifier "puVar14")) () ")"))) (; ";")) (expression_statement "uVar12 = *puVar14;" (assignment_expression "uVar12 = *puVar14" (identifier "uVar12") (= "=") (pointer_expression "*puVar14" (* "*") (identifier "puVar14"))) (; ";")) (expression_statement "iVar10 = *piVar15;" (assignment_expression "iVar10 = *piVar15" (identifier "iVar10") (= "=") (pointer_expression "*piVar15" (* "*") (identifier "piVar15"))) (; ";")) (expression_statement "iVar9 = **(int **)(puVar16 + 0x16590);" (assignment_expression "iVar9 = **(int **)(puVar16 + 0x16590)" (identifier "iVar9") (= "=") (pointer_expression "**(int **)(puVar16 + 0x16590)" (* "*") (pointer_expression "*(int **)(puVar16 + 0x16590)" (* "*") (cast_expression "(int **)(puVar16 + 0x16590)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x16590)" (( "(") (binary_expression "puVar16 + 0x16590" (identifier "puVar16") (+ "+") (number_literal "0x16590")) () ")")))))) (; ";")) (expression_statement "iVar7 = utf8len(iVar13);" (assignment_expression "iVar7 = utf8len(iVar13)" (identifier "iVar7") (= "=") (call_expression "utf8len(iVar13)" (identifier "utf8len") (argument_list "(iVar13)" (( "(") (identifier "iVar13") () ")")))) (; ";")) (expression_statement "(**(code **)(puVar16 + 0x16680))(uVar12,iVar10 + -1,(iVar9 - iVar7) + -2);" (call_expression "(**(code **)(puVar16 + 0x16680))(uVar12,iVar10 + -1,(iVar9 - iVar7) + -2)" (parenthesized_expression "(**(code **)(puVar16 + 0x16680))" (( "(") (pointer_expression "**(code **)(puVar16 + 0x16680)" (* "*") (pointer_expression "*(code **)(puVar16 + 0x16680)" (* "*") (cast_expression "(code **)(puVar16 + 0x16680)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x16680)" (( "(") (binary_expression "puVar16 + 0x16680" (identifier "puVar16") (+ "+") (number_literal "0x16680")) () ")"))))) () ")")) (argument_list "(uVar12,iVar10 + -1,(iVar9 - iVar7) + -2)" (( "(") (identifier "uVar12") (, ",") (binary_expression "iVar10 + -1" (identifier "iVar10") (+ "+") (number_literal "-1")) (, ",") (binary_expression "(iVar9 - iVar7) + -2" (parenthesized_expression "(iVar9 - iVar7)" (( "(") (binary_expression "iVar9 - iVar7" (identifier "iVar9") (- "-") (identifier "iVar7")) () ")")) (+ "+") (number_literal "-2")) () ")"))) (; ";")) (expression_statement "wideaddstr_rev(iVar13);" (call_expression "wideaddstr_rev(iVar13)" (identifier "wideaddstr_rev") (argument_list "(iVar13)" (( "(") (identifier "iVar13") () ")"))) (; ";")) (expression_statement "(**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);" (call_expression "(**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0)" (parenthesized_expression "(**(code **)(puVar16 + 0x16680))" (( "(") (pointer_expression "**(code **)(puVar16 + 0x16680)" (* "*") (pointer_expression "*(code **)(puVar16 + 0x16680)" (* "*") (cast_expression "(code **)(puVar16 + 0x16680)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x16680)" (( "(") (binary_expression "puVar16 + 0x16680" (identifier "puVar16") (+ "+") (number_literal "0x16680")) () ")"))))) () ")")) (argument_list "(*puVar14,*piVar15 + -1,0)" (( "(") (pointer_expression "*puVar14" (* "*") (identifier "puVar14")) (, ",") (binary_expression "*piVar15 + -1" (pointer_expression "*piVar15" (* "*") (identifier "piVar15")) (+ "+") (number_literal "-1")) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "wideaddstr_rev(iVar11);" (call_expression "wideaddstr_rev(iVar11)" (identifier "wideaddstr_rev") (argument_list "(iVar11)" (( "(") (identifier "iVar11") () ")"))) (; ";")) (do_statement "do {\n    iVar11 = FUN_00015b34(0);\n    if (iVar11 == 0x1b) {\n      uVar12 = 0;\n      if (**(int **)(puVar16 + 0x16430) == iVar13) {\n        pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0);\n        if ((pcVar8 == (char *)0x0) || (*pcVar8 == '\0')) {\n          uVar12 = 0;\n          do_exit(iVar6);\n        }\n        else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }\n      }\n      goto LAB_00015f58;\n    }\n  } while ((iVar11 != 10) && (iVar11 != 0x20));" (do "do") (compound_statement "{\n    iVar11 = FUN_00015b34(0);\n    if (iVar11 == 0x1b) {\n      uVar12 = 0;\n      if (**(int **)(puVar16 + 0x16430) == iVar13) {\n        pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0);\n        if ((pcVar8 == (char *)0x0) || (*pcVar8 == '\0')) {\n          uVar12 = 0;\n          do_exit(iVar6);\n        }\n        else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }\n      }\n      goto LAB_00015f58;\n    }\n  }" ({ "{") (expression_statement "iVar11 = FUN_00015b34(0);" (assignment_expression "iVar11 = FUN_00015b34(0)" (identifier "iVar11") (= "=") (call_expression "FUN_00015b34(0)" (identifier "FUN_00015b34") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar11 == 0x1b) {\n      uVar12 = 0;\n      if (**(int **)(puVar16 + 0x16430) == iVar13) {\n        pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0);\n        if ((pcVar8 == (char *)0x0) || (*pcVar8 == '\0')) {\n          uVar12 = 0;\n          do_exit(iVar6);\n        }\n        else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }\n      }\n      goto LAB_00015f58;\n    }" (if "if") (parenthesized_expression "(iVar11 == 0x1b)" (( "(") (binary_expression "iVar11 == 0x1b" (identifier "iVar11") (== "==") (number_literal "0x1b")) () ")")) (compound_statement "{\n      uVar12 = 0;\n      if (**(int **)(puVar16 + 0x16430) == iVar13) {\n        pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0);\n        if ((pcVar8 == (char *)0x0) || (*pcVar8 == '\0')) {\n          uVar12 = 0;\n          do_exit(iVar6);\n        }\n        else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }\n      }\n      goto LAB_00015f58;\n    }" ({ "{") (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (if_statement "if (**(int **)(puVar16 + 0x16430) == iVar13) {\n        pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0);\n        if ((pcVar8 == (char *)0x0) || (*pcVar8 == '\0')) {\n          uVar12 = 0;\n          do_exit(iVar6);\n        }\n        else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }\n      }" (if "if") (parenthesized_expression "(**(int **)(puVar16 + 0x16430) == iVar13)" (( "(") (binary_expression "**(int **)(puVar16 + 0x16430) == iVar13" (pointer_expression "**(int **)(puVar16 + 0x16430)" (* "*") (pointer_expression "*(int **)(puVar16 + 0x16430)" (* "*") (cast_expression "(int **)(puVar16 + 0x16430)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x16430)" (( "(") (binary_expression "puVar16 + 0x16430" (identifier "puVar16") (+ "+") (number_literal "0x16430")) () ")"))))) (== "==") (identifier "iVar13")) () ")")) (compound_statement "{\n        pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0);\n        if ((pcVar8 == (char *)0x0) || (*pcVar8 == '\0')) {\n          uVar12 = 0;\n          do_exit(iVar6);\n        }\n        else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }\n      }" ({ "{") (expression_statement "pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0);" (assignment_expression "pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0)" (identifier "pcVar8") (= "=") (pointer_expression "*(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0)" (* "*") (cast_expression "(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar16 + 0x16400) + -0x3aa0)" (( "(") (binary_expression "*(int *)(puVar16 + 0x16400) + -0x3aa0" (pointer_expression "*(int *)(puVar16 + 0x16400)" (* "*") (cast_expression "(int *)(puVar16 + 0x16400)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x16400)" (( "(") (binary_expression "puVar16 + 0x16400" (identifier "puVar16") (+ "+") (number_literal "0x16400")) () ")")))) (+ "+") (number_literal "-0x3aa0")) () ")"))))) (; ";")) (if_statement "if ((pcVar8 == (char *)0x0) || (*pcVar8 == '\0')) {\n          uVar12 = 0;\n          do_exit(iVar6);\n        }\n        else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }" (if "if") (parenthesized_expression "((pcVar8 == (char *)0x0) || (*pcVar8 == '\0'))" (( "(") (binary_expression "(pcVar8 == (char *)0x0) || (*pcVar8 == '\0')" (parenthesized_expression "(pcVar8 == (char *)0x0)" (( "(") (binary_expression "pcVar8 == (char *)0x0" (identifier "pcVar8") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(*pcVar8 == '\0')" (( "(") (binary_expression "*pcVar8 == '\0'" (pointer_expression "*pcVar8" (* "*") (identifier "pcVar8")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n          uVar12 = 0;\n          do_exit(iVar6);\n        }" ({ "{") (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (expression_statement "do_exit(iVar6);" (call_expression "do_exit(iVar6)" (identifier "do_exit") (argument_list "(iVar6)" (( "(") (identifier "iVar6") () ")"))) (; ";")) (} "}")) (else_clause "else {\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }" (else "else") (compound_statement "{\n          uVar12 = 1;\n          seek_label(iVar6,pcVar8,0);\n        }" ({ "{") (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" (identifier "uVar12") (= "=") (number_literal "1")) (; ";")) (expression_statement "seek_label(iVar6,pcVar8,0);" (call_expression "seek_label(iVar6,pcVar8,0)" (identifier "seek_label") (argument_list "(iVar6,pcVar8,0)" (( "(") (identifier "iVar6") (, ",") (identifier "pcVar8") (, ",") (number_literal "0") () ")"))) (; ";")) (} "}")))) (} "}"))) (goto_statement "goto LAB_00015f58;" (goto "goto") (statement_identifier "LAB_00015f58") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "((iVar11 != 10) && (iVar11 != 0x20))" (( "(") (binary_expression "(iVar11 != 10) && (iVar11 != 0x20)" (parenthesized_expression "(iVar11 != 10)" (( "(") (binary_expression "iVar11 != 10" (identifier "iVar11") (!= "!=") (number_literal "10")) () ")")) (&& "&&") (parenthesized_expression "(iVar11 != 0x20)" (( "(") (binary_expression "iVar11 != 0x20" (identifier "iVar11") (!= "!=") (number_literal "0x20")) () ")"))) () ")")) (; ";")) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00015f58:\n  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);" (statement_identifier "LAB_00015f58") (: ":") (expression_statement "(**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);" (call_expression "(**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0)" (parenthesized_expression "(**(code **)(puVar16 + 0x16680))" (( "(") (pointer_expression "**(code **)(puVar16 + 0x16680)" (* "*") (pointer_expression "*(code **)(puVar16 + 0x16680)" (* "*") (cast_expression "(code **)(puVar16 + 0x16680)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x16680)" (( "(") (binary_expression "puVar16 + 0x16680" (identifier "puVar16") (+ "+") (number_literal "0x16680")) () ")"))))) () ")")) (argument_list "(*puVar14,*piVar15 + -1,0)" (( "(") (pointer_expression "*puVar14" (* "*") (identifier "puVar14")) (, ",") (binary_expression "*piVar15 + -1" (pointer_expression "*piVar15" (* "*") (identifier "piVar15")) (+ "+") (number_literal "-1")) (, ",") (number_literal "0") () ")"))) (; ";"))) (expression_statement "(**(code **)(puVar16 + 0x16530))(*puVar14);" (call_expression "(**(code **)(puVar16 + 0x16530))(*puVar14)" (parenthesized_expression "(**(code **)(puVar16 + 0x16530))" (( "(") (pointer_expression "**(code **)(puVar16 + 0x16530)" (* "*") (pointer_expression "*(code **)(puVar16 + 0x16530)" (* "*") (cast_expression "(code **)(puVar16 + 0x16530)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x16530)" (( "(") (binary_expression "puVar16 + 0x16530" (identifier "puVar16") (+ "+") (number_literal "0x16530")) () ")"))))) () ")")) (argument_list "(*puVar14)" (( "(") (pointer_expression "*puVar14" (* "*") (identifier "puVar14")) () ")"))) (; ";")) (return_statement "return uVar12;" (return "return") (identifier "uVar12") (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal)) (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal)) (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (false))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal)) (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal)))))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) (identifier)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (return_statement (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (identifier)) (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)) (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (identifier)) (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal))))))))) (goto_statement label: (statement_identifier))))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (identifier)) (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)) (number_literal))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (identifier))))) (return_statement (identifier)))))

undefined4 MASKED(int param_1,int param_2,int param_3)

{
  bool bVar1;
  undefined *puVar2;
  undefined *puVar3;
  undefined *puVar4;
  short *psVar5;
  int iVar6;
  int iVar7;
  char *pcVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  undefined4 uVar12;
  int iVar13;
  undefined4 *puVar14;
  int *piVar15;
  undefined *puVar16;
  undefined4 local_30;
  int local_2c;
  
  puVar4 = PTR___stack_chk_guard_0002c460;
  puVar3 = PTR_stdscr_0002c42c;
  puVar2 = PTR_COLS_0002c3b8;
  puVar16 = PTR_LINES_0002c368;
  local_2c = *(int *)PTR___stack_chk_guard_0002c460;
  psVar5 = *(short **)PTR_stdscr_0002c42c;
  iVar11 = -1;
  if (psVar5 == (short *)0x0) {
    iVar13 = -1;
  }
  else {
    iVar11 = (int)*psVar5;
    iVar13 = (int)psVar5[1];
  }
  if (param_1 == 0) {
    (*(code *)PTR_curs_set_0002c47c)(0);
    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);
    (*(code *)PTR_wmove_0002c4a8)
              (*(undefined4 *)puVar3,*(int *)PTR_LINES_0002c368 + -1,*(int *)PTR_COLS_0002c3b8 + -1)
    ;
    (*(code *)PTR_cbreak_0002c3cc)();
    get_widech(&local_30);
  }
  else {
    if (PTR_DAT_0002c228[-0x3a73] != '\0') {
      (*(code *)PTR_curs_set_0002c47c)(1);
      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);
      (*(code *)PTR_cbreak_0002c3cc)();
      get_widech(&local_30);
      (*(code *)PTR_curs_set_0002c47c)(0);
      (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);
      iVar11 = param_2;
      iVar13 = param_3;
      goto LAB_00015c10;
    }
    wideaddch_rev(param_1);
    (*(code *)PTR_curs_set_0002c47c)(0);
    (*(code *)PTR_wrefresh_0002c41c)(*(undefined4 *)puVar3);
    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);
    if (*(int *)(PTR_DAT_0002c228 + -0x3f50) < 2) {
      (*(code *)PTR_cbreak_0002c3cc)();
      get_widech(&local_30);
    }
    else {
      (*(code *)PTR_halfdelay_0002c490)(*(int *)(PTR_DAT_0002c228 + -0x3f50) >> 1);
      bVar1 = false;
      while( true ) {
        iVar6 = get_widech(&local_30);
        if (iVar6 != -1) break;
        (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);
        if (bVar1) {
          wideaddch_rev(param_1);
        }
        else {
          wideaddch(param_1);
        }
        bVar1 = (bool)(bVar1 ^ 1);
        (*(code *)PTR_wmove_0002c4a8)
                  (*(undefined4 *)puVar3,*(int *)puVar16 + -1,*(int *)puVar2 + -1);
      }
    }
    (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11,iVar13);
    wideaddch(param_1);
  }
  (*(code *)PTR_wmove_0002c4a8)(*(undefined4 *)puVar3,iVar11);
LAB_00015c10:
  if (local_2c == *(int *)puVar4) {
    return local_30;
  }
  iVar6 = local_2c;
  puVar16 = PTR___stack_chk_fail_0002c440;
  (*(code *)PTR___stack_chk_fail_0002c440)();
  piVar15 = *(int **)(puVar16 + 0x16540);
  puVar14 = *(undefined4 **)(puVar16 + 0x16604);
  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);
  (**(code **)(puVar16 + 0x16530))(*puVar14);
  uVar12 = *puVar14;
  iVar10 = *piVar15;
  iVar9 = **(int **)(puVar16 + 0x16590);
  iVar7 = utf8len(iVar13);
  (**(code **)(puVar16 + 0x16680))(uVar12,iVar10 + -1,(iVar9 - iVar7) + -2);
  wideaddstr_rev(iVar13);
  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);
  wideaddstr_rev(iVar11);
  do {
    iVar11 = MASKED(0);
    if (iVar11 == 0x1b) {
      uVar12 = 0;
      if (**(int **)(puVar16 + 0x16430) == iVar13) {
        pcVar8 = *(char **)(*(int *)(puVar16 + 0x16400) + -0x3aa0);
        if ((pcVar8 == (char *)0x0) || (*pcVar8 == '\0')) {
          uVar12 = 0;
          do_exit(iVar6);
        }
        else {
          uVar12 = 1;
          seek_label(iVar6,pcVar8,0);
        }
      }
      goto LAB_00015f58;
    }
  } while ((iVar11 != 10) && (iVar11 != 0x20));
  uVar12 = 0;
LAB_00015f58:
  (**(code **)(puVar16 + 0x16680))(*puVar14,*piVar15 + -1,0);
  (**(code **)(puVar16 + 0x16530))(*puVar14);
  return uVar12;
}

