
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

int bc_sqrt(bc_num *num,int scale)

{
  int *piVar1;
  bc_num pbVar2;
  bc_num pbVar3;
  sign sVar4;
  char cVar5;
  int iVar6;
  int iVar7;
  int in_GS_OFFSET;
  int in_stack_ffffffa4;
  bc_num *local_4c;
  int local_48;
  bc_num *local_40;
  bc_num guess;
  bc_num guess1;
  bc_num point5;
  bc_num diff;
  int local_20;
  
  pbVar3 = _zero_;
  pbVar2 = *num;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  sVar4 = pbVar2->n_sign;
  local_48 = scale;
  if (_zero_->n_sign == sVar4) {
    iVar7 = _bc_do_compare(pbVar2,_zero_,1,in_stack_ffffffa4);
    iVar6 = 0;
    if (iVar7 < 0) goto LAB_00017be5;
    if (iVar7 == 0) {
      bc_free_num(num);
      local_40 = &_zero_;
LAB_00017d6d:
      pbVar2 = *local_40;
      piVar1 = &pbVar2->n_refs;
      *piVar1 = *piVar1 + 1;
      *num = pbVar2;
      iVar6 = 1;
      goto LAB_00017be5;
    }
    if (sVar4 == _one_->n_sign) goto LAB_00017c1a;
    if (scale <= pbVar2->n_scale) {
      local_48 = pbVar2->n_scale;
    }
    iVar6 = pbVar3->n_refs;
    if (sVar4 == PLUS) goto LAB_00017d8b;
    pbVar3->n_refs = iVar6 + 3;
    guess = pbVar3;
    guess1 = pbVar3;
    diff = pbVar3;
    point5 = bc_new_num(1,1);
    point5->n_value[1] = '\x05';
LAB_00017c71:
    guess = _one_;
    _one_->n_refs = _one_->n_refs + 1;
    iVar6 = (*num)->n_scale;
  }
  else {
    iVar6 = 0;
    if (sVar4 != PLUS) goto LAB_00017be5;
    if (_one_->n_sign == PLUS) {
LAB_00017c1a:
      local_40 = &_one_;
      iVar6 = _bc_do_compare(pbVar2,_one_,1,in_stack_ffffffa4);
      if (iVar6 == 0) {
        bc_free_num(num);
        goto LAB_00017d6d;
      }
      if (scale <= pbVar2->n_scale) {
        local_48 = pbVar2->n_scale;
      }
      pbVar3->n_refs = pbVar3->n_refs + 3;
      guess = pbVar3;
      guess1 = pbVar3;
      diff = pbVar3;
      point5 = bc_new_num(1,1);
      point5->n_value[1] = '\x05';
      if (iVar6 < 0) goto LAB_00017c71;
    }
    else {
      iVar6 = _zero_->n_refs;
LAB_00017d8b:
      local_48 = scale;
      if (scale <= pbVar2->n_scale) {
        local_48 = pbVar2->n_scale;
      }
      pbVar3->n_refs = iVar6 + 3;
      guess = pbVar3;
      guess1 = pbVar3;
      diff = pbVar3;
      point5 = bc_new_num(1,1);
      point5->n_value[1] = '\x05';
    }
    iVar6 = 3;
    bc_int2num(&guess,10);
    bc_int2num(&guess1,(*num)->n_len);
    bc_multiply(guess1,point5,&guess1,0);
    guess1->n_scale = 0;
    bc_raise(guess,guess1,&guess,0);
    bc_free_num(&guess1);
  }
  local_4c = &guess1;
  iVar7 = iVar6 + 1;
  while( true ) {
    do {
      bc_free_num(local_4c);
      guess->n_refs = guess->n_refs + 1;
      guess1 = guess;
      bc_divide(*num,guess,&guess,iVar6);
      bc_add(guess,guess1,&guess,0);
      bc_multiply(guess,point5,&guess,iVar6);
      bc_sub(guess,guess1,&diff,iVar7);
      cVar5 = bc_is_near_zero(diff,iVar6);
    } while (cVar5 == '\0');
    if (local_48 < iVar6) break;
    iVar6 = iVar6 * 3;
    if (local_48 + 1 <= iVar6) {
      iVar6 = local_48 + 1;
    }
    iVar7 = iVar6 + 1;
  }
  bc_free_num(num);
  bc_divide(guess,_one_,num,local_48);
  bc_free_num(&guess);
  bc_free_num(local_4c);
  bc_free_num(&point5);
  bc_free_num(&diff);
  iVar6 = 1;
LAB_00017be5:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return iVar6;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

undefined4 FUN_00017ba0(int *param_1,int param_2)

{
  int *piVar1;
  int *piVar2;
  char cVar3;
  undefined4 uVar4;
  int iVar5;
  int iVar6;
  int in_GS_OFFSET;
  int **local_4c;
  int local_48;
  int *local_40;
  int *local_30;
  int *local_2c;
  int local_28;
  int *local_24;
  int local_20;
  
  piVar2 = DAT_0001e484;
  piVar1 = (int *)*param_1;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  iVar5 = *piVar1;
  local_48 = param_2;
  if (*DAT_0001e484 == iVar5) {
    iVar6 = FUN_000157c0();
    uVar4 = 0;
    if (iVar6 < 0) goto LAB_00017be5;
    if (iVar6 == 0) {
      FUN_00015e30(param_1);
      local_40 = (int *)&DAT_0001e484;
LAB_00017d6d:
      iVar5 = *local_40;
      piVar1 = (int *)(iVar5 + 0xc);
      *piVar1 = *piVar1 + 1;
      *param_1 = iVar5;
      uVar4 = 1;
      goto LAB_00017be5;
    }
    if (iVar5 == *DAT_0001e47c) goto LAB_00017c1a;
    if (param_2 <= piVar1[2]) {
      local_48 = piVar1[2];
    }
    iVar6 = piVar2[3];
    if (iVar5 == 0) goto LAB_00017d8b;
    piVar2[3] = iVar6 + 3;
    local_30 = piVar2;
    local_2c = piVar2;
    local_24 = piVar2;
    local_28 = FUN_000158f0(1,1);
    *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;
LAB_00017c71:
    local_30 = DAT_0001e47c;
    DAT_0001e47c[3] = DAT_0001e47c[3] + 1;
    iVar5 = *(int *)(*param_1 + 8);
  }
  else {
    uVar4 = 0;
    if (iVar5 != 0) goto LAB_00017be5;
    if (*DAT_0001e47c == 0) {
LAB_00017c1a:
      local_40 = (int *)&DAT_0001e47c;
      iVar5 = FUN_000157c0();
      if (iVar5 == 0) {
        FUN_00015e30(param_1);
        goto LAB_00017d6d;
      }
      if (param_2 <= piVar1[2]) {
        local_48 = piVar1[2];
      }
      piVar2[3] = piVar2[3] + 3;
      local_30 = piVar2;
      local_2c = piVar2;
      local_24 = piVar2;
      local_28 = FUN_000158f0(1,1);
      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;
      if (iVar5 < 0) goto LAB_00017c71;
    }
    else {
      iVar6 = DAT_0001e484[3];
LAB_00017d8b:
      local_48 = param_2;
      if (param_2 <= piVar1[2]) {
        local_48 = piVar1[2];
      }
      piVar2[3] = iVar6 + 3;
      local_30 = piVar2;
      local_2c = piVar2;
      local_24 = piVar2;
      local_28 = FUN_000158f0(1,1);
      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;
    }
    iVar5 = 3;
    FUN_00017a00(&local_30,10);
    FUN_00017a00(&local_2c,*(undefined4 *)(*param_1 + 4));
    FUN_00016a60(local_2c,local_28,&local_2c,0);
    local_2c[2] = 0;
    FUN_000177e0(local_30,local_2c,&local_30,0);
    FUN_00015e30(&local_2c);
  }
  local_4c = &local_2c;
  iVar6 = iVar5 + 1;
  while( true ) {
    do {
      FUN_00015e30(local_4c);
      local_30[3] = local_30[3] + 1;
      local_2c = local_30;
      FUN_00016b90(*param_1,local_30,&local_30,iVar5);
      FUN_00016960(local_30,local_2c,&local_30,0);
      FUN_00016a60(local_30,local_28,&local_30,iVar5);
      FUN_00016030(local_30,local_2c,&local_24,iVar6);
      cVar3 = FUN_00015fd0(local_24,iVar5);
    } while (cVar3 == '\0');
    if (local_48 < iVar5) break;
    iVar5 = iVar5 * 3;
    if (local_48 + 1 <= iVar5) {
      iVar5 = local_48 + 1;
    }
    iVar6 = iVar5 + 1;
  }
  FUN_00015e30(param_1);
  FUN_00016b90(local_30,DAT_0001e47c,param_1,local_48);
  FUN_00015e30(&local_30);
  FUN_00015e30(local_4c);
  FUN_00015e30(&local_28);
  FUN_00015e30(&local_24);
  uVar4 = 1;
LAB_00017be5:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return uVar4;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00018840();
}


CALL 0x0001425f
ADD EAX,0x6343
PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x4c
MOV dword ptr [ESP + 0xc],EAX
MOV EBP,dword ptr [ESP + 0x60]
LEA EAX,[EAX + 0x59c]
MOV ESI,dword ptr [EBP]
MOV ECX,dword ptr GS:[0x14]
MOV dword ptr [ESP + 0x3c],ECX
XOR ECX,ECX
MOV EBX,dword ptr [EAX]
MOV dword ptr [ESP + 0x10],EAX
MOV EDI,dword ptr [ESI]
CMP dword ptr [EBX],EDI
JZ 0x00017d40
XOR EAX,EAX
TEST EDI,EDI
JZ 0x00017c00
MOV ECX,dword ptr [ESP + 0x3c]
XOR ECX,dword ptr GS:[0x14]
JNZ 0x00017efc
ADD ESP,0x4c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESP + 0xc]
LEA EAX,[EAX + 0x594]
MOV EDX,dword ptr [EAX]
MOV dword ptr [ESP + 0x1c],EAX
MOV EAX,dword ptr [EDX]
TEST EAX,EAX
JNZ 0x00017d88
MOV ECX,0x1
MOV EAX,ESI
CALL 0x000157c0
MOV EDI,EAX
TEST EAX,EAX
JZ 0x00017eea
MOV EAX,dword ptr [ESP + 0x64]
CMP dword ptr [ESI + 0x8],EAX
MOV dword ptr [ESP + 0x2c],EBX
CMOVGE EAX,dword ptr [ESI + 0x8]
MOV dword ptr [ESP + 0x30],EBX
SUB ESP,0x8
MOV dword ptr [ESP + 0x40],EBX
MOV dword ptr [ESP + 0x1c],EAX
ADD dword ptr [EBX + 0xc],0x3
PUSH 0x1
PUSH 0x1
CALL 0x000158f0
MOV dword ptr [ESP + 0x44],EAX
MOV EAX,dword ptr [EAX + 0x18]
ADD ESP,0x10
MOV byte ptr [EAX + 0x1],0x5
TEST EDI,EDI
JNS 0x00017dc8
MOV EAX,dword ptr [ESP + 0x1c]
LEA ESI,[ESP + 0x2c]
MOV EAX,dword ptr [EAX]
ADD dword ptr [EAX + 0xc],0x1
MOV dword ptr [ESP + 0x2c],EAX
MOV EAX,dword ptr [EBP]
MOV EBX,dword ptr [EAX + 0x8]
LEA EAX,[ESP + 0x30]
MOV dword ptr [ESP + 0x10],EAX
LEA EAX,[ESP + 0x38]
LEA EDI,[EBX + 0x1]
MOV dword ptr [ESP + 0xc],EAX
MOV EAX,dword ptr [ESP + 0x14]
ADD EAX,0x1
MOV dword ptr [ESP + 0x18],EAX
LEA ESI,[ESI]
NOP
SUB ESP,0xc
PUSH dword ptr [ESP + 0x1c]
CALL 0x00015e30
MOV EAX,dword ptr [ESP + 0x3c]
ADD dword ptr [EAX + 0xc],0x1
MOV dword ptr [ESP + 0x40],EAX
PUSH EBX
PUSH ESI
PUSH EAX
PUSH dword ptr [EBP]
CALL 0x00016b90
ADD ESP,0x20
PUSH 0x0
PUSH ESI
PUSH dword ptr [ESP + 0x38]
PUSH dword ptr [ESP + 0x38]
CALL 0x00016960
PUSH EBX
PUSH ESI
PUSH dword ptr [ESP + 0x4c]
PUSH dword ptr [ESP + 0x48]
CALL 0x00016a60
ADD ESP,0x20
PUSH EDI
PUSH dword ptr [ESP + 0x10]
PUSH dword ptr [ESP + 0x38]
PUSH dword ptr [ESP + 0x38]
CALL 0x00016030
POP EDX
POP ECX
PUSH EBX
PUSH dword ptr [ESP + 0x44]
CALL 0x00015fd0
ADD ESP,0x10
TEST AL,AL
JZ 0x00017cb0
CMP EBX,dword ptr [ESP + 0x14]
JG 0x00017e98
MOV EAX,dword ptr [ESP + 0x18]
LEA EBX,[EBX + EBX*0x2]
CMP EAX,EBX
CMOVLE EBX,EAX
LEA EDI,[EBX + 0x1]
JMP 0x00017cb0
MOV EDX,EBX
MOV ECX,0x1
MOV EAX,ESI
CALL 0x000157c0
MOV EDX,EAX
XOR EAX,EAX
TEST EDX,EDX
JS 0x00017be5
JNZ 0x00017e30
SUB ESP,0xc
PUSH EBP
CALL 0x00015e30
MOV EAX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [EAX]
ADD ESP,0x10
ADD dword ptr [EAX + 0xc],0x1
MOV dword ptr [EBP],EAX
MOV EAX,0x1
JMP 0x00017be5
MOV EAX,dword ptr [EBX + 0xc]
MOV EDX,dword ptr [ESP + 0x64]
CMP dword ptr [ESI + 0x8],EDX
MOV dword ptr [ESP + 0x2c],EBX
MOV dword ptr [ESP + 0x30],EBX
MOV ECX,EDX
CMOVGE ECX,dword ptr [ESI + 0x8]
MOV dword ptr [ESP + 0x38],EBX
ADD EAX,0x3
SUB ESP,0x8
MOV dword ptr [EBX + 0xc],EAX
MOV dword ptr [ESP + 0x1c],ECX
PUSH 0x1
PUSH 0x1
CALL 0x000158f0
MOV dword ptr [ESP + 0x44],EAX
MOV EAX,dword ptr [EAX + 0x18]
ADD ESP,0x10
MOV byte ptr [EAX + 0x1],0x5
SUB ESP,0x8
MOV EBX,0x3
PUSH 0xa
LEA ESI,[ESP + 0x38]
PUSH ESI
CALL 0x00017a00
POP EAX
MOV EAX,dword ptr [EBP]
POP EDX
PUSH dword ptr [EAX + 0x4]
LEA EAX,[ESP + 0x3c]
MOV dword ptr [ESP + 0x1c],EAX
MOV EDI,EAX
PUSH EAX
CALL 0x00017a00
PUSH 0x0
PUSH EDI
PUSH dword ptr [ESP + 0x4c]
PUSH dword ptr [ESP + 0x4c]
CALL 0x00016a60
MOV EAX,dword ptr [ESP + 0x50]
ADD ESP,0x20
MOV dword ptr [EAX + 0x8],0x0
PUSH 0x0
PUSH ESI
PUSH EAX
PUSH dword ptr [ESP + 0x38]
CALL 0x000177e0
MOV dword ptr [ESP],EDI
CALL 0x00015e30
ADD ESP,0x10
JMP 0x00017c91
MOV EAX,dword ptr [ESP + 0xc]
LEA EAX,[EAX + 0x594]
MOV EDX,dword ptr [EAX]
MOV dword ptr [ESP + 0x1c],EAX
CMP EDI,dword ptr [EDX]
JZ 0x00017c1a
MOV EAX,dword ptr [ESP + 0x64]
CMP dword ptr [ESI + 0x8],EAX
CMOVGE EAX,dword ptr [ESI + 0x8]
MOV dword ptr [ESP + 0x14],EAX
MOV EAX,dword ptr [EBX + 0xc]
LEA EDX,[EAX + 0x3]
TEST EDI,EDI
JZ 0x00017d8b
MOV dword ptr [ESP + 0x2c],EBX
SUB ESP,0x8
MOV dword ptr [ESP + 0x38],EBX
MOV dword ptr [ESP + 0x40],EBX
MOV dword ptr [EBX + 0xc],EDX
PUSH 0x1
PUSH 0x1
CALL 0x000158f0
MOV dword ptr [ESP + 0x44],EAX
MOV EAX,dword ptr [EAX + 0x18]
ADD ESP,0x10
MOV byte ptr [EAX + 0x1],0x5
JMP 0x00017c71
SUB ESP,0xc
PUSH EBP
CALL 0x00015e30
PUSH dword ptr [ESP + 0x24]
PUSH EBP
MOV EAX,dword ptr [ESP + 0x34]
PUSH dword ptr [EAX]
PUSH dword ptr [ESP + 0x48]
CALL 0x00016b90
ADD ESP,0x14
PUSH ESI
CALL 0x00015e30
POP EBX
PUSH dword ptr [ESP + 0x1c]
CALL 0x00015e30
POP ESI
LEA EAX,[ESP + 0x40]
PUSH EAX
CALL 0x00015e30
POP EDI
PUSH dword ptr [ESP + 0x18]
CALL 0x00015e30
ADD ESP,0x10
MOV EAX,0x1
JMP 0x00017be5
SUB ESP,0xc
PUSH EBP
CALL 0x00015e30
MOV EAX,dword ptr [ESP + 0x2c]
JMP 0x00017d6d
CALL 0x00018840
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nundefined4 FUN_00017ba0(int *param_1,int param_2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  char cVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  int in_GS_OFFSET;\n  int **local_4c;\n  int local_48;\n  int *local_40;\n  int *local_30;\n  int *local_2c;\n  int local_28;\n  int *local_24;\n  int local_20;\n  \n  piVar2 = DAT_0001e484;\n  piVar1 = (int *)*param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar5 = *piVar1;\n  local_48 = param_2;\n  if (*DAT_0001e484 == iVar5) {\n    iVar6 = FUN_000157c0();\n    uVar4 = 0;\n    if (iVar6 < 0) goto LAB_00017be5;\n    if (iVar6 == 0) {\n      FUN_00015e30(param_1);\n      local_40 = (int *)&DAT_0001e484;\nLAB_00017d6d:\n      iVar5 = *local_40;\n      piVar1 = (int *)(iVar5 + 0xc);\n      *piVar1 = *piVar1 + 1;\n      *param_1 = iVar5;\n      uVar4 = 1;\n      goto LAB_00017be5;\n    }\n    if (iVar5 == *DAT_0001e47c) goto LAB_00017c1a;\n    if (param_2 <= piVar1[2]) {\n      local_48 = piVar1[2];\n    }\n    iVar6 = piVar2[3];\n    if (iVar5 == 0) goto LAB_00017d8b;\n    piVar2[3] = iVar6 + 3;\n    local_30 = piVar2;\n    local_2c = piVar2;\n    local_24 = piVar2;\n    local_28 = FUN_000158f0(1,1);\n    *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\nLAB_00017c71:\n    local_30 = DAT_0001e47c;\n    DAT_0001e47c[3] = DAT_0001e47c[3] + 1;\n    iVar5 = *(int *)(*param_1 + 8);\n  }\n  else {\n    uVar4 = 0;\n    if (iVar5 != 0) goto LAB_00017be5;\n    if (*DAT_0001e47c == 0) {\nLAB_00017c1a:\n      local_40 = (int *)&DAT_0001e47c;\n      iVar5 = FUN_000157c0();\n      if (iVar5 == 0) {\n        FUN_00015e30(param_1);\n        goto LAB_00017d6d;\n      }\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = piVar2[3] + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n      if (iVar5 < 0) goto LAB_00017c71;\n    }\n    else {\n      iVar6 = DAT_0001e484[3];\nLAB_00017d8b:\n      local_48 = param_2;\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = iVar6 + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n    }\n    iVar5 = 3;\n    FUN_00017a00(&local_30,10);\n    FUN_00017a00(&local_2c,*(undefined4 *)(*param_1 + 4));\n    FUN_00016a60(local_2c,local_28,&local_2c,0);\n    local_2c[2] = 0;\n    FUN_000177e0(local_30,local_2c,&local_30,0);\n    FUN_00015e30(&local_2c);\n  }\n  local_4c = &local_2c;\n  iVar6 = iVar5 + 1;\n  while( true ) {\n    do {\n      FUN_00015e30(local_4c);\n      local_30[3] = local_30[3] + 1;\n      local_2c = local_30;\n      FUN_00016b90(*param_1,local_30,&local_30,iVar5);\n      FUN_00016960(local_30,local_2c,&local_30,0);\n      FUN_00016a60(local_30,local_28,&local_30,iVar5);\n      FUN_00016030(local_30,local_2c,&local_24,iVar6);\n      cVar3 = FUN_00015fd0(local_24,iVar5);\n    } while (cVar3 == '\0');\n    if (local_48 < iVar5) break;\n    iVar5 = iVar5 * 3;\n    if (local_48 + 1 <= iVar5) {\n      iVar5 = local_48 + 1;\n    }\n    iVar6 = iVar5 + 1;\n  }\n  FUN_00015e30(param_1);\n  FUN_00016b90(local_30,DAT_0001e47c,param_1,local_48);\n  FUN_00015e30(&local_30);\n  FUN_00015e30(local_4c);\n  FUN_00015e30(&local_28);\n  FUN_00015e30(&local_24);\n  uVar4 = 1;\nLAB_00017be5:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar4;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00018840();\n}\n\n" comment (function_definition "undefined4 FUN_00017ba0(int *param_1,int param_2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  char cVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  int in_GS_OFFSET;\n  int **local_4c;\n  int local_48;\n  int *local_40;\n  int *local_30;\n  int *local_2c;\n  int local_28;\n  int *local_24;\n  int local_20;\n  \n  piVar2 = DAT_0001e484;\n  piVar1 = (int *)*param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar5 = *piVar1;\n  local_48 = param_2;\n  if (*DAT_0001e484 == iVar5) {\n    iVar6 = FUN_000157c0();\n    uVar4 = 0;\n    if (iVar6 < 0) goto LAB_00017be5;\n    if (iVar6 == 0) {\n      FUN_00015e30(param_1);\n      local_40 = (int *)&DAT_0001e484;\nLAB_00017d6d:\n      iVar5 = *local_40;\n      piVar1 = (int *)(iVar5 + 0xc);\n      *piVar1 = *piVar1 + 1;\n      *param_1 = iVar5;\n      uVar4 = 1;\n      goto LAB_00017be5;\n    }\n    if (iVar5 == *DAT_0001e47c) goto LAB_00017c1a;\n    if (param_2 <= piVar1[2]) {\n      local_48 = piVar1[2];\n    }\n    iVar6 = piVar2[3];\n    if (iVar5 == 0) goto LAB_00017d8b;\n    piVar2[3] = iVar6 + 3;\n    local_30 = piVar2;\n    local_2c = piVar2;\n    local_24 = piVar2;\n    local_28 = FUN_000158f0(1,1);\n    *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\nLAB_00017c71:\n    local_30 = DAT_0001e47c;\n    DAT_0001e47c[3] = DAT_0001e47c[3] + 1;\n    iVar5 = *(int *)(*param_1 + 8);\n  }\n  else {\n    uVar4 = 0;\n    if (iVar5 != 0) goto LAB_00017be5;\n    if (*DAT_0001e47c == 0) {\nLAB_00017c1a:\n      local_40 = (int *)&DAT_0001e47c;\n      iVar5 = FUN_000157c0();\n      if (iVar5 == 0) {\n        FUN_00015e30(param_1);\n        goto LAB_00017d6d;\n      }\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = piVar2[3] + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n      if (iVar5 < 0) goto LAB_00017c71;\n    }\n    else {\n      iVar6 = DAT_0001e484[3];\nLAB_00017d8b:\n      local_48 = param_2;\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = iVar6 + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n    }\n    iVar5 = 3;\n    FUN_00017a00(&local_30,10);\n    FUN_00017a00(&local_2c,*(undefined4 *)(*param_1 + 4));\n    FUN_00016a60(local_2c,local_28,&local_2c,0);\n    local_2c[2] = 0;\n    FUN_000177e0(local_30,local_2c,&local_30,0);\n    FUN_00015e30(&local_2c);\n  }\n  local_4c = &local_2c;\n  iVar6 = iVar5 + 1;\n  while( true ) {\n    do {\n      FUN_00015e30(local_4c);\n      local_30[3] = local_30[3] + 1;\n      local_2c = local_30;\n      FUN_00016b90(*param_1,local_30,&local_30,iVar5);\n      FUN_00016960(local_30,local_2c,&local_30,0);\n      FUN_00016a60(local_30,local_28,&local_30,iVar5);\n      FUN_00016030(local_30,local_2c,&local_24,iVar6);\n      cVar3 = FUN_00015fd0(local_24,iVar5);\n    } while (cVar3 == '\0');\n    if (local_48 < iVar5) break;\n    iVar5 = iVar5 * 3;\n    if (local_48 + 1 <= iVar5) {\n      iVar5 = local_48 + 1;\n    }\n    iVar6 = iVar5 + 1;\n  }\n  FUN_00015e30(param_1);\n  FUN_00016b90(local_30,DAT_0001e47c,param_1,local_48);\n  FUN_00015e30(&local_30);\n  FUN_00015e30(local_4c);\n  FUN_00015e30(&local_28);\n  FUN_00015e30(&local_24);\n  uVar4 = 1;\nLAB_00017be5:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar4;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00018840();\n}" type_identifier (function_declarator "FUN_00017ba0(int *param_1,int param_2)" identifier (parameter_list "(int *param_1,int param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  char cVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  int in_GS_OFFSET;\n  int **local_4c;\n  int local_48;\n  int *local_40;\n  int *local_30;\n  int *local_2c;\n  int local_28;\n  int *local_24;\n  int local_20;\n  \n  piVar2 = DAT_0001e484;\n  piVar1 = (int *)*param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar5 = *piVar1;\n  local_48 = param_2;\n  if (*DAT_0001e484 == iVar5) {\n    iVar6 = FUN_000157c0();\n    uVar4 = 0;\n    if (iVar6 < 0) goto LAB_00017be5;\n    if (iVar6 == 0) {\n      FUN_00015e30(param_1);\n      local_40 = (int *)&DAT_0001e484;\nLAB_00017d6d:\n      iVar5 = *local_40;\n      piVar1 = (int *)(iVar5 + 0xc);\n      *piVar1 = *piVar1 + 1;\n      *param_1 = iVar5;\n      uVar4 = 1;\n      goto LAB_00017be5;\n    }\n    if (iVar5 == *DAT_0001e47c) goto LAB_00017c1a;\n    if (param_2 <= piVar1[2]) {\n      local_48 = piVar1[2];\n    }\n    iVar6 = piVar2[3];\n    if (iVar5 == 0) goto LAB_00017d8b;\n    piVar2[3] = iVar6 + 3;\n    local_30 = piVar2;\n    local_2c = piVar2;\n    local_24 = piVar2;\n    local_28 = FUN_000158f0(1,1);\n    *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\nLAB_00017c71:\n    local_30 = DAT_0001e47c;\n    DAT_0001e47c[3] = DAT_0001e47c[3] + 1;\n    iVar5 = *(int *)(*param_1 + 8);\n  }\n  else {\n    uVar4 = 0;\n    if (iVar5 != 0) goto LAB_00017be5;\n    if (*DAT_0001e47c == 0) {\nLAB_00017c1a:\n      local_40 = (int *)&DAT_0001e47c;\n      iVar5 = FUN_000157c0();\n      if (iVar5 == 0) {\n        FUN_00015e30(param_1);\n        goto LAB_00017d6d;\n      }\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = piVar2[3] + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n      if (iVar5 < 0) goto LAB_00017c71;\n    }\n    else {\n      iVar6 = DAT_0001e484[3];\nLAB_00017d8b:\n      local_48 = param_2;\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = iVar6 + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n    }\n    iVar5 = 3;\n    FUN_00017a00(&local_30,10);\n    FUN_00017a00(&local_2c,*(undefined4 *)(*param_1 + 4));\n    FUN_00016a60(local_2c,local_28,&local_2c,0);\n    local_2c[2] = 0;\n    FUN_000177e0(local_30,local_2c,&local_30,0);\n    FUN_00015e30(&local_2c);\n  }\n  local_4c = &local_2c;\n  iVar6 = iVar5 + 1;\n  while( true ) {\n    do {\n      FUN_00015e30(local_4c);\n      local_30[3] = local_30[3] + 1;\n      local_2c = local_30;\n      FUN_00016b90(*param_1,local_30,&local_30,iVar5);\n      FUN_00016960(local_30,local_2c,&local_30,0);\n      FUN_00016a60(local_30,local_28,&local_30,iVar5);\n      FUN_00016030(local_30,local_2c,&local_24,iVar6);\n      cVar3 = FUN_00015fd0(local_24,iVar5);\n    } while (cVar3 == '\0');\n    if (local_48 < iVar5) break;\n    iVar5 = iVar5 * 3;\n    if (local_48 + 1 <= iVar5) {\n      iVar5 = local_48 + 1;\n    }\n    iVar6 = iVar5 + 1;\n  }\n  FUN_00015e30(param_1);\n  FUN_00016b90(local_30,DAT_0001e47c,param_1,local_48);\n  FUN_00015e30(&local_30);\n  FUN_00015e30(local_4c);\n  FUN_00015e30(&local_28);\n  FUN_00015e30(&local_24);\n  uVar4 = 1;\nLAB_00017be5:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar4;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00018840();\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "int **local_4c;" primitive_type (pointer_declarator "**local_4c" * (pointer_declarator "*local_4c" * identifier)) ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "int *local_40;" primitive_type (pointer_declarator "*local_40" * identifier) ;) (declaration "int *local_30;" primitive_type (pointer_declarator "*local_30" * identifier) ;) (declaration "int *local_2c;" primitive_type (pointer_declarator "*local_2c" * identifier) ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "int *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "piVar2 = DAT_0001e484;" (assignment_expression "piVar2 = DAT_0001e484" identifier = identifier) ;) (expression_statement "piVar1 = (int *)*param_1;" (assignment_expression "piVar1 = (int *)*param_1" identifier = (cast_expression "(int *)*param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *piVar1;" (assignment_expression "iVar5 = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) (expression_statement "local_48 = param_2;" (assignment_expression "local_48 = param_2" identifier = identifier) ;) (if_statement "if (*DAT_0001e484 == iVar5) {\n    iVar6 = FUN_000157c0();\n    uVar4 = 0;\n    if (iVar6 < 0) goto LAB_00017be5;\n    if (iVar6 == 0) {\n      FUN_00015e30(param_1);\n      local_40 = (int *)&DAT_0001e484;\nLAB_00017d6d:\n      iVar5 = *local_40;\n      piVar1 = (int *)(iVar5 + 0xc);\n      *piVar1 = *piVar1 + 1;\n      *param_1 = iVar5;\n      uVar4 = 1;\n      goto LAB_00017be5;\n    }\n    if (iVar5 == *DAT_0001e47c) goto LAB_00017c1a;\n    if (param_2 <= piVar1[2]) {\n      local_48 = piVar1[2];\n    }\n    iVar6 = piVar2[3];\n    if (iVar5 == 0) goto LAB_00017d8b;\n    piVar2[3] = iVar6 + 3;\n    local_30 = piVar2;\n    local_2c = piVar2;\n    local_24 = piVar2;\n    local_28 = FUN_000158f0(1,1);\n    *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\nLAB_00017c71:\n    local_30 = DAT_0001e47c;\n    DAT_0001e47c[3] = DAT_0001e47c[3] + 1;\n    iVar5 = *(int *)(*param_1 + 8);\n  }\n  else {\n    uVar4 = 0;\n    if (iVar5 != 0) goto LAB_00017be5;\n    if (*DAT_0001e47c == 0) {\nLAB_00017c1a:\n      local_40 = (int *)&DAT_0001e47c;\n      iVar5 = FUN_000157c0();\n      if (iVar5 == 0) {\n        FUN_00015e30(param_1);\n        goto LAB_00017d6d;\n      }\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = piVar2[3] + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n      if (iVar5 < 0) goto LAB_00017c71;\n    }\n    else {\n      iVar6 = DAT_0001e484[3];\nLAB_00017d8b:\n      local_48 = param_2;\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = iVar6 + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n    }\n    iVar5 = 3;\n    FUN_00017a00(&local_30,10);\n    FUN_00017a00(&local_2c,*(undefined4 *)(*param_1 + 4));\n    FUN_00016a60(local_2c,local_28,&local_2c,0);\n    local_2c[2] = 0;\n    FUN_000177e0(local_30,local_2c,&local_30,0);\n    FUN_00015e30(&local_2c);\n  }" if (parenthesized_expression "(*DAT_0001e484 == iVar5)" ( (binary_expression "*DAT_0001e484 == iVar5" (pointer_expression "*DAT_0001e484" * identifier) == identifier) )) (compound_statement "{\n    iVar6 = FUN_000157c0();\n    uVar4 = 0;\n    if (iVar6 < 0) goto LAB_00017be5;\n    if (iVar6 == 0) {\n      FUN_00015e30(param_1);\n      local_40 = (int *)&DAT_0001e484;\nLAB_00017d6d:\n      iVar5 = *local_40;\n      piVar1 = (int *)(iVar5 + 0xc);\n      *piVar1 = *piVar1 + 1;\n      *param_1 = iVar5;\n      uVar4 = 1;\n      goto LAB_00017be5;\n    }\n    if (iVar5 == *DAT_0001e47c) goto LAB_00017c1a;\n    if (param_2 <= piVar1[2]) {\n      local_48 = piVar1[2];\n    }\n    iVar6 = piVar2[3];\n    if (iVar5 == 0) goto LAB_00017d8b;\n    piVar2[3] = iVar6 + 3;\n    local_30 = piVar2;\n    local_2c = piVar2;\n    local_24 = piVar2;\n    local_28 = FUN_000158f0(1,1);\n    *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\nLAB_00017c71:\n    local_30 = DAT_0001e47c;\n    DAT_0001e47c[3] = DAT_0001e47c[3] + 1;\n    iVar5 = *(int *)(*param_1 + 8);\n  }" { (expression_statement "iVar6 = FUN_000157c0();" (assignment_expression "iVar6 = FUN_000157c0()" identifier = (call_expression "FUN_000157c0()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (iVar6 < 0) goto LAB_00017be5;" if (parenthesized_expression "(iVar6 < 0)" ( (binary_expression "iVar6 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00017be5;" goto statement_identifier ;)) (if_statement "if (iVar6 == 0) {\n      FUN_00015e30(param_1);\n      local_40 = (int *)&DAT_0001e484;\nLAB_00017d6d:\n      iVar5 = *local_40;\n      piVar1 = (int *)(iVar5 + 0xc);\n      *piVar1 = *piVar1 + 1;\n      *param_1 = iVar5;\n      uVar4 = 1;\n      goto LAB_00017be5;\n    }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      FUN_00015e30(param_1);\n      local_40 = (int *)&DAT_0001e484;\nLAB_00017d6d:\n      iVar5 = *local_40;\n      piVar1 = (int *)(iVar5 + 0xc);\n      *piVar1 = *piVar1 + 1;\n      *param_1 = iVar5;\n      uVar4 = 1;\n      goto LAB_00017be5;\n    }" { (expression_statement "FUN_00015e30(param_1);" (call_expression "FUN_00015e30(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "local_40 = (int *)&DAT_0001e484;" (assignment_expression "local_40 = (int *)&DAT_0001e484" identifier = (cast_expression "(int *)&DAT_0001e484" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_0001e484" & identifier))) ;) (labeled_statement "LAB_00017d6d:\n      iVar5 = *local_40;" statement_identifier : (expression_statement "iVar5 = *local_40;" (assignment_expression "iVar5 = *local_40" identifier = (pointer_expression "*local_40" * identifier)) ;)) (expression_statement "piVar1 = (int *)(iVar5 + 0xc);" (assignment_expression "piVar1 = (int *)(iVar5 + 0xc)" identifier = (cast_expression "(int *)(iVar5 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) )))) ;) (expression_statement "*piVar1 = *piVar1 + 1;" (assignment_expression "*piVar1 = *piVar1 + 1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + 1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) (expression_statement "*param_1 = iVar5;" (assignment_expression "*param_1 = iVar5" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00017be5;" goto statement_identifier ;) })) (if_statement "if (iVar5 == *DAT_0001e47c) goto LAB_00017c1a;" if (parenthesized_expression "(iVar5 == *DAT_0001e47c)" ( (binary_expression "iVar5 == *DAT_0001e47c" identifier == (pointer_expression "*DAT_0001e47c" * identifier)) )) (goto_statement "goto LAB_00017c1a;" goto statement_identifier ;)) (if_statement "if (param_2 <= piVar1[2]) {\n      local_48 = piVar1[2];\n    }" if (parenthesized_expression "(param_2 <= piVar1[2])" ( (binary_expression "param_2 <= piVar1[2]" identifier <= (subscript_expression "piVar1[2]" identifier [ number_literal ])) )) (compound_statement "{\n      local_48 = piVar1[2];\n    }" { (expression_statement "local_48 = piVar1[2];" (assignment_expression "local_48 = piVar1[2]" identifier = (subscript_expression "piVar1[2]" identifier [ number_literal ])) ;) })) (expression_statement "iVar6 = piVar2[3];" (assignment_expression "iVar6 = piVar2[3]" identifier = (subscript_expression "piVar2[3]" identifier [ number_literal ])) ;) (if_statement "if (iVar5 == 0) goto LAB_00017d8b;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017d8b;" goto statement_identifier ;)) (expression_statement "piVar2[3] = iVar6 + 3;" (assignment_expression "piVar2[3] = iVar6 + 3" (subscript_expression "piVar2[3]" identifier [ number_literal ]) = (binary_expression "iVar6 + 3" identifier + number_literal)) ;) (expression_statement "local_30 = piVar2;" (assignment_expression "local_30 = piVar2" identifier = identifier) ;) (expression_statement "local_2c = piVar2;" (assignment_expression "local_2c = piVar2" identifier = identifier) ;) (expression_statement "local_24 = piVar2;" (assignment_expression "local_24 = piVar2" identifier = identifier) ;) (expression_statement "local_28 = FUN_000158f0(1,1);" (assignment_expression "local_28 = FUN_000158f0(1,1)" identifier = (call_expression "FUN_000158f0(1,1)" identifier (argument_list "(1,1)" ( number_literal , number_literal )))) ;) (expression_statement "*(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;" (assignment_expression "*(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5" (pointer_expression "*(undefined1 *)(*(int *)(local_28 + 0x18) + 1)" * (cast_expression "(undefined1 *)(*(int *)(local_28 + 0x18) + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_28 + 0x18) + 1)" ( (binary_expression "*(int *)(local_28 + 0x18) + 1" (pointer_expression "*(int *)(local_28 + 0x18)" * (cast_expression "(int *)(local_28 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + 0x18)" ( (binary_expression "local_28 + 0x18" identifier + number_literal) )))) + number_literal) )))) = number_literal) ;) (labeled_statement "LAB_00017c71:\n    local_30 = DAT_0001e47c;" statement_identifier : (expression_statement "local_30 = DAT_0001e47c;" (assignment_expression "local_30 = DAT_0001e47c" identifier = identifier) ;)) (expression_statement "DAT_0001e47c[3] = DAT_0001e47c[3] + 1;" (assignment_expression "DAT_0001e47c[3] = DAT_0001e47c[3] + 1" (subscript_expression "DAT_0001e47c[3]" identifier [ number_literal ]) = (binary_expression "DAT_0001e47c[3] + 1" (subscript_expression "DAT_0001e47c[3]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "iVar5 = *(int *)(*param_1 + 8);" (assignment_expression "iVar5 = *(int *)(*param_1 + 8)" identifier = (pointer_expression "*(int *)(*param_1 + 8)" * (cast_expression "(int *)(*param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 8)" ( (binary_expression "*param_1 + 8" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) }) (else_clause "else {\n    uVar4 = 0;\n    if (iVar5 != 0) goto LAB_00017be5;\n    if (*DAT_0001e47c == 0) {\nLAB_00017c1a:\n      local_40 = (int *)&DAT_0001e47c;\n      iVar5 = FUN_000157c0();\n      if (iVar5 == 0) {\n        FUN_00015e30(param_1);\n        goto LAB_00017d6d;\n      }\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = piVar2[3] + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n      if (iVar5 < 0) goto LAB_00017c71;\n    }\n    else {\n      iVar6 = DAT_0001e484[3];\nLAB_00017d8b:\n      local_48 = param_2;\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = iVar6 + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n    }\n    iVar5 = 3;\n    FUN_00017a00(&local_30,10);\n    FUN_00017a00(&local_2c,*(undefined4 *)(*param_1 + 4));\n    FUN_00016a60(local_2c,local_28,&local_2c,0);\n    local_2c[2] = 0;\n    FUN_000177e0(local_30,local_2c,&local_30,0);\n    FUN_00015e30(&local_2c);\n  }" else (compound_statement "{\n    uVar4 = 0;\n    if (iVar5 != 0) goto LAB_00017be5;\n    if (*DAT_0001e47c == 0) {\nLAB_00017c1a:\n      local_40 = (int *)&DAT_0001e47c;\n      iVar5 = FUN_000157c0();\n      if (iVar5 == 0) {\n        FUN_00015e30(param_1);\n        goto LAB_00017d6d;\n      }\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = piVar2[3] + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n      if (iVar5 < 0) goto LAB_00017c71;\n    }\n    else {\n      iVar6 = DAT_0001e484[3];\nLAB_00017d8b:\n      local_48 = param_2;\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = iVar6 + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n    }\n    iVar5 = 3;\n    FUN_00017a00(&local_30,10);\n    FUN_00017a00(&local_2c,*(undefined4 *)(*param_1 + 4));\n    FUN_00016a60(local_2c,local_28,&local_2c,0);\n    local_2c[2] = 0;\n    FUN_000177e0(local_30,local_2c,&local_30,0);\n    FUN_00015e30(&local_2c);\n  }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (iVar5 != 0) goto LAB_00017be5;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00017be5;" goto statement_identifier ;)) (if_statement "if (*DAT_0001e47c == 0) {\nLAB_00017c1a:\n      local_40 = (int *)&DAT_0001e47c;\n      iVar5 = FUN_000157c0();\n      if (iVar5 == 0) {\n        FUN_00015e30(param_1);\n        goto LAB_00017d6d;\n      }\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = piVar2[3] + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n      if (iVar5 < 0) goto LAB_00017c71;\n    }\n    else {\n      iVar6 = DAT_0001e484[3];\nLAB_00017d8b:\n      local_48 = param_2;\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = iVar6 + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n    }" if (parenthesized_expression "(*DAT_0001e47c == 0)" ( (binary_expression "*DAT_0001e47c == 0" (pointer_expression "*DAT_0001e47c" * identifier) == number_literal) )) (compound_statement "{\nLAB_00017c1a:\n      local_40 = (int *)&DAT_0001e47c;\n      iVar5 = FUN_000157c0();\n      if (iVar5 == 0) {\n        FUN_00015e30(param_1);\n        goto LAB_00017d6d;\n      }\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = piVar2[3] + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n      if (iVar5 < 0) goto LAB_00017c71;\n    }" { (labeled_statement "LAB_00017c1a:\n      local_40 = (int *)&DAT_0001e47c;" statement_identifier : (expression_statement "local_40 = (int *)&DAT_0001e47c;" (assignment_expression "local_40 = (int *)&DAT_0001e47c" identifier = (cast_expression "(int *)&DAT_0001e47c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_0001e47c" & identifier))) ;)) (expression_statement "iVar5 = FUN_000157c0();" (assignment_expression "iVar5 = FUN_000157c0()" identifier = (call_expression "FUN_000157c0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar5 == 0) {\n        FUN_00015e30(param_1);\n        goto LAB_00017d6d;\n      }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        FUN_00015e30(param_1);\n        goto LAB_00017d6d;\n      }" { (expression_statement "FUN_00015e30(param_1);" (call_expression "FUN_00015e30(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (goto_statement "goto LAB_00017d6d;" goto statement_identifier ;) })) (if_statement "if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }" if (parenthesized_expression "(param_2 <= piVar1[2])" ( (binary_expression "param_2 <= piVar1[2]" identifier <= (subscript_expression "piVar1[2]" identifier [ number_literal ])) )) (compound_statement "{\n        local_48 = piVar1[2];\n      }" { (expression_statement "local_48 = piVar1[2];" (assignment_expression "local_48 = piVar1[2]" identifier = (subscript_expression "piVar1[2]" identifier [ number_literal ])) ;) })) (expression_statement "piVar2[3] = piVar2[3] + 3;" (assignment_expression "piVar2[3] = piVar2[3] + 3" (subscript_expression "piVar2[3]" identifier [ number_literal ]) = (binary_expression "piVar2[3] + 3" (subscript_expression "piVar2[3]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "local_30 = piVar2;" (assignment_expression "local_30 = piVar2" identifier = identifier) ;) (expression_statement "local_2c = piVar2;" (assignment_expression "local_2c = piVar2" identifier = identifier) ;) (expression_statement "local_24 = piVar2;" (assignment_expression "local_24 = piVar2" identifier = identifier) ;) (expression_statement "local_28 = FUN_000158f0(1,1);" (assignment_expression "local_28 = FUN_000158f0(1,1)" identifier = (call_expression "FUN_000158f0(1,1)" identifier (argument_list "(1,1)" ( number_literal , number_literal )))) ;) (expression_statement "*(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;" (assignment_expression "*(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5" (pointer_expression "*(undefined1 *)(*(int *)(local_28 + 0x18) + 1)" * (cast_expression "(undefined1 *)(*(int *)(local_28 + 0x18) + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_28 + 0x18) + 1)" ( (binary_expression "*(int *)(local_28 + 0x18) + 1" (pointer_expression "*(int *)(local_28 + 0x18)" * (cast_expression "(int *)(local_28 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + 0x18)" ( (binary_expression "local_28 + 0x18" identifier + number_literal) )))) + number_literal) )))) = number_literal) ;) (if_statement "if (iVar5 < 0) goto LAB_00017c71;" if (parenthesized_expression "(iVar5 < 0)" ( (binary_expression "iVar5 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00017c71;" goto statement_identifier ;)) }) (else_clause "else {\n      iVar6 = DAT_0001e484[3];\nLAB_00017d8b:\n      local_48 = param_2;\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = iVar6 + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n    }" else (compound_statement "{\n      iVar6 = DAT_0001e484[3];\nLAB_00017d8b:\n      local_48 = param_2;\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = iVar6 + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n    }" { (expression_statement "iVar6 = DAT_0001e484[3];" (assignment_expression "iVar6 = DAT_0001e484[3]" identifier = (subscript_expression "DAT_0001e484[3]" identifier [ number_literal ])) ;) (labeled_statement "LAB_00017d8b:\n      local_48 = param_2;" statement_identifier : (expression_statement "local_48 = param_2;" (assignment_expression "local_48 = param_2" identifier = identifier) ;)) (if_statement "if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }" if (parenthesized_expression "(param_2 <= piVar1[2])" ( (binary_expression "param_2 <= piVar1[2]" identifier <= (subscript_expression "piVar1[2]" identifier [ number_literal ])) )) (compound_statement "{\n        local_48 = piVar1[2];\n      }" { (expression_statement "local_48 = piVar1[2];" (assignment_expression "local_48 = piVar1[2]" identifier = (subscript_expression "piVar1[2]" identifier [ number_literal ])) ;) })) (expression_statement "piVar2[3] = iVar6 + 3;" (assignment_expression "piVar2[3] = iVar6 + 3" (subscript_expression "piVar2[3]" identifier [ number_literal ]) = (binary_expression "iVar6 + 3" identifier + number_literal)) ;) (expression_statement "local_30 = piVar2;" (assignment_expression "local_30 = piVar2" identifier = identifier) ;) (expression_statement "local_2c = piVar2;" (assignment_expression "local_2c = piVar2" identifier = identifier) ;) (expression_statement "local_24 = piVar2;" (assignment_expression "local_24 = piVar2" identifier = identifier) ;) (expression_statement "local_28 = FUN_000158f0(1,1);" (assignment_expression "local_28 = FUN_000158f0(1,1)" identifier = (call_expression "FUN_000158f0(1,1)" identifier (argument_list "(1,1)" ( number_literal , number_literal )))) ;) (expression_statement "*(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;" (assignment_expression "*(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5" (pointer_expression "*(undefined1 *)(*(int *)(local_28 + 0x18) + 1)" * (cast_expression "(undefined1 *)(*(int *)(local_28 + 0x18) + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_28 + 0x18) + 1)" ( (binary_expression "*(int *)(local_28 + 0x18) + 1" (pointer_expression "*(int *)(local_28 + 0x18)" * (cast_expression "(int *)(local_28 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + 0x18)" ( (binary_expression "local_28 + 0x18" identifier + number_literal) )))) + number_literal) )))) = number_literal) ;) }))) (expression_statement "iVar5 = 3;" (assignment_expression "iVar5 = 3" identifier = number_literal) ;) (expression_statement "FUN_00017a00(&local_30,10);" (call_expression "FUN_00017a00(&local_30,10)" identifier (argument_list "(&local_30,10)" ( (pointer_expression "&local_30" & identifier) , number_literal ))) ;) (expression_statement "FUN_00017a00(&local_2c,*(undefined4 *)(*param_1 + 4));" (call_expression "FUN_00017a00(&local_2c,*(undefined4 *)(*param_1 + 4))" identifier (argument_list "(&local_2c,*(undefined4 *)(*param_1 + 4))" ( (pointer_expression "&local_2c" & identifier) , (pointer_expression "*(undefined4 *)(*param_1 + 4)" * (cast_expression "(undefined4 *)(*param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 4)" ( (binary_expression "*param_1 + 4" (pointer_expression "*param_1" * identifier) + number_literal) )))) ))) ;) (expression_statement "FUN_00016a60(local_2c,local_28,&local_2c,0);" (call_expression "FUN_00016a60(local_2c,local_28,&local_2c,0)" identifier (argument_list "(local_2c,local_28,&local_2c,0)" ( identifier , identifier , (pointer_expression "&local_2c" & identifier) , number_literal ))) ;) (expression_statement "local_2c[2] = 0;" (assignment_expression "local_2c[2] = 0" (subscript_expression "local_2c[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_000177e0(local_30,local_2c,&local_30,0);" (call_expression "FUN_000177e0(local_30,local_2c,&local_30,0)" identifier (argument_list "(local_30,local_2c,&local_30,0)" ( identifier , identifier , (pointer_expression "&local_30" & identifier) , number_literal ))) ;) (expression_statement "FUN_00015e30(&local_2c);" (call_expression "FUN_00015e30(&local_2c)" identifier (argument_list "(&local_2c)" ( (pointer_expression "&local_2c" & identifier) ))) ;) }))) (expression_statement "local_4c = &local_2c;" (assignment_expression "local_4c = &local_2c" identifier = (pointer_expression "&local_2c" & identifier)) ;) (expression_statement "iVar6 = iVar5 + 1;" (assignment_expression "iVar6 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (while_statement "while( true ) {\n    do {\n      FUN_00015e30(local_4c);\n      local_30[3] = local_30[3] + 1;\n      local_2c = local_30;\n      FUN_00016b90(*param_1,local_30,&local_30,iVar5);\n      FUN_00016960(local_30,local_2c,&local_30,0);\n      FUN_00016a60(local_30,local_28,&local_30,iVar5);\n      FUN_00016030(local_30,local_2c,&local_24,iVar6);\n      cVar3 = FUN_00015fd0(local_24,iVar5);\n    } while (cVar3 == '\0');\n    if (local_48 < iVar5) break;\n    iVar5 = iVar5 * 3;\n    if (local_48 + 1 <= iVar5) {\n      iVar5 = local_48 + 1;\n    }\n    iVar6 = iVar5 + 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    do {\n      FUN_00015e30(local_4c);\n      local_30[3] = local_30[3] + 1;\n      local_2c = local_30;\n      FUN_00016b90(*param_1,local_30,&local_30,iVar5);\n      FUN_00016960(local_30,local_2c,&local_30,0);\n      FUN_00016a60(local_30,local_28,&local_30,iVar5);\n      FUN_00016030(local_30,local_2c,&local_24,iVar6);\n      cVar3 = FUN_00015fd0(local_24,iVar5);\n    } while (cVar3 == '\0');\n    if (local_48 < iVar5) break;\n    iVar5 = iVar5 * 3;\n    if (local_48 + 1 <= iVar5) {\n      iVar5 = local_48 + 1;\n    }\n    iVar6 = iVar5 + 1;\n  }" { (do_statement "do {\n      FUN_00015e30(local_4c);\n      local_30[3] = local_30[3] + 1;\n      local_2c = local_30;\n      FUN_00016b90(*param_1,local_30,&local_30,iVar5);\n      FUN_00016960(local_30,local_2c,&local_30,0);\n      FUN_00016a60(local_30,local_28,&local_30,iVar5);\n      FUN_00016030(local_30,local_2c,&local_24,iVar6);\n      cVar3 = FUN_00015fd0(local_24,iVar5);\n    } while (cVar3 == '\0');" do (compound_statement "{\n      FUN_00015e30(local_4c);\n      local_30[3] = local_30[3] + 1;\n      local_2c = local_30;\n      FUN_00016b90(*param_1,local_30,&local_30,iVar5);\n      FUN_00016960(local_30,local_2c,&local_30,0);\n      FUN_00016a60(local_30,local_28,&local_30,iVar5);\n      FUN_00016030(local_30,local_2c,&local_24,iVar6);\n      cVar3 = FUN_00015fd0(local_24,iVar5);\n    }" { (expression_statement "FUN_00015e30(local_4c);" (call_expression "FUN_00015e30(local_4c)" identifier (argument_list "(local_4c)" ( identifier ))) ;) (expression_statement "local_30[3] = local_30[3] + 1;" (assignment_expression "local_30[3] = local_30[3] + 1" (subscript_expression "local_30[3]" identifier [ number_literal ]) = (binary_expression "local_30[3] + 1" (subscript_expression "local_30[3]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "local_2c = local_30;" (assignment_expression "local_2c = local_30" identifier = identifier) ;) (expression_statement "FUN_00016b90(*param_1,local_30,&local_30,iVar5);" (call_expression "FUN_00016b90(*param_1,local_30,&local_30,iVar5)" identifier (argument_list "(*param_1,local_30,&local_30,iVar5)" ( (pointer_expression "*param_1" * identifier) , identifier , (pointer_expression "&local_30" & identifier) , identifier ))) ;) (expression_statement "FUN_00016960(local_30,local_2c,&local_30,0);" (call_expression "FUN_00016960(local_30,local_2c,&local_30,0)" identifier (argument_list "(local_30,local_2c,&local_30,0)" ( identifier , identifier , (pointer_expression "&local_30" & identifier) , number_literal ))) ;) (expression_statement "FUN_00016a60(local_30,local_28,&local_30,iVar5);" (call_expression "FUN_00016a60(local_30,local_28,&local_30,iVar5)" identifier (argument_list "(local_30,local_28,&local_30,iVar5)" ( identifier , identifier , (pointer_expression "&local_30" & identifier) , identifier ))) ;) (expression_statement "FUN_00016030(local_30,local_2c,&local_24,iVar6);" (call_expression "FUN_00016030(local_30,local_2c,&local_24,iVar6)" identifier (argument_list "(local_30,local_2c,&local_24,iVar6)" ( identifier , identifier , (pointer_expression "&local_24" & identifier) , identifier ))) ;) (expression_statement "cVar3 = FUN_00015fd0(local_24,iVar5);" (assignment_expression "cVar3 = FUN_00015fd0(local_24,iVar5)" identifier = (call_expression "FUN_00015fd0(local_24,iVar5)" identifier (argument_list "(local_24,iVar5)" ( identifier , identifier )))) ;) }) while (parenthesized_expression "(cVar3 == '\0')" ( (binary_expression "cVar3 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) ;) (if_statement "if (local_48 < iVar5) break;" if (parenthesized_expression "(local_48 < iVar5)" ( (binary_expression "local_48 < iVar5" identifier < identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = iVar5 * 3;" (assignment_expression "iVar5 = iVar5 * 3" identifier = (binary_expression "iVar5 * 3" identifier * number_literal)) ;) (if_statement "if (local_48 + 1 <= iVar5) {\n      iVar5 = local_48 + 1;\n    }" if (parenthesized_expression "(local_48 + 1 <= iVar5)" ( (binary_expression "local_48 + 1 <= iVar5" (binary_expression "local_48 + 1" identifier + number_literal) <= identifier) )) (compound_statement "{\n      iVar5 = local_48 + 1;\n    }" { (expression_statement "iVar5 = local_48 + 1;" (assignment_expression "iVar5 = local_48 + 1" identifier = (binary_expression "local_48 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar6 = iVar5 + 1;" (assignment_expression "iVar6 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) })) (expression_statement "FUN_00015e30(param_1);" (call_expression "FUN_00015e30(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "FUN_00016b90(local_30,DAT_0001e47c,param_1,local_48);" (call_expression "FUN_00016b90(local_30,DAT_0001e47c,param_1,local_48)" identifier (argument_list "(local_30,DAT_0001e47c,param_1,local_48)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "FUN_00015e30(&local_30);" (call_expression "FUN_00015e30(&local_30)" identifier (argument_list "(&local_30)" ( (pointer_expression "&local_30" & identifier) ))) ;) (expression_statement "FUN_00015e30(local_4c);" (call_expression "FUN_00015e30(local_4c)" identifier (argument_list "(local_4c)" ( identifier ))) ;) (expression_statement "FUN_00015e30(&local_28);" (call_expression "FUN_00015e30(&local_28)" identifier (argument_list "(&local_28)" ( (pointer_expression "&local_28" & identifier) ))) ;) (expression_statement "FUN_00015e30(&local_24);" (call_expression "FUN_00015e30(&local_24)" identifier (argument_list "(&local_24)" ( (pointer_expression "&local_24" & identifier) ))) ;) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (labeled_statement "LAB_00017be5:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar4;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar4;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return uVar4;\n  }" { (return_statement "return uVar4;" return identifier ;) }))) comment (expression_statement "FUN_00018840();" (call_expression "FUN_00018840()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nint bc_sqrt(bc_num *num,int scale)\n\n{\n  int *piVar1;\n  bc_num pbVar2;\n  bc_num pbVar3;\n  sign sVar4;\n  char cVar5;\n  int iVar6;\n  int iVar7;\n  int in_GS_OFFSET;\n  int in_stack_ffffffa4;\n  bc_num *local_4c;\n  int local_48;\n  bc_num *local_40;\n  bc_num guess;\n  bc_num guess1;\n  bc_num point5;\n  bc_num diff;\n  int local_20;\n  \n  pbVar3 = _zero_;\n  pbVar2 = *num;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  sVar4 = pbVar2->n_sign;\n  local_48 = scale;\n  if (_zero_->n_sign == sVar4) {\n    iVar7 = _bc_do_compare(pbVar2,_zero_,1,in_stack_ffffffa4);\n    iVar6 = 0;\n    if (iVar7 < 0) goto LAB_00017be5;\n    if (iVar7 == 0) {\n      bc_free_num(num);\n      local_40 = &_zero_;\nLAB_00017d6d:\n      pbVar2 = *local_40;\n      piVar1 = &pbVar2->n_refs;\n      *piVar1 = *piVar1 + 1;\n      *num = pbVar2;\n      iVar6 = 1;\n      goto LAB_00017be5;\n    }\n    if (sVar4 == _one_->n_sign) goto LAB_00017c1a;\n    if (scale <= pbVar2->n_scale) {\n      local_48 = pbVar2->n_scale;\n    }\n    iVar6 = pbVar3->n_refs;\n    if (sVar4 == PLUS) goto LAB_00017d8b;\n    pbVar3->n_refs = iVar6 + 3;\n    guess = pbVar3;\n    guess1 = pbVar3;\n    diff = pbVar3;\n    point5 = bc_new_num(1,1);\n    point5->n_value[1] = '\x05';\nLAB_00017c71:\n    guess = _one_;\n    _one_->n_refs = _one_->n_refs + 1;\n    iVar6 = (*num)->n_scale;\n  }\n  else {\n    iVar6 = 0;\n    if (sVar4 != PLUS) goto LAB_00017be5;\n    if (_one_->n_sign == PLUS) {\nLAB_00017c1a:\n      local_40 = &_one_;\n      iVar6 = _bc_do_compare(pbVar2,_one_,1,in_stack_ffffffa4);\n      if (iVar6 == 0) {\n        bc_free_num(num);\n        goto LAB_00017d6d;\n      }\n      if (scale <= pbVar2->n_scale) {\n        local_48 = pbVar2->n_scale;\n      }\n      pbVar3->n_refs = pbVar3->n_refs + 3;\n      guess = pbVar3;\n      guess1 = pbVar3;\n      diff = pbVar3;\n      point5 = bc_new_num(1,1);\n      point5->n_value[1] = '\x05';\n      if (iVar6 < 0) goto LAB_00017c71;\n    }\n    else {\n      iVar6 = _zero_->n_refs;\nLAB_00017d8b:\n      local_48 = scale;\n      if (scale <= pbVar2->n_scale) {\n        local_48 = pbVar2->n_scale;\n      }\n      pbVar3->n_refs = iVar6 + 3;\n      guess = pbVar3;\n      guess1 = pbVar3;\n      diff = pbVar3;\n      point5 = bc_new_num(1,1);\n      point5->n_value[1] = '\x05';\n    }\n    iVar6 = 3;\n    bc_int2num(&guess,10);\n    bc_int2num(&guess1,(*num)->n_len);\n    bc_multiply(guess1,point5,&guess1,0);\n    guess1->n_scale = 0;\n    bc_raise(guess,guess1,&guess,0);\n    bc_free_num(&guess1);\n  }\n  local_4c = &guess1;\n  iVar7 = iVar6 + 1;\n  while( true ) {\n    do {\n      bc_free_num(local_4c);\n      guess->n_refs = guess->n_refs + 1;\n      guess1 = guess;\n      bc_divide(*num,guess,&guess,iVar6);\n      bc_add(guess,guess1,&guess,0);\n      bc_multiply(guess,point5,&guess,iVar6);\n      bc_sub(guess,guess1,&diff,iVar7);\n      cVar5 = bc_is_near_zero(diff,iVar6);\n    } while (cVar5 == '\0');\n    if (local_48 < iVar6) break;\n    iVar6 = iVar6 * 3;\n    if (local_48 + 1 <= iVar6) {\n      iVar6 = local_48 + 1;\n    }\n    iVar7 = iVar6 + 1;\n  }\n  bc_free_num(num);\n  bc_divide(guess,_one_,num,local_48);\n  bc_free_num(&guess);\n  bc_free_num(local_4c);\n  bc_free_num(&point5);\n  bc_free_num(&diff);\n  iVar6 = 1;\nLAB_00017be5:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar6;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}\n\n" comment (function_definition "int bc_sqrt(bc_num *num,int scale)\n\n{\n  int *piVar1;\n  bc_num pbVar2;\n  bc_num pbVar3;\n  sign sVar4;\n  char cVar5;\n  int iVar6;\n  int iVar7;\n  int in_GS_OFFSET;\n  int in_stack_ffffffa4;\n  bc_num *local_4c;\n  int local_48;\n  bc_num *local_40;\n  bc_num guess;\n  bc_num guess1;\n  bc_num point5;\n  bc_num diff;\n  int local_20;\n  \n  pbVar3 = _zero_;\n  pbVar2 = *num;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  sVar4 = pbVar2->n_sign;\n  local_48 = scale;\n  if (_zero_->n_sign == sVar4) {\n    iVar7 = _bc_do_compare(pbVar2,_zero_,1,in_stack_ffffffa4);\n    iVar6 = 0;\n    if (iVar7 < 0) goto LAB_00017be5;\n    if (iVar7 == 0) {\n      bc_free_num(num);\n      local_40 = &_zero_;\nLAB_00017d6d:\n      pbVar2 = *local_40;\n      piVar1 = &pbVar2->n_refs;\n      *piVar1 = *piVar1 + 1;\n      *num = pbVar2;\n      iVar6 = 1;\n      goto LAB_00017be5;\n    }\n    if (sVar4 == _one_->n_sign) goto LAB_00017c1a;\n    if (scale <= pbVar2->n_scale) {\n      local_48 = pbVar2->n_scale;\n    }\n    iVar6 = pbVar3->n_refs;\n    if (sVar4 == PLUS) goto LAB_00017d8b;\n    pbVar3->n_refs = iVar6 + 3;\n    guess = pbVar3;\n    guess1 = pbVar3;\n    diff = pbVar3;\n    point5 = bc_new_num(1,1);\n    point5->n_value[1] = '\x05';\nLAB_00017c71:\n    guess = _one_;\n    _one_->n_refs = _one_->n_refs + 1;\n    iVar6 = (*num)->n_scale;\n  }\n  else {\n    iVar6 = 0;\n    if (sVar4 != PLUS) goto LAB_00017be5;\n    if (_one_->n_sign == PLUS) {\nLAB_00017c1a:\n      local_40 = &_one_;\n      iVar6 = _bc_do_compare(pbVar2,_one_,1,in_stack_ffffffa4);\n      if (iVar6 == 0) {\n        bc_free_num(num);\n        goto LAB_00017d6d;\n      }\n      if (scale <= pbVar2->n_scale) {\n        local_48 = pbVar2->n_scale;\n      }\n      pbVar3->n_refs = pbVar3->n_refs + 3;\n      guess = pbVar3;\n      guess1 = pbVar3;\n      diff = pbVar3;\n      point5 = bc_new_num(1,1);\n      point5->n_value[1] = '\x05';\n      if (iVar6 < 0) goto LAB_00017c71;\n    }\n    else {\n      iVar6 = _zero_->n_refs;\nLAB_00017d8b:\n      local_48 = scale;\n      if (scale <= pbVar2->n_scale) {\n        local_48 = pbVar2->n_scale;\n      }\n      pbVar3->n_refs = iVar6 + 3;\n      guess = pbVar3;\n      guess1 = pbVar3;\n      diff = pbVar3;\n      point5 = bc_new_num(1,1);\n      point5->n_value[1] = '\x05';\n    }\n    iVar6 = 3;\n    bc_int2num(&guess,10);\n    bc_int2num(&guess1,(*num)->n_len);\n    bc_multiply(guess1,point5,&guess1,0);\n    guess1->n_scale = 0;\n    bc_raise(guess,guess1,&guess,0);\n    bc_free_num(&guess1);\n  }\n  local_4c = &guess1;\n  iVar7 = iVar6 + 1;\n  while( true ) {\n    do {\n      bc_free_num(local_4c);\n      guess->n_refs = guess->n_refs + 1;\n      guess1 = guess;\n      bc_divide(*num,guess,&guess,iVar6);\n      bc_add(guess,guess1,&guess,0);\n      bc_multiply(guess,point5,&guess,iVar6);\n      bc_sub(guess,guess1,&diff,iVar7);\n      cVar5 = bc_is_near_zero(diff,iVar6);\n    } while (cVar5 == '\0');\n    if (local_48 < iVar6) break;\n    iVar6 = iVar6 * 3;\n    if (local_48 + 1 <= iVar6) {\n      iVar6 = local_48 + 1;\n    }\n    iVar7 = iVar6 + 1;\n  }\n  bc_free_num(num);\n  bc_divide(guess,_one_,num,local_48);\n  bc_free_num(&guess);\n  bc_free_num(local_4c);\n  bc_free_num(&point5);\n  bc_free_num(&diff);\n  iVar6 = 1;\nLAB_00017be5:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar6;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" primitive_type (function_declarator "bc_sqrt(bc_num *num,int scale)" identifier (parameter_list "(bc_num *num,int scale)" ( (parameter_declaration "bc_num *num" type_identifier (pointer_declarator "*num" * identifier)) , (parameter_declaration "int scale" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  bc_num pbVar2;\n  bc_num pbVar3;\n  sign sVar4;\n  char cVar5;\n  int iVar6;\n  int iVar7;\n  int in_GS_OFFSET;\n  int in_stack_ffffffa4;\n  bc_num *local_4c;\n  int local_48;\n  bc_num *local_40;\n  bc_num guess;\n  bc_num guess1;\n  bc_num point5;\n  bc_num diff;\n  int local_20;\n  \n  pbVar3 = _zero_;\n  pbVar2 = *num;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  sVar4 = pbVar2->n_sign;\n  local_48 = scale;\n  if (_zero_->n_sign == sVar4) {\n    iVar7 = _bc_do_compare(pbVar2,_zero_,1,in_stack_ffffffa4);\n    iVar6 = 0;\n    if (iVar7 < 0) goto LAB_00017be5;\n    if (iVar7 == 0) {\n      bc_free_num(num);\n      local_40 = &_zero_;\nLAB_00017d6d:\n      pbVar2 = *local_40;\n      piVar1 = &pbVar2->n_refs;\n      *piVar1 = *piVar1 + 1;\n      *num = pbVar2;\n      iVar6 = 1;\n      goto LAB_00017be5;\n    }\n    if (sVar4 == _one_->n_sign) goto LAB_00017c1a;\n    if (scale <= pbVar2->n_scale) {\n      local_48 = pbVar2->n_scale;\n    }\n    iVar6 = pbVar3->n_refs;\n    if (sVar4 == PLUS) goto LAB_00017d8b;\n    pbVar3->n_refs = iVar6 + 3;\n    guess = pbVar3;\n    guess1 = pbVar3;\n    diff = pbVar3;\n    point5 = bc_new_num(1,1);\n    point5->n_value[1] = '\x05';\nLAB_00017c71:\n    guess = _one_;\n    _one_->n_refs = _one_->n_refs + 1;\n    iVar6 = (*num)->n_scale;\n  }\n  else {\n    iVar6 = 0;\n    if (sVar4 != PLUS) goto LAB_00017be5;\n    if (_one_->n_sign == PLUS) {\nLAB_00017c1a:\n      local_40 = &_one_;\n      iVar6 = _bc_do_compare(pbVar2,_one_,1,in_stack_ffffffa4);\n      if (iVar6 == 0) {\n        bc_free_num(num);\n        goto LAB_00017d6d;\n      }\n      if (scale <= pbVar2->n_scale) {\n        local_48 = pbVar2->n_scale;\n      }\n      pbVar3->n_refs = pbVar3->n_refs + 3;\n      guess = pbVar3;\n      guess1 = pbVar3;\n      diff = pbVar3;\n      point5 = bc_new_num(1,1);\n      point5->n_value[1] = '\x05';\n      if (iVar6 < 0) goto LAB_00017c71;\n    }\n    else {\n      iVar6 = _zero_->n_refs;\nLAB_00017d8b:\n      local_48 = scale;\n      if (scale <= pbVar2->n_scale) {\n        local_48 = pbVar2->n_scale;\n      }\n      pbVar3->n_refs = iVar6 + 3;\n      guess = pbVar3;\n      guess1 = pbVar3;\n      diff = pbVar3;\n      point5 = bc_new_num(1,1);\n      point5->n_value[1] = '\x05';\n    }\n    iVar6 = 3;\n    bc_int2num(&guess,10);\n    bc_int2num(&guess1,(*num)->n_len);\n    bc_multiply(guess1,point5,&guess1,0);\n    guess1->n_scale = 0;\n    bc_raise(guess,guess1,&guess,0);\n    bc_free_num(&guess1);\n  }\n  local_4c = &guess1;\n  iVar7 = iVar6 + 1;\n  while( true ) {\n    do {\n      bc_free_num(local_4c);\n      guess->n_refs = guess->n_refs + 1;\n      guess1 = guess;\n      bc_divide(*num,guess,&guess,iVar6);\n      bc_add(guess,guess1,&guess,0);\n      bc_multiply(guess,point5,&guess,iVar6);\n      bc_sub(guess,guess1,&diff,iVar7);\n      cVar5 = bc_is_near_zero(diff,iVar6);\n    } while (cVar5 == '\0');\n    if (local_48 < iVar6) break;\n    iVar6 = iVar6 * 3;\n    if (local_48 + 1 <= iVar6) {\n      iVar6 = local_48 + 1;\n    }\n    iVar7 = iVar6 + 1;\n  }\n  bc_free_num(num);\n  bc_divide(guess,_one_,num,local_48);\n  bc_free_num(&guess);\n  bc_free_num(local_4c);\n  bc_free_num(&point5);\n  bc_free_num(&diff);\n  iVar6 = 1;\nLAB_00017be5:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar6;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "bc_num pbVar2;" type_identifier identifier ;) (declaration "bc_num pbVar3;" type_identifier identifier ;) (declaration "sign sVar4;" type_identifier identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "int in_stack_ffffffa4;" primitive_type identifier ;) (declaration "bc_num *local_4c;" type_identifier (pointer_declarator "*local_4c" * identifier) ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "bc_num *local_40;" type_identifier (pointer_declarator "*local_40" * identifier) ;) (declaration "bc_num guess;" type_identifier identifier ;) (declaration "bc_num guess1;" type_identifier identifier ;) (declaration "bc_num point5;" type_identifier identifier ;) (declaration "bc_num diff;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "pbVar3 = _zero_;" (assignment_expression "pbVar3 = _zero_" identifier = identifier) ;) (expression_statement "pbVar2 = *num;" (assignment_expression "pbVar2 = *num" identifier = (pointer_expression "*num" * identifier)) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "sVar4 = pbVar2->n_sign;" (assignment_expression "sVar4 = pbVar2->n_sign" identifier = (field_expression "pbVar2->n_sign" identifier -> field_identifier)) ;) (expression_statement "local_48 = scale;" (assignment_expression "local_48 = scale" identifier = identifier) ;) (if_statement "if (_zero_->n_sign == sVar4) {\n    iVar7 = _bc_do_compare(pbVar2,_zero_,1,in_stack_ffffffa4);\n    iVar6 = 0;\n    if (iVar7 < 0) goto LAB_00017be5;\n    if (iVar7 == 0) {\n      bc_free_num(num);\n      local_40 = &_zero_;\nLAB_00017d6d:\n      pbVar2 = *local_40;\n      piVar1 = &pbVar2->n_refs;\n      *piVar1 = *piVar1 + 1;\n      *num = pbVar2;\n      iVar6 = 1;\n      goto LAB_00017be5;\n    }\n    if (sVar4 == _one_->n_sign) goto LAB_00017c1a;\n    if (scale <= pbVar2->n_scale) {\n      local_48 = pbVar2->n_scale;\n    }\n    iVar6 = pbVar3->n_refs;\n    if (sVar4 == PLUS) goto LAB_00017d8b;\n    pbVar3->n_refs = iVar6 + 3;\n    guess = pbVar3;\n    guess1 = pbVar3;\n    diff = pbVar3;\n    point5 = bc_new_num(1,1);\n    point5->n_value[1] = '\x05';\nLAB_00017c71:\n    guess = _one_;\n    _one_->n_refs = _one_->n_refs + 1;\n    iVar6 = (*num)->n_scale;\n  }\n  else {\n    iVar6 = 0;\n    if (sVar4 != PLUS) goto LAB_00017be5;\n    if (_one_->n_sign == PLUS) {\nLAB_00017c1a:\n      local_40 = &_one_;\n      iVar6 = _bc_do_compare(pbVar2,_one_,1,in_stack_ffffffa4);\n      if (iVar6 == 0) {\n        bc_free_num(num);\n        goto LAB_00017d6d;\n      }\n      if (scale <= pbVar2->n_scale) {\n        local_48 = pbVar2->n_scale;\n      }\n      pbVar3->n_refs = pbVar3->n_refs + 3;\n      guess = pbVar3;\n      guess1 = pbVar3;\n      diff = pbVar3;\n      point5 = bc_new_num(1,1);\n      point5->n_value[1] = '\x05';\n      if (iVar6 < 0) goto LAB_00017c71;\n    }\n    else {\n      iVar6 = _zero_->n_refs;\nLAB_00017d8b:\n      local_48 = scale;\n      if (scale <= pbVar2->n_scale) {\n        local_48 = pbVar2->n_scale;\n      }\n      pbVar3->n_refs = iVar6 + 3;\n      guess = pbVar3;\n      guess1 = pbVar3;\n      diff = pbVar3;\n      point5 = bc_new_num(1,1);\n      point5->n_value[1] = '\x05';\n    }\n    iVar6 = 3;\n    bc_int2num(&guess,10);\n    bc_int2num(&guess1,(*num)->n_len);\n    bc_multiply(guess1,point5,&guess1,0);\n    guess1->n_scale = 0;\n    bc_raise(guess,guess1,&guess,0);\n    bc_free_num(&guess1);\n  }" if (parenthesized_expression "(_zero_->n_sign == sVar4)" ( (binary_expression "_zero_->n_sign == sVar4" (field_expression "_zero_->n_sign" identifier -> field_identifier) == identifier) )) (compound_statement "{\n    iVar7 = _bc_do_compare(pbVar2,_zero_,1,in_stack_ffffffa4);\n    iVar6 = 0;\n    if (iVar7 < 0) goto LAB_00017be5;\n    if (iVar7 == 0) {\n      bc_free_num(num);\n      local_40 = &_zero_;\nLAB_00017d6d:\n      pbVar2 = *local_40;\n      piVar1 = &pbVar2->n_refs;\n      *piVar1 = *piVar1 + 1;\n      *num = pbVar2;\n      iVar6 = 1;\n      goto LAB_00017be5;\n    }\n    if (sVar4 == _one_->n_sign) goto LAB_00017c1a;\n    if (scale <= pbVar2->n_scale) {\n      local_48 = pbVar2->n_scale;\n    }\n    iVar6 = pbVar3->n_refs;\n    if (sVar4 == PLUS) goto LAB_00017d8b;\n    pbVar3->n_refs = iVar6 + 3;\n    guess = pbVar3;\n    guess1 = pbVar3;\n    diff = pbVar3;\n    point5 = bc_new_num(1,1);\n    point5->n_value[1] = '\x05';\nLAB_00017c71:\n    guess = _one_;\n    _one_->n_refs = _one_->n_refs + 1;\n    iVar6 = (*num)->n_scale;\n  }" { (expression_statement "iVar7 = _bc_do_compare(pbVar2,_zero_,1,in_stack_ffffffa4);" (assignment_expression "iVar7 = _bc_do_compare(pbVar2,_zero_,1,in_stack_ffffffa4)" identifier = (call_expression "_bc_do_compare(pbVar2,_zero_,1,in_stack_ffffffa4)" identifier (argument_list "(pbVar2,_zero_,1,in_stack_ffffffa4)" ( identifier , identifier , number_literal , identifier )))) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (if_statement "if (iVar7 < 0) goto LAB_00017be5;" if (parenthesized_expression "(iVar7 < 0)" ( (binary_expression "iVar7 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00017be5;" goto statement_identifier ;)) (if_statement "if (iVar7 == 0) {\n      bc_free_num(num);\n      local_40 = &_zero_;\nLAB_00017d6d:\n      pbVar2 = *local_40;\n      piVar1 = &pbVar2->n_refs;\n      *piVar1 = *piVar1 + 1;\n      *num = pbVar2;\n      iVar6 = 1;\n      goto LAB_00017be5;\n    }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n      bc_free_num(num);\n      local_40 = &_zero_;\nLAB_00017d6d:\n      pbVar2 = *local_40;\n      piVar1 = &pbVar2->n_refs;\n      *piVar1 = *piVar1 + 1;\n      *num = pbVar2;\n      iVar6 = 1;\n      goto LAB_00017be5;\n    }" { (expression_statement "bc_free_num(num);" (call_expression "bc_free_num(num)" identifier (argument_list "(num)" ( identifier ))) ;) (expression_statement "local_40 = &_zero_;" (assignment_expression "local_40 = &_zero_" identifier = (pointer_expression "&_zero_" & identifier)) ;) (labeled_statement "LAB_00017d6d:\n      pbVar2 = *local_40;" statement_identifier : (expression_statement "pbVar2 = *local_40;" (assignment_expression "pbVar2 = *local_40" identifier = (pointer_expression "*local_40" * identifier)) ;)) (expression_statement "piVar1 = &pbVar2->n_refs;" (assignment_expression "piVar1 = &pbVar2->n_refs" identifier = (pointer_expression "&pbVar2->n_refs" & (field_expression "pbVar2->n_refs" identifier -> field_identifier))) ;) (expression_statement "*piVar1 = *piVar1 + 1;" (assignment_expression "*piVar1 = *piVar1 + 1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + 1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) (expression_statement "*num = pbVar2;" (assignment_expression "*num = pbVar2" (pointer_expression "*num" * identifier) = identifier) ;) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00017be5;" goto statement_identifier ;) })) (if_statement "if (sVar4 == _one_->n_sign) goto LAB_00017c1a;" if (parenthesized_expression "(sVar4 == _one_->n_sign)" ( (binary_expression "sVar4 == _one_->n_sign" identifier == (field_expression "_one_->n_sign" identifier -> field_identifier)) )) (goto_statement "goto LAB_00017c1a;" goto statement_identifier ;)) (if_statement "if (scale <= pbVar2->n_scale) {\n      local_48 = pbVar2->n_scale;\n    }" if (parenthesized_expression "(scale <= pbVar2->n_scale)" ( (binary_expression "scale <= pbVar2->n_scale" identifier <= (field_expression "pbVar2->n_scale" identifier -> field_identifier)) )) (compound_statement "{\n      local_48 = pbVar2->n_scale;\n    }" { (expression_statement "local_48 = pbVar2->n_scale;" (assignment_expression "local_48 = pbVar2->n_scale" identifier = (field_expression "pbVar2->n_scale" identifier -> field_identifier)) ;) })) (expression_statement "iVar6 = pbVar3->n_refs;" (assignment_expression "iVar6 = pbVar3->n_refs" identifier = (field_expression "pbVar3->n_refs" identifier -> field_identifier)) ;) (if_statement "if (sVar4 == PLUS) goto LAB_00017d8b;" if (parenthesized_expression "(sVar4 == PLUS)" ( (binary_expression "sVar4 == PLUS" identifier == identifier) )) (goto_statement "goto LAB_00017d8b;" goto statement_identifier ;)) (expression_statement "pbVar3->n_refs = iVar6 + 3;" (assignment_expression "pbVar3->n_refs = iVar6 + 3" (field_expression "pbVar3->n_refs" identifier -> field_identifier) = (binary_expression "iVar6 + 3" identifier + number_literal)) ;) (expression_statement "guess = pbVar3;" (assignment_expression "guess = pbVar3" identifier = identifier) ;) (expression_statement "guess1 = pbVar3;" (assignment_expression "guess1 = pbVar3" identifier = identifier) ;) (expression_statement "diff = pbVar3;" (assignment_expression "diff = pbVar3" identifier = identifier) ;) (expression_statement "point5 = bc_new_num(1,1);" (assignment_expression "point5 = bc_new_num(1,1)" identifier = (call_expression "bc_new_num(1,1)" identifier (argument_list "(1,1)" ( number_literal , number_literal )))) ;) (expression_statement "point5->n_value[1] = '\x05';" (assignment_expression "point5->n_value[1] = '\x05'" (subscript_expression "point5->n_value[1]" (field_expression "point5->n_value" identifier -> field_identifier) [ number_literal ]) = (char_literal "'\x05'" ' escape_sequence ')) ;) (labeled_statement "LAB_00017c71:\n    guess = _one_;" statement_identifier : (expression_statement "guess = _one_;" (assignment_expression "guess = _one_" identifier = identifier) ;)) (expression_statement "_one_->n_refs = _one_->n_refs + 1;" (assignment_expression "_one_->n_refs = _one_->n_refs + 1" (field_expression "_one_->n_refs" identifier -> field_identifier) = (binary_expression "_one_->n_refs + 1" (field_expression "_one_->n_refs" identifier -> field_identifier) + number_literal)) ;) (expression_statement "iVar6 = (*num)->n_scale;" (assignment_expression "iVar6 = (*num)->n_scale" identifier = (field_expression "(*num)->n_scale" (parenthesized_expression "(*num)" ( (pointer_expression "*num" * identifier) )) -> field_identifier)) ;) }) (else_clause "else {\n    iVar6 = 0;\n    if (sVar4 != PLUS) goto LAB_00017be5;\n    if (_one_->n_sign == PLUS) {\nLAB_00017c1a:\n      local_40 = &_one_;\n      iVar6 = _bc_do_compare(pbVar2,_one_,1,in_stack_ffffffa4);\n      if (iVar6 == 0) {\n        bc_free_num(num);\n        goto LAB_00017d6d;\n      }\n      if (scale <= pbVar2->n_scale) {\n        local_48 = pbVar2->n_scale;\n      }\n      pbVar3->n_refs = pbVar3->n_refs + 3;\n      guess = pbVar3;\n      guess1 = pbVar3;\n      diff = pbVar3;\n      point5 = bc_new_num(1,1);\n      point5->n_value[1] = '\x05';\n      if (iVar6 < 0) goto LAB_00017c71;\n    }\n    else {\n      iVar6 = _zero_->n_refs;\nLAB_00017d8b:\n      local_48 = scale;\n      if (scale <= pbVar2->n_scale) {\n        local_48 = pbVar2->n_scale;\n      }\n      pbVar3->n_refs = iVar6 + 3;\n      guess = pbVar3;\n      guess1 = pbVar3;\n      diff = pbVar3;\n      point5 = bc_new_num(1,1);\n      point5->n_value[1] = '\x05';\n    }\n    iVar6 = 3;\n    bc_int2num(&guess,10);\n    bc_int2num(&guess1,(*num)->n_len);\n    bc_multiply(guess1,point5,&guess1,0);\n    guess1->n_scale = 0;\n    bc_raise(guess,guess1,&guess,0);\n    bc_free_num(&guess1);\n  }" else (compound_statement "{\n    iVar6 = 0;\n    if (sVar4 != PLUS) goto LAB_00017be5;\n    if (_one_->n_sign == PLUS) {\nLAB_00017c1a:\n      local_40 = &_one_;\n      iVar6 = _bc_do_compare(pbVar2,_one_,1,in_stack_ffffffa4);\n      if (iVar6 == 0) {\n        bc_free_num(num);\n        goto LAB_00017d6d;\n      }\n      if (scale <= pbVar2->n_scale) {\n        local_48 = pbVar2->n_scale;\n      }\n      pbVar3->n_refs = pbVar3->n_refs + 3;\n      guess = pbVar3;\n      guess1 = pbVar3;\n      diff = pbVar3;\n      point5 = bc_new_num(1,1);\n      point5->n_value[1] = '\x05';\n      if (iVar6 < 0) goto LAB_00017c71;\n    }\n    else {\n      iVar6 = _zero_->n_refs;\nLAB_00017d8b:\n      local_48 = scale;\n      if (scale <= pbVar2->n_scale) {\n        local_48 = pbVar2->n_scale;\n      }\n      pbVar3->n_refs = iVar6 + 3;\n      guess = pbVar3;\n      guess1 = pbVar3;\n      diff = pbVar3;\n      point5 = bc_new_num(1,1);\n      point5->n_value[1] = '\x05';\n    }\n    iVar6 = 3;\n    bc_int2num(&guess,10);\n    bc_int2num(&guess1,(*num)->n_len);\n    bc_multiply(guess1,point5,&guess1,0);\n    guess1->n_scale = 0;\n    bc_raise(guess,guess1,&guess,0);\n    bc_free_num(&guess1);\n  }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (if_statement "if (sVar4 != PLUS) goto LAB_00017be5;" if (parenthesized_expression "(sVar4 != PLUS)" ( (binary_expression "sVar4 != PLUS" identifier != identifier) )) (goto_statement "goto LAB_00017be5;" goto statement_identifier ;)) (if_statement "if (_one_->n_sign == PLUS) {\nLAB_00017c1a:\n      local_40 = &_one_;\n      iVar6 = _bc_do_compare(pbVar2,_one_,1,in_stack_ffffffa4);\n      if (iVar6 == 0) {\n        bc_free_num(num);\n        goto LAB_00017d6d;\n      }\n      if (scale <= pbVar2->n_scale) {\n        local_48 = pbVar2->n_scale;\n      }\n      pbVar3->n_refs = pbVar3->n_refs + 3;\n      guess = pbVar3;\n      guess1 = pbVar3;\n      diff = pbVar3;\n      point5 = bc_new_num(1,1);\n      point5->n_value[1] = '\x05';\n      if (iVar6 < 0) goto LAB_00017c71;\n    }\n    else {\n      iVar6 = _zero_->n_refs;\nLAB_00017d8b:\n      local_48 = scale;\n      if (scale <= pbVar2->n_scale) {\n        local_48 = pbVar2->n_scale;\n      }\n      pbVar3->n_refs = iVar6 + 3;\n      guess = pbVar3;\n      guess1 = pbVar3;\n      diff = pbVar3;\n      point5 = bc_new_num(1,1);\n      point5->n_value[1] = '\x05';\n    }" if (parenthesized_expression "(_one_->n_sign == PLUS)" ( (binary_expression "_one_->n_sign == PLUS" (field_expression "_one_->n_sign" identifier -> field_identifier) == identifier) )) (compound_statement "{\nLAB_00017c1a:\n      local_40 = &_one_;\n      iVar6 = _bc_do_compare(pbVar2,_one_,1,in_stack_ffffffa4);\n      if (iVar6 == 0) {\n        bc_free_num(num);\n        goto LAB_00017d6d;\n      }\n      if (scale <= pbVar2->n_scale) {\n        local_48 = pbVar2->n_scale;\n      }\n      pbVar3->n_refs = pbVar3->n_refs + 3;\n      guess = pbVar3;\n      guess1 = pbVar3;\n      diff = pbVar3;\n      point5 = bc_new_num(1,1);\n      point5->n_value[1] = '\x05';\n      if (iVar6 < 0) goto LAB_00017c71;\n    }" { (labeled_statement "LAB_00017c1a:\n      local_40 = &_one_;" statement_identifier : (expression_statement "local_40 = &_one_;" (assignment_expression "local_40 = &_one_" identifier = (pointer_expression "&_one_" & identifier)) ;)) (expression_statement "iVar6 = _bc_do_compare(pbVar2,_one_,1,in_stack_ffffffa4);" (assignment_expression "iVar6 = _bc_do_compare(pbVar2,_one_,1,in_stack_ffffffa4)" identifier = (call_expression "_bc_do_compare(pbVar2,_one_,1,in_stack_ffffffa4)" identifier (argument_list "(pbVar2,_one_,1,in_stack_ffffffa4)" ( identifier , identifier , number_literal , identifier )))) ;) (if_statement "if (iVar6 == 0) {\n        bc_free_num(num);\n        goto LAB_00017d6d;\n      }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n        bc_free_num(num);\n        goto LAB_00017d6d;\n      }" { (expression_statement "bc_free_num(num);" (call_expression "bc_free_num(num)" identifier (argument_list "(num)" ( identifier ))) ;) (goto_statement "goto LAB_00017d6d;" goto statement_identifier ;) })) (if_statement "if (scale <= pbVar2->n_scale) {\n        local_48 = pbVar2->n_scale;\n      }" if (parenthesized_expression "(scale <= pbVar2->n_scale)" ( (binary_expression "scale <= pbVar2->n_scale" identifier <= (field_expression "pbVar2->n_scale" identifier -> field_identifier)) )) (compound_statement "{\n        local_48 = pbVar2->n_scale;\n      }" { (expression_statement "local_48 = pbVar2->n_scale;" (assignment_expression "local_48 = pbVar2->n_scale" identifier = (field_expression "pbVar2->n_scale" identifier -> field_identifier)) ;) })) (expression_statement "pbVar3->n_refs = pbVar3->n_refs + 3;" (assignment_expression "pbVar3->n_refs = pbVar3->n_refs + 3" (field_expression "pbVar3->n_refs" identifier -> field_identifier) = (binary_expression "pbVar3->n_refs + 3" (field_expression "pbVar3->n_refs" identifier -> field_identifier) + number_literal)) ;) (expression_statement "guess = pbVar3;" (assignment_expression "guess = pbVar3" identifier = identifier) ;) (expression_statement "guess1 = pbVar3;" (assignment_expression "guess1 = pbVar3" identifier = identifier) ;) (expression_statement "diff = pbVar3;" (assignment_expression "diff = pbVar3" identifier = identifier) ;) (expression_statement "point5 = bc_new_num(1,1);" (assignment_expression "point5 = bc_new_num(1,1)" identifier = (call_expression "bc_new_num(1,1)" identifier (argument_list "(1,1)" ( number_literal , number_literal )))) ;) (expression_statement "point5->n_value[1] = '\x05';" (assignment_expression "point5->n_value[1] = '\x05'" (subscript_expression "point5->n_value[1]" (field_expression "point5->n_value" identifier -> field_identifier) [ number_literal ]) = (char_literal "'\x05'" ' escape_sequence ')) ;) (if_statement "if (iVar6 < 0) goto LAB_00017c71;" if (parenthesized_expression "(iVar6 < 0)" ( (binary_expression "iVar6 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00017c71;" goto statement_identifier ;)) }) (else_clause "else {\n      iVar6 = _zero_->n_refs;\nLAB_00017d8b:\n      local_48 = scale;\n      if (scale <= pbVar2->n_scale) {\n        local_48 = pbVar2->n_scale;\n      }\n      pbVar3->n_refs = iVar6 + 3;\n      guess = pbVar3;\n      guess1 = pbVar3;\n      diff = pbVar3;\n      point5 = bc_new_num(1,1);\n      point5->n_value[1] = '\x05';\n    }" else (compound_statement "{\n      iVar6 = _zero_->n_refs;\nLAB_00017d8b:\n      local_48 = scale;\n      if (scale <= pbVar2->n_scale) {\n        local_48 = pbVar2->n_scale;\n      }\n      pbVar3->n_refs = iVar6 + 3;\n      guess = pbVar3;\n      guess1 = pbVar3;\n      diff = pbVar3;\n      point5 = bc_new_num(1,1);\n      point5->n_value[1] = '\x05';\n    }" { (expression_statement "iVar6 = _zero_->n_refs;" (assignment_expression "iVar6 = _zero_->n_refs" identifier = (field_expression "_zero_->n_refs" identifier -> field_identifier)) ;) (labeled_statement "LAB_00017d8b:\n      local_48 = scale;" statement_identifier : (expression_statement "local_48 = scale;" (assignment_expression "local_48 = scale" identifier = identifier) ;)) (if_statement "if (scale <= pbVar2->n_scale) {\n        local_48 = pbVar2->n_scale;\n      }" if (parenthesized_expression "(scale <= pbVar2->n_scale)" ( (binary_expression "scale <= pbVar2->n_scale" identifier <= (field_expression "pbVar2->n_scale" identifier -> field_identifier)) )) (compound_statement "{\n        local_48 = pbVar2->n_scale;\n      }" { (expression_statement "local_48 = pbVar2->n_scale;" (assignment_expression "local_48 = pbVar2->n_scale" identifier = (field_expression "pbVar2->n_scale" identifier -> field_identifier)) ;) })) (expression_statement "pbVar3->n_refs = iVar6 + 3;" (assignment_expression "pbVar3->n_refs = iVar6 + 3" (field_expression "pbVar3->n_refs" identifier -> field_identifier) = (binary_expression "iVar6 + 3" identifier + number_literal)) ;) (expression_statement "guess = pbVar3;" (assignment_expression "guess = pbVar3" identifier = identifier) ;) (expression_statement "guess1 = pbVar3;" (assignment_expression "guess1 = pbVar3" identifier = identifier) ;) (expression_statement "diff = pbVar3;" (assignment_expression "diff = pbVar3" identifier = identifier) ;) (expression_statement "point5 = bc_new_num(1,1);" (assignment_expression "point5 = bc_new_num(1,1)" identifier = (call_expression "bc_new_num(1,1)" identifier (argument_list "(1,1)" ( number_literal , number_literal )))) ;) (expression_statement "point5->n_value[1] = '\x05';" (assignment_expression "point5->n_value[1] = '\x05'" (subscript_expression "point5->n_value[1]" (field_expression "point5->n_value" identifier -> field_identifier) [ number_literal ]) = (char_literal "'\x05'" ' escape_sequence ')) ;) }))) (expression_statement "iVar6 = 3;" (assignment_expression "iVar6 = 3" identifier = number_literal) ;) (expression_statement "bc_int2num(&guess,10);" (call_expression "bc_int2num(&guess,10)" identifier (argument_list "(&guess,10)" ( (pointer_expression "&guess" & identifier) , number_literal ))) ;) (expression_statement "bc_int2num(&guess1,(*num)->n_len);" (call_expression "bc_int2num(&guess1,(*num)->n_len)" identifier (argument_list "(&guess1,(*num)->n_len)" ( (pointer_expression "&guess1" & identifier) , (field_expression "(*num)->n_len" (parenthesized_expression "(*num)" ( (pointer_expression "*num" * identifier) )) -> field_identifier) ))) ;) (expression_statement "bc_multiply(guess1,point5,&guess1,0);" (call_expression "bc_multiply(guess1,point5,&guess1,0)" identifier (argument_list "(guess1,point5,&guess1,0)" ( identifier , identifier , (pointer_expression "&guess1" & identifier) , number_literal ))) ;) (expression_statement "guess1->n_scale = 0;" (assignment_expression "guess1->n_scale = 0" (field_expression "guess1->n_scale" identifier -> field_identifier) = number_literal) ;) (expression_statement "bc_raise(guess,guess1,&guess,0);" (call_expression "bc_raise(guess,guess1,&guess,0)" identifier (argument_list "(guess,guess1,&guess,0)" ( identifier , identifier , (pointer_expression "&guess" & identifier) , number_literal ))) ;) (expression_statement "bc_free_num(&guess1);" (call_expression "bc_free_num(&guess1)" identifier (argument_list "(&guess1)" ( (pointer_expression "&guess1" & identifier) ))) ;) }))) (expression_statement "local_4c = &guess1;" (assignment_expression "local_4c = &guess1" identifier = (pointer_expression "&guess1" & identifier)) ;) (expression_statement "iVar7 = iVar6 + 1;" (assignment_expression "iVar7 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (while_statement "while( true ) {\n    do {\n      bc_free_num(local_4c);\n      guess->n_refs = guess->n_refs + 1;\n      guess1 = guess;\n      bc_divide(*num,guess,&guess,iVar6);\n      bc_add(guess,guess1,&guess,0);\n      bc_multiply(guess,point5,&guess,iVar6);\n      bc_sub(guess,guess1,&diff,iVar7);\n      cVar5 = bc_is_near_zero(diff,iVar6);\n    } while (cVar5 == '\0');\n    if (local_48 < iVar6) break;\n    iVar6 = iVar6 * 3;\n    if (local_48 + 1 <= iVar6) {\n      iVar6 = local_48 + 1;\n    }\n    iVar7 = iVar6 + 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    do {\n      bc_free_num(local_4c);\n      guess->n_refs = guess->n_refs + 1;\n      guess1 = guess;\n      bc_divide(*num,guess,&guess,iVar6);\n      bc_add(guess,guess1,&guess,0);\n      bc_multiply(guess,point5,&guess,iVar6);\n      bc_sub(guess,guess1,&diff,iVar7);\n      cVar5 = bc_is_near_zero(diff,iVar6);\n    } while (cVar5 == '\0');\n    if (local_48 < iVar6) break;\n    iVar6 = iVar6 * 3;\n    if (local_48 + 1 <= iVar6) {\n      iVar6 = local_48 + 1;\n    }\n    iVar7 = iVar6 + 1;\n  }" { (do_statement "do {\n      bc_free_num(local_4c);\n      guess->n_refs = guess->n_refs + 1;\n      guess1 = guess;\n      bc_divide(*num,guess,&guess,iVar6);\n      bc_add(guess,guess1,&guess,0);\n      bc_multiply(guess,point5,&guess,iVar6);\n      bc_sub(guess,guess1,&diff,iVar7);\n      cVar5 = bc_is_near_zero(diff,iVar6);\n    } while (cVar5 == '\0');" do (compound_statement "{\n      bc_free_num(local_4c);\n      guess->n_refs = guess->n_refs + 1;\n      guess1 = guess;\n      bc_divide(*num,guess,&guess,iVar6);\n      bc_add(guess,guess1,&guess,0);\n      bc_multiply(guess,point5,&guess,iVar6);\n      bc_sub(guess,guess1,&diff,iVar7);\n      cVar5 = bc_is_near_zero(diff,iVar6);\n    }" { (expression_statement "bc_free_num(local_4c);" (call_expression "bc_free_num(local_4c)" identifier (argument_list "(local_4c)" ( identifier ))) ;) (expression_statement "guess->n_refs = guess->n_refs + 1;" (assignment_expression "guess->n_refs = guess->n_refs + 1" (field_expression "guess->n_refs" identifier -> field_identifier) = (binary_expression "guess->n_refs + 1" (field_expression "guess->n_refs" identifier -> field_identifier) + number_literal)) ;) (expression_statement "guess1 = guess;" (assignment_expression "guess1 = guess" identifier = identifier) ;) (expression_statement "bc_divide(*num,guess,&guess,iVar6);" (call_expression "bc_divide(*num,guess,&guess,iVar6)" identifier (argument_list "(*num,guess,&guess,iVar6)" ( (pointer_expression "*num" * identifier) , identifier , (pointer_expression "&guess" & identifier) , identifier ))) ;) (expression_statement "bc_add(guess,guess1,&guess,0);" (call_expression "bc_add(guess,guess1,&guess,0)" identifier (argument_list "(guess,guess1,&guess,0)" ( identifier , identifier , (pointer_expression "&guess" & identifier) , number_literal ))) ;) (expression_statement "bc_multiply(guess,point5,&guess,iVar6);" (call_expression "bc_multiply(guess,point5,&guess,iVar6)" identifier (argument_list "(guess,point5,&guess,iVar6)" ( identifier , identifier , (pointer_expression "&guess" & identifier) , identifier ))) ;) (expression_statement "bc_sub(guess,guess1,&diff,iVar7);" (call_expression "bc_sub(guess,guess1,&diff,iVar7)" identifier (argument_list "(guess,guess1,&diff,iVar7)" ( identifier , identifier , (pointer_expression "&diff" & identifier) , identifier ))) ;) (expression_statement "cVar5 = bc_is_near_zero(diff,iVar6);" (assignment_expression "cVar5 = bc_is_near_zero(diff,iVar6)" identifier = (call_expression "bc_is_near_zero(diff,iVar6)" identifier (argument_list "(diff,iVar6)" ( identifier , identifier )))) ;) }) while (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) ;) (if_statement "if (local_48 < iVar6) break;" if (parenthesized_expression "(local_48 < iVar6)" ( (binary_expression "local_48 < iVar6" identifier < identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = iVar6 * 3;" (assignment_expression "iVar6 = iVar6 * 3" identifier = (binary_expression "iVar6 * 3" identifier * number_literal)) ;) (if_statement "if (local_48 + 1 <= iVar6) {\n      iVar6 = local_48 + 1;\n    }" if (parenthesized_expression "(local_48 + 1 <= iVar6)" ( (binary_expression "local_48 + 1 <= iVar6" (binary_expression "local_48 + 1" identifier + number_literal) <= identifier) )) (compound_statement "{\n      iVar6 = local_48 + 1;\n    }" { (expression_statement "iVar6 = local_48 + 1;" (assignment_expression "iVar6 = local_48 + 1" identifier = (binary_expression "local_48 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar7 = iVar6 + 1;" (assignment_expression "iVar7 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) })) (expression_statement "bc_free_num(num);" (call_expression "bc_free_num(num)" identifier (argument_list "(num)" ( identifier ))) ;) (expression_statement "bc_divide(guess,_one_,num,local_48);" (call_expression "bc_divide(guess,_one_,num,local_48)" identifier (argument_list "(guess,_one_,num,local_48)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "bc_free_num(&guess);" (call_expression "bc_free_num(&guess)" identifier (argument_list "(&guess)" ( (pointer_expression "&guess" & identifier) ))) ;) (expression_statement "bc_free_num(local_4c);" (call_expression "bc_free_num(local_4c)" identifier (argument_list "(local_4c)" ( identifier ))) ;) (expression_statement "bc_free_num(&point5);" (call_expression "bc_free_num(&point5)" identifier (argument_list "(&point5)" ( (pointer_expression "&point5" & identifier) ))) ;) (expression_statement "bc_free_num(&diff);" (call_expression "bc_free_num(&diff)" identifier (argument_list "(&diff)" ( (pointer_expression "&diff" & identifier) ))) ;) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (labeled_statement "LAB_00017be5:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar6;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar6;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return iVar6;\n  }" { (return_statement "return iVar6;" return identifier ;) }))) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "undefined4 FUN_00017ba0(int *param_1,int param_2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  char cVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  int in_GS_OFFSET;\n  int **local_4c;\n  int local_48;\n  int *local_40;\n  int *local_30;\n  int *local_2c;\n  int local_28;\n  int *local_24;\n  int local_20;\n  \n  piVar2 = DAT_0001e484;\n  piVar1 = (int *)*param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar5 = *piVar1;\n  local_48 = param_2;\n  if (*DAT_0001e484 == iVar5) {\n    iVar6 = FUN_000157c0();\n    uVar4 = 0;\n    if (iVar6 < 0) goto LAB_00017be5;\n    if (iVar6 == 0) {\n      FUN_00015e30(param_1);\n      local_40 = (int *)&DAT_0001e484;\nLAB_00017d6d:\n      iVar5 = *local_40;\n      piVar1 = (int *)(iVar5 + 0xc);\n      *piVar1 = *piVar1 + 1;\n      *param_1 = iVar5;\n      uVar4 = 1;\n      goto LAB_00017be5;\n    }\n    if (iVar5 == *DAT_0001e47c) goto LAB_00017c1a;\n    if (param_2 <= piVar1[2]) {\n      local_48 = piVar1[2];\n    }\n    iVar6 = piVar2[3];\n    if (iVar5 == 0) goto LAB_00017d8b;\n    piVar2[3] = iVar6 + 3;\n    local_30 = piVar2;\n    local_2c = piVar2;\n    local_24 = piVar2;\n    local_28 = FUN_000158f0(1,1);\n    *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\nLAB_00017c71:\n    local_30 = DAT_0001e47c;\n    DAT_0001e47c[3] = DAT_0001e47c[3] + 1;\n    iVar5 = *(int *)(*param_1 + 8);\n  }\n  else {\n    uVar4 = 0;\n    if (iVar5 != 0) goto LAB_00017be5;\n    if (*DAT_0001e47c == 0) {\nLAB_00017c1a:\n      local_40 = (int *)&DAT_0001e47c;\n      iVar5 = FUN_000157c0();\n      if (iVar5 == 0) {\n        FUN_00015e30(param_1);\n        goto LAB_00017d6d;\n      }\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = piVar2[3] + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n      if (iVar5 < 0) goto LAB_00017c71;\n    }\n    else {\n      iVar6 = DAT_0001e484[3];\nLAB_00017d8b:\n      local_48 = param_2;\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = iVar6 + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n    }\n    iVar5 = 3;\n    FUN_00017a00(&local_30,10);\n    FUN_00017a00(&local_2c,*(undefined4 *)(*param_1 + 4));\n    FUN_00016a60(local_2c,local_28,&local_2c,0);\n    local_2c[2] = 0;\n    FUN_000177e0(local_30,local_2c,&local_30,0);\n    FUN_00015e30(&local_2c);\n  }\n  local_4c = &local_2c;\n  iVar6 = iVar5 + 1;\n  while( true ) {\n    do {\n      FUN_00015e30(local_4c);\n      local_30[3] = local_30[3] + 1;\n      local_2c = local_30;\n      FUN_00016b90(*param_1,local_30,&local_30,iVar5);\n      FUN_00016960(local_30,local_2c,&local_30,0);\n      FUN_00016a60(local_30,local_28,&local_30,iVar5);\n      FUN_00016030(local_30,local_2c,&local_24,iVar6);\n      cVar3 = FUN_00015fd0(local_24,iVar5);\n    } while (cVar3 == '\0');\n    if (local_48 < iVar5) break;\n    iVar5 = iVar5 * 3;\n    if (local_48 + 1 <= iVar5) {\n      iVar5 = local_48 + 1;\n    }\n    iVar6 = iVar5 + 1;\n  }\n  FUN_00015e30(param_1);\n  FUN_00016b90(local_30,DAT_0001e47c,param_1,local_48);\n  FUN_00015e30(&local_30);\n  FUN_00015e30(local_4c);\n  FUN_00015e30(&local_28);\n  FUN_00015e30(&local_24);\n  uVar4 = 1;\nLAB_00017be5:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar4;\n  }\n                    \n  FUN_00018840();\n}\n\n" (function_definition "undefined4 FUN_00017ba0(int *param_1,int param_2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  char cVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  int in_GS_OFFSET;\n  int **local_4c;\n  int local_48;\n  int *local_40;\n  int *local_30;\n  int *local_2c;\n  int local_28;\n  int *local_24;\n  int local_20;\n  \n  piVar2 = DAT_0001e484;\n  piVar1 = (int *)*param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar5 = *piVar1;\n  local_48 = param_2;\n  if (*DAT_0001e484 == iVar5) {\n    iVar6 = FUN_000157c0();\n    uVar4 = 0;\n    if (iVar6 < 0) goto LAB_00017be5;\n    if (iVar6 == 0) {\n      FUN_00015e30(param_1);\n      local_40 = (int *)&DAT_0001e484;\nLAB_00017d6d:\n      iVar5 = *local_40;\n      piVar1 = (int *)(iVar5 + 0xc);\n      *piVar1 = *piVar1 + 1;\n      *param_1 = iVar5;\n      uVar4 = 1;\n      goto LAB_00017be5;\n    }\n    if (iVar5 == *DAT_0001e47c) goto LAB_00017c1a;\n    if (param_2 <= piVar1[2]) {\n      local_48 = piVar1[2];\n    }\n    iVar6 = piVar2[3];\n    if (iVar5 == 0) goto LAB_00017d8b;\n    piVar2[3] = iVar6 + 3;\n    local_30 = piVar2;\n    local_2c = piVar2;\n    local_24 = piVar2;\n    local_28 = FUN_000158f0(1,1);\n    *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\nLAB_00017c71:\n    local_30 = DAT_0001e47c;\n    DAT_0001e47c[3] = DAT_0001e47c[3] + 1;\n    iVar5 = *(int *)(*param_1 + 8);\n  }\n  else {\n    uVar4 = 0;\n    if (iVar5 != 0) goto LAB_00017be5;\n    if (*DAT_0001e47c == 0) {\nLAB_00017c1a:\n      local_40 = (int *)&DAT_0001e47c;\n      iVar5 = FUN_000157c0();\n      if (iVar5 == 0) {\n        FUN_00015e30(param_1);\n        goto LAB_00017d6d;\n      }\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = piVar2[3] + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n      if (iVar5 < 0) goto LAB_00017c71;\n    }\n    else {\n      iVar6 = DAT_0001e484[3];\nLAB_00017d8b:\n      local_48 = param_2;\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = iVar6 + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n    }\n    iVar5 = 3;\n    FUN_00017a00(&local_30,10);\n    FUN_00017a00(&local_2c,*(undefined4 *)(*param_1 + 4));\n    FUN_00016a60(local_2c,local_28,&local_2c,0);\n    local_2c[2] = 0;\n    FUN_000177e0(local_30,local_2c,&local_30,0);\n    FUN_00015e30(&local_2c);\n  }\n  local_4c = &local_2c;\n  iVar6 = iVar5 + 1;\n  while( true ) {\n    do {\n      FUN_00015e30(local_4c);\n      local_30[3] = local_30[3] + 1;\n      local_2c = local_30;\n      FUN_00016b90(*param_1,local_30,&local_30,iVar5);\n      FUN_00016960(local_30,local_2c,&local_30,0);\n      FUN_00016a60(local_30,local_28,&local_30,iVar5);\n      FUN_00016030(local_30,local_2c,&local_24,iVar6);\n      cVar3 = FUN_00015fd0(local_24,iVar5);\n    } while (cVar3 == '\0');\n    if (local_48 < iVar5) break;\n    iVar5 = iVar5 * 3;\n    if (local_48 + 1 <= iVar5) {\n      iVar5 = local_48 + 1;\n    }\n    iVar6 = iVar5 + 1;\n  }\n  FUN_00015e30(param_1);\n  FUN_00016b90(local_30,DAT_0001e47c,param_1,local_48);\n  FUN_00015e30(&local_30);\n  FUN_00015e30(local_4c);\n  FUN_00015e30(&local_28);\n  FUN_00015e30(&local_24);\n  uVar4 = 1;\nLAB_00017be5:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar4;\n  }\n                    \n  FUN_00018840();\n}" type_identifier (function_declarator "FUN_00017ba0(int *param_1,int param_2)" identifier (parameter_list "(int *param_1,int param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  char cVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  int in_GS_OFFSET;\n  int **local_4c;\n  int local_48;\n  int *local_40;\n  int *local_30;\n  int *local_2c;\n  int local_28;\n  int *local_24;\n  int local_20;\n  \n  piVar2 = DAT_0001e484;\n  piVar1 = (int *)*param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar5 = *piVar1;\n  local_48 = param_2;\n  if (*DAT_0001e484 == iVar5) {\n    iVar6 = FUN_000157c0();\n    uVar4 = 0;\n    if (iVar6 < 0) goto LAB_00017be5;\n    if (iVar6 == 0) {\n      FUN_00015e30(param_1);\n      local_40 = (int *)&DAT_0001e484;\nLAB_00017d6d:\n      iVar5 = *local_40;\n      piVar1 = (int *)(iVar5 + 0xc);\n      *piVar1 = *piVar1 + 1;\n      *param_1 = iVar5;\n      uVar4 = 1;\n      goto LAB_00017be5;\n    }\n    if (iVar5 == *DAT_0001e47c) goto LAB_00017c1a;\n    if (param_2 <= piVar1[2]) {\n      local_48 = piVar1[2];\n    }\n    iVar6 = piVar2[3];\n    if (iVar5 == 0) goto LAB_00017d8b;\n    piVar2[3] = iVar6 + 3;\n    local_30 = piVar2;\n    local_2c = piVar2;\n    local_24 = piVar2;\n    local_28 = FUN_000158f0(1,1);\n    *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\nLAB_00017c71:\n    local_30 = DAT_0001e47c;\n    DAT_0001e47c[3] = DAT_0001e47c[3] + 1;\n    iVar5 = *(int *)(*param_1 + 8);\n  }\n  else {\n    uVar4 = 0;\n    if (iVar5 != 0) goto LAB_00017be5;\n    if (*DAT_0001e47c == 0) {\nLAB_00017c1a:\n      local_40 = (int *)&DAT_0001e47c;\n      iVar5 = FUN_000157c0();\n      if (iVar5 == 0) {\n        FUN_00015e30(param_1);\n        goto LAB_00017d6d;\n      }\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = piVar2[3] + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n      if (iVar5 < 0) goto LAB_00017c71;\n    }\n    else {\n      iVar6 = DAT_0001e484[3];\nLAB_00017d8b:\n      local_48 = param_2;\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = iVar6 + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n    }\n    iVar5 = 3;\n    FUN_00017a00(&local_30,10);\n    FUN_00017a00(&local_2c,*(undefined4 *)(*param_1 + 4));\n    FUN_00016a60(local_2c,local_28,&local_2c,0);\n    local_2c[2] = 0;\n    FUN_000177e0(local_30,local_2c,&local_30,0);\n    FUN_00015e30(&local_2c);\n  }\n  local_4c = &local_2c;\n  iVar6 = iVar5 + 1;\n  while( true ) {\n    do {\n      FUN_00015e30(local_4c);\n      local_30[3] = local_30[3] + 1;\n      local_2c = local_30;\n      FUN_00016b90(*param_1,local_30,&local_30,iVar5);\n      FUN_00016960(local_30,local_2c,&local_30,0);\n      FUN_00016a60(local_30,local_28,&local_30,iVar5);\n      FUN_00016030(local_30,local_2c,&local_24,iVar6);\n      cVar3 = FUN_00015fd0(local_24,iVar5);\n    } while (cVar3 == '\0');\n    if (local_48 < iVar5) break;\n    iVar5 = iVar5 * 3;\n    if (local_48 + 1 <= iVar5) {\n      iVar5 = local_48 + 1;\n    }\n    iVar6 = iVar5 + 1;\n  }\n  FUN_00015e30(param_1);\n  FUN_00016b90(local_30,DAT_0001e47c,param_1,local_48);\n  FUN_00015e30(&local_30);\n  FUN_00015e30(local_4c);\n  FUN_00015e30(&local_28);\n  FUN_00015e30(&local_24);\n  uVar4 = 1;\nLAB_00017be5:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar4;\n  }\n                    \n  FUN_00018840();\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "int **local_4c;" primitive_type (pointer_declarator "**local_4c" * (pointer_declarator "*local_4c" * identifier)) ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "int *local_40;" primitive_type (pointer_declarator "*local_40" * identifier) ;) (declaration "int *local_30;" primitive_type (pointer_declarator "*local_30" * identifier) ;) (declaration "int *local_2c;" primitive_type (pointer_declarator "*local_2c" * identifier) ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "int *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "piVar2 = DAT_0001e484;" (assignment_expression "piVar2 = DAT_0001e484" identifier = identifier) ;) (expression_statement "piVar1 = (int *)*param_1;" (assignment_expression "piVar1 = (int *)*param_1" identifier = (cast_expression "(int *)*param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *piVar1;" (assignment_expression "iVar5 = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) (expression_statement "local_48 = param_2;" (assignment_expression "local_48 = param_2" identifier = identifier) ;) (if_statement "if (*DAT_0001e484 == iVar5) {\n    iVar6 = FUN_000157c0();\n    uVar4 = 0;\n    if (iVar6 < 0) goto LAB_00017be5;\n    if (iVar6 == 0) {\n      FUN_00015e30(param_1);\n      local_40 = (int *)&DAT_0001e484;\nLAB_00017d6d:\n      iVar5 = *local_40;\n      piVar1 = (int *)(iVar5 + 0xc);\n      *piVar1 = *piVar1 + 1;\n      *param_1 = iVar5;\n      uVar4 = 1;\n      goto LAB_00017be5;\n    }\n    if (iVar5 == *DAT_0001e47c) goto LAB_00017c1a;\n    if (param_2 <= piVar1[2]) {\n      local_48 = piVar1[2];\n    }\n    iVar6 = piVar2[3];\n    if (iVar5 == 0) goto LAB_00017d8b;\n    piVar2[3] = iVar6 + 3;\n    local_30 = piVar2;\n    local_2c = piVar2;\n    local_24 = piVar2;\n    local_28 = FUN_000158f0(1,1);\n    *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\nLAB_00017c71:\n    local_30 = DAT_0001e47c;\n    DAT_0001e47c[3] = DAT_0001e47c[3] + 1;\n    iVar5 = *(int *)(*param_1 + 8);\n  }\n  else {\n    uVar4 = 0;\n    if (iVar5 != 0) goto LAB_00017be5;\n    if (*DAT_0001e47c == 0) {\nLAB_00017c1a:\n      local_40 = (int *)&DAT_0001e47c;\n      iVar5 = FUN_000157c0();\n      if (iVar5 == 0) {\n        FUN_00015e30(param_1);\n        goto LAB_00017d6d;\n      }\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = piVar2[3] + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n      if (iVar5 < 0) goto LAB_00017c71;\n    }\n    else {\n      iVar6 = DAT_0001e484[3];\nLAB_00017d8b:\n      local_48 = param_2;\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = iVar6 + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n    }\n    iVar5 = 3;\n    FUN_00017a00(&local_30,10);\n    FUN_00017a00(&local_2c,*(undefined4 *)(*param_1 + 4));\n    FUN_00016a60(local_2c,local_28,&local_2c,0);\n    local_2c[2] = 0;\n    FUN_000177e0(local_30,local_2c,&local_30,0);\n    FUN_00015e30(&local_2c);\n  }" if (parenthesized_expression "(*DAT_0001e484 == iVar5)" ( (binary_expression "*DAT_0001e484 == iVar5" (pointer_expression "*DAT_0001e484" * identifier) == identifier) )) (compound_statement "{\n    iVar6 = FUN_000157c0();\n    uVar4 = 0;\n    if (iVar6 < 0) goto LAB_00017be5;\n    if (iVar6 == 0) {\n      FUN_00015e30(param_1);\n      local_40 = (int *)&DAT_0001e484;\nLAB_00017d6d:\n      iVar5 = *local_40;\n      piVar1 = (int *)(iVar5 + 0xc);\n      *piVar1 = *piVar1 + 1;\n      *param_1 = iVar5;\n      uVar4 = 1;\n      goto LAB_00017be5;\n    }\n    if (iVar5 == *DAT_0001e47c) goto LAB_00017c1a;\n    if (param_2 <= piVar1[2]) {\n      local_48 = piVar1[2];\n    }\n    iVar6 = piVar2[3];\n    if (iVar5 == 0) goto LAB_00017d8b;\n    piVar2[3] = iVar6 + 3;\n    local_30 = piVar2;\n    local_2c = piVar2;\n    local_24 = piVar2;\n    local_28 = FUN_000158f0(1,1);\n    *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\nLAB_00017c71:\n    local_30 = DAT_0001e47c;\n    DAT_0001e47c[3] = DAT_0001e47c[3] + 1;\n    iVar5 = *(int *)(*param_1 + 8);\n  }" { (expression_statement "iVar6 = FUN_000157c0();" (assignment_expression "iVar6 = FUN_000157c0()" identifier = (call_expression "FUN_000157c0()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (iVar6 < 0) goto LAB_00017be5;" if (parenthesized_expression "(iVar6 < 0)" ( (binary_expression "iVar6 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00017be5;" goto statement_identifier ;)) (if_statement "if (iVar6 == 0) {\n      FUN_00015e30(param_1);\n      local_40 = (int *)&DAT_0001e484;\nLAB_00017d6d:\n      iVar5 = *local_40;\n      piVar1 = (int *)(iVar5 + 0xc);\n      *piVar1 = *piVar1 + 1;\n      *param_1 = iVar5;\n      uVar4 = 1;\n      goto LAB_00017be5;\n    }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      FUN_00015e30(param_1);\n      local_40 = (int *)&DAT_0001e484;\nLAB_00017d6d:\n      iVar5 = *local_40;\n      piVar1 = (int *)(iVar5 + 0xc);\n      *piVar1 = *piVar1 + 1;\n      *param_1 = iVar5;\n      uVar4 = 1;\n      goto LAB_00017be5;\n    }" { (expression_statement "FUN_00015e30(param_1);" (call_expression "FUN_00015e30(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "local_40 = (int *)&DAT_0001e484;" (assignment_expression "local_40 = (int *)&DAT_0001e484" identifier = (cast_expression "(int *)&DAT_0001e484" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_0001e484" & identifier))) ;) (labeled_statement "LAB_00017d6d:\n      iVar5 = *local_40;" statement_identifier : (expression_statement "iVar5 = *local_40;" (assignment_expression "iVar5 = *local_40" identifier = (pointer_expression "*local_40" * identifier)) ;)) (expression_statement "piVar1 = (int *)(iVar5 + 0xc);" (assignment_expression "piVar1 = (int *)(iVar5 + 0xc)" identifier = (cast_expression "(int *)(iVar5 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) )))) ;) (expression_statement "*piVar1 = *piVar1 + 1;" (assignment_expression "*piVar1 = *piVar1 + 1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + 1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) (expression_statement "*param_1 = iVar5;" (assignment_expression "*param_1 = iVar5" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00017be5;" goto statement_identifier ;) })) (if_statement "if (iVar5 == *DAT_0001e47c) goto LAB_00017c1a;" if (parenthesized_expression "(iVar5 == *DAT_0001e47c)" ( (binary_expression "iVar5 == *DAT_0001e47c" identifier == (pointer_expression "*DAT_0001e47c" * identifier)) )) (goto_statement "goto LAB_00017c1a;" goto statement_identifier ;)) (if_statement "if (param_2 <= piVar1[2]) {\n      local_48 = piVar1[2];\n    }" if (parenthesized_expression "(param_2 <= piVar1[2])" ( (binary_expression "param_2 <= piVar1[2]" identifier <= (subscript_expression "piVar1[2]" identifier [ number_literal ])) )) (compound_statement "{\n      local_48 = piVar1[2];\n    }" { (expression_statement "local_48 = piVar1[2];" (assignment_expression "local_48 = piVar1[2]" identifier = (subscript_expression "piVar1[2]" identifier [ number_literal ])) ;) })) (expression_statement "iVar6 = piVar2[3];" (assignment_expression "iVar6 = piVar2[3]" identifier = (subscript_expression "piVar2[3]" identifier [ number_literal ])) ;) (if_statement "if (iVar5 == 0) goto LAB_00017d8b;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00017d8b;" goto statement_identifier ;)) (expression_statement "piVar2[3] = iVar6 + 3;" (assignment_expression "piVar2[3] = iVar6 + 3" (subscript_expression "piVar2[3]" identifier [ number_literal ]) = (binary_expression "iVar6 + 3" identifier + number_literal)) ;) (expression_statement "local_30 = piVar2;" (assignment_expression "local_30 = piVar2" identifier = identifier) ;) (expression_statement "local_2c = piVar2;" (assignment_expression "local_2c = piVar2" identifier = identifier) ;) (expression_statement "local_24 = piVar2;" (assignment_expression "local_24 = piVar2" identifier = identifier) ;) (expression_statement "local_28 = FUN_000158f0(1,1);" (assignment_expression "local_28 = FUN_000158f0(1,1)" identifier = (call_expression "FUN_000158f0(1,1)" identifier (argument_list "(1,1)" ( number_literal , number_literal )))) ;) (expression_statement "*(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;" (assignment_expression "*(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5" (pointer_expression "*(undefined1 *)(*(int *)(local_28 + 0x18) + 1)" * (cast_expression "(undefined1 *)(*(int *)(local_28 + 0x18) + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_28 + 0x18) + 1)" ( (binary_expression "*(int *)(local_28 + 0x18) + 1" (pointer_expression "*(int *)(local_28 + 0x18)" * (cast_expression "(int *)(local_28 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + 0x18)" ( (binary_expression "local_28 + 0x18" identifier + number_literal) )))) + number_literal) )))) = number_literal) ;) (labeled_statement "LAB_00017c71:\n    local_30 = DAT_0001e47c;" statement_identifier : (expression_statement "local_30 = DAT_0001e47c;" (assignment_expression "local_30 = DAT_0001e47c" identifier = identifier) ;)) (expression_statement "DAT_0001e47c[3] = DAT_0001e47c[3] + 1;" (assignment_expression "DAT_0001e47c[3] = DAT_0001e47c[3] + 1" (subscript_expression "DAT_0001e47c[3]" identifier [ number_literal ]) = (binary_expression "DAT_0001e47c[3] + 1" (subscript_expression "DAT_0001e47c[3]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "iVar5 = *(int *)(*param_1 + 8);" (assignment_expression "iVar5 = *(int *)(*param_1 + 8)" identifier = (pointer_expression "*(int *)(*param_1 + 8)" * (cast_expression "(int *)(*param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 8)" ( (binary_expression "*param_1 + 8" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) }) (else_clause "else {\n    uVar4 = 0;\n    if (iVar5 != 0) goto LAB_00017be5;\n    if (*DAT_0001e47c == 0) {\nLAB_00017c1a:\n      local_40 = (int *)&DAT_0001e47c;\n      iVar5 = FUN_000157c0();\n      if (iVar5 == 0) {\n        FUN_00015e30(param_1);\n        goto LAB_00017d6d;\n      }\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = piVar2[3] + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n      if (iVar5 < 0) goto LAB_00017c71;\n    }\n    else {\n      iVar6 = DAT_0001e484[3];\nLAB_00017d8b:\n      local_48 = param_2;\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = iVar6 + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n    }\n    iVar5 = 3;\n    FUN_00017a00(&local_30,10);\n    FUN_00017a00(&local_2c,*(undefined4 *)(*param_1 + 4));\n    FUN_00016a60(local_2c,local_28,&local_2c,0);\n    local_2c[2] = 0;\n    FUN_000177e0(local_30,local_2c,&local_30,0);\n    FUN_00015e30(&local_2c);\n  }" else (compound_statement "{\n    uVar4 = 0;\n    if (iVar5 != 0) goto LAB_00017be5;\n    if (*DAT_0001e47c == 0) {\nLAB_00017c1a:\n      local_40 = (int *)&DAT_0001e47c;\n      iVar5 = FUN_000157c0();\n      if (iVar5 == 0) {\n        FUN_00015e30(param_1);\n        goto LAB_00017d6d;\n      }\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = piVar2[3] + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n      if (iVar5 < 0) goto LAB_00017c71;\n    }\n    else {\n      iVar6 = DAT_0001e484[3];\nLAB_00017d8b:\n      local_48 = param_2;\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = iVar6 + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n    }\n    iVar5 = 3;\n    FUN_00017a00(&local_30,10);\n    FUN_00017a00(&local_2c,*(undefined4 *)(*param_1 + 4));\n    FUN_00016a60(local_2c,local_28,&local_2c,0);\n    local_2c[2] = 0;\n    FUN_000177e0(local_30,local_2c,&local_30,0);\n    FUN_00015e30(&local_2c);\n  }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (iVar5 != 0) goto LAB_00017be5;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00017be5;" goto statement_identifier ;)) (if_statement "if (*DAT_0001e47c == 0) {\nLAB_00017c1a:\n      local_40 = (int *)&DAT_0001e47c;\n      iVar5 = FUN_000157c0();\n      if (iVar5 == 0) {\n        FUN_00015e30(param_1);\n        goto LAB_00017d6d;\n      }\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = piVar2[3] + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n      if (iVar5 < 0) goto LAB_00017c71;\n    }\n    else {\n      iVar6 = DAT_0001e484[3];\nLAB_00017d8b:\n      local_48 = param_2;\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = iVar6 + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n    }" if (parenthesized_expression "(*DAT_0001e47c == 0)" ( (binary_expression "*DAT_0001e47c == 0" (pointer_expression "*DAT_0001e47c" * identifier) == number_literal) )) (compound_statement "{\nLAB_00017c1a:\n      local_40 = (int *)&DAT_0001e47c;\n      iVar5 = FUN_000157c0();\n      if (iVar5 == 0) {\n        FUN_00015e30(param_1);\n        goto LAB_00017d6d;\n      }\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = piVar2[3] + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n      if (iVar5 < 0) goto LAB_00017c71;\n    }" { (labeled_statement "LAB_00017c1a:\n      local_40 = (int *)&DAT_0001e47c;" statement_identifier : (expression_statement "local_40 = (int *)&DAT_0001e47c;" (assignment_expression "local_40 = (int *)&DAT_0001e47c" identifier = (cast_expression "(int *)&DAT_0001e47c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_0001e47c" & identifier))) ;)) (expression_statement "iVar5 = FUN_000157c0();" (assignment_expression "iVar5 = FUN_000157c0()" identifier = (call_expression "FUN_000157c0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar5 == 0) {\n        FUN_00015e30(param_1);\n        goto LAB_00017d6d;\n      }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        FUN_00015e30(param_1);\n        goto LAB_00017d6d;\n      }" { (expression_statement "FUN_00015e30(param_1);" (call_expression "FUN_00015e30(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (goto_statement "goto LAB_00017d6d;" goto statement_identifier ;) })) (if_statement "if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }" if (parenthesized_expression "(param_2 <= piVar1[2])" ( (binary_expression "param_2 <= piVar1[2]" identifier <= (subscript_expression "piVar1[2]" identifier [ number_literal ])) )) (compound_statement "{\n        local_48 = piVar1[2];\n      }" { (expression_statement "local_48 = piVar1[2];" (assignment_expression "local_48 = piVar1[2]" identifier = (subscript_expression "piVar1[2]" identifier [ number_literal ])) ;) })) (expression_statement "piVar2[3] = piVar2[3] + 3;" (assignment_expression "piVar2[3] = piVar2[3] + 3" (subscript_expression "piVar2[3]" identifier [ number_literal ]) = (binary_expression "piVar2[3] + 3" (subscript_expression "piVar2[3]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "local_30 = piVar2;" (assignment_expression "local_30 = piVar2" identifier = identifier) ;) (expression_statement "local_2c = piVar2;" (assignment_expression "local_2c = piVar2" identifier = identifier) ;) (expression_statement "local_24 = piVar2;" (assignment_expression "local_24 = piVar2" identifier = identifier) ;) (expression_statement "local_28 = FUN_000158f0(1,1);" (assignment_expression "local_28 = FUN_000158f0(1,1)" identifier = (call_expression "FUN_000158f0(1,1)" identifier (argument_list "(1,1)" ( number_literal , number_literal )))) ;) (expression_statement "*(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;" (assignment_expression "*(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5" (pointer_expression "*(undefined1 *)(*(int *)(local_28 + 0x18) + 1)" * (cast_expression "(undefined1 *)(*(int *)(local_28 + 0x18) + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_28 + 0x18) + 1)" ( (binary_expression "*(int *)(local_28 + 0x18) + 1" (pointer_expression "*(int *)(local_28 + 0x18)" * (cast_expression "(int *)(local_28 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + 0x18)" ( (binary_expression "local_28 + 0x18" identifier + number_literal) )))) + number_literal) )))) = number_literal) ;) (if_statement "if (iVar5 < 0) goto LAB_00017c71;" if (parenthesized_expression "(iVar5 < 0)" ( (binary_expression "iVar5 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00017c71;" goto statement_identifier ;)) }) (else_clause "else {\n      iVar6 = DAT_0001e484[3];\nLAB_00017d8b:\n      local_48 = param_2;\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = iVar6 + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n    }" else (compound_statement "{\n      iVar6 = DAT_0001e484[3];\nLAB_00017d8b:\n      local_48 = param_2;\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = iVar6 + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n    }" { (expression_statement "iVar6 = DAT_0001e484[3];" (assignment_expression "iVar6 = DAT_0001e484[3]" identifier = (subscript_expression "DAT_0001e484[3]" identifier [ number_literal ])) ;) (labeled_statement "LAB_00017d8b:\n      local_48 = param_2;" statement_identifier : (expression_statement "local_48 = param_2;" (assignment_expression "local_48 = param_2" identifier = identifier) ;)) (if_statement "if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }" if (parenthesized_expression "(param_2 <= piVar1[2])" ( (binary_expression "param_2 <= piVar1[2]" identifier <= (subscript_expression "piVar1[2]" identifier [ number_literal ])) )) (compound_statement "{\n        local_48 = piVar1[2];\n      }" { (expression_statement "local_48 = piVar1[2];" (assignment_expression "local_48 = piVar1[2]" identifier = (subscript_expression "piVar1[2]" identifier [ number_literal ])) ;) })) (expression_statement "piVar2[3] = iVar6 + 3;" (assignment_expression "piVar2[3] = iVar6 + 3" (subscript_expression "piVar2[3]" identifier [ number_literal ]) = (binary_expression "iVar6 + 3" identifier + number_literal)) ;) (expression_statement "local_30 = piVar2;" (assignment_expression "local_30 = piVar2" identifier = identifier) ;) (expression_statement "local_2c = piVar2;" (assignment_expression "local_2c = piVar2" identifier = identifier) ;) (expression_statement "local_24 = piVar2;" (assignment_expression "local_24 = piVar2" identifier = identifier) ;) (expression_statement "local_28 = FUN_000158f0(1,1);" (assignment_expression "local_28 = FUN_000158f0(1,1)" identifier = (call_expression "FUN_000158f0(1,1)" identifier (argument_list "(1,1)" ( number_literal , number_literal )))) ;) (expression_statement "*(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;" (assignment_expression "*(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5" (pointer_expression "*(undefined1 *)(*(int *)(local_28 + 0x18) + 1)" * (cast_expression "(undefined1 *)(*(int *)(local_28 + 0x18) + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_28 + 0x18) + 1)" ( (binary_expression "*(int *)(local_28 + 0x18) + 1" (pointer_expression "*(int *)(local_28 + 0x18)" * (cast_expression "(int *)(local_28 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + 0x18)" ( (binary_expression "local_28 + 0x18" identifier + number_literal) )))) + number_literal) )))) = number_literal) ;) }))) (expression_statement "iVar5 = 3;" (assignment_expression "iVar5 = 3" identifier = number_literal) ;) (expression_statement "FUN_00017a00(&local_30,10);" (call_expression "FUN_00017a00(&local_30,10)" identifier (argument_list "(&local_30,10)" ( (pointer_expression "&local_30" & identifier) , number_literal ))) ;) (expression_statement "FUN_00017a00(&local_2c,*(undefined4 *)(*param_1 + 4));" (call_expression "FUN_00017a00(&local_2c,*(undefined4 *)(*param_1 + 4))" identifier (argument_list "(&local_2c,*(undefined4 *)(*param_1 + 4))" ( (pointer_expression "&local_2c" & identifier) , (pointer_expression "*(undefined4 *)(*param_1 + 4)" * (cast_expression "(undefined4 *)(*param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 4)" ( (binary_expression "*param_1 + 4" (pointer_expression "*param_1" * identifier) + number_literal) )))) ))) ;) (expression_statement "FUN_00016a60(local_2c,local_28,&local_2c,0);" (call_expression "FUN_00016a60(local_2c,local_28,&local_2c,0)" identifier (argument_list "(local_2c,local_28,&local_2c,0)" ( identifier , identifier , (pointer_expression "&local_2c" & identifier) , number_literal ))) ;) (expression_statement "local_2c[2] = 0;" (assignment_expression "local_2c[2] = 0" (subscript_expression "local_2c[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_000177e0(local_30,local_2c,&local_30,0);" (call_expression "FUN_000177e0(local_30,local_2c,&local_30,0)" identifier (argument_list "(local_30,local_2c,&local_30,0)" ( identifier , identifier , (pointer_expression "&local_30" & identifier) , number_literal ))) ;) (expression_statement "FUN_00015e30(&local_2c);" (call_expression "FUN_00015e30(&local_2c)" identifier (argument_list "(&local_2c)" ( (pointer_expression "&local_2c" & identifier) ))) ;) }))) (expression_statement "local_4c = &local_2c;" (assignment_expression "local_4c = &local_2c" identifier = (pointer_expression "&local_2c" & identifier)) ;) (expression_statement "iVar6 = iVar5 + 1;" (assignment_expression "iVar6 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (while_statement "while( true ) {\n    do {\n      FUN_00015e30(local_4c);\n      local_30[3] = local_30[3] + 1;\n      local_2c = local_30;\n      FUN_00016b90(*param_1,local_30,&local_30,iVar5);\n      FUN_00016960(local_30,local_2c,&local_30,0);\n      FUN_00016a60(local_30,local_28,&local_30,iVar5);\n      FUN_00016030(local_30,local_2c,&local_24,iVar6);\n      cVar3 = FUN_00015fd0(local_24,iVar5);\n    } while (cVar3 == '\0');\n    if (local_48 < iVar5) break;\n    iVar5 = iVar5 * 3;\n    if (local_48 + 1 <= iVar5) {\n      iVar5 = local_48 + 1;\n    }\n    iVar6 = iVar5 + 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    do {\n      FUN_00015e30(local_4c);\n      local_30[3] = local_30[3] + 1;\n      local_2c = local_30;\n      FUN_00016b90(*param_1,local_30,&local_30,iVar5);\n      FUN_00016960(local_30,local_2c,&local_30,0);\n      FUN_00016a60(local_30,local_28,&local_30,iVar5);\n      FUN_00016030(local_30,local_2c,&local_24,iVar6);\n      cVar3 = FUN_00015fd0(local_24,iVar5);\n    } while (cVar3 == '\0');\n    if (local_48 < iVar5) break;\n    iVar5 = iVar5 * 3;\n    if (local_48 + 1 <= iVar5) {\n      iVar5 = local_48 + 1;\n    }\n    iVar6 = iVar5 + 1;\n  }" { (do_statement "do {\n      FUN_00015e30(local_4c);\n      local_30[3] = local_30[3] + 1;\n      local_2c = local_30;\n      FUN_00016b90(*param_1,local_30,&local_30,iVar5);\n      FUN_00016960(local_30,local_2c,&local_30,0);\n      FUN_00016a60(local_30,local_28,&local_30,iVar5);\n      FUN_00016030(local_30,local_2c,&local_24,iVar6);\n      cVar3 = FUN_00015fd0(local_24,iVar5);\n    } while (cVar3 == '\0');" do (compound_statement "{\n      FUN_00015e30(local_4c);\n      local_30[3] = local_30[3] + 1;\n      local_2c = local_30;\n      FUN_00016b90(*param_1,local_30,&local_30,iVar5);\n      FUN_00016960(local_30,local_2c,&local_30,0);\n      FUN_00016a60(local_30,local_28,&local_30,iVar5);\n      FUN_00016030(local_30,local_2c,&local_24,iVar6);\n      cVar3 = FUN_00015fd0(local_24,iVar5);\n    }" { (expression_statement "FUN_00015e30(local_4c);" (call_expression "FUN_00015e30(local_4c)" identifier (argument_list "(local_4c)" ( identifier ))) ;) (expression_statement "local_30[3] = local_30[3] + 1;" (assignment_expression "local_30[3] = local_30[3] + 1" (subscript_expression "local_30[3]" identifier [ number_literal ]) = (binary_expression "local_30[3] + 1" (subscript_expression "local_30[3]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "local_2c = local_30;" (assignment_expression "local_2c = local_30" identifier = identifier) ;) (expression_statement "FUN_00016b90(*param_1,local_30,&local_30,iVar5);" (call_expression "FUN_00016b90(*param_1,local_30,&local_30,iVar5)" identifier (argument_list "(*param_1,local_30,&local_30,iVar5)" ( (pointer_expression "*param_1" * identifier) , identifier , (pointer_expression "&local_30" & identifier) , identifier ))) ;) (expression_statement "FUN_00016960(local_30,local_2c,&local_30,0);" (call_expression "FUN_00016960(local_30,local_2c,&local_30,0)" identifier (argument_list "(local_30,local_2c,&local_30,0)" ( identifier , identifier , (pointer_expression "&local_30" & identifier) , number_literal ))) ;) (expression_statement "FUN_00016a60(local_30,local_28,&local_30,iVar5);" (call_expression "FUN_00016a60(local_30,local_28,&local_30,iVar5)" identifier (argument_list "(local_30,local_28,&local_30,iVar5)" ( identifier , identifier , (pointer_expression "&local_30" & identifier) , identifier ))) ;) (expression_statement "FUN_00016030(local_30,local_2c,&local_24,iVar6);" (call_expression "FUN_00016030(local_30,local_2c,&local_24,iVar6)" identifier (argument_list "(local_30,local_2c,&local_24,iVar6)" ( identifier , identifier , (pointer_expression "&local_24" & identifier) , identifier ))) ;) (expression_statement "cVar3 = FUN_00015fd0(local_24,iVar5);" (assignment_expression "cVar3 = FUN_00015fd0(local_24,iVar5)" identifier = (call_expression "FUN_00015fd0(local_24,iVar5)" identifier (argument_list "(local_24,iVar5)" ( identifier , identifier )))) ;) }) while (parenthesized_expression "(cVar3 == '\0')" ( (binary_expression "cVar3 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) ;) (if_statement "if (local_48 < iVar5) break;" if (parenthesized_expression "(local_48 < iVar5)" ( (binary_expression "local_48 < iVar5" identifier < identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = iVar5 * 3;" (assignment_expression "iVar5 = iVar5 * 3" identifier = (binary_expression "iVar5 * 3" identifier * number_literal)) ;) (if_statement "if (local_48 + 1 <= iVar5) {\n      iVar5 = local_48 + 1;\n    }" if (parenthesized_expression "(local_48 + 1 <= iVar5)" ( (binary_expression "local_48 + 1 <= iVar5" (binary_expression "local_48 + 1" identifier + number_literal) <= identifier) )) (compound_statement "{\n      iVar5 = local_48 + 1;\n    }" { (expression_statement "iVar5 = local_48 + 1;" (assignment_expression "iVar5 = local_48 + 1" identifier = (binary_expression "local_48 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar6 = iVar5 + 1;" (assignment_expression "iVar6 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) })) (expression_statement "FUN_00015e30(param_1);" (call_expression "FUN_00015e30(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "FUN_00016b90(local_30,DAT_0001e47c,param_1,local_48);" (call_expression "FUN_00016b90(local_30,DAT_0001e47c,param_1,local_48)" identifier (argument_list "(local_30,DAT_0001e47c,param_1,local_48)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "FUN_00015e30(&local_30);" (call_expression "FUN_00015e30(&local_30)" identifier (argument_list "(&local_30)" ( (pointer_expression "&local_30" & identifier) ))) ;) (expression_statement "FUN_00015e30(local_4c);" (call_expression "FUN_00015e30(local_4c)" identifier (argument_list "(local_4c)" ( identifier ))) ;) (expression_statement "FUN_00015e30(&local_28);" (call_expression "FUN_00015e30(&local_28)" identifier (argument_list "(&local_28)" ( (pointer_expression "&local_28" & identifier) ))) ;) (expression_statement "FUN_00015e30(&local_24);" (call_expression "FUN_00015e30(&local_24)" identifier (argument_list "(&local_24)" ( (pointer_expression "&local_24" & identifier) ))) ;) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (labeled_statement "LAB_00017be5:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar4;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar4;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return uVar4;\n  }" { (return_statement "return uVar4;" return identifier ;) }))) (expression_statement "FUN_00018840();" (call_expression "FUN_00018840()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * 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 * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) = LIT) ;) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) , LIT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , IDENT , (pointer_expression & IDENT) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "undefined4 FUN_00017ba0(int *param_1,int param_2)\n\n{\n  int *piVar1;\n  int *piVar2;\n  char cVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  int in_GS_OFFSET;\n  int **local_4c;\n  int local_48;\n  int *local_40;\n  int *local_30;\n  int *local_2c;\n  int local_28;\n  int *local_24;\n  int local_20;\n  \n  piVar2 = DAT_0001e484;\n  piVar1 = (int *)*param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar5 = *piVar1;\n  local_48 = param_2;\n  if (*DAT_0001e484 == iVar5) {\n    iVar6 = FUN_000157c0();\n    uVar4 = 0;\n    if (iVar6 < 0) goto LAB_00017be5;\n    if (iVar6 == 0) {\n      FUN_00015e30(param_1);\n      local_40 = (int *)&DAT_0001e484;\nLAB_00017d6d:\n      iVar5 = *local_40;\n      piVar1 = (int *)(iVar5 + 0xc);\n      *piVar1 = *piVar1 + 1;\n      *param_1 = iVar5;\n      uVar4 = 1;\n      goto LAB_00017be5;\n    }\n    if (iVar5 == *DAT_0001e47c) goto LAB_00017c1a;\n    if (param_2 <= piVar1[2]) {\n      local_48 = piVar1[2];\n    }\n    iVar6 = piVar2[3];\n    if (iVar5 == 0) goto LAB_00017d8b;\n    piVar2[3] = iVar6 + 3;\n    local_30 = piVar2;\n    local_2c = piVar2;\n    local_24 = piVar2;\n    local_28 = FUN_000158f0(1,1);\n    *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\nLAB_00017c71:\n    local_30 = DAT_0001e47c;\n    DAT_0001e47c[3] = DAT_0001e47c[3] + 1;\n    iVar5 = *(int *)(*param_1 + 8);\n  }\n  else {\n    uVar4 = 0;\n    if (iVar5 != 0) goto LAB_00017be5;\n    if (*DAT_0001e47c == 0) {\nLAB_00017c1a:\n      local_40 = (int *)&DAT_0001e47c;\n      iVar5 = FUN_000157c0();\n      if (iVar5 == 0) {\n        FUN_00015e30(param_1);\n        goto LAB_00017d6d;\n      }\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = piVar2[3] + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n      if (iVar5 < 0) goto LAB_00017c71;\n    }\n    else {\n      iVar6 = DAT_0001e484[3];\nLAB_00017d8b:\n      local_48 = param_2;\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = iVar6 + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n    }\n    iVar5 = 3;\n    FUN_00017a00(&local_30,10);\n    FUN_00017a00(&local_2c,*(undefined4 *)(*param_1 + 4));\n    FUN_00016a60(local_2c,local_28,&local_2c,0);\n    local_2c[2] = 0;\n    FUN_000177e0(local_30,local_2c,&local_30,0);\n    FUN_00015e30(&local_2c);\n  }\n  local_4c = &local_2c;\n  iVar6 = iVar5 + 1;\n  while( true ) {\n    do {\n      FUN_00015e30(local_4c);\n      local_30[3] = local_30[3] + 1;\n      local_2c = local_30;\n      FUN_00016b90(*param_1,local_30,&local_30,iVar5);\n      FUN_00016960(local_30,local_2c,&local_30,0);\n      FUN_00016a60(local_30,local_28,&local_30,iVar5);\n      FUN_00016030(local_30,local_2c,&local_24,iVar6);\n      cVar3 = FUN_00015fd0(local_24,iVar5);\n    } while (cVar3 == '\0');\n    if (local_48 < iVar5) break;\n    iVar5 = iVar5 * 3;\n    if (local_48 + 1 <= iVar5) {\n      iVar5 = local_48 + 1;\n    }\n    iVar6 = iVar5 + 1;\n  }\n  FUN_00015e30(param_1);\n  FUN_00016b90(local_30,DAT_0001e47c,param_1,local_48);\n  FUN_00015e30(&local_30);\n  FUN_00015e30(local_4c);\n  FUN_00015e30(&local_28);\n  FUN_00015e30(&local_24);\n  uVar4 = 1;\nLAB_00017be5:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar4;\n  }\n                    \n  FUN_00018840();\n}" (type_identifier "undefined4") (function_declarator "FUN_00017ba0(int *param_1,int param_2)" (identifier "FUN_00017ba0") (parameter_list "(int *param_1,int param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  char cVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  int in_GS_OFFSET;\n  int **local_4c;\n  int local_48;\n  int *local_40;\n  int *local_30;\n  int *local_2c;\n  int local_28;\n  int *local_24;\n  int local_20;\n  \n  piVar2 = DAT_0001e484;\n  piVar1 = (int *)*param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar5 = *piVar1;\n  local_48 = param_2;\n  if (*DAT_0001e484 == iVar5) {\n    iVar6 = FUN_000157c0();\n    uVar4 = 0;\n    if (iVar6 < 0) goto LAB_00017be5;\n    if (iVar6 == 0) {\n      FUN_00015e30(param_1);\n      local_40 = (int *)&DAT_0001e484;\nLAB_00017d6d:\n      iVar5 = *local_40;\n      piVar1 = (int *)(iVar5 + 0xc);\n      *piVar1 = *piVar1 + 1;\n      *param_1 = iVar5;\n      uVar4 = 1;\n      goto LAB_00017be5;\n    }\n    if (iVar5 == *DAT_0001e47c) goto LAB_00017c1a;\n    if (param_2 <= piVar1[2]) {\n      local_48 = piVar1[2];\n    }\n    iVar6 = piVar2[3];\n    if (iVar5 == 0) goto LAB_00017d8b;\n    piVar2[3] = iVar6 + 3;\n    local_30 = piVar2;\n    local_2c = piVar2;\n    local_24 = piVar2;\n    local_28 = FUN_000158f0(1,1);\n    *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\nLAB_00017c71:\n    local_30 = DAT_0001e47c;\n    DAT_0001e47c[3] = DAT_0001e47c[3] + 1;\n    iVar5 = *(int *)(*param_1 + 8);\n  }\n  else {\n    uVar4 = 0;\n    if (iVar5 != 0) goto LAB_00017be5;\n    if (*DAT_0001e47c == 0) {\nLAB_00017c1a:\n      local_40 = (int *)&DAT_0001e47c;\n      iVar5 = FUN_000157c0();\n      if (iVar5 == 0) {\n        FUN_00015e30(param_1);\n        goto LAB_00017d6d;\n      }\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = piVar2[3] + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n      if (iVar5 < 0) goto LAB_00017c71;\n    }\n    else {\n      iVar6 = DAT_0001e484[3];\nLAB_00017d8b:\n      local_48 = param_2;\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = iVar6 + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n    }\n    iVar5 = 3;\n    FUN_00017a00(&local_30,10);\n    FUN_00017a00(&local_2c,*(undefined4 *)(*param_1 + 4));\n    FUN_00016a60(local_2c,local_28,&local_2c,0);\n    local_2c[2] = 0;\n    FUN_000177e0(local_30,local_2c,&local_30,0);\n    FUN_00015e30(&local_2c);\n  }\n  local_4c = &local_2c;\n  iVar6 = iVar5 + 1;\n  while( true ) {\n    do {\n      FUN_00015e30(local_4c);\n      local_30[3] = local_30[3] + 1;\n      local_2c = local_30;\n      FUN_00016b90(*param_1,local_30,&local_30,iVar5);\n      FUN_00016960(local_30,local_2c,&local_30,0);\n      FUN_00016a60(local_30,local_28,&local_30,iVar5);\n      FUN_00016030(local_30,local_2c,&local_24,iVar6);\n      cVar3 = FUN_00015fd0(local_24,iVar5);\n    } while (cVar3 == '\0');\n    if (local_48 < iVar5) break;\n    iVar5 = iVar5 * 3;\n    if (local_48 + 1 <= iVar5) {\n      iVar5 = local_48 + 1;\n    }\n    iVar6 = iVar5 + 1;\n  }\n  FUN_00015e30(param_1);\n  FUN_00016b90(local_30,DAT_0001e47c,param_1,local_48);\n  FUN_00015e30(&local_30);\n  FUN_00015e30(local_4c);\n  FUN_00015e30(&local_28);\n  FUN_00015e30(&local_24);\n  uVar4 = 1;\nLAB_00017be5:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar4;\n  }\n                    \n  FUN_00018840();\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "char cVar3;" (primitive_type "char") (identifier "cVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "int **local_4c;" (primitive_type "int") (pointer_declarator "**local_4c" (* "*") (pointer_declarator "*local_4c" (* "*") (identifier "local_4c"))) (; ";")) (declaration "int local_48;" (primitive_type "int") (identifier "local_48") (; ";")) (declaration "int *local_40;" (primitive_type "int") (pointer_declarator "*local_40" (* "*") (identifier "local_40")) (; ";")) (declaration "int *local_30;" (primitive_type "int") (pointer_declarator "*local_30" (* "*") (identifier "local_30")) (; ";")) (declaration "int *local_2c;" (primitive_type "int") (pointer_declarator "*local_2c" (* "*") (identifier "local_2c")) (; ";")) (declaration "int local_28;" (primitive_type "int") (identifier "local_28") (; ";")) (declaration "int *local_24;" (primitive_type "int") (pointer_declarator "*local_24" (* "*") (identifier "local_24")) (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (expression_statement "piVar2 = DAT_0001e484;" (assignment_expression "piVar2 = DAT_0001e484" (identifier "piVar2") (= "=") (identifier "DAT_0001e484")) (; ";")) (expression_statement "piVar1 = (int *)*param_1;" (assignment_expression "piVar1 = (int *)*param_1" (identifier "piVar1") (= "=") (cast_expression "(int *)*param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "iVar5 = *piVar1;" (assignment_expression "iVar5 = *piVar1" (identifier "iVar5") (= "=") (pointer_expression "*piVar1" (* "*") (identifier "piVar1"))) (; ";")) (expression_statement "local_48 = param_2;" (assignment_expression "local_48 = param_2" (identifier "local_48") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (*DAT_0001e484 == iVar5) {\n    iVar6 = FUN_000157c0();\n    uVar4 = 0;\n    if (iVar6 < 0) goto LAB_00017be5;\n    if (iVar6 == 0) {\n      FUN_00015e30(param_1);\n      local_40 = (int *)&DAT_0001e484;\nLAB_00017d6d:\n      iVar5 = *local_40;\n      piVar1 = (int *)(iVar5 + 0xc);\n      *piVar1 = *piVar1 + 1;\n      *param_1 = iVar5;\n      uVar4 = 1;\n      goto LAB_00017be5;\n    }\n    if (iVar5 == *DAT_0001e47c) goto LAB_00017c1a;\n    if (param_2 <= piVar1[2]) {\n      local_48 = piVar1[2];\n    }\n    iVar6 = piVar2[3];\n    if (iVar5 == 0) goto LAB_00017d8b;\n    piVar2[3] = iVar6 + 3;\n    local_30 = piVar2;\n    local_2c = piVar2;\n    local_24 = piVar2;\n    local_28 = FUN_000158f0(1,1);\n    *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\nLAB_00017c71:\n    local_30 = DAT_0001e47c;\n    DAT_0001e47c[3] = DAT_0001e47c[3] + 1;\n    iVar5 = *(int *)(*param_1 + 8);\n  }\n  else {\n    uVar4 = 0;\n    if (iVar5 != 0) goto LAB_00017be5;\n    if (*DAT_0001e47c == 0) {\nLAB_00017c1a:\n      local_40 = (int *)&DAT_0001e47c;\n      iVar5 = FUN_000157c0();\n      if (iVar5 == 0) {\n        FUN_00015e30(param_1);\n        goto LAB_00017d6d;\n      }\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = piVar2[3] + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n      if (iVar5 < 0) goto LAB_00017c71;\n    }\n    else {\n      iVar6 = DAT_0001e484[3];\nLAB_00017d8b:\n      local_48 = param_2;\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = iVar6 + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n    }\n    iVar5 = 3;\n    FUN_00017a00(&local_30,10);\n    FUN_00017a00(&local_2c,*(undefined4 *)(*param_1 + 4));\n    FUN_00016a60(local_2c,local_28,&local_2c,0);\n    local_2c[2] = 0;\n    FUN_000177e0(local_30,local_2c,&local_30,0);\n    FUN_00015e30(&local_2c);\n  }" (if "if") (parenthesized_expression "(*DAT_0001e484 == iVar5)" (( "(") (binary_expression "*DAT_0001e484 == iVar5" (pointer_expression "*DAT_0001e484" (* "*") (identifier "DAT_0001e484")) (== "==") (identifier "iVar5")) () ")")) (compound_statement "{\n    iVar6 = FUN_000157c0();\n    uVar4 = 0;\n    if (iVar6 < 0) goto LAB_00017be5;\n    if (iVar6 == 0) {\n      FUN_00015e30(param_1);\n      local_40 = (int *)&DAT_0001e484;\nLAB_00017d6d:\n      iVar5 = *local_40;\n      piVar1 = (int *)(iVar5 + 0xc);\n      *piVar1 = *piVar1 + 1;\n      *param_1 = iVar5;\n      uVar4 = 1;\n      goto LAB_00017be5;\n    }\n    if (iVar5 == *DAT_0001e47c) goto LAB_00017c1a;\n    if (param_2 <= piVar1[2]) {\n      local_48 = piVar1[2];\n    }\n    iVar6 = piVar2[3];\n    if (iVar5 == 0) goto LAB_00017d8b;\n    piVar2[3] = iVar6 + 3;\n    local_30 = piVar2;\n    local_2c = piVar2;\n    local_24 = piVar2;\n    local_28 = FUN_000158f0(1,1);\n    *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\nLAB_00017c71:\n    local_30 = DAT_0001e47c;\n    DAT_0001e47c[3] = DAT_0001e47c[3] + 1;\n    iVar5 = *(int *)(*param_1 + 8);\n  }" ({ "{") (expression_statement "iVar6 = FUN_000157c0();" (assignment_expression "iVar6 = FUN_000157c0()" (identifier "iVar6") (= "=") (call_expression "FUN_000157c0()" (identifier "FUN_000157c0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar6 < 0) goto LAB_00017be5;" (if "if") (parenthesized_expression "(iVar6 < 0)" (( "(") (binary_expression "iVar6 < 0" (identifier "iVar6") (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_00017be5;" (goto "goto") (statement_identifier "LAB_00017be5") (; ";"))) (if_statement "if (iVar6 == 0) {\n      FUN_00015e30(param_1);\n      local_40 = (int *)&DAT_0001e484;\nLAB_00017d6d:\n      iVar5 = *local_40;\n      piVar1 = (int *)(iVar5 + 0xc);\n      *piVar1 = *piVar1 + 1;\n      *param_1 = iVar5;\n      uVar4 = 1;\n      goto LAB_00017be5;\n    }" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_00015e30(param_1);\n      local_40 = (int *)&DAT_0001e484;\nLAB_00017d6d:\n      iVar5 = *local_40;\n      piVar1 = (int *)(iVar5 + 0xc);\n      *piVar1 = *piVar1 + 1;\n      *param_1 = iVar5;\n      uVar4 = 1;\n      goto LAB_00017be5;\n    }" ({ "{") (expression_statement "FUN_00015e30(param_1);" (call_expression "FUN_00015e30(param_1)" (identifier "FUN_00015e30") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "local_40 = (int *)&DAT_0001e484;" (assignment_expression "local_40 = (int *)&DAT_0001e484" (identifier "local_40") (= "=") (cast_expression "(int *)&DAT_0001e484" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_0001e484" (& "&") (identifier "DAT_0001e484")))) (; ";")) (labeled_statement "LAB_00017d6d:\n      iVar5 = *local_40;" (statement_identifier "LAB_00017d6d") (: ":") (expression_statement "iVar5 = *local_40;" (assignment_expression "iVar5 = *local_40" (identifier "iVar5") (= "=") (pointer_expression "*local_40" (* "*") (identifier "local_40"))) (; ";"))) (expression_statement "piVar1 = (int *)(iVar5 + 0xc);" (assignment_expression "piVar1 = (int *)(iVar5 + 0xc)" (identifier "piVar1") (= "=") (cast_expression "(int *)(iVar5 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0xc)" (( "(") (binary_expression "iVar5 + 0xc" (identifier "iVar5") (+ "+") (number_literal "0xc")) () ")")))) (; ";")) (expression_statement "*piVar1 = *piVar1 + 1;" (assignment_expression "*piVar1 = *piVar1 + 1" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (binary_expression "*piVar1 + 1" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*param_1 = iVar5;" (assignment_expression "*param_1 = iVar5" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" (identifier "uVar4") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_00017be5;" (goto "goto") (statement_identifier "LAB_00017be5") (; ";")) (} "}"))) (if_statement "if (iVar5 == *DAT_0001e47c) goto LAB_00017c1a;" (if "if") (parenthesized_expression "(iVar5 == *DAT_0001e47c)" (( "(") (binary_expression "iVar5 == *DAT_0001e47c" (identifier "iVar5") (== "==") (pointer_expression "*DAT_0001e47c" (* "*") (identifier "DAT_0001e47c"))) () ")")) (goto_statement "goto LAB_00017c1a;" (goto "goto") (statement_identifier "LAB_00017c1a") (; ";"))) (if_statement "if (param_2 <= piVar1[2]) {\n      local_48 = piVar1[2];\n    }" (if "if") (parenthesized_expression "(param_2 <= piVar1[2])" (( "(") (binary_expression "param_2 <= piVar1[2]" (identifier "param_2") (<= "<=") (subscript_expression "piVar1[2]" (identifier "piVar1") ([ "[") (number_literal "2") (] "]"))) () ")")) (compound_statement "{\n      local_48 = piVar1[2];\n    }" ({ "{") (expression_statement "local_48 = piVar1[2];" (assignment_expression "local_48 = piVar1[2]" (identifier "local_48") (= "=") (subscript_expression "piVar1[2]" (identifier "piVar1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}"))) (expression_statement "iVar6 = piVar2[3];" (assignment_expression "iVar6 = piVar2[3]" (identifier "iVar6") (= "=") (subscript_expression "piVar2[3]" (identifier "piVar2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (if_statement "if (iVar5 == 0) goto LAB_00017d8b;" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00017d8b;" (goto "goto") (statement_identifier "LAB_00017d8b") (; ";"))) (expression_statement "piVar2[3] = iVar6 + 3;" (assignment_expression "piVar2[3] = iVar6 + 3" (subscript_expression "piVar2[3]" (identifier "piVar2") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "iVar6 + 3" (identifier "iVar6") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "local_30 = piVar2;" (assignment_expression "local_30 = piVar2" (identifier "local_30") (= "=") (identifier "piVar2")) (; ";")) (expression_statement "local_2c = piVar2;" (assignment_expression "local_2c = piVar2" (identifier "local_2c") (= "=") (identifier "piVar2")) (; ";")) (expression_statement "local_24 = piVar2;" (assignment_expression "local_24 = piVar2" (identifier "local_24") (= "=") (identifier "piVar2")) (; ";")) (expression_statement "local_28 = FUN_000158f0(1,1);" (assignment_expression "local_28 = FUN_000158f0(1,1)" (identifier "local_28") (= "=") (call_expression "FUN_000158f0(1,1)" (identifier "FUN_000158f0") (argument_list "(1,1)" (( "(") (number_literal "1") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "*(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;" (assignment_expression "*(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5" (pointer_expression "*(undefined1 *)(*(int *)(local_28 + 0x18) + 1)" (* "*") (cast_expression "(undefined1 *)(*(int *)(local_28 + 0x18) + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(local_28 + 0x18) + 1)" (( "(") (binary_expression "*(int *)(local_28 + 0x18) + 1" (pointer_expression "*(int *)(local_28 + 0x18)" (* "*") (cast_expression "(int *)(local_28 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + 0x18)" (( "(") (binary_expression "local_28 + 0x18" (identifier "local_28") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "5")) (; ";")) (labeled_statement "LAB_00017c71:\n    local_30 = DAT_0001e47c;" (statement_identifier "LAB_00017c71") (: ":") (expression_statement "local_30 = DAT_0001e47c;" (assignment_expression "local_30 = DAT_0001e47c" (identifier "local_30") (= "=") (identifier "DAT_0001e47c")) (; ";"))) (expression_statement "DAT_0001e47c[3] = DAT_0001e47c[3] + 1;" (assignment_expression "DAT_0001e47c[3] = DAT_0001e47c[3] + 1" (subscript_expression "DAT_0001e47c[3]" (identifier "DAT_0001e47c") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "DAT_0001e47c[3] + 1" (subscript_expression "DAT_0001e47c[3]" (identifier "DAT_0001e47c") ([ "[") (number_literal "3") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar5 = *(int *)(*param_1 + 8);" (assignment_expression "iVar5 = *(int *)(*param_1 + 8)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(*param_1 + 8)" (* "*") (cast_expression "(int *)(*param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 8)" (( "(") (binary_expression "*param_1 + 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    uVar4 = 0;\n    if (iVar5 != 0) goto LAB_00017be5;\n    if (*DAT_0001e47c == 0) {\nLAB_00017c1a:\n      local_40 = (int *)&DAT_0001e47c;\n      iVar5 = FUN_000157c0();\n      if (iVar5 == 0) {\n        FUN_00015e30(param_1);\n        goto LAB_00017d6d;\n      }\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = piVar2[3] + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n      if (iVar5 < 0) goto LAB_00017c71;\n    }\n    else {\n      iVar6 = DAT_0001e484[3];\nLAB_00017d8b:\n      local_48 = param_2;\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = iVar6 + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n    }\n    iVar5 = 3;\n    FUN_00017a00(&local_30,10);\n    FUN_00017a00(&local_2c,*(undefined4 *)(*param_1 + 4));\n    FUN_00016a60(local_2c,local_28,&local_2c,0);\n    local_2c[2] = 0;\n    FUN_000177e0(local_30,local_2c,&local_30,0);\n    FUN_00015e30(&local_2c);\n  }" (else "else") (compound_statement "{\n    uVar4 = 0;\n    if (iVar5 != 0) goto LAB_00017be5;\n    if (*DAT_0001e47c == 0) {\nLAB_00017c1a:\n      local_40 = (int *)&DAT_0001e47c;\n      iVar5 = FUN_000157c0();\n      if (iVar5 == 0) {\n        FUN_00015e30(param_1);\n        goto LAB_00017d6d;\n      }\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = piVar2[3] + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n      if (iVar5 < 0) goto LAB_00017c71;\n    }\n    else {\n      iVar6 = DAT_0001e484[3];\nLAB_00017d8b:\n      local_48 = param_2;\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = iVar6 + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n    }\n    iVar5 = 3;\n    FUN_00017a00(&local_30,10);\n    FUN_00017a00(&local_2c,*(undefined4 *)(*param_1 + 4));\n    FUN_00016a60(local_2c,local_28,&local_2c,0);\n    local_2c[2] = 0;\n    FUN_000177e0(local_30,local_2c,&local_30,0);\n    FUN_00015e30(&local_2c);\n  }" ({ "{") (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar5 != 0) goto LAB_00017be5;" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00017be5;" (goto "goto") (statement_identifier "LAB_00017be5") (; ";"))) (if_statement "if (*DAT_0001e47c == 0) {\nLAB_00017c1a:\n      local_40 = (int *)&DAT_0001e47c;\n      iVar5 = FUN_000157c0();\n      if (iVar5 == 0) {\n        FUN_00015e30(param_1);\n        goto LAB_00017d6d;\n      }\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = piVar2[3] + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n      if (iVar5 < 0) goto LAB_00017c71;\n    }\n    else {\n      iVar6 = DAT_0001e484[3];\nLAB_00017d8b:\n      local_48 = param_2;\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = iVar6 + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n    }" (if "if") (parenthesized_expression "(*DAT_0001e47c == 0)" (( "(") (binary_expression "*DAT_0001e47c == 0" (pointer_expression "*DAT_0001e47c" (* "*") (identifier "DAT_0001e47c")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00017c1a:\n      local_40 = (int *)&DAT_0001e47c;\n      iVar5 = FUN_000157c0();\n      if (iVar5 == 0) {\n        FUN_00015e30(param_1);\n        goto LAB_00017d6d;\n      }\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = piVar2[3] + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n      if (iVar5 < 0) goto LAB_00017c71;\n    }" ({ "{") (labeled_statement "LAB_00017c1a:\n      local_40 = (int *)&DAT_0001e47c;" (statement_identifier "LAB_00017c1a") (: ":") (expression_statement "local_40 = (int *)&DAT_0001e47c;" (assignment_expression "local_40 = (int *)&DAT_0001e47c" (identifier "local_40") (= "=") (cast_expression "(int *)&DAT_0001e47c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_0001e47c" (& "&") (identifier "DAT_0001e47c")))) (; ";"))) (expression_statement "iVar5 = FUN_000157c0();" (assignment_expression "iVar5 = FUN_000157c0()" (identifier "iVar5") (= "=") (call_expression "FUN_000157c0()" (identifier "FUN_000157c0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar5 == 0) {\n        FUN_00015e30(param_1);\n        goto LAB_00017d6d;\n      }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_00015e30(param_1);\n        goto LAB_00017d6d;\n      }" ({ "{") (expression_statement "FUN_00015e30(param_1);" (call_expression "FUN_00015e30(param_1)" (identifier "FUN_00015e30") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (goto_statement "goto LAB_00017d6d;" (goto "goto") (statement_identifier "LAB_00017d6d") (; ";")) (} "}"))) (if_statement "if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }" (if "if") (parenthesized_expression "(param_2 <= piVar1[2])" (( "(") (binary_expression "param_2 <= piVar1[2]" (identifier "param_2") (<= "<=") (subscript_expression "piVar1[2]" (identifier "piVar1") ([ "[") (number_literal "2") (] "]"))) () ")")) (compound_statement "{\n        local_48 = piVar1[2];\n      }" ({ "{") (expression_statement "local_48 = piVar1[2];" (assignment_expression "local_48 = piVar1[2]" (identifier "local_48") (= "=") (subscript_expression "piVar1[2]" (identifier "piVar1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}"))) (expression_statement "piVar2[3] = piVar2[3] + 3;" (assignment_expression "piVar2[3] = piVar2[3] + 3" (subscript_expression "piVar2[3]" (identifier "piVar2") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "piVar2[3] + 3" (subscript_expression "piVar2[3]" (identifier "piVar2") ([ "[") (number_literal "3") (] "]")) (+ "+") (number_literal "3"))) (; ";")) (expression_statement "local_30 = piVar2;" (assignment_expression "local_30 = piVar2" (identifier "local_30") (= "=") (identifier "piVar2")) (; ";")) (expression_statement "local_2c = piVar2;" (assignment_expression "local_2c = piVar2" (identifier "local_2c") (= "=") (identifier "piVar2")) (; ";")) (expression_statement "local_24 = piVar2;" (assignment_expression "local_24 = piVar2" (identifier "local_24") (= "=") (identifier "piVar2")) (; ";")) (expression_statement "local_28 = FUN_000158f0(1,1);" (assignment_expression "local_28 = FUN_000158f0(1,1)" (identifier "local_28") (= "=") (call_expression "FUN_000158f0(1,1)" (identifier "FUN_000158f0") (argument_list "(1,1)" (( "(") (number_literal "1") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "*(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;" (assignment_expression "*(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5" (pointer_expression "*(undefined1 *)(*(int *)(local_28 + 0x18) + 1)" (* "*") (cast_expression "(undefined1 *)(*(int *)(local_28 + 0x18) + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(local_28 + 0x18) + 1)" (( "(") (binary_expression "*(int *)(local_28 + 0x18) + 1" (pointer_expression "*(int *)(local_28 + 0x18)" (* "*") (cast_expression "(int *)(local_28 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + 0x18)" (( "(") (binary_expression "local_28 + 0x18" (identifier "local_28") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "5")) (; ";")) (if_statement "if (iVar5 < 0) goto LAB_00017c71;" (if "if") (parenthesized_expression "(iVar5 < 0)" (( "(") (binary_expression "iVar5 < 0" (identifier "iVar5") (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_00017c71;" (goto "goto") (statement_identifier "LAB_00017c71") (; ";"))) (} "}")) (else_clause "else {\n      iVar6 = DAT_0001e484[3];\nLAB_00017d8b:\n      local_48 = param_2;\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = iVar6 + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n    }" (else "else") (compound_statement "{\n      iVar6 = DAT_0001e484[3];\nLAB_00017d8b:\n      local_48 = param_2;\n      if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }\n      piVar2[3] = iVar6 + 3;\n      local_30 = piVar2;\n      local_2c = piVar2;\n      local_24 = piVar2;\n      local_28 = FUN_000158f0(1,1);\n      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;\n    }" ({ "{") (expression_statement "iVar6 = DAT_0001e484[3];" (assignment_expression "iVar6 = DAT_0001e484[3]" (identifier "iVar6") (= "=") (subscript_expression "DAT_0001e484[3]" (identifier "DAT_0001e484") ([ "[") (number_literal "3") (] "]"))) (; ";")) (labeled_statement "LAB_00017d8b:\n      local_48 = param_2;" (statement_identifier "LAB_00017d8b") (: ":") (expression_statement "local_48 = param_2;" (assignment_expression "local_48 = param_2" (identifier "local_48") (= "=") (identifier "param_2")) (; ";"))) (if_statement "if (param_2 <= piVar1[2]) {\n        local_48 = piVar1[2];\n      }" (if "if") (parenthesized_expression "(param_2 <= piVar1[2])" (( "(") (binary_expression "param_2 <= piVar1[2]" (identifier "param_2") (<= "<=") (subscript_expression "piVar1[2]" (identifier "piVar1") ([ "[") (number_literal "2") (] "]"))) () ")")) (compound_statement "{\n        local_48 = piVar1[2];\n      }" ({ "{") (expression_statement "local_48 = piVar1[2];" (assignment_expression "local_48 = piVar1[2]" (identifier "local_48") (= "=") (subscript_expression "piVar1[2]" (identifier "piVar1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}"))) (expression_statement "piVar2[3] = iVar6 + 3;" (assignment_expression "piVar2[3] = iVar6 + 3" (subscript_expression "piVar2[3]" (identifier "piVar2") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "iVar6 + 3" (identifier "iVar6") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "local_30 = piVar2;" (assignment_expression "local_30 = piVar2" (identifier "local_30") (= "=") (identifier "piVar2")) (; ";")) (expression_statement "local_2c = piVar2;" (assignment_expression "local_2c = piVar2" (identifier "local_2c") (= "=") (identifier "piVar2")) (; ";")) (expression_statement "local_24 = piVar2;" (assignment_expression "local_24 = piVar2" (identifier "local_24") (= "=") (identifier "piVar2")) (; ";")) (expression_statement "local_28 = FUN_000158f0(1,1);" (assignment_expression "local_28 = FUN_000158f0(1,1)" (identifier "local_28") (= "=") (call_expression "FUN_000158f0(1,1)" (identifier "FUN_000158f0") (argument_list "(1,1)" (( "(") (number_literal "1") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "*(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;" (assignment_expression "*(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5" (pointer_expression "*(undefined1 *)(*(int *)(local_28 + 0x18) + 1)" (* "*") (cast_expression "(undefined1 *)(*(int *)(local_28 + 0x18) + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(local_28 + 0x18) + 1)" (( "(") (binary_expression "*(int *)(local_28 + 0x18) + 1" (pointer_expression "*(int *)(local_28 + 0x18)" (* "*") (cast_expression "(int *)(local_28 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + 0x18)" (( "(") (binary_expression "local_28 + 0x18" (identifier "local_28") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "5")) (; ";")) (} "}")))) (expression_statement "iVar5 = 3;" (assignment_expression "iVar5 = 3" (identifier "iVar5") (= "=") (number_literal "3")) (; ";")) (expression_statement "FUN_00017a00(&local_30,10);" (call_expression "FUN_00017a00(&local_30,10)" (identifier "FUN_00017a00") (argument_list "(&local_30,10)" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (number_literal "10") () ")"))) (; ";")) (expression_statement "FUN_00017a00(&local_2c,*(undefined4 *)(*param_1 + 4));" (call_expression "FUN_00017a00(&local_2c,*(undefined4 *)(*param_1 + 4))" (identifier "FUN_00017a00") (argument_list "(&local_2c,*(undefined4 *)(*param_1 + 4))" (( "(") (pointer_expression "&local_2c" (& "&") (identifier "local_2c")) (, ",") (pointer_expression "*(undefined4 *)(*param_1 + 4)" (* "*") (cast_expression "(undefined4 *)(*param_1 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 4)" (( "(") (binary_expression "*param_1 + 4" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "4")) () ")")))) () ")"))) (; ";")) (expression_statement "FUN_00016a60(local_2c,local_28,&local_2c,0);" (call_expression "FUN_00016a60(local_2c,local_28,&local_2c,0)" (identifier "FUN_00016a60") (argument_list "(local_2c,local_28,&local_2c,0)" (( "(") (identifier "local_2c") (, ",") (identifier "local_28") (, ",") (pointer_expression "&local_2c" (& "&") (identifier "local_2c")) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "local_2c[2] = 0;" (assignment_expression "local_2c[2] = 0" (subscript_expression "local_2c[2]" (identifier "local_2c") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_000177e0(local_30,local_2c,&local_30,0);" (call_expression "FUN_000177e0(local_30,local_2c,&local_30,0)" (identifier "FUN_000177e0") (argument_list "(local_30,local_2c,&local_30,0)" (( "(") (identifier "local_30") (, ",") (identifier "local_2c") (, ",") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "FUN_00015e30(&local_2c);" (call_expression "FUN_00015e30(&local_2c)" (identifier "FUN_00015e30") (argument_list "(&local_2c)" (( "(") (pointer_expression "&local_2c" (& "&") (identifier "local_2c")) () ")"))) (; ";")) (} "}")))) (expression_statement "local_4c = &local_2c;" (assignment_expression "local_4c = &local_2c" (identifier "local_4c") (= "=") (pointer_expression "&local_2c" (& "&") (identifier "local_2c"))) (; ";")) (expression_statement "iVar6 = iVar5 + 1;" (assignment_expression "iVar6 = iVar5 + 1" (identifier "iVar6") (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (while_statement "while( true ) {\n    do {\n      FUN_00015e30(local_4c);\n      local_30[3] = local_30[3] + 1;\n      local_2c = local_30;\n      FUN_00016b90(*param_1,local_30,&local_30,iVar5);\n      FUN_00016960(local_30,local_2c,&local_30,0);\n      FUN_00016a60(local_30,local_28,&local_30,iVar5);\n      FUN_00016030(local_30,local_2c,&local_24,iVar6);\n      cVar3 = FUN_00015fd0(local_24,iVar5);\n    } while (cVar3 == '\0');\n    if (local_48 < iVar5) break;\n    iVar5 = iVar5 * 3;\n    if (local_48 + 1 <= iVar5) {\n      iVar5 = local_48 + 1;\n    }\n    iVar6 = iVar5 + 1;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    do {\n      FUN_00015e30(local_4c);\n      local_30[3] = local_30[3] + 1;\n      local_2c = local_30;\n      FUN_00016b90(*param_1,local_30,&local_30,iVar5);\n      FUN_00016960(local_30,local_2c,&local_30,0);\n      FUN_00016a60(local_30,local_28,&local_30,iVar5);\n      FUN_00016030(local_30,local_2c,&local_24,iVar6);\n      cVar3 = FUN_00015fd0(local_24,iVar5);\n    } while (cVar3 == '\0');\n    if (local_48 < iVar5) break;\n    iVar5 = iVar5 * 3;\n    if (local_48 + 1 <= iVar5) {\n      iVar5 = local_48 + 1;\n    }\n    iVar6 = iVar5 + 1;\n  }" ({ "{") (do_statement "do {\n      FUN_00015e30(local_4c);\n      local_30[3] = local_30[3] + 1;\n      local_2c = local_30;\n      FUN_00016b90(*param_1,local_30,&local_30,iVar5);\n      FUN_00016960(local_30,local_2c,&local_30,0);\n      FUN_00016a60(local_30,local_28,&local_30,iVar5);\n      FUN_00016030(local_30,local_2c,&local_24,iVar6);\n      cVar3 = FUN_00015fd0(local_24,iVar5);\n    } while (cVar3 == '\0');" (do "do") (compound_statement "{\n      FUN_00015e30(local_4c);\n      local_30[3] = local_30[3] + 1;\n      local_2c = local_30;\n      FUN_00016b90(*param_1,local_30,&local_30,iVar5);\n      FUN_00016960(local_30,local_2c,&local_30,0);\n      FUN_00016a60(local_30,local_28,&local_30,iVar5);\n      FUN_00016030(local_30,local_2c,&local_24,iVar6);\n      cVar3 = FUN_00015fd0(local_24,iVar5);\n    }" ({ "{") (expression_statement "FUN_00015e30(local_4c);" (call_expression "FUN_00015e30(local_4c)" (identifier "FUN_00015e30") (argument_list "(local_4c)" (( "(") (identifier "local_4c") () ")"))) (; ";")) (expression_statement "local_30[3] = local_30[3] + 1;" (assignment_expression "local_30[3] = local_30[3] + 1" (subscript_expression "local_30[3]" (identifier "local_30") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "local_30[3] + 1" (subscript_expression "local_30[3]" (identifier "local_30") ([ "[") (number_literal "3") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_2c = local_30;" (assignment_expression "local_2c = local_30" (identifier "local_2c") (= "=") (identifier "local_30")) (; ";")) (expression_statement "FUN_00016b90(*param_1,local_30,&local_30,iVar5);" (call_expression "FUN_00016b90(*param_1,local_30,&local_30,iVar5)" (identifier "FUN_00016b90") (argument_list "(*param_1,local_30,&local_30,iVar5)" (( "(") (pointer_expression "*param_1" (* "*") (identifier "param_1")) (, ",") (identifier "local_30") (, ",") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (identifier "iVar5") () ")"))) (; ";")) (expression_statement "FUN_00016960(local_30,local_2c,&local_30,0);" (call_expression "FUN_00016960(local_30,local_2c,&local_30,0)" (identifier "FUN_00016960") (argument_list "(local_30,local_2c,&local_30,0)" (( "(") (identifier "local_30") (, ",") (identifier "local_2c") (, ",") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "FUN_00016a60(local_30,local_28,&local_30,iVar5);" (call_expression "FUN_00016a60(local_30,local_28,&local_30,iVar5)" (identifier "FUN_00016a60") (argument_list "(local_30,local_28,&local_30,iVar5)" (( "(") (identifier "local_30") (, ",") (identifier "local_28") (, ",") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (identifier "iVar5") () ")"))) (; ";")) (expression_statement "FUN_00016030(local_30,local_2c,&local_24,iVar6);" (call_expression "FUN_00016030(local_30,local_2c,&local_24,iVar6)" (identifier "FUN_00016030") (argument_list "(local_30,local_2c,&local_24,iVar6)" (( "(") (identifier "local_30") (, ",") (identifier "local_2c") (, ",") (pointer_expression "&local_24" (& "&") (identifier "local_24")) (, ",") (identifier "iVar6") () ")"))) (; ";")) (expression_statement "cVar3 = FUN_00015fd0(local_24,iVar5);" (assignment_expression "cVar3 = FUN_00015fd0(local_24,iVar5)" (identifier "cVar3") (= "=") (call_expression "FUN_00015fd0(local_24,iVar5)" (identifier "FUN_00015fd0") (argument_list "(local_24,iVar5)" (( "(") (identifier "local_24") (, ",") (identifier "iVar5") () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar3 == '\0')" (( "(") (binary_expression "cVar3 == '\0'" (identifier "cVar3") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (if_statement "if (local_48 < iVar5) break;" (if "if") (parenthesized_expression "(local_48 < iVar5)" (( "(") (binary_expression "local_48 < iVar5" (identifier "local_48") (< "<") (identifier "iVar5")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar5 = iVar5 * 3;" (assignment_expression "iVar5 = iVar5 * 3" (identifier "iVar5") (= "=") (binary_expression "iVar5 * 3" (identifier "iVar5") (* "*") (number_literal "3"))) (; ";")) (if_statement "if (local_48 + 1 <= iVar5) {\n      iVar5 = local_48 + 1;\n    }" (if "if") (parenthesized_expression "(local_48 + 1 <= iVar5)" (( "(") (binary_expression "local_48 + 1 <= iVar5" (binary_expression "local_48 + 1" (identifier "local_48") (+ "+") (number_literal "1")) (<= "<=") (identifier "iVar5")) () ")")) (compound_statement "{\n      iVar5 = local_48 + 1;\n    }" ({ "{") (expression_statement "iVar5 = local_48 + 1;" (assignment_expression "iVar5 = local_48 + 1" (identifier "iVar5") (= "=") (binary_expression "local_48 + 1" (identifier "local_48") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "iVar6 = iVar5 + 1;" (assignment_expression "iVar6 = iVar5 + 1" (identifier "iVar6") (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "FUN_00015e30(param_1);" (call_expression "FUN_00015e30(param_1)" (identifier "FUN_00015e30") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "FUN_00016b90(local_30,DAT_0001e47c,param_1,local_48);" (call_expression "FUN_00016b90(local_30,DAT_0001e47c,param_1,local_48)" (identifier "FUN_00016b90") (argument_list "(local_30,DAT_0001e47c,param_1,local_48)" (( "(") (identifier "local_30") (, ",") (identifier "DAT_0001e47c") (, ",") (identifier "param_1") (, ",") (identifier "local_48") () ")"))) (; ";")) (expression_statement "FUN_00015e30(&local_30);" (call_expression "FUN_00015e30(&local_30)" (identifier "FUN_00015e30") (argument_list "(&local_30)" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) () ")"))) (; ";")) (expression_statement "FUN_00015e30(local_4c);" (call_expression "FUN_00015e30(local_4c)" (identifier "FUN_00015e30") (argument_list "(local_4c)" (( "(") (identifier "local_4c") () ")"))) (; ";")) (expression_statement "FUN_00015e30(&local_28);" (call_expression "FUN_00015e30(&local_28)" (identifier "FUN_00015e30") (argument_list "(&local_28)" (( "(") (pointer_expression "&local_28" (& "&") (identifier "local_28")) () ")"))) (; ";")) (expression_statement "FUN_00015e30(&local_24);" (call_expression "FUN_00015e30(&local_24)" (identifier "FUN_00015e30") (argument_list "(&local_24)" (( "(") (pointer_expression "&local_24" (& "&") (identifier "local_24")) () ")"))) (; ";")) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" (identifier "uVar4") (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_00017be5:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar4;\n  }" (statement_identifier "LAB_00017be5") (: ":") (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar4;\n  }" (if "if") (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    return uVar4;\n  }" ({ "{") (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}")))) (expression_statement "FUN_00018840();" (call_expression "FUN_00018840()" (identifier "FUN_00018840") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

int function_1(type_1 *num,int var_6)

{
  int *piVar1;
  type_1 pbVar2;
  type_1 pbVar3;
  type_2 var_2;
  char var_17;
  int var_8;
  int var_4;
  int var_1;
  int in_stack_ffffffa4;
  type_1 *local_4c;
  int var_18;
  type_1 *local_40;
  type_1 guess;
  type_1 guess1;
  type_1 point5;
  type_1 diff;
  int var_19;
  
  pbVar3 = _zero_;
  pbVar2 = *num;
  var_19 = *(int *)(var_1 + 0x14);
  var_2 = pbVar2->n_sign;
  var_18 = var_6;
  if (_zero_->n_sign == var_2) {
    var_4 = var_3(pbVar2,_zero_,1,in_stack_ffffffa4);
    var_8 = 0;
    if (var_4 < 0) goto LAB_00017be5;
    if (var_4 == 0) {
      var_5(num);
      local_40 = &_zero_;
LAB_00017d6d:
      pbVar2 = *local_40;
      piVar1 = &pbVar2->n_refs;
      *piVar1 = *piVar1 + 1;
      *num = pbVar2;
      var_8 = 1;
      goto LAB_00017be5;
    }
    if (var_2 == _one_->n_sign) goto LAB_00017c1a;
    if (var_6 <= pbVar2->n_scale) {
      var_18 = pbVar2->n_scale;
    }
    var_8 = pbVar3->n_refs;
    if (var_2 == var_7) goto LAB_00017d8b;
    pbVar3->n_refs = var_8 + 3;
    guess = pbVar3;
    guess1 = pbVar3;
    diff = pbVar3;
    point5 = var_9(1,1);
    point5->n_value[1] = '\x05';
LAB_00017c71:
    guess = _one_;
    _one_->n_refs = _one_->n_refs + 1;
    var_8 = (*num)->n_scale;
  }
  else {
    var_8 = 0;
    if (var_2 != var_7) goto LAB_00017be5;
    if (_one_->n_sign == var_7) {
LAB_00017c1a:
      local_40 = &_one_;
      var_8 = var_3(pbVar2,_one_,1,in_stack_ffffffa4);
      if (var_8 == 0) {
        var_5(num);
        goto LAB_00017d6d;
      }
      if (var_6 <= pbVar2->n_scale) {
        var_18 = pbVar2->n_scale;
      }
      pbVar3->n_refs = pbVar3->n_refs + 3;
      guess = pbVar3;
      guess1 = pbVar3;
      diff = pbVar3;
      point5 = var_9(1,1);
      point5->n_value[1] = '\x05';
      if (var_8 < 0) goto LAB_00017c71;
    }
    else {
      var_8 = _zero_->n_refs;
LAB_00017d8b:
      var_18 = var_6;
      if (var_6 <= pbVar2->n_scale) {
        var_18 = pbVar2->n_scale;
      }
      pbVar3->n_refs = var_8 + 3;
      guess = pbVar3;
      guess1 = pbVar3;
      diff = pbVar3;
      point5 = var_9(1,1);
      point5->n_value[1] = '\x05';
    }
    var_8 = 3;
    var_10(&guess,10);
    var_10(&guess1,(*num)->n_len);
    var_11(guess1,point5,&guess1,0);
    guess1->n_scale = 0;
    var_12(guess,guess1,&guess,0);
    var_5(&guess1);
  }
  local_4c = &guess1;
  var_4 = var_8 + 1;
  while( true ) {
    do {
      var_5(local_4c);
      guess->n_refs = guess->n_refs + 1;
      guess1 = guess;
      var_13(*num,guess,&guess,var_8);
      var_14(guess,guess1,&guess,0);
      var_11(guess,point5,&guess,var_8);
      var_15(guess,guess1,&diff,var_4);
      var_17 = var_16(diff,var_8);
    } while (var_17 == '\0');
    if (var_18 < var_8) break;
    var_8 = var_8 * 3;
    if (var_18 + 1 <= var_8) {
      var_8 = var_18 + 1;
    }
    var_4 = var_8 + 1;
  }
  var_5(num);
  var_13(guess,_one_,num,var_18);
  var_5(&guess);
  var_5(local_4c);
  var_5(&point5);
  var_5(&diff);
  var_8 = 1;
LAB_00017be5:
  if (var_19 == *(int *)(var_1 + 0x14)) {
    return var_8;
  }
                    /* WARNING: Subroutine does not return */
  var_20();
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (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) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (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: (call_expression function: (identifier) arguments: (argument_list (number_literal) (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) 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))))) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) (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: (call_expression function: (identifier) arguments: (argument_list (number_literal) (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) 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))))) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (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: (call_expression function: (identifier) arguments: (argument_list (number_literal) (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) 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))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (pointer_expression argument: (identifier)) (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (pointer_expression argument: (identifier)) (number_literal)))) (expression_statement (call_expression function: (identifier) 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: (binary_expression left: (identifier) right: (number_literal)))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (do_statement body: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (pointer_expression argument: (identifier)) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (pointer_expression argument: (identifier)) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (pointer_expression argument: (identifier)) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (pointer_expression argument: (identifier)) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (return_statement (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

undefined4 MASKED(int *param_1,int param_2)

{
  int *piVar1;
  int *piVar2;
  char cVar3;
  undefined4 uVar4;
  int iVar5;
  int iVar6;
  int in_GS_OFFSET;
  int **local_4c;
  int local_48;
  int *local_40;
  int *local_30;
  int *local_2c;
  int local_28;
  int *local_24;
  int local_20;
  
  piVar2 = DAT_0001e484;
  piVar1 = (int *)*param_1;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  iVar5 = *piVar1;
  local_48 = param_2;
  if (*DAT_0001e484 == iVar5) {
    iVar6 = FUN_000157c0();
    uVar4 = 0;
    if (iVar6 < 0) goto LAB_00017be5;
    if (iVar6 == 0) {
      FUN_00015e30(param_1);
      local_40 = (int *)&DAT_0001e484;
LAB_00017d6d:
      iVar5 = *local_40;
      piVar1 = (int *)(iVar5 + 0xc);
      *piVar1 = *piVar1 + 1;
      *param_1 = iVar5;
      uVar4 = 1;
      goto LAB_00017be5;
    }
    if (iVar5 == *DAT_0001e47c) goto LAB_00017c1a;
    if (param_2 <= piVar1[2]) {
      local_48 = piVar1[2];
    }
    iVar6 = piVar2[3];
    if (iVar5 == 0) goto LAB_00017d8b;
    piVar2[3] = iVar6 + 3;
    local_30 = piVar2;
    local_2c = piVar2;
    local_24 = piVar2;
    local_28 = FUN_000158f0(1,1);
    *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;
LAB_00017c71:
    local_30 = DAT_0001e47c;
    DAT_0001e47c[3] = DAT_0001e47c[3] + 1;
    iVar5 = *(int *)(*param_1 + 8);
  }
  else {
    uVar4 = 0;
    if (iVar5 != 0) goto LAB_00017be5;
    if (*DAT_0001e47c == 0) {
LAB_00017c1a:
      local_40 = (int *)&DAT_0001e47c;
      iVar5 = FUN_000157c0();
      if (iVar5 == 0) {
        FUN_00015e30(param_1);
        goto LAB_00017d6d;
      }
      if (param_2 <= piVar1[2]) {
        local_48 = piVar1[2];
      }
      piVar2[3] = piVar2[3] + 3;
      local_30 = piVar2;
      local_2c = piVar2;
      local_24 = piVar2;
      local_28 = FUN_000158f0(1,1);
      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;
      if (iVar5 < 0) goto LAB_00017c71;
    }
    else {
      iVar6 = DAT_0001e484[3];
LAB_00017d8b:
      local_48 = param_2;
      if (param_2 <= piVar1[2]) {
        local_48 = piVar1[2];
      }
      piVar2[3] = iVar6 + 3;
      local_30 = piVar2;
      local_2c = piVar2;
      local_24 = piVar2;
      local_28 = FUN_000158f0(1,1);
      *(undefined1 *)(*(int *)(local_28 + 0x18) + 1) = 5;
    }
    iVar5 = 3;
    FUN_00017a00(&local_30,10);
    FUN_00017a00(&local_2c,*(undefined4 *)(*param_1 + 4));
    FUN_00016a60(local_2c,local_28,&local_2c,0);
    local_2c[2] = 0;
    FUN_000177e0(local_30,local_2c,&local_30,0);
    FUN_00015e30(&local_2c);
  }
  local_4c = &local_2c;
  iVar6 = iVar5 + 1;
  while( true ) {
    do {
      FUN_00015e30(local_4c);
      local_30[3] = local_30[3] + 1;
      local_2c = local_30;
      FUN_00016b90(*param_1,local_30,&local_30,iVar5);
      FUN_00016960(local_30,local_2c,&local_30,0);
      FUN_00016a60(local_30,local_28,&local_30,iVar5);
      FUN_00016030(local_30,local_2c,&local_24,iVar6);
      cVar3 = FUN_00015fd0(local_24,iVar5);
    } while (cVar3 == '\0');
    if (local_48 < iVar5) break;
    iVar5 = iVar5 * 3;
    if (local_48 + 1 <= iVar5) {
      iVar5 = local_48 + 1;
    }
    iVar6 = iVar5 + 1;
  }
  FUN_00015e30(param_1);
  FUN_00016b90(local_30,DAT_0001e47c,param_1,local_48);
  FUN_00015e30(&local_30);
  FUN_00015e30(local_4c);
  FUN_00015e30(&local_28);
  FUN_00015e30(&local_24);
  uVar4 = 1;
LAB_00017be5:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return uVar4;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00018840();
}

