
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Removing unreachable block (ram,0x0025933c) */
/* WARNING: Removing unreachable block (ram,0x00259344) */
/* WARNING: Removing unreachable block (ram,0x00258b25) */
/* WARNING: Removing unreachable block (ram,0x00258b2d) */
/* WARNING: Removing unreachable block (ram,0x00258b38) */
/* WARNING: Removing unreachable block (ram,0x00259410) */
/* WARNING: Removing unreachable block (ram,0x00259841) */
/* WARNING: Removing unreachable block (ram,0x0025941c) */
/* WARNING: Removing unreachable block (ram,0x00259420) */
/* WARNING: Removing unreachable block (ram,0x002595b0) */
/* WARNING: Removing unreachable block (ram,0x00259429) */
/* WARNING: Removing unreachable block (ram,0x00258b40) */
/* WARNING: Removing unreachable block (ram,0x00258b4c) */
/* WARNING: Removing unreachable block (ram,0x002594e0) */
/* WARNING: Removing unreachable block (ram,0x00258b58) */
/* WARNING: Removing unreachable block (ram,0x00258b5e) */
/* WARNING: Removing unreachable block (ram,0x00258adb) */
/* WARNING: Removing unreachable block (ram,0x00258ae8) */
/* WARNING: Removing unreachable block (ram,0x002591d0) */
/* WARNING: Removing unreachable block (ram,0x00258aee) */
/* WARNING: Removing unreachable block (ram,0x00258b6d) */
/* WARNING: Removing unreachable block (ram,0x00258b7e) */
/* WARNING: Removing unreachable block (ram,0x00259830) */
/* WARNING: Removing unreachable block (ram,0x00258b8a) */
/* WARNING: Removing unreachable block (ram,0x00258b8c) */
/* WARNING: Removing unreachable block (ram,0x00258b97) */
/* WARNING: Removing unreachable block (ram,0x00258b00) */
/* WARNING: Removing unreachable block (ram,0x002592f0) */
/* WARNING: Removing unreachable block (ram,0x0025981f) */
/* WARNING: Removing unreachable block (ram,0x002592fc) */
/* WARNING: Removing unreachable block (ram,0x002592fe) */
/* WARNING: Removing unreachable block (ram,0x00259309) */
/* WARNING: Removing unreachable block (ram,0x00258b19) */
/* WARNING: Removing unreachable block (ram,0x00259320) */
/* WARNING: Removing unreachable block (ram,0x0025932c) */
/* WARNING: Removing unreachable block (ram,0x002593d8) */
/* WARNING: Removing unreachable block (ram,0x00258fb8) */
/* WARNING: Removing unreachable block (ram,0x00258fbb) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */
/* std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::money_get<wchar_t,
   std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >
   >::_M_extract<false>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >,
   std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&,
   std::_Ios_Iostate&, std::string&) const */

undefined4 *
std::money_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>::
_M_extract<false>(undefined4 *param_1,undefined4 param_2,int *param_3,int param_4,int *param_5,
                 int param_6,int param_7,uint *param_8,string *param_9)

{
  uint uVar1;
  int *piVar2;
  byte bVar3;
  bool bVar4;
  char cVar5;
  uint uVar6;
  byte *pbVar7;
  undefined4 *puVar8;
  uint uVar9;
  __moneypunct_cache<wchar_t,false> *this;
  int iVar10;
  bool bVar11;
  bool bVar12;
  int local_78;
  int local_64;
  undefined4 local_50;
  uint *local_4c;
  uint local_48;
  uint local_44 [4];
  undefined1 *local_34;
  uint local_30;
  undefined1 local_2c [28];
  
  use_facet<std::ctype<wchar_t>>((locale *)(param_7 + 0x6c));
  uVar6 = locale::id::_M_id((id *)PTR_id_0038edb4);
  piVar2 = (int *)(*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + uVar6 * 4);
  local_64 = *piVar2;
  if (local_64 == 0) {
                    /* try { // try from 002596a8 to 002596ac has its CatchHandler @ 0025995c */
    this = (__moneypunct_cache<wchar_t,false> *)operator_new(0x70);
    *(undefined4 *)(this + 4) = 0;
    *(undefined4 *)(this + 8) = 0;
    *(undefined4 *)(this + 0xc) = 0;
    this[0x10] = (__moneypunct_cache<wchar_t,false>)0x0;
    *(undefined ***)this = &PTR____moneypunct_cache_0038d7b8;
    *(undefined4 *)(this + 0x14) = 0;
    *(undefined4 *)(this + 0x18) = 0;
    *(undefined4 *)(this + 0x1c) = 0;
    *(undefined4 *)(this + 0x20) = 0;
    *(undefined4 *)(this + 0x24) = 0;
    *(undefined4 *)(this + 0x28) = 0;
    *(undefined4 *)(this + 0x2c) = 0;
    *(undefined4 *)(this + 0x30) = 0;
    *(undefined4 *)(this + 0x34) = 0;
    *(undefined4 *)(this + 0x38) = 0;
    *(undefined4 *)(this + 0x3c) = 0;
    this[0x6c] = (__moneypunct_cache<wchar_t,false>)0x0;
                    /* try { // try from 0025972d to 00259731 has its CatchHandler @ 0025995e */
    __moneypunct_cache<wchar_t,false>::_M_cache(this,(locale *)(param_7 + 0x6c));
    locale::_Impl::_M_install_cache(*(_Impl **)(param_7 + 0x6c),(facet *)this,uVar6);
    local_64 = *piVar2;
  }
  local_48 = 0;
  local_44[0] = local_44[0] & 0xffffff00;
  local_4c = local_44;
  if (*(char *)(local_64 + 0x10) != '\0') {
                    /* try { // try from 00258a0e to 00258a12 has its CatchHandler @ 00259964 */
    std::string::reserve((string *)&local_4c,0x20);
  }
  local_30 = 0;
  local_2c[0] = 0;
  local_34 = local_2c;
                    /* try { // try from 00258a3e to 00259681 has its CatchHandler @ 00259960 */
  std::string::reserve((string *)&local_34,0x20);
  local_78 = 1;
  local_50 = *(undefined4 *)(local_64 + 0x3c);
  pbVar7 = (byte *)&local_50;
  bVar3 = (byte)local_50;
  while( true ) {
    if (bVar3 < 5) {
                    /* WARNING: Could not recover jumptable at 0x00258ab2. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      puVar8 = (undefined4 *)
               (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4))
               )();
      return puVar8;
    }
    if (3 < local_78) break;
    pbVar7 = (byte *)((int)&local_50 + local_78);
    bVar3 = *pbVar7;
    local_78 = local_78 + 1;
  }
  if ((local_30 < 2) ||
     (uVar6 = std::string::find_first_not_of((string *)&local_34,'0',0), uVar6 == 0))
  goto LAB_00259336;
  if (uVar6 == 0xffffffff) {
    uVar6 = local_30 - 1;
    if (uVar6 == 0xffffffff) {
      *local_34 = 0;
      goto LAB_00259336;
    }
    if (uVar6 == 0) goto LAB_00259336;
  }
  if (local_30 < uVar6) {
    uVar6 = local_30;
  }
  std::string::_M_erase((string *)&local_34,0,uVar6);
LAB_00259336:
  uVar6 = local_48;
  if (local_48 != 0) {
    uVar1 = local_48 + 1;
    uVar9 = 0xf;
    if (local_4c != local_44) {
      uVar9 = local_44[0];
    }
    if (uVar9 < uVar1) {
      std::string::_M_mutate((string *)&local_4c,local_48,0,(char *)0x0,1);
    }
    *(undefined1 *)((int)local_4c + uVar6) = 0;
    *(undefined1 *)((int)local_4c + uVar6 + 1) = 0;
    local_48 = uVar1;
    cVar5 = __verify_grouping(*(char **)(local_64 + 8),*(uint *)(local_64 + 0xc),(string *)&local_4c
                             );
    if (cVar5 == '\0') {
      *param_8 = *param_8 | 4;
    }
  }
  std::string::swap(param_9,(string *)&local_34);
  bVar11 = param_3 != (int *)0x0 && param_4 == -1;
  bVar12 = param_4 == -1;
  if (bVar11) {
    if ((int *)param_3[2] < (int *)param_3[3]) {
      iVar10 = *(int *)param_3[2];
    }
    else {
      iVar10 = (**(code **)(*param_3 + 0x24))(param_3);
    }
    bVar12 = false;
    if (iVar10 == -1) {
      param_3 = (int *)0x0;
      bVar12 = bVar11;
    }
  }
  bVar4 = param_5 != (int *)0x0 && param_6 == -1;
  bVar11 = param_6 == -1;
  if (bVar4) {
    if ((int *)param_5[2] < (int *)param_5[3]) {
      iVar10 = *(int *)param_5[2];
    }
    else {
      iVar10 = (**(code **)(*param_5 + 0x24))(param_5);
    }
    bVar11 = false;
    if (iVar10 == -1) {
      bVar11 = bVar4;
    }
  }
  if (bVar12 == bVar11) {
    *param_8 = *param_8 | 2;
  }
  *param_1 = param_3;
  param_1[1] = param_4;
  if (local_34 != local_2c) {
    operator_delete(local_34);
  }
  if (local_4c != local_44) {
    operator_delete(local_4c);
  }
  return param_1;
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Removing unreachable block (ram,0x0025933c) */
/* WARNING: Removing unreachable block (ram,0x00259344) */
/* WARNING: Removing unreachable block (ram,0x00258b25) */
/* WARNING: Removing unreachable block (ram,0x00258b2d) */
/* WARNING: Removing unreachable block (ram,0x00258b38) */
/* WARNING: Removing unreachable block (ram,0x00259410) */
/* WARNING: Removing unreachable block (ram,0x00259841) */
/* WARNING: Removing unreachable block (ram,0x0025941c) */
/* WARNING: Removing unreachable block (ram,0x00259420) */
/* WARNING: Removing unreachable block (ram,0x002595b0) */
/* WARNING: Removing unreachable block (ram,0x00259429) */
/* WARNING: Removing unreachable block (ram,0x00258b40) */
/* WARNING: Removing unreachable block (ram,0x00258b4c) */
/* WARNING: Removing unreachable block (ram,0x002594e0) */
/* WARNING: Removing unreachable block (ram,0x00258b58) */
/* WARNING: Removing unreachable block (ram,0x00258b5e) */
/* WARNING: Removing unreachable block (ram,0x00258adb) */
/* WARNING: Removing unreachable block (ram,0x00258ae8) */
/* WARNING: Removing unreachable block (ram,0x002591d0) */
/* WARNING: Removing unreachable block (ram,0x00258aee) */
/* WARNING: Removing unreachable block (ram,0x00258b6d) */
/* WARNING: Removing unreachable block (ram,0x00258b7e) */
/* WARNING: Removing unreachable block (ram,0x00259830) */
/* WARNING: Removing unreachable block (ram,0x00258b8a) */
/* WARNING: Removing unreachable block (ram,0x00258b8c) */
/* WARNING: Removing unreachable block (ram,0x00258b97) */
/* WARNING: Removing unreachable block (ram,0x00258b00) */
/* WARNING: Removing unreachable block (ram,0x002592f0) */
/* WARNING: Removing unreachable block (ram,0x0025981f) */
/* WARNING: Removing unreachable block (ram,0x002592fc) */
/* WARNING: Removing unreachable block (ram,0x002592fe) */
/* WARNING: Removing unreachable block (ram,0x00259309) */
/* WARNING: Removing unreachable block (ram,0x00258b19) */
/* WARNING: Removing unreachable block (ram,0x00259320) */
/* WARNING: Removing unreachable block (ram,0x0025932c) */
/* WARNING: Removing unreachable block (ram,0x002593d8) */
/* WARNING: Removing unreachable block (ram,0x00258fb8) */
/* WARNING: Removing unreachable block (ram,0x00258fbb) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

undefined4 *
FUN_00258960(undefined4 *param_1,undefined4 param_2,int *param_3,int param_4,int *param_5,
            int param_6,int param_7,uint *param_8,undefined4 param_9)

{
  uint uVar1;
  int *piVar2;
  byte bVar3;
  bool bVar4;
  char cVar5;
  int iVar6;
  byte *pbVar7;
  undefined4 *puVar8;
  uint uVar9;
  uint uVar10;
  bool bVar11;
  bool bVar12;
  int local_78;
  int local_64;
  undefined4 local_50;
  uint *local_4c;
  uint local_48;
  uint local_44 [4];
  undefined1 *local_34;
  uint local_30;
  undefined1 local_2c [28];
  
  FUN_0023c1d0(param_7 + 0x6c);
  iVar6 = FUN_001e9740(PTR_DAT_0038edb4);
  piVar2 = (int *)(*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + iVar6 * 4);
  local_64 = *piVar2;
  if (local_64 == 0) {
                    /* try { // try from 002596a8 to 002596ac has its CatchHandler @ 0025995c */
    puVar8 = (undefined4 *)FUN_001e5200(0x70);
    puVar8[1] = 0;
    puVar8[2] = 0;
    puVar8[3] = 0;
    *(undefined1 *)(puVar8 + 4) = 0;
    *puVar8 = &PTR_FUN_0038d7b8;
    puVar8[5] = 0;
    puVar8[6] = 0;
    puVar8[7] = 0;
    puVar8[8] = 0;
    puVar8[9] = 0;
    puVar8[10] = 0;
    puVar8[0xb] = 0;
    puVar8[0xc] = 0;
    puVar8[0xd] = 0;
    puVar8[0xe] = 0;
    puVar8[0xf] = 0;
    *(undefined1 *)(puVar8 + 0x1b) = 0;
                    /* try { // try from 0025972d to 00259731 has its CatchHandler @ 0025995e */
    FUN_0023d400(puVar8,param_7 + 0x6c);
    FUN_001e9c50(*(undefined4 *)(param_7 + 0x6c),puVar8,iVar6);
    local_64 = *piVar2;
  }
  local_48 = 0;
  local_44[0] = local_44[0] & 0xffffff00;
  local_4c = local_44;
  if (*(char *)(local_64 + 0x10) != '\0') {
                    /* try { // try from 00258a0e to 00258a12 has its CatchHandler @ 00259964 */
    FUN_001ef040(&local_4c,0x20);
  }
  local_30 = 0;
  local_2c[0] = 0;
  local_34 = local_2c;
                    /* try { // try from 00258a3e to 00259681 has its CatchHandler @ 00259960 */
  FUN_001ef040(&local_34,0x20);
  local_78 = 1;
  local_50 = *(undefined4 *)(local_64 + 0x3c);
  pbVar7 = (byte *)&local_50;
  bVar3 = (byte)local_50;
  while( true ) {
    if (bVar3 < 5) {
                    /* WARNING: Could not recover jumptable at 0x00258ab2. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      puVar8 = (undefined4 *)
               (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))();
      return puVar8;
    }
    if (3 < local_78) break;
    pbVar7 = (byte *)((int)&local_50 + local_78);
    bVar3 = *pbVar7;
    local_78 = local_78 + 1;
  }
  if ((local_30 < 2) || (uVar10 = FUN_001f10a0(&local_34,0x30,0), uVar10 == 0)) goto LAB_00259336;
  if (uVar10 == 0xffffffff) {
    uVar10 = local_30 - 1;
    if (uVar10 == 0xffffffff) {
      *local_34 = 0;
      goto LAB_00259336;
    }
    if (uVar10 == 0) goto LAB_00259336;
  }
  if (local_30 < uVar10) {
    uVar10 = local_30;
  }
  FUN_001eebf0(&local_34,0,uVar10);
LAB_00259336:
  uVar10 = local_48;
  if (local_48 != 0) {
    uVar1 = local_48 + 1;
    uVar9 = 0xf;
    if (local_4c != local_44) {
      uVar9 = local_44[0];
    }
    if (uVar9 < uVar1) {
      FUN_001eeaa0(&local_4c,local_48,0,0,1);
    }
    *(undefined1 *)((int)local_4c + uVar10) = 0;
    *(undefined1 *)((int)local_4c + uVar10 + 1) = 0;
    local_48 = uVar1;
    cVar5 = FUN_0027aa00(*(undefined4 *)(local_64 + 8),*(undefined4 *)(local_64 + 0xc),&local_4c);
    if (cVar5 == '\0') {
      *param_8 = *param_8 | 4;
    }
  }
  FUN_001f0930(param_9,&local_34);
  bVar11 = param_3 != (int *)0x0 && param_4 == -1;
  bVar12 = param_4 == -1;
  if (bVar11) {
    if ((int *)param_3[2] < (int *)param_3[3]) {
      iVar6 = *(int *)param_3[2];
    }
    else {
      iVar6 = (**(code **)(*param_3 + 0x24))(param_3);
    }
    bVar12 = false;
    if (iVar6 == -1) {
      param_3 = (int *)0x0;
      bVar12 = bVar11;
    }
  }
  bVar4 = param_5 != (int *)0x0 && param_6 == -1;
  bVar11 = param_6 == -1;
  if (bVar4) {
    if ((int *)param_5[2] < (int *)param_5[3]) {
      iVar6 = *(int *)param_5[2];
    }
    else {
      iVar6 = (**(code **)(*param_5 + 0x24))(param_5);
    }
    bVar11 = false;
    if (iVar6 == -1) {
      bVar11 = bVar4;
    }
  }
  if (bVar12 == bVar11) {
    *param_8 = *param_8 | 2;
  }
  *param_1 = param_3;
  param_1[1] = param_4;
  if (local_34 != local_2c) {
    FUN_001e6db0(local_34);
  }
  if (local_4c != local_44) {
    FUN_001e6db0(local_4c);
  }
  return param_1;
}


CALL 0x000559e6
ADD EAX,0x13669b
PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
PUSH EBX
MOV EDI,EAX
SUB ESP,0xa8
MOV EBX,dword ptr [EBP + 0x20]
MOV dword ptr [EBP + -0x5c],EAX
LEA ECX,[EBX + 0x6c]
MOV EBX,EAX
PUSH ECX
MOV dword ptr [EBP + -0x64],ECX
CALL 0x0023c1d0
POP ECX
PUSH dword ptr [EDI + 0xfffffdb4]
MOV dword ptr [EBP + 0xffffff74],EAX
CALL 0x001e9740
ADD ESP,0x10
MOV EDI,EAX
MOV EAX,dword ptr [EBP + 0x20]
MOV EAX,dword ptr [EAX + 0x6c]
MOV EAX,dword ptr [EAX + 0xc]
LEA EAX,[EAX + EDI*0x4]
MOV dword ptr [EBP + -0x68],EAX
MOV EAX,dword ptr [EAX]
MOV dword ptr [EBP + -0x60],EAX
TEST EAX,EAX
JZ 0x002596a0
MOV EAX,dword ptr [EBP + -0x60]
LEA EBX,[EAX + 0x40]
MOV EAX,dword ptr [EAX + 0x28]
MOV dword ptr [EBP + -0x7c],EBX
TEST EAX,EAX
JNZ 0x002591b8
MOV byte ptr [EBP + -0x6f],0x0
LEA EAX,[EBP + -0x48]
MOV dword ptr [EBP + -0x44],0x0
MOV dword ptr [EBP + 0xffffff68],EAX
LEA EAX,[EBP + -0x40]
MOV dword ptr [EBP + 0xffffff78],EAX
MOV dword ptr [EBP + -0x48],EAX
MOV EAX,dword ptr [EBP + -0x60]
MOV byte ptr [EBP + -0x40],0x0
CMP byte ptr [EAX + 0x10],0x0
JZ 0x00258a16
SUB ESP,0x8
MOV EBX,dword ptr [EBP + -0x5c]
PUSH 0x20
PUSH dword ptr [EBP + 0xffffff68]
CALL 0x001ef040
ADD ESP,0x10
LEA EDI,[EBP + -0x28]
LEA EAX,[EBP + -0x30]
SUB ESP,0x8
MOV dword ptr [EBP + -0x2c],0x0
MOV dword ptr [EBP + -0x78],EDI
MOV dword ptr [EBP + -0x30],EDI
MOV EDI,dword ptr [EBP + -0x5c]
PUSH 0x20
PUSH EAX
MOV EBX,EDI
MOV dword ptr [EBP + 0xffffff6c],EAX
MOV byte ptr [EBP + -0x28],0x0
CALL 0x001ef040
MOV EAX,dword ptr [EBP + -0x60]
MOV dword ptr [EBP + -0x74],0x1
ADD ESP,0x10
MOV byte ptr [EBP + -0x6d],0x0
LEA EBX,[EAX + 0x44]
MOV EAX,dword ptr [EAX + 0x3c]
MOV dword ptr [EBP + -0x64],0x0
MOV dword ptr [EBP + -0x68],EBX
MOV dword ptr [EBP + -0x4c],EAX
LEA EAX,[EBP + -0x4d]
MOV dword ptr [EBP + 0xffffff70],EAX
LEA EAX,[EDI + 0x3b4]
MOV dword ptr [EBP + 0xffffff64],0x0
MOV dword ptr [EBP + -0x80],EAX
MOV EAX,dword ptr [EBP + 0xffffff70]
ADD EAX,dword ptr [EBP + -0x74]
MOV byte ptr [EBP + -0x6e],0x0
MOV dword ptr [EBP + 0xffffff7c],0x0
CMP byte ptr [EAX],0x4
JA 0x0025914f
MOV EDI,dword ptr [EBP + -0x5c]
MOVZX EAX,byte ptr [EAX]
MOV ECX,dword ptr [EDI + EAX*0x4 + 0xfff17e08]
ADD ECX,EDI
JMP ECX
CMP dword ptr [EBP + 0xffffff7c],0x1
SETA AL
AND EAX,EBX
TEST AL,AL
JZ 0x00259758
CMP byte ptr [EBP + -0x6e],0x0
MOV EAX,dword ptr [EBP + -0x60]
JNZ 0x002591d0
MOV EAX,dword ptr [EAX + 0x24]
MOV dword ptr [EBP + -0x68],EAX
MOV EDX,dword ptr [EBP + 0x14]
MOV EAX,dword ptr [EBP + 0x10]
MOV EDI,0x1
JMP 0x00258b6d
MOV ECX,dword ptr [EBP + 0x18]
CMP dword ptr [EBP + 0x1c],-0x1
SETZ DL
TEST ECX,ECX
SETNZ AL
AND AL,DL
MOV ESI,EAX
JNZ 0x002592f0
CMP EDI,dword ptr [EBP + 0xffffff7c]
JNC 0x00259320
CMP BL,DL
JZ 0x00259320
MOV EDX,dword ptr [EBP + 0x14]
MOV EAX,dword ptr [EBP + 0x10]
CMP EDX,-0x1
JNZ 0x00258b40
TEST EAX,EAX
JNZ 0x00259410
MOV EBX,dword ptr [EBP + -0x68]
CMP dword ptr [EBX + EDI*0x4],EDX
JNZ 0x00258fbb
MOV EDX,dword ptr [EAX + 0x8]
CMP EDX,dword ptr [EAX + 0xc]
JNC 0x002594e0
ADD EDX,0x4
MOV dword ptr [EAX + 0x8],EDX
MOV dword ptr [EBP + 0x14],0xffffffff
ADD EDI,0x1
MOV EDX,0xffffffff
CMP EDX,-0x1
SETZ BL
TEST EAX,EAX
SETNZ DL
AND DL,BL
MOV ESI,EDX
JZ 0x00258b00
MOV EDX,dword ptr [EAX + 0x8]
CMP EDX,dword ptr [EAX + 0xc]
JNC 0x00259830
MOV EAX,dword ptr [EDX]
XOR EBX,EBX
CMP EAX,-0x1
JNZ 0x00258b00
MOV dword ptr [EBP + 0x10],0x0
MOV EBX,ESI
JMP 0x00258b00
MOV EAX,dword ptr [EBP + 0x10]
MOV EBX,dword ptr [EBP + 0x24]
OR dword ptr [EBX],0x4
CMP dword ptr [EBP + 0x14],-0x1
SETZ BL
TEST EAX,EAX
SETNZ DL
AND DL,BL
MOV ESI,EDX
JNZ 0x00259580
MOV ECX,dword ptr [EBP + 0x18]
CMP dword ptr [EBP + 0x1c],-0x1
SETZ DL
TEST ECX,ECX
SETNZ AL
AND AL,DL
MOV ESI,EAX
JNZ 0x00259558
CMP BL,DL
JNZ 0x00258ffa
MOV EAX,dword ptr [EBP + 0x24]
OR dword ptr [EAX],0x2
MOV EAX,dword ptr [EBP + 0x10]
MOV ECX,dword ptr [EBP + 0x8]
MOV EDX,dword ptr [EBP + 0x14]
MOV dword ptr [ECX],EAX
MOV EAX,dword ptr [EBP + -0x30]
MOV dword ptr [ECX + 0x4],EDX
CMP EAX,dword ptr [EBP + -0x78]
JZ 0x0025901f
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x5c]
PUSH EAX
CALL 0x001e6db0
ADD ESP,0x10
MOV EAX,dword ptr [EBP + -0x48]
CMP EAX,dword ptr [EBP + 0xffffff78]
JZ 0x00259039
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x5c]
PUSH EAX
CALL 0x001e6db0
ADD ESP,0x10
MOV EAX,dword ptr [EBP + 0x8]
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET 0x4
CMP dword ptr [EBP + -0x74],0x3
JG 0x00258ac7
MOV EAX,ESI
TEST AL,AL
JNZ 0x00258ac7
ADD dword ptr [EBP + -0x74],0x1
MOV EAX,dword ptr [EBP + 0xffffff70]
ADD EAX,dword ptr [EBP + -0x74]
CMP byte ptr [EAX],0x4
JBE 0x00258aa3
XOR ESI,ESI
LEA ESI,[ESI]
MOV EBX,0x1
JMP 0x00259125
MOV EAX,dword ptr [EBP + -0x60]
MOV EAX,dword ptr [EAX + 0x30]
TEST EAX,EAX
SETNZ byte ptr [EBP + -0x6f]
JMP 0x002589d7
MOV EAX,dword ptr [EAX + 0x2c]
MOV dword ptr [EBP + -0x68],EAX
JMP 0x00258aee
MOV EAX,dword ptr [ECX + 0x8]
CMP EAX,dword ptr [ECX + 0xc]
JNC 0x0025981f
MOV EAX,dword ptr [EAX]
XOR EDX,EDX
CMP EAX,-0x1
JNZ 0x00258b19
MOV dword ptr [EBP + 0x18],0x0
MOV EDX,ESI
CMP EDI,dword ptr [EBP + 0xffffff7c]
JC 0x00258b25
NOP
CMP EDI,dword ptr [EBP + 0xffffff7c]
JNZ 0x00258fb8
CMP dword ptr [EBP + -0x2c],0x1
JA 0x002595c0
CMP byte ptr [EBP + -0x6e],0x0
JZ 0x00259360
MOV EAX,dword ptr [EBP + -0x30]
CMP byte ptr [EAX],0x30
JZ 0x00259360
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x5c]
PUSH 0x2d
PUSH 0x1
PUSH 0x0
PUSH 0x0
PUSH dword ptr [EBP + 0xffffff6c]
CALL 0x001ef630
ADD ESP,0x20
MOV ESI,dword ptr [EBP + -0x44]
TEST ESI,ESI
JZ 0x002593d2
MOVZX EAX,byte ptr [EBP + 0xffffff64]
MOVZX EBX,byte ptr [EBP + -0x64]
LEA EDI,[ESI + 0x1]
CMP byte ptr [EBP + -0x6d],0x0
MOV EDX,dword ptr [EBP + -0x48]
CMOVZ EAX,EBX
CMP EDX,dword ptr [EBP + 0xffffff78]
MOV byte ptr [EBP + -0x68],AL
MOV EAX,0xf
CMOVNZ EAX,dword ptr [EBP + -0x40]
CMP EDI,EAX
JA 0x002598a0
MOVZX EAX,byte ptr [EBP + -0x68]
SUB ESP,0x4
MOV EBX,dword ptr [EBP + -0x5c]
MOV byte ptr [EDX + ESI*0x1],AL
MOV EAX,dword ptr [EBP + -0x48]
MOV dword ptr [EBP + -0x44],EDI
MOV byte ptr [EAX + ESI*0x1 + 0x1],0x0
MOV EAX,dword ptr [EBP + -0x60]
PUSH dword ptr [EBP + 0xffffff68]
PUSH dword ptr [EAX + 0xc]
PUSH dword ptr [EAX + 0x8]
CALL 0x0027aa00
ADD ESP,0x10
TEST AL,AL
JNZ 0x002593d2
MOV EAX,dword ptr [EBP + 0x24]
OR dword ptr [EAX],0x4
CMP byte ptr [EBP + -0x6d],0x0
JZ 0x002593e7
MOV EAX,dword ptr [EBP + -0x60]
MOV ECX,dword ptr [EBP + -0x64]
CMP dword ptr [EAX + 0x34],ECX
JNZ 0x00258fb8
SUB ESP,0x8
PUSH dword ptr [EBP + 0xffffff6c]
MOV EBX,dword ptr [EBP + -0x5c]
PUSH dword ptr [EBP + 0x28]
CALL 0x001f0930
MOV EAX,dword ptr [EBP + 0x10]
ADD ESP,0x10
JMP 0x00258fc1
MOV EDX,dword ptr [EAX + 0x8]
CMP EDX,dword ptr [EAX + 0xc]
JNC 0x00259841
MOV EDX,dword ptr [EDX]
MOV EAX,EDX
CMP EAX,-0x1
JZ 0x002595b0
MOV EAX,dword ptr [EBP + 0x10]
JMP 0x00258b40
MOV EDX,dword ptr [EAX]
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EDX + 0x28]
ADD ESP,0x10
MOV EAX,dword ptr [EBP + 0x10]
JMP 0x00258b5e
MOV EAX,dword ptr [ECX + 0x8]
CMP EAX,dword ptr [ECX + 0xc]
JNC 0x002598f3
MOV EAX,dword ptr [EAX]
XOR EDX,EDX
CMP EAX,-0x1
JNZ 0x00258ff0
MOV dword ptr [EBP + 0x18],0x0
MOV EDX,ESI
JMP 0x00258ff0
MOV EDX,dword ptr [EAX + 0x8]
CMP EDX,dword ptr [EAX + 0xc]
JNC 0x00259904
MOV EAX,dword ptr [EDX]
XOR EBX,EBX
CMP EAX,-0x1
JNZ 0x00258fd7
MOV dword ptr [EBP + 0x10],0x0
MOV EBX,ESI
JMP 0x00258fd7
MOV dword ptr [EBP + 0x10],0x0
XOR EAX,EAX
JMP 0x00258b40
SUB ESP,0x4
MOV EBX,dword ptr [EBP + -0x5c]
PUSH 0x0
PUSH 0x30
PUSH dword ptr [EBP + 0xffffff6c]
CALL 0x001f10a0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00259336
MOV EDX,dword ptr [EBP + -0x2c]
CMP EAX,-0x1
JZ 0x002598c3
SUB ESP,0x4
CMP EAX,EDX
MOV EBX,dword ptr [EBP + -0x5c]
CMOVA EAX,EDX
PUSH EAX
PUSH 0x0
PUSH dword ptr [EBP + 0xffffff6c]
CALL 0x001eebf0
ADD ESP,0x10
JMP 0x00259336
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x5c]
PUSH 0x70
CALL 0x001e5200
MOV EBX,dword ptr [EBP + -0x5c]
MOV ESI,EAX
POP EAX
POP EDX
MOV dword ptr [ESI + 0x4],0x0
LEA EAX,[EBX + 0xffffe7b0]
MOV dword ptr [ESI + 0x8],0x0
MOV dword ptr [ESI + 0xc],0x0
ADD EAX,0x8
MOV byte ptr [ESI + 0x10],0x0
MOV dword ptr [ESI],EAX
MOV dword ptr [ESI + 0x14],0x0
MOV dword ptr [ESI + 0x18],0x0
MOV dword ptr [ESI + 0x1c],0x0
MOV dword ptr [ESI + 0x20],0x0
MOV dword ptr [ESI + 0x24],0x0
MOV dword ptr [ESI + 0x28],0x0
MOV dword ptr [ESI + 0x2c],0x0
MOV dword ptr [ESI + 0x30],0x0
MOV dword ptr [ESI + 0x34],0x0
MOV dword ptr [ESI + 0x38],0x0
MOV dword ptr [ESI + 0x3c],0x0
MOV byte ptr [ESI + 0x6c],0x0
PUSH dword ptr [EBP + -0x64]
PUSH ESI
CALL 0x0023d400
MOV EAX,dword ptr [EBP + 0x20]
ADD ESP,0xc
MOV EBX,dword ptr [EBP + -0x5c]
PUSH EDI
PUSH ESI
PUSH dword ptr [EAX + 0x6c]
CALL 0x001e9c50
MOV EAX,dword ptr [EBP + -0x68]
ADD ESP,0x10
MOV EAX,dword ptr [EAX]
MOV dword ptr [EBP + -0x60],EAX
JMP 0x002589bf
TEST BL,BL
JZ 0x00258fb8
CMP dword ptr [EBP + -0x2c],0x1
JBE 0x00259336
JMP 0x002595c0
MOV EAX,dword ptr [ECX]
SUB ESP,0xc
PUSH ECX
CALL dword ptr [EAX + 0x24]
ADD ESP,0x10
JMP 0x002592fe
MOV EDX,dword ptr [EAX]
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EDX + 0x24]
ADD ESP,0x10
JMP 0x00258b8c
MOV EDX,dword ptr [EAX]
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EDX + 0x24]
ADD ESP,0x10
MOV EDX,EAX
JMP 0x00259420
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x5c]
PUSH 0x1
PUSH 0x0
PUSH 0x0
PUSH ESI
PUSH dword ptr [EBP + 0xffffff68]
CALL 0x001eeaa0
ADD ESP,0x20
MOV EDX,dword ptr [EBP + -0x48]
JMP 0x00259399
LEA EAX,[EDX + -0x1]
CMP EAX,-0x1
JZ 0x00259915
TEST EAX,EAX
JZ 0x00259336
JMP 0x002595ec
MOV EAX,dword ptr [ECX]
SUB ESP,0xc
PUSH ECX
CALL dword ptr [EAX + 0x24]
ADD ESP,0x10
JMP 0x00259566
MOV EDX,dword ptr [EAX]
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EDX + 0x24]
ADD ESP,0x10
JMP 0x0025958e
MOV EAX,dword ptr [EBP + -0x30]
MOV byte ptr [EAX],0x0
JMP 0x00259336
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Removing unreachable block (ram,0x0025933c) */\n/* WARNING: Removing unreachable block (ram,0x00259344) */\n/* WARNING: Removing unreachable block (ram,0x00258b25) */\n/* WARNING: Removing unreachable block (ram,0x00258b2d) */\n/* WARNING: Removing unreachable block (ram,0x00258b38) */\n/* WARNING: Removing unreachable block (ram,0x00259410) */\n/* WARNING: Removing unreachable block (ram,0x00259841) */\n/* WARNING: Removing unreachable block (ram,0x0025941c) */\n/* WARNING: Removing unreachable block (ram,0x00259420) */\n/* WARNING: Removing unreachable block (ram,0x002595b0) */\n/* WARNING: Removing unreachable block (ram,0x00259429) */\n/* WARNING: Removing unreachable block (ram,0x00258b40) */\n/* WARNING: Removing unreachable block (ram,0x00258b4c) */\n/* WARNING: Removing unreachable block (ram,0x002594e0) */\n/* WARNING: Removing unreachable block (ram,0x00258b58) */\n/* WARNING: Removing unreachable block (ram,0x00258b5e) */\n/* WARNING: Removing unreachable block (ram,0x00258adb) */\n/* WARNING: Removing unreachable block (ram,0x00258ae8) */\n/* WARNING: Removing unreachable block (ram,0x002591d0) */\n/* WARNING: Removing unreachable block (ram,0x00258aee) */\n/* WARNING: Removing unreachable block (ram,0x00258b6d) */\n/* WARNING: Removing unreachable block (ram,0x00258b7e) */\n/* WARNING: Removing unreachable block (ram,0x00259830) */\n/* WARNING: Removing unreachable block (ram,0x00258b8a) */\n/* WARNING: Removing unreachable block (ram,0x00258b8c) */\n/* WARNING: Removing unreachable block (ram,0x00258b97) */\n/* WARNING: Removing unreachable block (ram,0x00258b00) */\n/* WARNING: Removing unreachable block (ram,0x002592f0) */\n/* WARNING: Removing unreachable block (ram,0x0025981f) */\n/* WARNING: Removing unreachable block (ram,0x002592fc) */\n/* WARNING: Removing unreachable block (ram,0x002592fe) */\n/* WARNING: Removing unreachable block (ram,0x00259309) */\n/* WARNING: Removing unreachable block (ram,0x00258b19) */\n/* WARNING: Removing unreachable block (ram,0x00259320) */\n/* WARNING: Removing unreachable block (ram,0x0025932c) */\n/* WARNING: Removing unreachable block (ram,0x002593d8) */\n/* WARNING: Removing unreachable block (ram,0x00258fb8) */\n/* WARNING: Removing unreachable block (ram,0x00258fbb) */\n/* WARNING: Restarted to delay deadcode elimination for space: stack */\n\nundefined4 *\nFUN_00258960(undefined4 *param_1,undefined4 param_2,int *param_3,int param_4,int *param_5,\n            int param_6,int param_7,uint *param_8,undefined4 param_9)\n\n{\n  uint uVar1;\n  int *piVar2;\n  byte bVar3;\n  bool bVar4;\n  char cVar5;\n  int iVar6;\n  byte *pbVar7;\n  undefined4 *puVar8;\n  uint uVar9;\n  uint uVar10;\n  bool bVar11;\n  bool bVar12;\n  int local_78;\n  int local_64;\n  undefined4 local_50;\n  uint *local_4c;\n  uint local_48;\n  uint local_44 [4];\n  undefined1 *local_34;\n  uint local_30;\n  undefined1 local_2c [28];\n  \n  FUN_0023c1d0(param_7 + 0x6c);\n  iVar6 = FUN_001e9740(PTR_DAT_0038edb4);\n  piVar2 = (int *)(*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + iVar6 * 4);\n  local_64 = *piVar2;\n  if (local_64 == 0) {\n                    /* try { // try from 002596a8 to 002596ac has its CatchHandler @ 0025995c */\n    puVar8 = (undefined4 *)FUN_001e5200(0x70);\n    puVar8[1] = 0;\n    puVar8[2] = 0;\n    puVar8[3] = 0;\n    *(undefined1 *)(puVar8 + 4) = 0;\n    *puVar8 = &PTR_FUN_0038d7b8;\n    puVar8[5] = 0;\n    puVar8[6] = 0;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar8[9] = 0;\n    puVar8[10] = 0;\n    puVar8[0xb] = 0;\n    puVar8[0xc] = 0;\n    puVar8[0xd] = 0;\n    puVar8[0xe] = 0;\n    puVar8[0xf] = 0;\n    *(undefined1 *)(puVar8 + 0x1b) = 0;\n                    /* try { // try from 0025972d to 00259731 has its CatchHandler @ 0025995e */\n    FUN_0023d400(puVar8,param_7 + 0x6c);\n    FUN_001e9c50(*(undefined4 *)(param_7 + 0x6c),puVar8,iVar6);\n    local_64 = *piVar2;\n  }\n  local_48 = 0;\n  local_44[0] = local_44[0] & 0xffffff00;\n  local_4c = local_44;\n  if (*(char *)(local_64 + 0x10) != '\0') {\n                    /* try { // try from 00258a0e to 00258a12 has its CatchHandler @ 00259964 */\n    FUN_001ef040(&local_4c,0x20);\n  }\n  local_30 = 0;\n  local_2c[0] = 0;\n  local_34 = local_2c;\n                    /* try { // try from 00258a3e to 00259681 has its CatchHandler @ 00259960 */\n  FUN_001ef040(&local_34,0x20);\n  local_78 = 1;\n  local_50 = *(undefined4 *)(local_64 + 0x3c);\n  pbVar7 = (byte *)&local_50;\n  bVar3 = (byte)local_50;\n  while( true ) {\n    if (bVar3 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00258ab2. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      puVar8 = (undefined4 *)\n               (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))();\n      return puVar8;\n    }\n    if (3 < local_78) break;\n    pbVar7 = (byte *)((int)&local_50 + local_78);\n    bVar3 = *pbVar7;\n    local_78 = local_78 + 1;\n  }\n  if ((local_30 < 2) || (uVar10 = FUN_001f10a0(&local_34,0x30,0), uVar10 == 0)) goto LAB_00259336;\n  if (uVar10 == 0xffffffff) {\n    uVar10 = local_30 - 1;\n    if (uVar10 == 0xffffffff) {\n      *local_34 = 0;\n      goto LAB_00259336;\n    }\n    if (uVar10 == 0) goto LAB_00259336;\n  }\n  if (local_30 < uVar10) {\n    uVar10 = local_30;\n  }\n  FUN_001eebf0(&local_34,0,uVar10);\nLAB_00259336:\n  uVar10 = local_48;\n  if (local_48 != 0) {\n    uVar1 = local_48 + 1;\n    uVar9 = 0xf;\n    if (local_4c != local_44) {\n      uVar9 = local_44[0];\n    }\n    if (uVar9 < uVar1) {\n      FUN_001eeaa0(&local_4c,local_48,0,0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar10) = 0;\n    *(undefined1 *)((int)local_4c + uVar10 + 1) = 0;\n    local_48 = uVar1;\n    cVar5 = FUN_0027aa00(*(undefined4 *)(local_64 + 8),*(undefined4 *)(local_64 + 0xc),&local_4c);\n    if (cVar5 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }\n  FUN_001f0930(param_9,&local_34);\n  bVar11 = param_3 != (int *)0x0 && param_4 == -1;\n  bVar12 = param_4 == -1;\n  if (bVar11) {\n    if ((int *)param_3[2] < (int *)param_3[3]) {\n      iVar6 = *(int *)param_3[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_3 + 0x24))(param_3);\n    }\n    bVar12 = false;\n    if (iVar6 == -1) {\n      param_3 = (int *)0x0;\n      bVar12 = bVar11;\n    }\n  }\n  bVar4 = param_5 != (int *)0x0 && param_6 == -1;\n  bVar11 = param_6 == -1;\n  if (bVar4) {\n    if ((int *)param_5[2] < (int *)param_5[3]) {\n      iVar6 = *(int *)param_5[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_5 + 0x24))(param_5);\n    }\n    bVar11 = false;\n    if (iVar6 == -1) {\n      bVar11 = bVar4;\n    }\n  }\n  if (bVar12 == bVar11) {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  if (local_34 != local_2c) {\n    FUN_001e6db0(local_34);\n  }\n  if (local_4c != local_44) {\n    FUN_001e6db0(local_4c);\n  }\n  return param_1;\n}\n\n" comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment (function_definition "undefined4 *\nFUN_00258960(undefined4 *param_1,undefined4 param_2,int *param_3,int param_4,int *param_5,\n            int param_6,int param_7,uint *param_8,undefined4 param_9)\n\n{\n  uint uVar1;\n  int *piVar2;\n  byte bVar3;\n  bool bVar4;\n  char cVar5;\n  int iVar6;\n  byte *pbVar7;\n  undefined4 *puVar8;\n  uint uVar9;\n  uint uVar10;\n  bool bVar11;\n  bool bVar12;\n  int local_78;\n  int local_64;\n  undefined4 local_50;\n  uint *local_4c;\n  uint local_48;\n  uint local_44 [4];\n  undefined1 *local_34;\n  uint local_30;\n  undefined1 local_2c [28];\n  \n  FUN_0023c1d0(param_7 + 0x6c);\n  iVar6 = FUN_001e9740(PTR_DAT_0038edb4);\n  piVar2 = (int *)(*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + iVar6 * 4);\n  local_64 = *piVar2;\n  if (local_64 == 0) {\n                    /* try { // try from 002596a8 to 002596ac has its CatchHandler @ 0025995c */\n    puVar8 = (undefined4 *)FUN_001e5200(0x70);\n    puVar8[1] = 0;\n    puVar8[2] = 0;\n    puVar8[3] = 0;\n    *(undefined1 *)(puVar8 + 4) = 0;\n    *puVar8 = &PTR_FUN_0038d7b8;\n    puVar8[5] = 0;\n    puVar8[6] = 0;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar8[9] = 0;\n    puVar8[10] = 0;\n    puVar8[0xb] = 0;\n    puVar8[0xc] = 0;\n    puVar8[0xd] = 0;\n    puVar8[0xe] = 0;\n    puVar8[0xf] = 0;\n    *(undefined1 *)(puVar8 + 0x1b) = 0;\n                    /* try { // try from 0025972d to 00259731 has its CatchHandler @ 0025995e */\n    FUN_0023d400(puVar8,param_7 + 0x6c);\n    FUN_001e9c50(*(undefined4 *)(param_7 + 0x6c),puVar8,iVar6);\n    local_64 = *piVar2;\n  }\n  local_48 = 0;\n  local_44[0] = local_44[0] & 0xffffff00;\n  local_4c = local_44;\n  if (*(char *)(local_64 + 0x10) != '\0') {\n                    /* try { // try from 00258a0e to 00258a12 has its CatchHandler @ 00259964 */\n    FUN_001ef040(&local_4c,0x20);\n  }\n  local_30 = 0;\n  local_2c[0] = 0;\n  local_34 = local_2c;\n                    /* try { // try from 00258a3e to 00259681 has its CatchHandler @ 00259960 */\n  FUN_001ef040(&local_34,0x20);\n  local_78 = 1;\n  local_50 = *(undefined4 *)(local_64 + 0x3c);\n  pbVar7 = (byte *)&local_50;\n  bVar3 = (byte)local_50;\n  while( true ) {\n    if (bVar3 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00258ab2. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      puVar8 = (undefined4 *)\n               (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))();\n      return puVar8;\n    }\n    if (3 < local_78) break;\n    pbVar7 = (byte *)((int)&local_50 + local_78);\n    bVar3 = *pbVar7;\n    local_78 = local_78 + 1;\n  }\n  if ((local_30 < 2) || (uVar10 = FUN_001f10a0(&local_34,0x30,0), uVar10 == 0)) goto LAB_00259336;\n  if (uVar10 == 0xffffffff) {\n    uVar10 = local_30 - 1;\n    if (uVar10 == 0xffffffff) {\n      *local_34 = 0;\n      goto LAB_00259336;\n    }\n    if (uVar10 == 0) goto LAB_00259336;\n  }\n  if (local_30 < uVar10) {\n    uVar10 = local_30;\n  }\n  FUN_001eebf0(&local_34,0,uVar10);\nLAB_00259336:\n  uVar10 = local_48;\n  if (local_48 != 0) {\n    uVar1 = local_48 + 1;\n    uVar9 = 0xf;\n    if (local_4c != local_44) {\n      uVar9 = local_44[0];\n    }\n    if (uVar9 < uVar1) {\n      FUN_001eeaa0(&local_4c,local_48,0,0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar10) = 0;\n    *(undefined1 *)((int)local_4c + uVar10 + 1) = 0;\n    local_48 = uVar1;\n    cVar5 = FUN_0027aa00(*(undefined4 *)(local_64 + 8),*(undefined4 *)(local_64 + 0xc),&local_4c);\n    if (cVar5 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }\n  FUN_001f0930(param_9,&local_34);\n  bVar11 = param_3 != (int *)0x0 && param_4 == -1;\n  bVar12 = param_4 == -1;\n  if (bVar11) {\n    if ((int *)param_3[2] < (int *)param_3[3]) {\n      iVar6 = *(int *)param_3[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_3 + 0x24))(param_3);\n    }\n    bVar12 = false;\n    if (iVar6 == -1) {\n      param_3 = (int *)0x0;\n      bVar12 = bVar11;\n    }\n  }\n  bVar4 = param_5 != (int *)0x0 && param_6 == -1;\n  bVar11 = param_6 == -1;\n  if (bVar4) {\n    if ((int *)param_5[2] < (int *)param_5[3]) {\n      iVar6 = *(int *)param_5[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_5 + 0x24))(param_5);\n    }\n    bVar11 = false;\n    if (iVar6 == -1) {\n      bVar11 = bVar4;\n    }\n  }\n  if (bVar12 == bVar11) {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  if (local_34 != local_2c) {\n    FUN_001e6db0(local_34);\n  }\n  if (local_4c != local_44) {\n    FUN_001e6db0(local_4c);\n  }\n  return param_1;\n}" type_identifier (pointer_declarator "*\nFUN_00258960(undefined4 *param_1,undefined4 param_2,int *param_3,int param_4,int *param_5,\n            int param_6,int param_7,uint *param_8,undefined4 param_9)" * (function_declarator "FUN_00258960(undefined4 *param_1,undefined4 param_2,int *param_3,int param_4,int *param_5,\n            int param_6,int param_7,uint *param_8,undefined4 param_9)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2,int *param_3,int param_4,int *param_5,\n            int param_6,int param_7,uint *param_8,undefined4 param_9)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "int param_7" primitive_type identifier) , (parameter_declaration "uint *param_8" type_identifier (pointer_declarator "*param_8" * identifier)) , (parameter_declaration "undefined4 param_9" type_identifier identifier) )))) (compound_statement "{\n  uint uVar1;\n  int *piVar2;\n  byte bVar3;\n  bool bVar4;\n  char cVar5;\n  int iVar6;\n  byte *pbVar7;\n  undefined4 *puVar8;\n  uint uVar9;\n  uint uVar10;\n  bool bVar11;\n  bool bVar12;\n  int local_78;\n  int local_64;\n  undefined4 local_50;\n  uint *local_4c;\n  uint local_48;\n  uint local_44 [4];\n  undefined1 *local_34;\n  uint local_30;\n  undefined1 local_2c [28];\n  \n  FUN_0023c1d0(param_7 + 0x6c);\n  iVar6 = FUN_001e9740(PTR_DAT_0038edb4);\n  piVar2 = (int *)(*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + iVar6 * 4);\n  local_64 = *piVar2;\n  if (local_64 == 0) {\n                    /* try { // try from 002596a8 to 002596ac has its CatchHandler @ 0025995c */\n    puVar8 = (undefined4 *)FUN_001e5200(0x70);\n    puVar8[1] = 0;\n    puVar8[2] = 0;\n    puVar8[3] = 0;\n    *(undefined1 *)(puVar8 + 4) = 0;\n    *puVar8 = &PTR_FUN_0038d7b8;\n    puVar8[5] = 0;\n    puVar8[6] = 0;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar8[9] = 0;\n    puVar8[10] = 0;\n    puVar8[0xb] = 0;\n    puVar8[0xc] = 0;\n    puVar8[0xd] = 0;\n    puVar8[0xe] = 0;\n    puVar8[0xf] = 0;\n    *(undefined1 *)(puVar8 + 0x1b) = 0;\n                    /* try { // try from 0025972d to 00259731 has its CatchHandler @ 0025995e */\n    FUN_0023d400(puVar8,param_7 + 0x6c);\n    FUN_001e9c50(*(undefined4 *)(param_7 + 0x6c),puVar8,iVar6);\n    local_64 = *piVar2;\n  }\n  local_48 = 0;\n  local_44[0] = local_44[0] & 0xffffff00;\n  local_4c = local_44;\n  if (*(char *)(local_64 + 0x10) != '\0') {\n                    /* try { // try from 00258a0e to 00258a12 has its CatchHandler @ 00259964 */\n    FUN_001ef040(&local_4c,0x20);\n  }\n  local_30 = 0;\n  local_2c[0] = 0;\n  local_34 = local_2c;\n                    /* try { // try from 00258a3e to 00259681 has its CatchHandler @ 00259960 */\n  FUN_001ef040(&local_34,0x20);\n  local_78 = 1;\n  local_50 = *(undefined4 *)(local_64 + 0x3c);\n  pbVar7 = (byte *)&local_50;\n  bVar3 = (byte)local_50;\n  while( true ) {\n    if (bVar3 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00258ab2. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      puVar8 = (undefined4 *)\n               (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))();\n      return puVar8;\n    }\n    if (3 < local_78) break;\n    pbVar7 = (byte *)((int)&local_50 + local_78);\n    bVar3 = *pbVar7;\n    local_78 = local_78 + 1;\n  }\n  if ((local_30 < 2) || (uVar10 = FUN_001f10a0(&local_34,0x30,0), uVar10 == 0)) goto LAB_00259336;\n  if (uVar10 == 0xffffffff) {\n    uVar10 = local_30 - 1;\n    if (uVar10 == 0xffffffff) {\n      *local_34 = 0;\n      goto LAB_00259336;\n    }\n    if (uVar10 == 0) goto LAB_00259336;\n  }\n  if (local_30 < uVar10) {\n    uVar10 = local_30;\n  }\n  FUN_001eebf0(&local_34,0,uVar10);\nLAB_00259336:\n  uVar10 = local_48;\n  if (local_48 != 0) {\n    uVar1 = local_48 + 1;\n    uVar9 = 0xf;\n    if (local_4c != local_44) {\n      uVar9 = local_44[0];\n    }\n    if (uVar9 < uVar1) {\n      FUN_001eeaa0(&local_4c,local_48,0,0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar10) = 0;\n    *(undefined1 *)((int)local_4c + uVar10 + 1) = 0;\n    local_48 = uVar1;\n    cVar5 = FUN_0027aa00(*(undefined4 *)(local_64 + 8),*(undefined4 *)(local_64 + 0xc),&local_4c);\n    if (cVar5 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }\n  FUN_001f0930(param_9,&local_34);\n  bVar11 = param_3 != (int *)0x0 && param_4 == -1;\n  bVar12 = param_4 == -1;\n  if (bVar11) {\n    if ((int *)param_3[2] < (int *)param_3[3]) {\n      iVar6 = *(int *)param_3[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_3 + 0x24))(param_3);\n    }\n    bVar12 = false;\n    if (iVar6 == -1) {\n      param_3 = (int *)0x0;\n      bVar12 = bVar11;\n    }\n  }\n  bVar4 = param_5 != (int *)0x0 && param_6 == -1;\n  bVar11 = param_6 == -1;\n  if (bVar4) {\n    if ((int *)param_5[2] < (int *)param_5[3]) {\n      iVar6 = *(int *)param_5[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_5 + 0x24))(param_5);\n    }\n    bVar11 = false;\n    if (iVar6 == -1) {\n      bVar11 = bVar4;\n    }\n  }\n  if (bVar12 == bVar11) {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  if (local_34 != local_2c) {\n    FUN_001e6db0(local_34);\n  }\n  if (local_4c != local_44) {\n    FUN_001e6db0(local_4c);\n  }\n  return param_1;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "int local_78;" primitive_type identifier ;) (declaration "int local_64;" primitive_type identifier ;) (declaration "undefined4 local_50;" type_identifier identifier ;) (declaration "uint *local_4c;" type_identifier (pointer_declarator "*local_4c" * identifier) ;) (declaration "uint local_48;" type_identifier identifier ;) (declaration "uint local_44 [4];" type_identifier (array_declarator "local_44 [4]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "undefined1 local_2c [28];" type_identifier (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "FUN_0023c1d0(param_7 + 0x6c);" (call_expression "FUN_0023c1d0(param_7 + 0x6c)" identifier (argument_list "(param_7 + 0x6c)" ( (binary_expression "param_7 + 0x6c" identifier + number_literal) ))) ;) (expression_statement "iVar6 = FUN_001e9740(PTR_DAT_0038edb4);" (assignment_expression "iVar6 = FUN_001e9740(PTR_DAT_0038edb4)" identifier = (call_expression "FUN_001e9740(PTR_DAT_0038edb4)" identifier (argument_list "(PTR_DAT_0038edb4)" ( identifier )))) ;) (expression_statement "piVar2 = (int *)(*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + iVar6 * 4);" (assignment_expression "piVar2 = (int *)(*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + iVar6 * 4)" identifier = (cast_expression "(int *)(*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + iVar6 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + iVar6 * 4)" ( (binary_expression "*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + iVar6 * 4" (pointer_expression "*(int *)(*(int *)(param_7 + 0x6c) + 0xc)" * (cast_expression "(int *)(*(int *)(param_7 + 0x6c) + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_7 + 0x6c) + 0xc)" ( (binary_expression "*(int *)(param_7 + 0x6c) + 0xc" (pointer_expression "*(int *)(param_7 + 0x6c)" * (cast_expression "(int *)(param_7 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + 0x6c)" ( (binary_expression "param_7 + 0x6c" identifier + number_literal) )))) + number_literal) )))) + (binary_expression "iVar6 * 4" identifier * number_literal)) )))) ;) (expression_statement "local_64 = *piVar2;" (assignment_expression "local_64 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (if_statement "if (local_64 == 0) {\n                    /* try { // try from 002596a8 to 002596ac has its CatchHandler @ 0025995c */\n    puVar8 = (undefined4 *)FUN_001e5200(0x70);\n    puVar8[1] = 0;\n    puVar8[2] = 0;\n    puVar8[3] = 0;\n    *(undefined1 *)(puVar8 + 4) = 0;\n    *puVar8 = &PTR_FUN_0038d7b8;\n    puVar8[5] = 0;\n    puVar8[6] = 0;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar8[9] = 0;\n    puVar8[10] = 0;\n    puVar8[0xb] = 0;\n    puVar8[0xc] = 0;\n    puVar8[0xd] = 0;\n    puVar8[0xe] = 0;\n    puVar8[0xf] = 0;\n    *(undefined1 *)(puVar8 + 0x1b) = 0;\n                    /* try { // try from 0025972d to 00259731 has its CatchHandler @ 0025995e */\n    FUN_0023d400(puVar8,param_7 + 0x6c);\n    FUN_001e9c50(*(undefined4 *)(param_7 + 0x6c),puVar8,iVar6);\n    local_64 = *piVar2;\n  }" if (parenthesized_expression "(local_64 == 0)" ( (binary_expression "local_64 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* try { // try from 002596a8 to 002596ac has its CatchHandler @ 0025995c */\n    puVar8 = (undefined4 *)FUN_001e5200(0x70);\n    puVar8[1] = 0;\n    puVar8[2] = 0;\n    puVar8[3] = 0;\n    *(undefined1 *)(puVar8 + 4) = 0;\n    *puVar8 = &PTR_FUN_0038d7b8;\n    puVar8[5] = 0;\n    puVar8[6] = 0;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar8[9] = 0;\n    puVar8[10] = 0;\n    puVar8[0xb] = 0;\n    puVar8[0xc] = 0;\n    puVar8[0xd] = 0;\n    puVar8[0xe] = 0;\n    puVar8[0xf] = 0;\n    *(undefined1 *)(puVar8 + 0x1b) = 0;\n                    /* try { // try from 0025972d to 00259731 has its CatchHandler @ 0025995e */\n    FUN_0023d400(puVar8,param_7 + 0x6c);\n    FUN_001e9c50(*(undefined4 *)(param_7 + 0x6c),puVar8,iVar6);\n    local_64 = *piVar2;\n  }" { comment (expression_statement "puVar8 = (undefined4 *)FUN_001e5200(0x70);" (assignment_expression "puVar8 = (undefined4 *)FUN_001e5200(0x70)" identifier = (cast_expression "(undefined4 *)FUN_001e5200(0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5200(0x70)" identifier (argument_list "(0x70)" ( number_literal ))))) ;) (expression_statement "puVar8[1] = 0;" (assignment_expression "puVar8[1] = 0" (subscript_expression "puVar8[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[2] = 0;" (assignment_expression "puVar8[2] = 0" (subscript_expression "puVar8[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[3] = 0;" (assignment_expression "puVar8[3] = 0" (subscript_expression "puVar8[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar8 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar8 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar8 + 4)" * (cast_expression "(undefined1 *)(puVar8 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 4)" ( (binary_expression "puVar8 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar8 = &PTR_FUN_0038d7b8;" (assignment_expression "*puVar8 = &PTR_FUN_0038d7b8" (pointer_expression "*puVar8" * identifier) = (pointer_expression "&PTR_FUN_0038d7b8" & identifier)) ;) (expression_statement "puVar8[5] = 0;" (assignment_expression "puVar8[5] = 0" (subscript_expression "puVar8[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[6] = 0;" (assignment_expression "puVar8[6] = 0" (subscript_expression "puVar8[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[7] = 0;" (assignment_expression "puVar8[7] = 0" (subscript_expression "puVar8[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[8] = 0;" (assignment_expression "puVar8[8] = 0" (subscript_expression "puVar8[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[9] = 0;" (assignment_expression "puVar8[9] = 0" (subscript_expression "puVar8[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[10] = 0;" (assignment_expression "puVar8[10] = 0" (subscript_expression "puVar8[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[0xb] = 0;" (assignment_expression "puVar8[0xb] = 0" (subscript_expression "puVar8[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[0xc] = 0;" (assignment_expression "puVar8[0xc] = 0" (subscript_expression "puVar8[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[0xd] = 0;" (assignment_expression "puVar8[0xd] = 0" (subscript_expression "puVar8[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[0xe] = 0;" (assignment_expression "puVar8[0xe] = 0" (subscript_expression "puVar8[0xe]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[0xf] = 0;" (assignment_expression "puVar8[0xf] = 0" (subscript_expression "puVar8[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar8 + 0x1b) = 0;" (assignment_expression "*(undefined1 *)(puVar8 + 0x1b) = 0" (pointer_expression "*(undefined1 *)(puVar8 + 0x1b)" * (cast_expression "(undefined1 *)(puVar8 + 0x1b)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x1b)" ( (binary_expression "puVar8 + 0x1b" identifier + number_literal) )))) = number_literal) ;) comment (expression_statement "FUN_0023d400(puVar8,param_7 + 0x6c);" (call_expression "FUN_0023d400(puVar8,param_7 + 0x6c)" identifier (argument_list "(puVar8,param_7 + 0x6c)" ( identifier , (binary_expression "param_7 + 0x6c" identifier + number_literal) ))) ;) (expression_statement "FUN_001e9c50(*(undefined4 *)(param_7 + 0x6c),puVar8,iVar6);" (call_expression "FUN_001e9c50(*(undefined4 *)(param_7 + 0x6c),puVar8,iVar6)" identifier (argument_list "(*(undefined4 *)(param_7 + 0x6c),puVar8,iVar6)" ( (pointer_expression "*(undefined4 *)(param_7 + 0x6c)" * (cast_expression "(undefined4 *)(param_7 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + 0x6c)" ( (binary_expression "param_7 + 0x6c" identifier + number_literal) )))) , identifier , identifier ))) ;) (expression_statement "local_64 = *piVar2;" (assignment_expression "local_64 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) })) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "local_44[0] = local_44[0] & 0xffffff00;" (assignment_expression "local_44[0] = local_44[0] & 0xffffff00" (subscript_expression "local_44[0]" identifier [ number_literal ]) = (binary_expression "local_44[0] & 0xffffff00" (subscript_expression "local_44[0]" identifier [ number_literal ]) & number_literal)) ;) (expression_statement "local_4c = local_44;" (assignment_expression "local_4c = local_44" identifier = identifier) ;) (if_statement "if (*(char *)(local_64 + 0x10) != '\0') {\n                    /* try { // try from 00258a0e to 00258a12 has its CatchHandler @ 00259964 */\n    FUN_001ef040(&local_4c,0x20);\n  }" if (parenthesized_expression "(*(char *)(local_64 + 0x10) != '\0')" ( (binary_expression "*(char *)(local_64 + 0x10) != '\0'" (pointer_expression "*(char *)(local_64 + 0x10)" * (cast_expression "(char *)(local_64 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_64 + 0x10)" ( (binary_expression "local_64 + 0x10" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* try { // try from 00258a0e to 00258a12 has its CatchHandler @ 00259964 */\n    FUN_001ef040(&local_4c,0x20);\n  }" { comment (expression_statement "FUN_001ef040(&local_4c,0x20);" (call_expression "FUN_001ef040(&local_4c,0x20)" identifier (argument_list "(&local_4c,0x20)" ( (pointer_expression "&local_4c" & identifier) , number_literal ))) ;) })) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c[0] = 0;" (assignment_expression "local_2c[0] = 0" (subscript_expression "local_2c[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" identifier = identifier) ;) comment (expression_statement "FUN_001ef040(&local_34,0x20);" (call_expression "FUN_001ef040(&local_34,0x20)" identifier (argument_list "(&local_34,0x20)" ( (pointer_expression "&local_34" & identifier) , number_literal ))) ;) (expression_statement "local_78 = 1;" (assignment_expression "local_78 = 1" identifier = number_literal) ;) (expression_statement "local_50 = *(undefined4 *)(local_64 + 0x3c);" (assignment_expression "local_50 = *(undefined4 *)(local_64 + 0x3c)" identifier = (pointer_expression "*(undefined4 *)(local_64 + 0x3c)" * (cast_expression "(undefined4 *)(local_64 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_64 + 0x3c)" ( (binary_expression "local_64 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "pbVar7 = (byte *)&local_50;" (assignment_expression "pbVar7 = (byte *)&local_50" identifier = (cast_expression "(byte *)&local_50" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_50" & identifier))) ;) (expression_statement "bVar3 = (byte)local_50;" (assignment_expression "bVar3 = (byte)local_50" identifier = (cast_expression "(byte)local_50" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (while_statement "while( true ) {\n    if (bVar3 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00258ab2. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      puVar8 = (undefined4 *)\n               (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))();\n      return puVar8;\n    }\n    if (3 < local_78) break;\n    pbVar7 = (byte *)((int)&local_50 + local_78);\n    bVar3 = *pbVar7;\n    local_78 = local_78 + 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (bVar3 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00258ab2. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      puVar8 = (undefined4 *)\n               (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))();\n      return puVar8;\n    }\n    if (3 < local_78) break;\n    pbVar7 = (byte *)((int)&local_50 + local_78);\n    bVar3 = *pbVar7;\n    local_78 = local_78 + 1;\n  }" { (if_statement "if (bVar3 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00258ab2. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      puVar8 = (undefined4 *)\n               (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))();\n      return puVar8;\n    }" if (parenthesized_expression "(bVar3 < 5)" ( (binary_expression "bVar3 < 5" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x00258ab2. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      puVar8 = (undefined4 *)\n               (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))();\n      return puVar8;\n    }" { comment comment (expression_statement "puVar8 = (undefined4 *)\n               (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))();" (assignment_expression "puVar8 = (undefined4 *)\n               (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))()" identifier = (cast_expression "(undefined4 *)\n               (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))()" (parenthesized_expression "(*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))" ( (pointer_expression "*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4))" * (cast_expression "(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4))" ( (binary_expression "(int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)" (cast_expression "(int)&__DT_PLTGOT" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&__DT_PLTGOT" & identifier)) + (pointer_expression "*(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)" * (cast_expression "(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_002a6e08 + (uint)*pbVar7 * 4)" ( (binary_expression "&DAT_002a6e08 + (uint)*pbVar7 * 4" (pointer_expression "&DAT_002a6e08" & identifier) + (binary_expression "(uint)*pbVar7 * 4" (binary_expression "(uint)*pbVar7" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) ))))) )))) )) (argument_list "()" ( ))))) ;) (return_statement "return puVar8;" return identifier ;) })) (if_statement "if (3 < local_78) break;" if (parenthesized_expression "(3 < local_78)" ( (binary_expression "3 < local_78" number_literal < identifier) )) (break_statement "break;" break ;)) (expression_statement "pbVar7 = (byte *)((int)&local_50 + local_78);" (assignment_expression "pbVar7 = (byte *)((int)&local_50 + local_78)" identifier = (cast_expression "(byte *)((int)&local_50 + local_78)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_50 + local_78)" ( (binary_expression "(int)&local_50 + local_78" (cast_expression "(int)&local_50" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_50" & identifier)) + identifier) )))) ;) (expression_statement "bVar3 = *pbVar7;" (assignment_expression "bVar3 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) (expression_statement "local_78 = local_78 + 1;" (assignment_expression "local_78 = local_78 + 1" identifier = (binary_expression "local_78 + 1" identifier + number_literal)) ;) })) (if_statement "if ((local_30 < 2) || (uVar10 = FUN_001f10a0(&local_34,0x30,0), uVar10 == 0)) goto LAB_00259336;" if (parenthesized_expression "((local_30 < 2) || (uVar10 = FUN_001f10a0(&local_34,0x30,0), uVar10 == 0))" ( (binary_expression "(local_30 < 2) || (uVar10 = FUN_001f10a0(&local_34,0x30,0), uVar10 == 0)" (parenthesized_expression "(local_30 < 2)" ( (binary_expression "local_30 < 2" identifier < number_literal) )) || (parenthesized_expression "(uVar10 = FUN_001f10a0(&local_34,0x30,0), uVar10 == 0)" ( (comma_expression "uVar10 = FUN_001f10a0(&local_34,0x30,0), uVar10 == 0" (assignment_expression "uVar10 = FUN_001f10a0(&local_34,0x30,0)" identifier = (call_expression "FUN_001f10a0(&local_34,0x30,0)" identifier (argument_list "(&local_34,0x30,0)" ( (pointer_expression "&local_34" & identifier) , number_literal , number_literal )))) , (binary_expression "uVar10 == 0" identifier == number_literal)) ))) )) (goto_statement "goto LAB_00259336;" goto statement_identifier ;)) (if_statement "if (uVar10 == 0xffffffff) {\n    uVar10 = local_30 - 1;\n    if (uVar10 == 0xffffffff) {\n      *local_34 = 0;\n      goto LAB_00259336;\n    }\n    if (uVar10 == 0) goto LAB_00259336;\n  }" if (parenthesized_expression "(uVar10 == 0xffffffff)" ( (binary_expression "uVar10 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n    uVar10 = local_30 - 1;\n    if (uVar10 == 0xffffffff) {\n      *local_34 = 0;\n      goto LAB_00259336;\n    }\n    if (uVar10 == 0) goto LAB_00259336;\n  }" { (expression_statement "uVar10 = local_30 - 1;" (assignment_expression "uVar10 = local_30 - 1" identifier = (binary_expression "local_30 - 1" identifier - number_literal)) ;) (if_statement "if (uVar10 == 0xffffffff) {\n      *local_34 = 0;\n      goto LAB_00259336;\n    }" if (parenthesized_expression "(uVar10 == 0xffffffff)" ( (binary_expression "uVar10 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n      *local_34 = 0;\n      goto LAB_00259336;\n    }" { (expression_statement "*local_34 = 0;" (assignment_expression "*local_34 = 0" (pointer_expression "*local_34" * identifier) = number_literal) ;) (goto_statement "goto LAB_00259336;" goto statement_identifier ;) })) (if_statement "if (uVar10 == 0) goto LAB_00259336;" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00259336;" goto statement_identifier ;)) })) (if_statement "if (local_30 < uVar10) {\n    uVar10 = local_30;\n  }" if (parenthesized_expression "(local_30 < uVar10)" ( (binary_expression "local_30 < uVar10" identifier < identifier) )) (compound_statement "{\n    uVar10 = local_30;\n  }" { (expression_statement "uVar10 = local_30;" (assignment_expression "uVar10 = local_30" identifier = identifier) ;) })) (expression_statement "FUN_001eebf0(&local_34,0,uVar10);" (call_expression "FUN_001eebf0(&local_34,0,uVar10)" identifier (argument_list "(&local_34,0,uVar10)" ( (pointer_expression "&local_34" & identifier) , number_literal , identifier ))) ;) (labeled_statement "LAB_00259336:\n  uVar10 = local_48;" statement_identifier : (expression_statement "uVar10 = local_48;" (assignment_expression "uVar10 = local_48" identifier = identifier) ;)) (if_statement "if (local_48 != 0) {\n    uVar1 = local_48 + 1;\n    uVar9 = 0xf;\n    if (local_4c != local_44) {\n      uVar9 = local_44[0];\n    }\n    if (uVar9 < uVar1) {\n      FUN_001eeaa0(&local_4c,local_48,0,0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar10) = 0;\n    *(undefined1 *)((int)local_4c + uVar10 + 1) = 0;\n    local_48 = uVar1;\n    cVar5 = FUN_0027aa00(*(undefined4 *)(local_64 + 8),*(undefined4 *)(local_64 + 0xc),&local_4c);\n    if (cVar5 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }" if (parenthesized_expression "(local_48 != 0)" ( (binary_expression "local_48 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar1 = local_48 + 1;\n    uVar9 = 0xf;\n    if (local_4c != local_44) {\n      uVar9 = local_44[0];\n    }\n    if (uVar9 < uVar1) {\n      FUN_001eeaa0(&local_4c,local_48,0,0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar10) = 0;\n    *(undefined1 *)((int)local_4c + uVar10 + 1) = 0;\n    local_48 = uVar1;\n    cVar5 = FUN_0027aa00(*(undefined4 *)(local_64 + 8),*(undefined4 *)(local_64 + 0xc),&local_4c);\n    if (cVar5 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }" { (expression_statement "uVar1 = local_48 + 1;" (assignment_expression "uVar1 = local_48 + 1" identifier = (binary_expression "local_48 + 1" identifier + number_literal)) ;) (expression_statement "uVar9 = 0xf;" (assignment_expression "uVar9 = 0xf" identifier = number_literal) ;) (if_statement "if (local_4c != local_44) {\n      uVar9 = local_44[0];\n    }" if (parenthesized_expression "(local_4c != local_44)" ( (binary_expression "local_4c != local_44" identifier != identifier) )) (compound_statement "{\n      uVar9 = local_44[0];\n    }" { (expression_statement "uVar9 = local_44[0];" (assignment_expression "uVar9 = local_44[0]" identifier = (subscript_expression "local_44[0]" identifier [ number_literal ])) ;) })) (if_statement "if (uVar9 < uVar1) {\n      FUN_001eeaa0(&local_4c,local_48,0,0,1);\n    }" if (parenthesized_expression "(uVar9 < uVar1)" ( (binary_expression "uVar9 < uVar1" identifier < identifier) )) (compound_statement "{\n      FUN_001eeaa0(&local_4c,local_48,0,0,1);\n    }" { (expression_statement "FUN_001eeaa0(&local_4c,local_48,0,0,1);" (call_expression "FUN_001eeaa0(&local_4c,local_48,0,0,1)" identifier (argument_list "(&local_4c,local_48,0,0,1)" ( (pointer_expression "&local_4c" & identifier) , identifier , number_literal , number_literal , number_literal ))) ;) })) (expression_statement "*(undefined1 *)((int)local_4c + uVar10) = 0;" (assignment_expression "*(undefined1 *)((int)local_4c + uVar10) = 0" (pointer_expression "*(undefined1 *)((int)local_4c + uVar10)" * (cast_expression "(undefined1 *)((int)local_4c + uVar10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_4c + uVar10)" ( (binary_expression "(int)local_4c + uVar10" (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((int)local_4c + uVar10 + 1) = 0;" (assignment_expression "*(undefined1 *)((int)local_4c + uVar10 + 1) = 0" (pointer_expression "*(undefined1 *)((int)local_4c + uVar10 + 1)" * (cast_expression "(undefined1 *)((int)local_4c + uVar10 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_4c + uVar10 + 1)" ( (binary_expression "(int)local_4c + uVar10 + 1" (binary_expression "(int)local_4c + uVar10" (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "local_48 = uVar1;" (assignment_expression "local_48 = uVar1" identifier = identifier) ;) (expression_statement "cVar5 = FUN_0027aa00(*(undefined4 *)(local_64 + 8),*(undefined4 *)(local_64 + 0xc),&local_4c);" (assignment_expression "cVar5 = FUN_0027aa00(*(undefined4 *)(local_64 + 8),*(undefined4 *)(local_64 + 0xc),&local_4c)" identifier = (call_expression "FUN_0027aa00(*(undefined4 *)(local_64 + 8),*(undefined4 *)(local_64 + 0xc),&local_4c)" identifier (argument_list "(*(undefined4 *)(local_64 + 8),*(undefined4 *)(local_64 + 0xc),&local_4c)" ( (pointer_expression "*(undefined4 *)(local_64 + 8)" * (cast_expression "(undefined4 *)(local_64 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_64 + 8)" ( (binary_expression "local_64 + 8" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(local_64 + 0xc)" * (cast_expression "(undefined4 *)(local_64 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_64 + 0xc)" ( (binary_expression "local_64 + 0xc" identifier + number_literal) )))) , (pointer_expression "&local_4c" & identifier) )))) ;) (if_statement "if (cVar5 == '\0') {\n      *param_8 = *param_8 | 4;\n    }" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *param_8 = *param_8 | 4;\n    }" { (expression_statement "*param_8 = *param_8 | 4;" (assignment_expression "*param_8 = *param_8 | 4" (pointer_expression "*param_8" * identifier) = (binary_expression "*param_8 | 4" (pointer_expression "*param_8" * identifier) | number_literal)) ;) })) })) (expression_statement "FUN_001f0930(param_9,&local_34);" (call_expression "FUN_001f0930(param_9,&local_34)" identifier (argument_list "(param_9,&local_34)" ( identifier , (pointer_expression "&local_34" & identifier) ))) ;) (expression_statement "bVar11 = param_3 != (int *)0x0 && param_4 == -1;" (assignment_expression "bVar11 = param_3 != (int *)0x0 && param_4 == -1" identifier = (binary_expression "param_3 != (int *)0x0 && param_4 == -1" (binary_expression "param_3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "param_4 == -1" identifier == number_literal))) ;) (expression_statement "bVar12 = param_4 == -1;" (assignment_expression "bVar12 = param_4 == -1" identifier = (binary_expression "param_4 == -1" identifier == number_literal)) ;) (if_statement "if (bVar11) {\n    if ((int *)param_3[2] < (int *)param_3[3]) {\n      iVar6 = *(int *)param_3[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_3 + 0x24))(param_3);\n    }\n    bVar12 = false;\n    if (iVar6 == -1) {\n      param_3 = (int *)0x0;\n      bVar12 = bVar11;\n    }\n  }" if (parenthesized_expression "(bVar11)" ( identifier )) (compound_statement "{\n    if ((int *)param_3[2] < (int *)param_3[3]) {\n      iVar6 = *(int *)param_3[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_3 + 0x24))(param_3);\n    }\n    bVar12 = false;\n    if (iVar6 == -1) {\n      param_3 = (int *)0x0;\n      bVar12 = bVar11;\n    }\n  }" { (if_statement "if ((int *)param_3[2] < (int *)param_3[3]) {\n      iVar6 = *(int *)param_3[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_3 + 0x24))(param_3);\n    }" if (parenthesized_expression "((int *)param_3[2] < (int *)param_3[3])" ( (binary_expression "(int *)param_3[2] < (int *)param_3[3]" (cast_expression "(int *)param_3[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ])) < (cast_expression "(int *)param_3[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar6 = *(int *)param_3[2];\n    }" { (expression_statement "iVar6 = *(int *)param_3[2];" (assignment_expression "iVar6 = *(int *)param_3[2]" identifier = (pointer_expression "*(int *)param_3[2]" * (cast_expression "(int *)param_3[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n      iVar6 = (**(code **)(*param_3 + 0x24))(param_3);\n    }" else (compound_statement "{\n      iVar6 = (**(code **)(*param_3 + 0x24))(param_3);\n    }" { (expression_statement "iVar6 = (**(code **)(*param_3 + 0x24))(param_3);" (assignment_expression "iVar6 = (**(code **)(*param_3 + 0x24))(param_3)" identifier = (call_expression "(**(code **)(*param_3 + 0x24))(param_3)" (parenthesized_expression "(**(code **)(*param_3 + 0x24))" ( (pointer_expression "**(code **)(*param_3 + 0x24)" * (pointer_expression "*(code **)(*param_3 + 0x24)" * (cast_expression "(code **)(*param_3 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_3 + 0x24)" ( (binary_expression "*param_3 + 0x24" (pointer_expression "*param_3" * identifier) + number_literal) ))))) )) (argument_list "(param_3)" ( identifier )))) ;) }))) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (if_statement "if (iVar6 == -1) {\n      param_3 = (int *)0x0;\n      bVar12 = bVar11;\n    }" if (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) (compound_statement "{\n      param_3 = (int *)0x0;\n      bVar12 = bVar11;\n    }" { (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar12 = bVar11;" (assignment_expression "bVar12 = bVar11" identifier = identifier) ;) })) })) (expression_statement "bVar4 = param_5 != (int *)0x0 && param_6 == -1;" (assignment_expression "bVar4 = param_5 != (int *)0x0 && param_6 == -1" identifier = (binary_expression "param_5 != (int *)0x0 && param_6 == -1" (binary_expression "param_5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "param_6 == -1" identifier == number_literal))) ;) (expression_statement "bVar11 = param_6 == -1;" (assignment_expression "bVar11 = param_6 == -1" identifier = (binary_expression "param_6 == -1" identifier == number_literal)) ;) (if_statement "if (bVar4) {\n    if ((int *)param_5[2] < (int *)param_5[3]) {\n      iVar6 = *(int *)param_5[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_5 + 0x24))(param_5);\n    }\n    bVar11 = false;\n    if (iVar6 == -1) {\n      bVar11 = bVar4;\n    }\n  }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n    if ((int *)param_5[2] < (int *)param_5[3]) {\n      iVar6 = *(int *)param_5[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_5 + 0x24))(param_5);\n    }\n    bVar11 = false;\n    if (iVar6 == -1) {\n      bVar11 = bVar4;\n    }\n  }" { (if_statement "if ((int *)param_5[2] < (int *)param_5[3]) {\n      iVar6 = *(int *)param_5[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_5 + 0x24))(param_5);\n    }" if (parenthesized_expression "((int *)param_5[2] < (int *)param_5[3])" ( (binary_expression "(int *)param_5[2] < (int *)param_5[3]" (cast_expression "(int *)param_5[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_5[2]" identifier [ number_literal ])) < (cast_expression "(int *)param_5[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_5[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar6 = *(int *)param_5[2];\n    }" { (expression_statement "iVar6 = *(int *)param_5[2];" (assignment_expression "iVar6 = *(int *)param_5[2]" identifier = (pointer_expression "*(int *)param_5[2]" * (cast_expression "(int *)param_5[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_5[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n      iVar6 = (**(code **)(*param_5 + 0x24))(param_5);\n    }" else (compound_statement "{\n      iVar6 = (**(code **)(*param_5 + 0x24))(param_5);\n    }" { (expression_statement "iVar6 = (**(code **)(*param_5 + 0x24))(param_5);" (assignment_expression "iVar6 = (**(code **)(*param_5 + 0x24))(param_5)" identifier = (call_expression "(**(code **)(*param_5 + 0x24))(param_5)" (parenthesized_expression "(**(code **)(*param_5 + 0x24))" ( (pointer_expression "**(code **)(*param_5 + 0x24)" * (pointer_expression "*(code **)(*param_5 + 0x24)" * (cast_expression "(code **)(*param_5 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_5 + 0x24)" ( (binary_expression "*param_5 + 0x24" (pointer_expression "*param_5" * identifier) + number_literal) ))))) )) (argument_list "(param_5)" ( identifier )))) ;) }))) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (if_statement "if (iVar6 == -1) {\n      bVar11 = bVar4;\n    }" if (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) (compound_statement "{\n      bVar11 = bVar4;\n    }" { (expression_statement "bVar11 = bVar4;" (assignment_expression "bVar11 = bVar4" identifier = identifier) ;) })) })) (if_statement "if (bVar12 == bVar11) {\n    *param_8 = *param_8 | 2;\n  }" if (parenthesized_expression "(bVar12 == bVar11)" ( (binary_expression "bVar12 == bVar11" identifier == identifier) )) (compound_statement "{\n    *param_8 = *param_8 | 2;\n  }" { (expression_statement "*param_8 = *param_8 | 2;" (assignment_expression "*param_8 = *param_8 | 2" (pointer_expression "*param_8" * identifier) = (binary_expression "*param_8 | 2" (pointer_expression "*param_8" * identifier) | number_literal)) ;) })) (expression_statement "*param_1 = param_3;" (assignment_expression "*param_1 = param_3" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = param_4;" (assignment_expression "param_1[1] = param_4" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (local_34 != local_2c) {\n    FUN_001e6db0(local_34);\n  }" if (parenthesized_expression "(local_34 != local_2c)" ( (binary_expression "local_34 != local_2c" identifier != identifier) )) (compound_statement "{\n    FUN_001e6db0(local_34);\n  }" { (expression_statement "FUN_001e6db0(local_34);" (call_expression "FUN_001e6db0(local_34)" identifier (argument_list "(local_34)" ( identifier ))) ;) })) (if_statement "if (local_4c != local_44) {\n    FUN_001e6db0(local_4c);\n  }" if (parenthesized_expression "(local_4c != local_44)" ( (binary_expression "local_4c != local_44" identifier != identifier) )) (compound_statement "{\n    FUN_001e6db0(local_4c);\n  }" { (expression_statement "FUN_001e6db0(local_4c);" (call_expression "FUN_001e6db0(local_4c)" identifier (argument_list "(local_4c)" ( identifier ))) ;) })) (return_statement "return param_1;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Removing unreachable block (ram,0x0025933c) */\n/* WARNING: Removing unreachable block (ram,0x00259344) */\n/* WARNING: Removing unreachable block (ram,0x00258b25) */\n/* WARNING: Removing unreachable block (ram,0x00258b2d) */\n/* WARNING: Removing unreachable block (ram,0x00258b38) */\n/* WARNING: Removing unreachable block (ram,0x00259410) */\n/* WARNING: Removing unreachable block (ram,0x00259841) */\n/* WARNING: Removing unreachable block (ram,0x0025941c) */\n/* WARNING: Removing unreachable block (ram,0x00259420) */\n/* WARNING: Removing unreachable block (ram,0x002595b0) */\n/* WARNING: Removing unreachable block (ram,0x00259429) */\n/* WARNING: Removing unreachable block (ram,0x00258b40) */\n/* WARNING: Removing unreachable block (ram,0x00258b4c) */\n/* WARNING: Removing unreachable block (ram,0x002594e0) */\n/* WARNING: Removing unreachable block (ram,0x00258b58) */\n/* WARNING: Removing unreachable block (ram,0x00258b5e) */\n/* WARNING: Removing unreachable block (ram,0x00258adb) */\n/* WARNING: Removing unreachable block (ram,0x00258ae8) */\n/* WARNING: Removing unreachable block (ram,0x002591d0) */\n/* WARNING: Removing unreachable block (ram,0x00258aee) */\n/* WARNING: Removing unreachable block (ram,0x00258b6d) */\n/* WARNING: Removing unreachable block (ram,0x00258b7e) */\n/* WARNING: Removing unreachable block (ram,0x00259830) */\n/* WARNING: Removing unreachable block (ram,0x00258b8a) */\n/* WARNING: Removing unreachable block (ram,0x00258b8c) */\n/* WARNING: Removing unreachable block (ram,0x00258b97) */\n/* WARNING: Removing unreachable block (ram,0x00258b00) */\n/* WARNING: Removing unreachable block (ram,0x002592f0) */\n/* WARNING: Removing unreachable block (ram,0x0025981f) */\n/* WARNING: Removing unreachable block (ram,0x002592fc) */\n/* WARNING: Removing unreachable block (ram,0x002592fe) */\n/* WARNING: Removing unreachable block (ram,0x00259309) */\n/* WARNING: Removing unreachable block (ram,0x00258b19) */\n/* WARNING: Removing unreachable block (ram,0x00259320) */\n/* WARNING: Removing unreachable block (ram,0x0025932c) */\n/* WARNING: Removing unreachable block (ram,0x002593d8) */\n/* WARNING: Removing unreachable block (ram,0x00258fb8) */\n/* WARNING: Removing unreachable block (ram,0x00258fbb) */\n/* WARNING: Restarted to delay deadcode elimination for space: stack */\n/* std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::money_get<wchar_t,\n   std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >\n   >::_M_extract<false>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >,\n   std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&,\n   std::_Ios_Iostate&, std::string&) const */\n\nundefined4 *\nstd::money_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>::\n_M_extract<false>(undefined4 *param_1,undefined4 param_2,int *param_3,int param_4,int *param_5,\n                 int param_6,int param_7,uint *param_8,string *param_9)\n\n{\n  uint uVar1;\n  int *piVar2;\n  byte bVar3;\n  bool bVar4;\n  char cVar5;\n  uint uVar6;\n  byte *pbVar7;\n  undefined4 *puVar8;\n  uint uVar9;\n  __moneypunct_cache<wchar_t,false> *this;\n  int iVar10;\n  bool bVar11;\n  bool bVar12;\n  int local_78;\n  int local_64;\n  undefined4 local_50;\n  uint *local_4c;\n  uint local_48;\n  uint local_44 [4];\n  undefined1 *local_34;\n  uint local_30;\n  undefined1 local_2c [28];\n  \n  use_facet<std::ctype<wchar_t>>((locale *)(param_7 + 0x6c));\n  uVar6 = locale::id::_M_id((id *)PTR_id_0038edb4);\n  piVar2 = (int *)(*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + uVar6 * 4);\n  local_64 = *piVar2;\n  if (local_64 == 0) {\n                    /* try { // try from 002596a8 to 002596ac has its CatchHandler @ 0025995c */\n    this = (__moneypunct_cache<wchar_t,false> *)operator_new(0x70);\n    *(undefined4 *)(this + 4) = 0;\n    *(undefined4 *)(this + 8) = 0;\n    *(undefined4 *)(this + 0xc) = 0;\n    this[0x10] = (__moneypunct_cache<wchar_t,false>)0x0;\n    *(undefined ***)this = &PTR____moneypunct_cache_0038d7b8;\n    *(undefined4 *)(this + 0x14) = 0;\n    *(undefined4 *)(this + 0x18) = 0;\n    *(undefined4 *)(this + 0x1c) = 0;\n    *(undefined4 *)(this + 0x20) = 0;\n    *(undefined4 *)(this + 0x24) = 0;\n    *(undefined4 *)(this + 0x28) = 0;\n    *(undefined4 *)(this + 0x2c) = 0;\n    *(undefined4 *)(this + 0x30) = 0;\n    *(undefined4 *)(this + 0x34) = 0;\n    *(undefined4 *)(this + 0x38) = 0;\n    *(undefined4 *)(this + 0x3c) = 0;\n    this[0x6c] = (__moneypunct_cache<wchar_t,false>)0x0;\n                    /* try { // try from 0025972d to 00259731 has its CatchHandler @ 0025995e */\n    __moneypunct_cache<wchar_t,false>::_M_cache(this,(locale *)(param_7 + 0x6c));\n    locale::_Impl::_M_install_cache(*(_Impl **)(param_7 + 0x6c),(facet *)this,uVar6);\n    local_64 = *piVar2;\n  }\n  local_48 = 0;\n  local_44[0] = local_44[0] & 0xffffff00;\n  local_4c = local_44;\n  if (*(char *)(local_64 + 0x10) != '\0') {\n                    /* try { // try from 00258a0e to 00258a12 has its CatchHandler @ 00259964 */\n    std::string::reserve((string *)&local_4c,0x20);\n  }\n  local_30 = 0;\n  local_2c[0] = 0;\n  local_34 = local_2c;\n                    /* try { // try from 00258a3e to 00259681 has its CatchHandler @ 00259960 */\n  std::string::reserve((string *)&local_34,0x20);\n  local_78 = 1;\n  local_50 = *(undefined4 *)(local_64 + 0x3c);\n  pbVar7 = (byte *)&local_50;\n  bVar3 = (byte)local_50;\n  while( true ) {\n    if (bVar3 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00258ab2. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      puVar8 = (undefined4 *)\n               (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4))\n               )();\n      return puVar8;\n    }\n    if (3 < local_78) break;\n    pbVar7 = (byte *)((int)&local_50 + local_78);\n    bVar3 = *pbVar7;\n    local_78 = local_78 + 1;\n  }\n  if ((local_30 < 2) ||\n     (uVar6 = std::string::find_first_not_of((string *)&local_34,'0',0), uVar6 == 0))\n  goto LAB_00259336;\n  if (uVar6 == 0xffffffff) {\n    uVar6 = local_30 - 1;\n    if (uVar6 == 0xffffffff) {\n      *local_34 = 0;\n      goto LAB_00259336;\n    }\n    if (uVar6 == 0) goto LAB_00259336;\n  }\n  if (local_30 < uVar6) {\n    uVar6 = local_30;\n  }\n  std::string::_M_erase((string *)&local_34,0,uVar6);\nLAB_00259336:\n  uVar6 = local_48;\n  if (local_48 != 0) {\n    uVar1 = local_48 + 1;\n    uVar9 = 0xf;\n    if (local_4c != local_44) {\n      uVar9 = local_44[0];\n    }\n    if (uVar9 < uVar1) {\n      std::string::_M_mutate((string *)&local_4c,local_48,0,(char *)0x0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar6) = 0;\n    *(undefined1 *)((int)local_4c + uVar6 + 1) = 0;\n    local_48 = uVar1;\n    cVar5 = __verify_grouping(*(char **)(local_64 + 8),*(uint *)(local_64 + 0xc),(string *)&local_4c\n                             );\n    if (cVar5 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }\n  std::string::swap(param_9,(string *)&local_34);\n  bVar11 = param_3 != (int *)0x0 && param_4 == -1;\n  bVar12 = param_4 == -1;\n  if (bVar11) {\n    if ((int *)param_3[2] < (int *)param_3[3]) {\n      iVar10 = *(int *)param_3[2];\n    }\n    else {\n      iVar10 = (**(code **)(*param_3 + 0x24))(param_3);\n    }\n    bVar12 = false;\n    if (iVar10 == -1) {\n      param_3 = (int *)0x0;\n      bVar12 = bVar11;\n    }\n  }\n  bVar4 = param_5 != (int *)0x0 && param_6 == -1;\n  bVar11 = param_6 == -1;\n  if (bVar4) {\n    if ((int *)param_5[2] < (int *)param_5[3]) {\n      iVar10 = *(int *)param_5[2];\n    }\n    else {\n      iVar10 = (**(code **)(*param_5 + 0x24))(param_5);\n    }\n    bVar11 = false;\n    if (iVar10 == -1) {\n      bVar11 = bVar4;\n    }\n  }\n  if (bVar12 == bVar11) {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  if (local_34 != local_2c) {\n    operator_delete(local_34);\n  }\n  if (local_4c != local_44) {\n    operator_delete(local_4c);\n  }\n  return param_1;\n}\n\n" comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment (ERROR "undefined4 *\nstd::money_get<wchar_t," (binary_expression "undefined4 *\nstd::money_get<wchar_t" (binary_expression "undefined4 *\nstd" identifier * identifier) (ERROR "::money_get" : : identifier) < identifier) ,) (labeled_statement "std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>::\n_M_extract<false>(undefined4 *param_1,undefined4 param_2,int *param_3,int param_4,int *param_5,\n                 int param_6,int param_7,uint *param_8,string *param_9)" statement_identifier (ERROR "::istreambuf_iterator<wchar_t,std:" : : (comma_expression "istreambuf_iterator<wchar_t,std" (binary_expression "istreambuf_iterator<wchar_t" identifier < identifier) , identifier) :) : (expression_statement "char_traits<wchar_t>>>::\n_M_extract<false>(undefined4 *param_1,undefined4 param_2,int *param_3,int param_4,int *param_5,\n                 int param_6,int param_7,uint *param_8,string *param_9)" (binary_expression "char_traits<wchar_t>>>::\n_M_extract<false>(undefined4 *param_1,undefined4 param_2,int *param_3,int param_4,int *param_5,\n                 int param_6,int param_7,uint *param_8,string *param_9)" (binary_expression "char_traits<wchar_t>>>::\n_M_extract<false" (binary_expression "char_traits<wchar_t>>>::\n_M_extract" identifier < (binary_expression "wchar_t>>>::\n_M_extract" identifier >> (ERROR ">::" > : :) identifier)) < false) > (parenthesized_expression "(undefined4 *param_1,undefined4 param_2,int *param_3,int param_4,int *param_5,\n                 int param_6,int param_7,uint *param_8,string *param_9)" ( (comma_expression "undefined4 *param_1,undefined4 param_2,int *param_3,int param_4,int *param_5,\n                 int param_6,int param_7,uint *param_8,string *param_9" (binary_expression "undefined4 *param_1" identifier * identifier) , (comma_expression "undefined4 param_2,int *param_3,int param_4,int *param_5,\n                 int param_6,int param_7,uint *param_8,string *param_9" identifier (ERROR "param_2" identifier) , (comma_expression "int *param_3,int param_4,int *param_5,\n                 int param_6,int param_7,uint *param_8,string *param_9" (binary_expression "int *param_3" identifier * identifier) , (ERROR "int" identifier) (comma_expression "param_4,int *param_5,\n                 int param_6,int param_7,uint *param_8,string *param_9" identifier , (comma_expression "int *param_5,\n                 int param_6,int param_7,uint *param_8,string *param_9" (binary_expression "int *param_5" identifier * identifier) , (ERROR "int" identifier) (comma_expression "param_6,int param_7,uint *param_8,string *param_9" identifier , (ERROR "int" identifier) (comma_expression "param_7,uint *param_8,string *param_9" identifier , (comma_expression "uint *param_8,string *param_9" (binary_expression "uint *param_8" identifier * identifier) , (binary_expression "string *param_9" identifier * identifier))))))))) ))) ;)) (compound_statement "{\n  uint uVar1;\n  int *piVar2;\n  byte bVar3;\n  bool bVar4;\n  char cVar5;\n  uint uVar6;\n  byte *pbVar7;\n  undefined4 *puVar8;\n  uint uVar9;\n  __moneypunct_cache<wchar_t,false> *this;\n  int iVar10;\n  bool bVar11;\n  bool bVar12;\n  int local_78;\n  int local_64;\n  undefined4 local_50;\n  uint *local_4c;\n  uint local_48;\n  uint local_44 [4];\n  undefined1 *local_34;\n  uint local_30;\n  undefined1 local_2c [28];\n  \n  use_facet<std::ctype<wchar_t>>((locale *)(param_7 + 0x6c));\n  uVar6 = locale::id::_M_id((id *)PTR_id_0038edb4);\n  piVar2 = (int *)(*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + uVar6 * 4);\n  local_64 = *piVar2;\n  if (local_64 == 0) {\n                    /* try { // try from 002596a8 to 002596ac has its CatchHandler @ 0025995c */\n    this = (__moneypunct_cache<wchar_t,false> *)operator_new(0x70);\n    *(undefined4 *)(this + 4) = 0;\n    *(undefined4 *)(this + 8) = 0;\n    *(undefined4 *)(this + 0xc) = 0;\n    this[0x10] = (__moneypunct_cache<wchar_t,false>)0x0;\n    *(undefined ***)this = &PTR____moneypunct_cache_0038d7b8;\n    *(undefined4 *)(this + 0x14) = 0;\n    *(undefined4 *)(this + 0x18) = 0;\n    *(undefined4 *)(this + 0x1c) = 0;\n    *(undefined4 *)(this + 0x20) = 0;\n    *(undefined4 *)(this + 0x24) = 0;\n    *(undefined4 *)(this + 0x28) = 0;\n    *(undefined4 *)(this + 0x2c) = 0;\n    *(undefined4 *)(this + 0x30) = 0;\n    *(undefined4 *)(this + 0x34) = 0;\n    *(undefined4 *)(this + 0x38) = 0;\n    *(undefined4 *)(this + 0x3c) = 0;\n    this[0x6c] = (__moneypunct_cache<wchar_t,false>)0x0;\n                    /* try { // try from 0025972d to 00259731 has its CatchHandler @ 0025995e */\n    __moneypunct_cache<wchar_t,false>::_M_cache(this,(locale *)(param_7 + 0x6c));\n    locale::_Impl::_M_install_cache(*(_Impl **)(param_7 + 0x6c),(facet *)this,uVar6);\n    local_64 = *piVar2;\n  }\n  local_48 = 0;\n  local_44[0] = local_44[0] & 0xffffff00;\n  local_4c = local_44;\n  if (*(char *)(local_64 + 0x10) != '\0') {\n                    /* try { // try from 00258a0e to 00258a12 has its CatchHandler @ 00259964 */\n    std::string::reserve((string *)&local_4c,0x20);\n  }\n  local_30 = 0;\n  local_2c[0] = 0;\n  local_34 = local_2c;\n                    /* try { // try from 00258a3e to 00259681 has its CatchHandler @ 00259960 */\n  std::string::reserve((string *)&local_34,0x20);\n  local_78 = 1;\n  local_50 = *(undefined4 *)(local_64 + 0x3c);\n  pbVar7 = (byte *)&local_50;\n  bVar3 = (byte)local_50;\n  while( true ) {\n    if (bVar3 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00258ab2. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      puVar8 = (undefined4 *)\n               (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4))\n               )();\n      return puVar8;\n    }\n    if (3 < local_78) break;\n    pbVar7 = (byte *)((int)&local_50 + local_78);\n    bVar3 = *pbVar7;\n    local_78 = local_78 + 1;\n  }\n  if ((local_30 < 2) ||\n     (uVar6 = std::string::find_first_not_of((string *)&local_34,'0',0), uVar6 == 0))\n  goto LAB_00259336;\n  if (uVar6 == 0xffffffff) {\n    uVar6 = local_30 - 1;\n    if (uVar6 == 0xffffffff) {\n      *local_34 = 0;\n      goto LAB_00259336;\n    }\n    if (uVar6 == 0) goto LAB_00259336;\n  }\n  if (local_30 < uVar6) {\n    uVar6 = local_30;\n  }\n  std::string::_M_erase((string *)&local_34,0,uVar6);\nLAB_00259336:\n  uVar6 = local_48;\n  if (local_48 != 0) {\n    uVar1 = local_48 + 1;\n    uVar9 = 0xf;\n    if (local_4c != local_44) {\n      uVar9 = local_44[0];\n    }\n    if (uVar9 < uVar1) {\n      std::string::_M_mutate((string *)&local_4c,local_48,0,(char *)0x0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar6) = 0;\n    *(undefined1 *)((int)local_4c + uVar6 + 1) = 0;\n    local_48 = uVar1;\n    cVar5 = __verify_grouping(*(char **)(local_64 + 8),*(uint *)(local_64 + 0xc),(string *)&local_4c\n                             );\n    if (cVar5 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }\n  std::string::swap(param_9,(string *)&local_34);\n  bVar11 = param_3 != (int *)0x0 && param_4 == -1;\n  bVar12 = param_4 == -1;\n  if (bVar11) {\n    if ((int *)param_3[2] < (int *)param_3[3]) {\n      iVar10 = *(int *)param_3[2];\n    }\n    else {\n      iVar10 = (**(code **)(*param_3 + 0x24))(param_3);\n    }\n    bVar12 = false;\n    if (iVar10 == -1) {\n      param_3 = (int *)0x0;\n      bVar12 = bVar11;\n    }\n  }\n  bVar4 = param_5 != (int *)0x0 && param_6 == -1;\n  bVar11 = param_6 == -1;\n  if (bVar4) {\n    if ((int *)param_5[2] < (int *)param_5[3]) {\n      iVar10 = *(int *)param_5[2];\n    }\n    else {\n      iVar10 = (**(code **)(*param_5 + 0x24))(param_5);\n    }\n    bVar11 = false;\n    if (iVar10 == -1) {\n      bVar11 = bVar4;\n    }\n  }\n  if (bVar12 == bVar11) {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  if (local_34 != local_2c) {\n    operator_delete(local_34);\n  }\n  if (local_4c != local_44) {\n    operator_delete(local_4c);\n  }\n  return param_1;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (expression_statement "__moneypunct_cache<wchar_t,false> *this;" (comma_expression "__moneypunct_cache<wchar_t,false> *this" (binary_expression "__moneypunct_cache<wchar_t" identifier < identifier) , (binary_expression "false> *this" false > (pointer_expression "*this" * identifier))) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "int local_78;" primitive_type identifier ;) (declaration "int local_64;" primitive_type identifier ;) (declaration "undefined4 local_50;" type_identifier identifier ;) (declaration "uint *local_4c;" type_identifier (pointer_declarator "*local_4c" * identifier) ;) (declaration "uint local_48;" type_identifier identifier ;) (declaration "uint local_44 [4];" type_identifier (array_declarator "local_44 [4]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "undefined1 local_2c [28];" type_identifier (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "use_facet<std::ctype<wchar_t>>((locale *)(param_7 + 0x6c));" (binary_expression "use_facet<std::ctype<wchar_t>>((locale *)(param_7 + 0x6c))" (binary_expression "use_facet<std" identifier < identifier) (ERROR "::ctype" : : identifier) < (binary_expression "wchar_t>>((locale *)(param_7 + 0x6c))" identifier >> (parenthesized_expression "((locale *)(param_7 + 0x6c))" ( (cast_expression "(locale *)(param_7 + 0x6c)" ( (type_descriptor "locale *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + 0x6c)" ( (binary_expression "param_7 + 0x6c" identifier + number_literal) ))) )))) ;) (ERROR "uVar6 = locale::" (assignment_expression "uVar6 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)PTR_id_0038edb4);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)PTR_id_0038edb4);" (call_expression "_M_id((id *)PTR_id_0038edb4)" identifier (argument_list "((id *)PTR_id_0038edb4)" ( (cast_expression "(id *)PTR_id_0038edb4" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) (expression_statement "piVar2 = (int *)(*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + uVar6 * 4);" (assignment_expression "piVar2 = (int *)(*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + uVar6 * 4)" identifier = (cast_expression "(int *)(*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + uVar6 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + uVar6 * 4)" ( (binary_expression "*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + uVar6 * 4" (pointer_expression "*(int *)(*(int *)(param_7 + 0x6c) + 0xc)" * (cast_expression "(int *)(*(int *)(param_7 + 0x6c) + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_7 + 0x6c) + 0xc)" ( (binary_expression "*(int *)(param_7 + 0x6c) + 0xc" (pointer_expression "*(int *)(param_7 + 0x6c)" * (cast_expression "(int *)(param_7 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + 0x6c)" ( (binary_expression "param_7 + 0x6c" identifier + number_literal) )))) + number_literal) )))) + (binary_expression "uVar6 * 4" identifier * number_literal)) )))) ;) (expression_statement "local_64 = *piVar2;" (assignment_expression "local_64 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (if_statement "if (local_64 == 0) {\n                    /* try { // try from 002596a8 to 002596ac has its CatchHandler @ 0025995c */\n    this = (__moneypunct_cache<wchar_t,false> *)operator_new(0x70);\n    *(undefined4 *)(this + 4) = 0;\n    *(undefined4 *)(this + 8) = 0;\n    *(undefined4 *)(this + 0xc) = 0;\n    this[0x10] = (__moneypunct_cache<wchar_t,false>)0x0;\n    *(undefined ***)this = &PTR____moneypunct_cache_0038d7b8;\n    *(undefined4 *)(this + 0x14) = 0;\n    *(undefined4 *)(this + 0x18) = 0;\n    *(undefined4 *)(this + 0x1c) = 0;\n    *(undefined4 *)(this + 0x20) = 0;\n    *(undefined4 *)(this + 0x24) = 0;\n    *(undefined4 *)(this + 0x28) = 0;\n    *(undefined4 *)(this + 0x2c) = 0;\n    *(undefined4 *)(this + 0x30) = 0;\n    *(undefined4 *)(this + 0x34) = 0;\n    *(undefined4 *)(this + 0x38) = 0;\n    *(undefined4 *)(this + 0x3c) = 0;\n    this[0x6c] = (__moneypunct_cache<wchar_t,false>)0x0;\n                    /* try { // try from 0025972d to 00259731 has its CatchHandler @ 0025995e */\n    __moneypunct_cache<wchar_t,false>::_M_cache(this,(locale *)(param_7 + 0x6c));\n    locale::_Impl::_M_install_cache(*(_Impl **)(param_7 + 0x6c),(facet *)this,uVar6);\n    local_64 = *piVar2;\n  }" if (parenthesized_expression "(local_64 == 0)" ( (binary_expression "local_64 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* try { // try from 002596a8 to 002596ac has its CatchHandler @ 0025995c */\n    this = (__moneypunct_cache<wchar_t,false> *)operator_new(0x70);\n    *(undefined4 *)(this + 4) = 0;\n    *(undefined4 *)(this + 8) = 0;\n    *(undefined4 *)(this + 0xc) = 0;\n    this[0x10] = (__moneypunct_cache<wchar_t,false>)0x0;\n    *(undefined ***)this = &PTR____moneypunct_cache_0038d7b8;\n    *(undefined4 *)(this + 0x14) = 0;\n    *(undefined4 *)(this + 0x18) = 0;\n    *(undefined4 *)(this + 0x1c) = 0;\n    *(undefined4 *)(this + 0x20) = 0;\n    *(undefined4 *)(this + 0x24) = 0;\n    *(undefined4 *)(this + 0x28) = 0;\n    *(undefined4 *)(this + 0x2c) = 0;\n    *(undefined4 *)(this + 0x30) = 0;\n    *(undefined4 *)(this + 0x34) = 0;\n    *(undefined4 *)(this + 0x38) = 0;\n    *(undefined4 *)(this + 0x3c) = 0;\n    this[0x6c] = (__moneypunct_cache<wchar_t,false>)0x0;\n                    /* try { // try from 0025972d to 00259731 has its CatchHandler @ 0025995e */\n    __moneypunct_cache<wchar_t,false>::_M_cache(this,(locale *)(param_7 + 0x6c));\n    locale::_Impl::_M_install_cache(*(_Impl **)(param_7 + 0x6c),(facet *)this,uVar6);\n    local_64 = *piVar2;\n  }" { comment (expression_statement "this = (__moneypunct_cache<wchar_t,false> *)operator_new(0x70);" (assignment_expression "this = (__moneypunct_cache<wchar_t,false> *)operator_new(0x70)" identifier = (parenthesized_expression "(__moneypunct_cache<wchar_t,false> *)operator_new(0x70)" ( (comma_expression "__moneypunct_cache<wchar_t,false> *)operator_new(0x70)" (binary_expression "__moneypunct_cache<wchar_t" identifier < identifier) , (binary_expression "false> *)operator_new(0x70)" false > (pointer_expression "*)operator_new(0x70)" * (ERROR ")" )) (call_expression "operator_new(0x70)" identifier (argument_list "(0x70)" ( number_literal )))))) ))) ;) (expression_statement "*(undefined4 *)(this + 4) = 0;" (assignment_expression "*(undefined4 *)(this + 4) = 0" (pointer_expression "*(undefined4 *)(this + 4)" * (cast_expression "(undefined4 *)(this + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 8) = 0;" (assignment_expression "*(undefined4 *)(this + 8) = 0" (pointer_expression "*(undefined4 *)(this + 8)" * (cast_expression "(undefined4 *)(this + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0xc) = 0;" (assignment_expression "*(undefined4 *)(this + 0xc) = 0" (pointer_expression "*(undefined4 *)(this + 0xc)" * (cast_expression "(undefined4 *)(this + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "this[0x10] = (__moneypunct_cache<wchar_t,false>)0x0;" (assignment_expression "this[0x10] = (__moneypunct_cache<wchar_t,false>)0x0" (subscript_expression "this[0x10]" identifier [ number_literal ]) = (parenthesized_expression "(__moneypunct_cache<wchar_t,false>)0x0" ( (comma_expression "__moneypunct_cache<wchar_t,false>)0x0" (binary_expression "__moneypunct_cache<wchar_t" identifier < identifier) , (binary_expression "false>)0x0" false > (ERROR ")" )) number_literal)) ))) ;) (expression_statement "*(undefined ***)this = &PTR____moneypunct_cache_0038d7b8;" (assignment_expression "*(undefined ***)this = &PTR____moneypunct_cache_0038d7b8" (pointer_expression "*(undefined ***)this" * (cast_expression "(undefined ***)this" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) = (pointer_expression "&PTR____moneypunct_cache_0038d7b8" & identifier)) ;) (expression_statement "*(undefined4 *)(this + 0x14) = 0;" (assignment_expression "*(undefined4 *)(this + 0x14) = 0" (pointer_expression "*(undefined4 *)(this + 0x14)" * (cast_expression "(undefined4 *)(this + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x14)" ( (binary_expression "this + 0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0x18) = 0;" (assignment_expression "*(undefined4 *)(this + 0x18) = 0" (pointer_expression "*(undefined4 *)(this + 0x18)" * (cast_expression "(undefined4 *)(this + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x18)" ( (binary_expression "this + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0x1c) = 0;" (assignment_expression "*(undefined4 *)(this + 0x1c) = 0" (pointer_expression "*(undefined4 *)(this + 0x1c)" * (cast_expression "(undefined4 *)(this + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x1c)" ( (binary_expression "this + 0x1c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0x20) = 0;" (assignment_expression "*(undefined4 *)(this + 0x20) = 0" (pointer_expression "*(undefined4 *)(this + 0x20)" * (cast_expression "(undefined4 *)(this + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x20)" ( (binary_expression "this + 0x20" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0x24) = 0;" (assignment_expression "*(undefined4 *)(this + 0x24) = 0" (pointer_expression "*(undefined4 *)(this + 0x24)" * (cast_expression "(undefined4 *)(this + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x24)" ( (binary_expression "this + 0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0x28) = 0;" (assignment_expression "*(undefined4 *)(this + 0x28) = 0" (pointer_expression "*(undefined4 *)(this + 0x28)" * (cast_expression "(undefined4 *)(this + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x28)" ( (binary_expression "this + 0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0x2c) = 0;" (assignment_expression "*(undefined4 *)(this + 0x2c) = 0" (pointer_expression "*(undefined4 *)(this + 0x2c)" * (cast_expression "(undefined4 *)(this + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x2c)" ( (binary_expression "this + 0x2c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0x30) = 0;" (assignment_expression "*(undefined4 *)(this + 0x30) = 0" (pointer_expression "*(undefined4 *)(this + 0x30)" * (cast_expression "(undefined4 *)(this + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x30)" ( (binary_expression "this + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0x34) = 0;" (assignment_expression "*(undefined4 *)(this + 0x34) = 0" (pointer_expression "*(undefined4 *)(this + 0x34)" * (cast_expression "(undefined4 *)(this + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x34)" ( (binary_expression "this + 0x34" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0x38) = 0;" (assignment_expression "*(undefined4 *)(this + 0x38) = 0" (pointer_expression "*(undefined4 *)(this + 0x38)" * (cast_expression "(undefined4 *)(this + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x38)" ( (binary_expression "this + 0x38" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0x3c) = 0;" (assignment_expression "*(undefined4 *)(this + 0x3c) = 0" (pointer_expression "*(undefined4 *)(this + 0x3c)" * (cast_expression "(undefined4 *)(this + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x3c)" ( (binary_expression "this + 0x3c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "this[0x6c] = (__moneypunct_cache<wchar_t,false>)0x0;" (assignment_expression "this[0x6c] = (__moneypunct_cache<wchar_t,false>)0x0" (subscript_expression "this[0x6c]" identifier [ number_literal ]) = (parenthesized_expression "(__moneypunct_cache<wchar_t,false>)0x0" ( (comma_expression "__moneypunct_cache<wchar_t,false>)0x0" (binary_expression "__moneypunct_cache<wchar_t" identifier < identifier) , (binary_expression "false>)0x0" false > (ERROR ")" )) number_literal)) ))) ;) comment (expression_statement "__moneypunct_cache<wchar_t,false>::_M_cache(this,(locale *)(param_7 + 0x6c));" (comma_expression "__moneypunct_cache<wchar_t,false>::_M_cache(this,(locale *)(param_7 + 0x6c))" (binary_expression "__moneypunct_cache<wchar_t" identifier < identifier) , (binary_expression "false>::_M_cache(this,(locale *)(param_7 + 0x6c))" false > (ERROR "::" : :) (call_expression "_M_cache(this,(locale *)(param_7 + 0x6c))" identifier (argument_list "(this,(locale *)(param_7 + 0x6c))" ( identifier , (cast_expression "(locale *)(param_7 + 0x6c)" ( (type_descriptor "locale *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + 0x6c)" ( (binary_expression "param_7 + 0x6c" identifier + number_literal) ))) ))))) ;) (labeled_statement "locale::_Impl::_M_install_cache(*(_Impl **)(param_7 + 0x6c),(facet *)this,uVar6);" statement_identifier : (ERROR ":" :) (labeled_statement "_Impl::_M_install_cache(*(_Impl **)(param_7 + 0x6c),(facet *)this,uVar6);" statement_identifier : (ERROR ":" :) (expression_statement "_M_install_cache(*(_Impl **)(param_7 + 0x6c),(facet *)this,uVar6);" (call_expression "_M_install_cache(*(_Impl **)(param_7 + 0x6c),(facet *)this,uVar6)" identifier (argument_list "(*(_Impl **)(param_7 + 0x6c),(facet *)this,uVar6)" ( (pointer_expression "*(_Impl **)(param_7 + 0x6c)" * (cast_expression "(_Impl **)(param_7 + 0x6c)" ( (type_descriptor "_Impl **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_7 + 0x6c)" ( (binary_expression "param_7 + 0x6c" identifier + number_literal) )))) , (cast_expression "(facet *)this" ( (type_descriptor "facet *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;))) (expression_statement "local_64 = *piVar2;" (assignment_expression "local_64 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) })) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "local_44[0] = local_44[0] & 0xffffff00;" (assignment_expression "local_44[0] = local_44[0] & 0xffffff00" (subscript_expression "local_44[0]" identifier [ number_literal ]) = (binary_expression "local_44[0] & 0xffffff00" (subscript_expression "local_44[0]" identifier [ number_literal ]) & number_literal)) ;) (expression_statement "local_4c = local_44;" (assignment_expression "local_4c = local_44" identifier = identifier) ;) (if_statement "if (*(char *)(local_64 + 0x10) != '\0') {\n                    /* try { // try from 00258a0e to 00258a12 has its CatchHandler @ 00259964 */\n    std::string::reserve((string *)&local_4c,0x20);\n  }" if (parenthesized_expression "(*(char *)(local_64 + 0x10) != '\0')" ( (binary_expression "*(char *)(local_64 + 0x10) != '\0'" (pointer_expression "*(char *)(local_64 + 0x10)" * (cast_expression "(char *)(local_64 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_64 + 0x10)" ( (binary_expression "local_64 + 0x10" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* try { // try from 00258a0e to 00258a12 has its CatchHandler @ 00259964 */\n    std::string::reserve((string *)&local_4c,0x20);\n  }" { comment (labeled_statement "std::string::reserve((string *)&local_4c,0x20);" statement_identifier : (ERROR ":" :) (labeled_statement "string::reserve((string *)&local_4c,0x20);" statement_identifier : (ERROR ":" :) (expression_statement "reserve((string *)&local_4c,0x20);" (call_expression "reserve((string *)&local_4c,0x20)" identifier (argument_list "((string *)&local_4c,0x20)" ( (cast_expression "(string *)&local_4c" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_4c" & identifier)) , number_literal ))) ;))) })) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c[0] = 0;" (assignment_expression "local_2c[0] = 0" (subscript_expression "local_2c[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" identifier = identifier) ;) comment (labeled_statement "std::string::reserve((string *)&local_34,0x20);" statement_identifier : (ERROR ":" :) (labeled_statement "string::reserve((string *)&local_34,0x20);" statement_identifier : (ERROR ":" :) (expression_statement "reserve((string *)&local_34,0x20);" (call_expression "reserve((string *)&local_34,0x20)" identifier (argument_list "((string *)&local_34,0x20)" ( (cast_expression "(string *)&local_34" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_34" & identifier)) , number_literal ))) ;))) (expression_statement "local_78 = 1;" (assignment_expression "local_78 = 1" identifier = number_literal) ;) (expression_statement "local_50 = *(undefined4 *)(local_64 + 0x3c);" (assignment_expression "local_50 = *(undefined4 *)(local_64 + 0x3c)" identifier = (pointer_expression "*(undefined4 *)(local_64 + 0x3c)" * (cast_expression "(undefined4 *)(local_64 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_64 + 0x3c)" ( (binary_expression "local_64 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "pbVar7 = (byte *)&local_50;" (assignment_expression "pbVar7 = (byte *)&local_50" identifier = (cast_expression "(byte *)&local_50" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_50" & identifier))) ;) (expression_statement "bVar3 = (byte)local_50;" (assignment_expression "bVar3 = (byte)local_50" identifier = (cast_expression "(byte)local_50" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (while_statement "while( true ) {\n    if (bVar3 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00258ab2. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      puVar8 = (undefined4 *)\n               (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4))\n               )();\n      return puVar8;\n    }\n    if (3 < local_78) break;\n    pbVar7 = (byte *)((int)&local_50 + local_78);\n    bVar3 = *pbVar7;\n    local_78 = local_78 + 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (bVar3 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00258ab2. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      puVar8 = (undefined4 *)\n               (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4))\n               )();\n      return puVar8;\n    }\n    if (3 < local_78) break;\n    pbVar7 = (byte *)((int)&local_50 + local_78);\n    bVar3 = *pbVar7;\n    local_78 = local_78 + 1;\n  }" { (if_statement "if (bVar3 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00258ab2. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      puVar8 = (undefined4 *)\n               (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4))\n               )();\n      return puVar8;\n    }" if (parenthesized_expression "(bVar3 < 5)" ( (binary_expression "bVar3 < 5" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x00258ab2. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      puVar8 = (undefined4 *)\n               (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4))\n               )();\n      return puVar8;\n    }" { comment comment (expression_statement "puVar8 = (undefined4 *)\n               (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4))\n               )();" (assignment_expression "puVar8 = (undefined4 *)\n               (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4))\n               )()" identifier = (cast_expression "(undefined4 *)\n               (*(code *)((int)&_GLOBAL_OFFSET_TABLE_ + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4))\n               )()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)((int)&_GLOBAL_OFFSET_TABLE_ + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4))\n               )()" (parenthesized_expression "(*(code *)((int)&_GLOBAL_OFFSET_TABLE_ + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4))\n               )" ( (pointer_expression "*(code *)((int)&_GLOBAL_OFFSET_TABLE_ + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4))" * (cast_expression "(code *)((int)&_GLOBAL_OFFSET_TABLE_ + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&_GLOBAL_OFFSET_TABLE_ + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4))" ( (binary_expression "(int)&_GLOBAL_OFFSET_TABLE_ + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)" (cast_expression "(int)&_GLOBAL_OFFSET_TABLE_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&_GLOBAL_OFFSET_TABLE_" & identifier)) + (pointer_expression "*(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)" * (cast_expression "(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_002a6e08 + (uint)*pbVar7 * 4)" ( (binary_expression "&DAT_002a6e08 + (uint)*pbVar7 * 4" (pointer_expression "&DAT_002a6e08" & identifier) + (binary_expression "(uint)*pbVar7 * 4" (binary_expression "(uint)*pbVar7" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) ))))) )))) )) (argument_list "()" ( ))))) ;) (return_statement "return puVar8;" return identifier ;) })) (if_statement "if (3 < local_78) break;" if (parenthesized_expression "(3 < local_78)" ( (binary_expression "3 < local_78" number_literal < identifier) )) (break_statement "break;" break ;)) (expression_statement "pbVar7 = (byte *)((int)&local_50 + local_78);" (assignment_expression "pbVar7 = (byte *)((int)&local_50 + local_78)" identifier = (cast_expression "(byte *)((int)&local_50 + local_78)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_50 + local_78)" ( (binary_expression "(int)&local_50 + local_78" (cast_expression "(int)&local_50" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_50" & identifier)) + identifier) )))) ;) (expression_statement "bVar3 = *pbVar7;" (assignment_expression "bVar3 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) (expression_statement "local_78 = local_78 + 1;" (assignment_expression "local_78 = local_78 + 1" identifier = (binary_expression "local_78 + 1" identifier + number_literal)) ;) })) (if_statement "if ((local_30 < 2) ||\n     (uVar6 = std::string::find_first_not_of((string *)&local_34,'0',0), uVar6 == 0))\n  goto LAB_00259336;" if (parenthesized_expression "((local_30 < 2) ||\n     (uVar6 = std::string::find_first_not_of((string *)&local_34,'0',0), uVar6 == 0))" ( (binary_expression "(local_30 < 2) ||\n     (uVar6 = std::string::find_first_not_of((string *)&local_34,'0',0), uVar6 == 0)" (parenthesized_expression "(local_30 < 2)" ( (binary_expression "local_30 < 2" identifier < number_literal) )) || (parenthesized_expression "(uVar6 = std::string::find_first_not_of((string *)&local_34,'0',0), uVar6 == 0)" ( (ERROR "uVar6 = std::string::" (assignment_expression "uVar6 = std" identifier = identifier) : : identifier : :) (comma_expression "find_first_not_of((string *)&local_34,'0',0), uVar6 == 0" (call_expression "find_first_not_of((string *)&local_34,'0',0)" identifier (argument_list "((string *)&local_34,'0',0)" ( (cast_expression "(string *)&local_34" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_34" & identifier)) , (char_literal "'0'" ' character ') , number_literal ))) , (binary_expression "uVar6 == 0" identifier == number_literal)) ))) )) (goto_statement "goto LAB_00259336;" goto statement_identifier ;)) (if_statement "if (uVar6 == 0xffffffff) {\n    uVar6 = local_30 - 1;\n    if (uVar6 == 0xffffffff) {\n      *local_34 = 0;\n      goto LAB_00259336;\n    }\n    if (uVar6 == 0) goto LAB_00259336;\n  }" if (parenthesized_expression "(uVar6 == 0xffffffff)" ( (binary_expression "uVar6 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n    uVar6 = local_30 - 1;\n    if (uVar6 == 0xffffffff) {\n      *local_34 = 0;\n      goto LAB_00259336;\n    }\n    if (uVar6 == 0) goto LAB_00259336;\n  }" { (expression_statement "uVar6 = local_30 - 1;" (assignment_expression "uVar6 = local_30 - 1" identifier = (binary_expression "local_30 - 1" identifier - number_literal)) ;) (if_statement "if (uVar6 == 0xffffffff) {\n      *local_34 = 0;\n      goto LAB_00259336;\n    }" if (parenthesized_expression "(uVar6 == 0xffffffff)" ( (binary_expression "uVar6 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n      *local_34 = 0;\n      goto LAB_00259336;\n    }" { (expression_statement "*local_34 = 0;" (assignment_expression "*local_34 = 0" (pointer_expression "*local_34" * identifier) = number_literal) ;) (goto_statement "goto LAB_00259336;" goto statement_identifier ;) })) (if_statement "if (uVar6 == 0) goto LAB_00259336;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00259336;" goto statement_identifier ;)) })) (if_statement "if (local_30 < uVar6) {\n    uVar6 = local_30;\n  }" if (parenthesized_expression "(local_30 < uVar6)" ( (binary_expression "local_30 < uVar6" identifier < identifier) )) (compound_statement "{\n    uVar6 = local_30;\n  }" { (expression_statement "uVar6 = local_30;" (assignment_expression "uVar6 = local_30" identifier = identifier) ;) })) (labeled_statement "std::string::_M_erase((string *)&local_34,0,uVar6);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_erase((string *)&local_34,0,uVar6);" statement_identifier : (ERROR ":" :) (expression_statement "_M_erase((string *)&local_34,0,uVar6);" (call_expression "_M_erase((string *)&local_34,0,uVar6)" identifier (argument_list "((string *)&local_34,0,uVar6)" ( (cast_expression "(string *)&local_34" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_34" & identifier)) , number_literal , identifier ))) ;))) (labeled_statement "LAB_00259336:\n  uVar6 = local_48;" statement_identifier : (expression_statement "uVar6 = local_48;" (assignment_expression "uVar6 = local_48" identifier = identifier) ;)) (if_statement "if (local_48 != 0) {\n    uVar1 = local_48 + 1;\n    uVar9 = 0xf;\n    if (local_4c != local_44) {\n      uVar9 = local_44[0];\n    }\n    if (uVar9 < uVar1) {\n      std::string::_M_mutate((string *)&local_4c,local_48,0,(char *)0x0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar6) = 0;\n    *(undefined1 *)((int)local_4c + uVar6 + 1) = 0;\n    local_48 = uVar1;\n    cVar5 = __verify_grouping(*(char **)(local_64 + 8),*(uint *)(local_64 + 0xc),(string *)&local_4c\n                             );\n    if (cVar5 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }" if (parenthesized_expression "(local_48 != 0)" ( (binary_expression "local_48 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar1 = local_48 + 1;\n    uVar9 = 0xf;\n    if (local_4c != local_44) {\n      uVar9 = local_44[0];\n    }\n    if (uVar9 < uVar1) {\n      std::string::_M_mutate((string *)&local_4c,local_48,0,(char *)0x0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar6) = 0;\n    *(undefined1 *)((int)local_4c + uVar6 + 1) = 0;\n    local_48 = uVar1;\n    cVar5 = __verify_grouping(*(char **)(local_64 + 8),*(uint *)(local_64 + 0xc),(string *)&local_4c\n                             );\n    if (cVar5 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }" { (expression_statement "uVar1 = local_48 + 1;" (assignment_expression "uVar1 = local_48 + 1" identifier = (binary_expression "local_48 + 1" identifier + number_literal)) ;) (expression_statement "uVar9 = 0xf;" (assignment_expression "uVar9 = 0xf" identifier = number_literal) ;) (if_statement "if (local_4c != local_44) {\n      uVar9 = local_44[0];\n    }" if (parenthesized_expression "(local_4c != local_44)" ( (binary_expression "local_4c != local_44" identifier != identifier) )) (compound_statement "{\n      uVar9 = local_44[0];\n    }" { (expression_statement "uVar9 = local_44[0];" (assignment_expression "uVar9 = local_44[0]" identifier = (subscript_expression "local_44[0]" identifier [ number_literal ])) ;) })) (if_statement "if (uVar9 < uVar1) {\n      std::string::_M_mutate((string *)&local_4c,local_48,0,(char *)0x0,1);\n    }" if (parenthesized_expression "(uVar9 < uVar1)" ( (binary_expression "uVar9 < uVar1" identifier < identifier) )) (compound_statement "{\n      std::string::_M_mutate((string *)&local_4c,local_48,0,(char *)0x0,1);\n    }" { (labeled_statement "std::string::_M_mutate((string *)&local_4c,local_48,0,(char *)0x0,1);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_mutate((string *)&local_4c,local_48,0,(char *)0x0,1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_mutate((string *)&local_4c,local_48,0,(char *)0x0,1);" (call_expression "_M_mutate((string *)&local_4c,local_48,0,(char *)0x0,1)" identifier (argument_list "((string *)&local_4c,local_48,0,(char *)0x0,1)" ( (cast_expression "(string *)&local_4c" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_4c" & identifier)) , identifier , number_literal , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))) ;))) })) (expression_statement "*(undefined1 *)((int)local_4c + uVar6) = 0;" (assignment_expression "*(undefined1 *)((int)local_4c + uVar6) = 0" (pointer_expression "*(undefined1 *)((int)local_4c + uVar6)" * (cast_expression "(undefined1 *)((int)local_4c + uVar6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_4c + uVar6)" ( (binary_expression "(int)local_4c + uVar6" (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((int)local_4c + uVar6 + 1) = 0;" (assignment_expression "*(undefined1 *)((int)local_4c + uVar6 + 1) = 0" (pointer_expression "*(undefined1 *)((int)local_4c + uVar6 + 1)" * (cast_expression "(undefined1 *)((int)local_4c + uVar6 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_4c + uVar6 + 1)" ( (binary_expression "(int)local_4c + uVar6 + 1" (binary_expression "(int)local_4c + uVar6" (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "local_48 = uVar1;" (assignment_expression "local_48 = uVar1" identifier = identifier) ;) (expression_statement "cVar5 = __verify_grouping(*(char **)(local_64 + 8),*(uint *)(local_64 + 0xc),(string *)&local_4c\n                             );" (assignment_expression "cVar5 = __verify_grouping(*(char **)(local_64 + 8),*(uint *)(local_64 + 0xc),(string *)&local_4c\n                             )" identifier = (call_expression "__verify_grouping(*(char **)(local_64 + 8),*(uint *)(local_64 + 0xc),(string *)&local_4c\n                             )" identifier (argument_list "(*(char **)(local_64 + 8),*(uint *)(local_64 + 0xc),(string *)&local_4c\n                             )" ( (pointer_expression "*(char **)(local_64 + 8)" * (cast_expression "(char **)(local_64 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_64 + 8)" ( (binary_expression "local_64 + 8" identifier + number_literal) )))) , (pointer_expression "*(uint *)(local_64 + 0xc)" * (cast_expression "(uint *)(local_64 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_64 + 0xc)" ( (binary_expression "local_64 + 0xc" identifier + number_literal) )))) , (cast_expression "(string *)&local_4c" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_4c" & identifier)) )))) ;) (if_statement "if (cVar5 == '\0') {\n      *param_8 = *param_8 | 4;\n    }" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *param_8 = *param_8 | 4;\n    }" { (expression_statement "*param_8 = *param_8 | 4;" (assignment_expression "*param_8 = *param_8 | 4" (pointer_expression "*param_8" * identifier) = (binary_expression "*param_8 | 4" (pointer_expression "*param_8" * identifier) | number_literal)) ;) })) })) (labeled_statement "std::string::swap(param_9,(string *)&local_34);" statement_identifier : (ERROR ":" :) (labeled_statement "string::swap(param_9,(string *)&local_34);" statement_identifier : (ERROR ":" :) (expression_statement "swap(param_9,(string *)&local_34);" (call_expression "swap(param_9,(string *)&local_34)" identifier (argument_list "(param_9,(string *)&local_34)" ( identifier , (cast_expression "(string *)&local_34" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_34" & identifier)) ))) ;))) (expression_statement "bVar11 = param_3 != (int *)0x0 && param_4 == -1;" (assignment_expression "bVar11 = param_3 != (int *)0x0 && param_4 == -1" identifier = (binary_expression "param_3 != (int *)0x0 && param_4 == -1" (binary_expression "param_3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "param_4 == -1" identifier == number_literal))) ;) (expression_statement "bVar12 = param_4 == -1;" (assignment_expression "bVar12 = param_4 == -1" identifier = (binary_expression "param_4 == -1" identifier == number_literal)) ;) (if_statement "if (bVar11) {\n    if ((int *)param_3[2] < (int *)param_3[3]) {\n      iVar10 = *(int *)param_3[2];\n    }\n    else {\n      iVar10 = (**(code **)(*param_3 + 0x24))(param_3);\n    }\n    bVar12 = false;\n    if (iVar10 == -1) {\n      param_3 = (int *)0x0;\n      bVar12 = bVar11;\n    }\n  }" if (parenthesized_expression "(bVar11)" ( identifier )) (compound_statement "{\n    if ((int *)param_3[2] < (int *)param_3[3]) {\n      iVar10 = *(int *)param_3[2];\n    }\n    else {\n      iVar10 = (**(code **)(*param_3 + 0x24))(param_3);\n    }\n    bVar12 = false;\n    if (iVar10 == -1) {\n      param_3 = (int *)0x0;\n      bVar12 = bVar11;\n    }\n  }" { (if_statement "if ((int *)param_3[2] < (int *)param_3[3]) {\n      iVar10 = *(int *)param_3[2];\n    }\n    else {\n      iVar10 = (**(code **)(*param_3 + 0x24))(param_3);\n    }" if (parenthesized_expression "((int *)param_3[2] < (int *)param_3[3])" ( (binary_expression "(int *)param_3[2] < (int *)param_3[3]" (cast_expression "(int *)param_3[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ])) < (cast_expression "(int *)param_3[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar10 = *(int *)param_3[2];\n    }" { (expression_statement "iVar10 = *(int *)param_3[2];" (assignment_expression "iVar10 = *(int *)param_3[2]" identifier = (pointer_expression "*(int *)param_3[2]" * (cast_expression "(int *)param_3[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n      iVar10 = (**(code **)(*param_3 + 0x24))(param_3);\n    }" else (compound_statement "{\n      iVar10 = (**(code **)(*param_3 + 0x24))(param_3);\n    }" { (expression_statement "iVar10 = (**(code **)(*param_3 + 0x24))(param_3);" (assignment_expression "iVar10 = (**(code **)(*param_3 + 0x24))(param_3)" identifier = (call_expression "(**(code **)(*param_3 + 0x24))(param_3)" (parenthesized_expression "(**(code **)(*param_3 + 0x24))" ( (pointer_expression "**(code **)(*param_3 + 0x24)" * (pointer_expression "*(code **)(*param_3 + 0x24)" * (cast_expression "(code **)(*param_3 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_3 + 0x24)" ( (binary_expression "*param_3 + 0x24" (pointer_expression "*param_3" * identifier) + number_literal) ))))) )) (argument_list "(param_3)" ( identifier )))) ;) }))) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (if_statement "if (iVar10 == -1) {\n      param_3 = (int *)0x0;\n      bVar12 = bVar11;\n    }" if (parenthesized_expression "(iVar10 == -1)" ( (binary_expression "iVar10 == -1" identifier == number_literal) )) (compound_statement "{\n      param_3 = (int *)0x0;\n      bVar12 = bVar11;\n    }" { (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar12 = bVar11;" (assignment_expression "bVar12 = bVar11" identifier = identifier) ;) })) })) (expression_statement "bVar4 = param_5 != (int *)0x0 && param_6 == -1;" (assignment_expression "bVar4 = param_5 != (int *)0x0 && param_6 == -1" identifier = (binary_expression "param_5 != (int *)0x0 && param_6 == -1" (binary_expression "param_5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "param_6 == -1" identifier == number_literal))) ;) (expression_statement "bVar11 = param_6 == -1;" (assignment_expression "bVar11 = param_6 == -1" identifier = (binary_expression "param_6 == -1" identifier == number_literal)) ;) (if_statement "if (bVar4) {\n    if ((int *)param_5[2] < (int *)param_5[3]) {\n      iVar10 = *(int *)param_5[2];\n    }\n    else {\n      iVar10 = (**(code **)(*param_5 + 0x24))(param_5);\n    }\n    bVar11 = false;\n    if (iVar10 == -1) {\n      bVar11 = bVar4;\n    }\n  }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n    if ((int *)param_5[2] < (int *)param_5[3]) {\n      iVar10 = *(int *)param_5[2];\n    }\n    else {\n      iVar10 = (**(code **)(*param_5 + 0x24))(param_5);\n    }\n    bVar11 = false;\n    if (iVar10 == -1) {\n      bVar11 = bVar4;\n    }\n  }" { (if_statement "if ((int *)param_5[2] < (int *)param_5[3]) {\n      iVar10 = *(int *)param_5[2];\n    }\n    else {\n      iVar10 = (**(code **)(*param_5 + 0x24))(param_5);\n    }" if (parenthesized_expression "((int *)param_5[2] < (int *)param_5[3])" ( (binary_expression "(int *)param_5[2] < (int *)param_5[3]" (cast_expression "(int *)param_5[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_5[2]" identifier [ number_literal ])) < (cast_expression "(int *)param_5[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_5[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar10 = *(int *)param_5[2];\n    }" { (expression_statement "iVar10 = *(int *)param_5[2];" (assignment_expression "iVar10 = *(int *)param_5[2]" identifier = (pointer_expression "*(int *)param_5[2]" * (cast_expression "(int *)param_5[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_5[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n      iVar10 = (**(code **)(*param_5 + 0x24))(param_5);\n    }" else (compound_statement "{\n      iVar10 = (**(code **)(*param_5 + 0x24))(param_5);\n    }" { (expression_statement "iVar10 = (**(code **)(*param_5 + 0x24))(param_5);" (assignment_expression "iVar10 = (**(code **)(*param_5 + 0x24))(param_5)" identifier = (call_expression "(**(code **)(*param_5 + 0x24))(param_5)" (parenthesized_expression "(**(code **)(*param_5 + 0x24))" ( (pointer_expression "**(code **)(*param_5 + 0x24)" * (pointer_expression "*(code **)(*param_5 + 0x24)" * (cast_expression "(code **)(*param_5 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_5 + 0x24)" ( (binary_expression "*param_5 + 0x24" (pointer_expression "*param_5" * identifier) + number_literal) ))))) )) (argument_list "(param_5)" ( identifier )))) ;) }))) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (if_statement "if (iVar10 == -1) {\n      bVar11 = bVar4;\n    }" if (parenthesized_expression "(iVar10 == -1)" ( (binary_expression "iVar10 == -1" identifier == number_literal) )) (compound_statement "{\n      bVar11 = bVar4;\n    }" { (expression_statement "bVar11 = bVar4;" (assignment_expression "bVar11 = bVar4" identifier = identifier) ;) })) })) (if_statement "if (bVar12 == bVar11) {\n    *param_8 = *param_8 | 2;\n  }" if (parenthesized_expression "(bVar12 == bVar11)" ( (binary_expression "bVar12 == bVar11" identifier == identifier) )) (compound_statement "{\n    *param_8 = *param_8 | 2;\n  }" { (expression_statement "*param_8 = *param_8 | 2;" (assignment_expression "*param_8 = *param_8 | 2" (pointer_expression "*param_8" * identifier) = (binary_expression "*param_8 | 2" (pointer_expression "*param_8" * identifier) | number_literal)) ;) })) (expression_statement "*param_1 = param_3;" (assignment_expression "*param_1 = param_3" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = param_4;" (assignment_expression "param_1[1] = param_4" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (local_34 != local_2c) {\n    operator_delete(local_34);\n  }" if (parenthesized_expression "(local_34 != local_2c)" ( (binary_expression "local_34 != local_2c" identifier != identifier) )) (compound_statement "{\n    operator_delete(local_34);\n  }" { (expression_statement "operator_delete(local_34);" (call_expression "operator_delete(local_34)" identifier (argument_list "(local_34)" ( identifier ))) ;) })) (if_statement "if (local_4c != local_44) {\n    operator_delete(local_4c);\n  }" if (parenthesized_expression "(local_4c != local_44)" ( (binary_expression "local_4c != local_44" identifier != identifier) )) (compound_statement "{\n    operator_delete(local_4c);\n  }" { (expression_statement "operator_delete(local_4c);" (call_expression "operator_delete(local_4c)" identifier (argument_list "(local_4c)" ( identifier ))) ;) })) (return_statement "return param_1;" return identifier ;) }))
(translation_unit "undefined4 *\nFUN_00258960(undefined4 *param_1,undefined4 param_2,int *param_3,int param_4,int *param_5,\n            int param_6,int param_7,uint *param_8,undefined4 param_9)\n\n{\n  uint uVar1;\n  int *piVar2;\n  byte bVar3;\n  bool bVar4;\n  char cVar5;\n  int iVar6;\n  byte *pbVar7;\n  undefined4 *puVar8;\n  uint uVar9;\n  uint uVar10;\n  bool bVar11;\n  bool bVar12;\n  int local_78;\n  int local_64;\n  undefined4 local_50;\n  uint *local_4c;\n  uint local_48;\n  uint local_44 [4];\n  undefined1 *local_34;\n  uint local_30;\n  undefined1 local_2c [28];\n  \n  FUN_0023c1d0(param_7 + 0x6c);\n  iVar6 = FUN_001e9740(PTR_DAT_0038edb4);\n  piVar2 = (int *)(*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + iVar6 * 4);\n  local_64 = *piVar2;\n  if (local_64 == 0) {\n                    \n    puVar8 = (undefined4 *)FUN_001e5200(0x70);\n    puVar8[1] = 0;\n    puVar8[2] = 0;\n    puVar8[3] = 0;\n    *(undefined1 *)(puVar8 + 4) = 0;\n    *puVar8 = &PTR_FUN_0038d7b8;\n    puVar8[5] = 0;\n    puVar8[6] = 0;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar8[9] = 0;\n    puVar8[10] = 0;\n    puVar8[0xb] = 0;\n    puVar8[0xc] = 0;\n    puVar8[0xd] = 0;\n    puVar8[0xe] = 0;\n    puVar8[0xf] = 0;\n    *(undefined1 *)(puVar8 + 0x1b) = 0;\n                    \n    FUN_0023d400(puVar8,param_7 + 0x6c);\n    FUN_001e9c50(*(undefined4 *)(param_7 + 0x6c),puVar8,iVar6);\n    local_64 = *piVar2;\n  }\n  local_48 = 0;\n  local_44[0] = local_44[0] & 0xffffff00;\n  local_4c = local_44;\n  if (*(char *)(local_64 + 0x10) != '\0') {\n                    \n    FUN_001ef040(&local_4c,0x20);\n  }\n  local_30 = 0;\n  local_2c[0] = 0;\n  local_34 = local_2c;\n                    \n  FUN_001ef040(&local_34,0x20);\n  local_78 = 1;\n  local_50 = *(undefined4 *)(local_64 + 0x3c);\n  pbVar7 = (byte *)&local_50;\n  bVar3 = (byte)local_50;\n  while( true ) {\n    if (bVar3 < 5) {\n                    \n                    \n      puVar8 = (undefined4 *)\n               (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))();\n      return puVar8;\n    }\n    if (3 < local_78) break;\n    pbVar7 = (byte *)((int)&local_50 + local_78);\n    bVar3 = *pbVar7;\n    local_78 = local_78 + 1;\n  }\n  if ((local_30 < 2) || (uVar10 = FUN_001f10a0(&local_34,0x30,0), uVar10 == 0)) goto LAB_00259336;\n  if (uVar10 == 0xffffffff) {\n    uVar10 = local_30 - 1;\n    if (uVar10 == 0xffffffff) {\n      *local_34 = 0;\n      goto LAB_00259336;\n    }\n    if (uVar10 == 0) goto LAB_00259336;\n  }\n  if (local_30 < uVar10) {\n    uVar10 = local_30;\n  }\n  FUN_001eebf0(&local_34,0,uVar10);\nLAB_00259336:\n  uVar10 = local_48;\n  if (local_48 != 0) {\n    uVar1 = local_48 + 1;\n    uVar9 = 0xf;\n    if (local_4c != local_44) {\n      uVar9 = local_44[0];\n    }\n    if (uVar9 < uVar1) {\n      FUN_001eeaa0(&local_4c,local_48,0,0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar10) = 0;\n    *(undefined1 *)((int)local_4c + uVar10 + 1) = 0;\n    local_48 = uVar1;\n    cVar5 = FUN_0027aa00(*(undefined4 *)(local_64 + 8),*(undefined4 *)(local_64 + 0xc),&local_4c);\n    if (cVar5 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }\n  FUN_001f0930(param_9,&local_34);\n  bVar11 = param_3 != (int *)0x0 && param_4 == -1;\n  bVar12 = param_4 == -1;\n  if (bVar11) {\n    if ((int *)param_3[2] < (int *)param_3[3]) {\n      iVar6 = *(int *)param_3[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_3 + 0x24))(param_3);\n    }\n    bVar12 = false;\n    if (iVar6 == -1) {\n      param_3 = (int *)0x0;\n      bVar12 = bVar11;\n    }\n  }\n  bVar4 = param_5 != (int *)0x0 && param_6 == -1;\n  bVar11 = param_6 == -1;\n  if (bVar4) {\n    if ((int *)param_5[2] < (int *)param_5[3]) {\n      iVar6 = *(int *)param_5[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_5 + 0x24))(param_5);\n    }\n    bVar11 = false;\n    if (iVar6 == -1) {\n      bVar11 = bVar4;\n    }\n  }\n  if (bVar12 == bVar11) {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  if (local_34 != local_2c) {\n    FUN_001e6db0(local_34);\n  }\n  if (local_4c != local_44) {\n    FUN_001e6db0(local_4c);\n  }\n  return param_1;\n}\n\n" (function_definition "undefined4 *\nFUN_00258960(undefined4 *param_1,undefined4 param_2,int *param_3,int param_4,int *param_5,\n            int param_6,int param_7,uint *param_8,undefined4 param_9)\n\n{\n  uint uVar1;\n  int *piVar2;\n  byte bVar3;\n  bool bVar4;\n  char cVar5;\n  int iVar6;\n  byte *pbVar7;\n  undefined4 *puVar8;\n  uint uVar9;\n  uint uVar10;\n  bool bVar11;\n  bool bVar12;\n  int local_78;\n  int local_64;\n  undefined4 local_50;\n  uint *local_4c;\n  uint local_48;\n  uint local_44 [4];\n  undefined1 *local_34;\n  uint local_30;\n  undefined1 local_2c [28];\n  \n  FUN_0023c1d0(param_7 + 0x6c);\n  iVar6 = FUN_001e9740(PTR_DAT_0038edb4);\n  piVar2 = (int *)(*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + iVar6 * 4);\n  local_64 = *piVar2;\n  if (local_64 == 0) {\n                    \n    puVar8 = (undefined4 *)FUN_001e5200(0x70);\n    puVar8[1] = 0;\n    puVar8[2] = 0;\n    puVar8[3] = 0;\n    *(undefined1 *)(puVar8 + 4) = 0;\n    *puVar8 = &PTR_FUN_0038d7b8;\n    puVar8[5] = 0;\n    puVar8[6] = 0;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar8[9] = 0;\n    puVar8[10] = 0;\n    puVar8[0xb] = 0;\n    puVar8[0xc] = 0;\n    puVar8[0xd] = 0;\n    puVar8[0xe] = 0;\n    puVar8[0xf] = 0;\n    *(undefined1 *)(puVar8 + 0x1b) = 0;\n                    \n    FUN_0023d400(puVar8,param_7 + 0x6c);\n    FUN_001e9c50(*(undefined4 *)(param_7 + 0x6c),puVar8,iVar6);\n    local_64 = *piVar2;\n  }\n  local_48 = 0;\n  local_44[0] = local_44[0] & 0xffffff00;\n  local_4c = local_44;\n  if (*(char *)(local_64 + 0x10) != '\0') {\n                    \n    FUN_001ef040(&local_4c,0x20);\n  }\n  local_30 = 0;\n  local_2c[0] = 0;\n  local_34 = local_2c;\n                    \n  FUN_001ef040(&local_34,0x20);\n  local_78 = 1;\n  local_50 = *(undefined4 *)(local_64 + 0x3c);\n  pbVar7 = (byte *)&local_50;\n  bVar3 = (byte)local_50;\n  while( true ) {\n    if (bVar3 < 5) {\n                    \n                    \n      puVar8 = (undefined4 *)\n               (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))();\n      return puVar8;\n    }\n    if (3 < local_78) break;\n    pbVar7 = (byte *)((int)&local_50 + local_78);\n    bVar3 = *pbVar7;\n    local_78 = local_78 + 1;\n  }\n  if ((local_30 < 2) || (uVar10 = FUN_001f10a0(&local_34,0x30,0), uVar10 == 0)) goto LAB_00259336;\n  if (uVar10 == 0xffffffff) {\n    uVar10 = local_30 - 1;\n    if (uVar10 == 0xffffffff) {\n      *local_34 = 0;\n      goto LAB_00259336;\n    }\n    if (uVar10 == 0) goto LAB_00259336;\n  }\n  if (local_30 < uVar10) {\n    uVar10 = local_30;\n  }\n  FUN_001eebf0(&local_34,0,uVar10);\nLAB_00259336:\n  uVar10 = local_48;\n  if (local_48 != 0) {\n    uVar1 = local_48 + 1;\n    uVar9 = 0xf;\n    if (local_4c != local_44) {\n      uVar9 = local_44[0];\n    }\n    if (uVar9 < uVar1) {\n      FUN_001eeaa0(&local_4c,local_48,0,0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar10) = 0;\n    *(undefined1 *)((int)local_4c + uVar10 + 1) = 0;\n    local_48 = uVar1;\n    cVar5 = FUN_0027aa00(*(undefined4 *)(local_64 + 8),*(undefined4 *)(local_64 + 0xc),&local_4c);\n    if (cVar5 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }\n  FUN_001f0930(param_9,&local_34);\n  bVar11 = param_3 != (int *)0x0 && param_4 == -1;\n  bVar12 = param_4 == -1;\n  if (bVar11) {\n    if ((int *)param_3[2] < (int *)param_3[3]) {\n      iVar6 = *(int *)param_3[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_3 + 0x24))(param_3);\n    }\n    bVar12 = false;\n    if (iVar6 == -1) {\n      param_3 = (int *)0x0;\n      bVar12 = bVar11;\n    }\n  }\n  bVar4 = param_5 != (int *)0x0 && param_6 == -1;\n  bVar11 = param_6 == -1;\n  if (bVar4) {\n    if ((int *)param_5[2] < (int *)param_5[3]) {\n      iVar6 = *(int *)param_5[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_5 + 0x24))(param_5);\n    }\n    bVar11 = false;\n    if (iVar6 == -1) {\n      bVar11 = bVar4;\n    }\n  }\n  if (bVar12 == bVar11) {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  if (local_34 != local_2c) {\n    FUN_001e6db0(local_34);\n  }\n  if (local_4c != local_44) {\n    FUN_001e6db0(local_4c);\n  }\n  return param_1;\n}" type_identifier (pointer_declarator "*\nFUN_00258960(undefined4 *param_1,undefined4 param_2,int *param_3,int param_4,int *param_5,\n            int param_6,int param_7,uint *param_8,undefined4 param_9)" * (function_declarator "FUN_00258960(undefined4 *param_1,undefined4 param_2,int *param_3,int param_4,int *param_5,\n            int param_6,int param_7,uint *param_8,undefined4 param_9)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2,int *param_3,int param_4,int *param_5,\n            int param_6,int param_7,uint *param_8,undefined4 param_9)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "int param_7" primitive_type identifier) , (parameter_declaration "uint *param_8" type_identifier (pointer_declarator "*param_8" * identifier)) , (parameter_declaration "undefined4 param_9" type_identifier identifier) )))) (compound_statement "{\n  uint uVar1;\n  int *piVar2;\n  byte bVar3;\n  bool bVar4;\n  char cVar5;\n  int iVar6;\n  byte *pbVar7;\n  undefined4 *puVar8;\n  uint uVar9;\n  uint uVar10;\n  bool bVar11;\n  bool bVar12;\n  int local_78;\n  int local_64;\n  undefined4 local_50;\n  uint *local_4c;\n  uint local_48;\n  uint local_44 [4];\n  undefined1 *local_34;\n  uint local_30;\n  undefined1 local_2c [28];\n  \n  FUN_0023c1d0(param_7 + 0x6c);\n  iVar6 = FUN_001e9740(PTR_DAT_0038edb4);\n  piVar2 = (int *)(*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + iVar6 * 4);\n  local_64 = *piVar2;\n  if (local_64 == 0) {\n                    \n    puVar8 = (undefined4 *)FUN_001e5200(0x70);\n    puVar8[1] = 0;\n    puVar8[2] = 0;\n    puVar8[3] = 0;\n    *(undefined1 *)(puVar8 + 4) = 0;\n    *puVar8 = &PTR_FUN_0038d7b8;\n    puVar8[5] = 0;\n    puVar8[6] = 0;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar8[9] = 0;\n    puVar8[10] = 0;\n    puVar8[0xb] = 0;\n    puVar8[0xc] = 0;\n    puVar8[0xd] = 0;\n    puVar8[0xe] = 0;\n    puVar8[0xf] = 0;\n    *(undefined1 *)(puVar8 + 0x1b) = 0;\n                    \n    FUN_0023d400(puVar8,param_7 + 0x6c);\n    FUN_001e9c50(*(undefined4 *)(param_7 + 0x6c),puVar8,iVar6);\n    local_64 = *piVar2;\n  }\n  local_48 = 0;\n  local_44[0] = local_44[0] & 0xffffff00;\n  local_4c = local_44;\n  if (*(char *)(local_64 + 0x10) != '\0') {\n                    \n    FUN_001ef040(&local_4c,0x20);\n  }\n  local_30 = 0;\n  local_2c[0] = 0;\n  local_34 = local_2c;\n                    \n  FUN_001ef040(&local_34,0x20);\n  local_78 = 1;\n  local_50 = *(undefined4 *)(local_64 + 0x3c);\n  pbVar7 = (byte *)&local_50;\n  bVar3 = (byte)local_50;\n  while( true ) {\n    if (bVar3 < 5) {\n                    \n                    \n      puVar8 = (undefined4 *)\n               (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))();\n      return puVar8;\n    }\n    if (3 < local_78) break;\n    pbVar7 = (byte *)((int)&local_50 + local_78);\n    bVar3 = *pbVar7;\n    local_78 = local_78 + 1;\n  }\n  if ((local_30 < 2) || (uVar10 = FUN_001f10a0(&local_34,0x30,0), uVar10 == 0)) goto LAB_00259336;\n  if (uVar10 == 0xffffffff) {\n    uVar10 = local_30 - 1;\n    if (uVar10 == 0xffffffff) {\n      *local_34 = 0;\n      goto LAB_00259336;\n    }\n    if (uVar10 == 0) goto LAB_00259336;\n  }\n  if (local_30 < uVar10) {\n    uVar10 = local_30;\n  }\n  FUN_001eebf0(&local_34,0,uVar10);\nLAB_00259336:\n  uVar10 = local_48;\n  if (local_48 != 0) {\n    uVar1 = local_48 + 1;\n    uVar9 = 0xf;\n    if (local_4c != local_44) {\n      uVar9 = local_44[0];\n    }\n    if (uVar9 < uVar1) {\n      FUN_001eeaa0(&local_4c,local_48,0,0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar10) = 0;\n    *(undefined1 *)((int)local_4c + uVar10 + 1) = 0;\n    local_48 = uVar1;\n    cVar5 = FUN_0027aa00(*(undefined4 *)(local_64 + 8),*(undefined4 *)(local_64 + 0xc),&local_4c);\n    if (cVar5 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }\n  FUN_001f0930(param_9,&local_34);\n  bVar11 = param_3 != (int *)0x0 && param_4 == -1;\n  bVar12 = param_4 == -1;\n  if (bVar11) {\n    if ((int *)param_3[2] < (int *)param_3[3]) {\n      iVar6 = *(int *)param_3[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_3 + 0x24))(param_3);\n    }\n    bVar12 = false;\n    if (iVar6 == -1) {\n      param_3 = (int *)0x0;\n      bVar12 = bVar11;\n    }\n  }\n  bVar4 = param_5 != (int *)0x0 && param_6 == -1;\n  bVar11 = param_6 == -1;\n  if (bVar4) {\n    if ((int *)param_5[2] < (int *)param_5[3]) {\n      iVar6 = *(int *)param_5[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_5 + 0x24))(param_5);\n    }\n    bVar11 = false;\n    if (iVar6 == -1) {\n      bVar11 = bVar4;\n    }\n  }\n  if (bVar12 == bVar11) {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  if (local_34 != local_2c) {\n    FUN_001e6db0(local_34);\n  }\n  if (local_4c != local_44) {\n    FUN_001e6db0(local_4c);\n  }\n  return param_1;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "int local_78;" primitive_type identifier ;) (declaration "int local_64;" primitive_type identifier ;) (declaration "undefined4 local_50;" type_identifier identifier ;) (declaration "uint *local_4c;" type_identifier (pointer_declarator "*local_4c" * identifier) ;) (declaration "uint local_48;" type_identifier identifier ;) (declaration "uint local_44 [4];" type_identifier (array_declarator "local_44 [4]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "undefined1 local_2c [28];" type_identifier (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "FUN_0023c1d0(param_7 + 0x6c);" (call_expression "FUN_0023c1d0(param_7 + 0x6c)" identifier (argument_list "(param_7 + 0x6c)" ( (binary_expression "param_7 + 0x6c" identifier + number_literal) ))) ;) (expression_statement "iVar6 = FUN_001e9740(PTR_DAT_0038edb4);" (assignment_expression "iVar6 = FUN_001e9740(PTR_DAT_0038edb4)" identifier = (call_expression "FUN_001e9740(PTR_DAT_0038edb4)" identifier (argument_list "(PTR_DAT_0038edb4)" ( identifier )))) ;) (expression_statement "piVar2 = (int *)(*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + iVar6 * 4);" (assignment_expression "piVar2 = (int *)(*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + iVar6 * 4)" identifier = (cast_expression "(int *)(*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + iVar6 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + iVar6 * 4)" ( (binary_expression "*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + iVar6 * 4" (pointer_expression "*(int *)(*(int *)(param_7 + 0x6c) + 0xc)" * (cast_expression "(int *)(*(int *)(param_7 + 0x6c) + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_7 + 0x6c) + 0xc)" ( (binary_expression "*(int *)(param_7 + 0x6c) + 0xc" (pointer_expression "*(int *)(param_7 + 0x6c)" * (cast_expression "(int *)(param_7 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + 0x6c)" ( (binary_expression "param_7 + 0x6c" identifier + number_literal) )))) + number_literal) )))) + (binary_expression "iVar6 * 4" identifier * number_literal)) )))) ;) (expression_statement "local_64 = *piVar2;" (assignment_expression "local_64 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (if_statement "if (local_64 == 0) {\n                    \n    puVar8 = (undefined4 *)FUN_001e5200(0x70);\n    puVar8[1] = 0;\n    puVar8[2] = 0;\n    puVar8[3] = 0;\n    *(undefined1 *)(puVar8 + 4) = 0;\n    *puVar8 = &PTR_FUN_0038d7b8;\n    puVar8[5] = 0;\n    puVar8[6] = 0;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar8[9] = 0;\n    puVar8[10] = 0;\n    puVar8[0xb] = 0;\n    puVar8[0xc] = 0;\n    puVar8[0xd] = 0;\n    puVar8[0xe] = 0;\n    puVar8[0xf] = 0;\n    *(undefined1 *)(puVar8 + 0x1b) = 0;\n                    \n    FUN_0023d400(puVar8,param_7 + 0x6c);\n    FUN_001e9c50(*(undefined4 *)(param_7 + 0x6c),puVar8,iVar6);\n    local_64 = *piVar2;\n  }" if (parenthesized_expression "(local_64 == 0)" ( (binary_expression "local_64 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    puVar8 = (undefined4 *)FUN_001e5200(0x70);\n    puVar8[1] = 0;\n    puVar8[2] = 0;\n    puVar8[3] = 0;\n    *(undefined1 *)(puVar8 + 4) = 0;\n    *puVar8 = &PTR_FUN_0038d7b8;\n    puVar8[5] = 0;\n    puVar8[6] = 0;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar8[9] = 0;\n    puVar8[10] = 0;\n    puVar8[0xb] = 0;\n    puVar8[0xc] = 0;\n    puVar8[0xd] = 0;\n    puVar8[0xe] = 0;\n    puVar8[0xf] = 0;\n    *(undefined1 *)(puVar8 + 0x1b) = 0;\n                    \n    FUN_0023d400(puVar8,param_7 + 0x6c);\n    FUN_001e9c50(*(undefined4 *)(param_7 + 0x6c),puVar8,iVar6);\n    local_64 = *piVar2;\n  }" { (expression_statement "puVar8 = (undefined4 *)FUN_001e5200(0x70);" (assignment_expression "puVar8 = (undefined4 *)FUN_001e5200(0x70)" identifier = (cast_expression "(undefined4 *)FUN_001e5200(0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5200(0x70)" identifier (argument_list "(0x70)" ( number_literal ))))) ;) (expression_statement "puVar8[1] = 0;" (assignment_expression "puVar8[1] = 0" (subscript_expression "puVar8[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[2] = 0;" (assignment_expression "puVar8[2] = 0" (subscript_expression "puVar8[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[3] = 0;" (assignment_expression "puVar8[3] = 0" (subscript_expression "puVar8[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar8 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar8 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar8 + 4)" * (cast_expression "(undefined1 *)(puVar8 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 4)" ( (binary_expression "puVar8 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar8 = &PTR_FUN_0038d7b8;" (assignment_expression "*puVar8 = &PTR_FUN_0038d7b8" (pointer_expression "*puVar8" * identifier) = (pointer_expression "&PTR_FUN_0038d7b8" & identifier)) ;) (expression_statement "puVar8[5] = 0;" (assignment_expression "puVar8[5] = 0" (subscript_expression "puVar8[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[6] = 0;" (assignment_expression "puVar8[6] = 0" (subscript_expression "puVar8[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[7] = 0;" (assignment_expression "puVar8[7] = 0" (subscript_expression "puVar8[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[8] = 0;" (assignment_expression "puVar8[8] = 0" (subscript_expression "puVar8[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[9] = 0;" (assignment_expression "puVar8[9] = 0" (subscript_expression "puVar8[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[10] = 0;" (assignment_expression "puVar8[10] = 0" (subscript_expression "puVar8[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[0xb] = 0;" (assignment_expression "puVar8[0xb] = 0" (subscript_expression "puVar8[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[0xc] = 0;" (assignment_expression "puVar8[0xc] = 0" (subscript_expression "puVar8[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[0xd] = 0;" (assignment_expression "puVar8[0xd] = 0" (subscript_expression "puVar8[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[0xe] = 0;" (assignment_expression "puVar8[0xe] = 0" (subscript_expression "puVar8[0xe]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[0xf] = 0;" (assignment_expression "puVar8[0xf] = 0" (subscript_expression "puVar8[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar8 + 0x1b) = 0;" (assignment_expression "*(undefined1 *)(puVar8 + 0x1b) = 0" (pointer_expression "*(undefined1 *)(puVar8 + 0x1b)" * (cast_expression "(undefined1 *)(puVar8 + 0x1b)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x1b)" ( (binary_expression "puVar8 + 0x1b" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0023d400(puVar8,param_7 + 0x6c);" (call_expression "FUN_0023d400(puVar8,param_7 + 0x6c)" identifier (argument_list "(puVar8,param_7 + 0x6c)" ( identifier , (binary_expression "param_7 + 0x6c" identifier + number_literal) ))) ;) (expression_statement "FUN_001e9c50(*(undefined4 *)(param_7 + 0x6c),puVar8,iVar6);" (call_expression "FUN_001e9c50(*(undefined4 *)(param_7 + 0x6c),puVar8,iVar6)" identifier (argument_list "(*(undefined4 *)(param_7 + 0x6c),puVar8,iVar6)" ( (pointer_expression "*(undefined4 *)(param_7 + 0x6c)" * (cast_expression "(undefined4 *)(param_7 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + 0x6c)" ( (binary_expression "param_7 + 0x6c" identifier + number_literal) )))) , identifier , identifier ))) ;) (expression_statement "local_64 = *piVar2;" (assignment_expression "local_64 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) })) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "local_44[0] = local_44[0] & 0xffffff00;" (assignment_expression "local_44[0] = local_44[0] & 0xffffff00" (subscript_expression "local_44[0]" identifier [ number_literal ]) = (binary_expression "local_44[0] & 0xffffff00" (subscript_expression "local_44[0]" identifier [ number_literal ]) & number_literal)) ;) (expression_statement "local_4c = local_44;" (assignment_expression "local_4c = local_44" identifier = identifier) ;) (if_statement "if (*(char *)(local_64 + 0x10) != '\0') {\n                    \n    FUN_001ef040(&local_4c,0x20);\n  }" if (parenthesized_expression "(*(char *)(local_64 + 0x10) != '\0')" ( (binary_expression "*(char *)(local_64 + 0x10) != '\0'" (pointer_expression "*(char *)(local_64 + 0x10)" * (cast_expression "(char *)(local_64 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_64 + 0x10)" ( (binary_expression "local_64 + 0x10" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    \n    FUN_001ef040(&local_4c,0x20);\n  }" { (expression_statement "FUN_001ef040(&local_4c,0x20);" (call_expression "FUN_001ef040(&local_4c,0x20)" identifier (argument_list "(&local_4c,0x20)" ( (pointer_expression "&local_4c" & identifier) , number_literal ))) ;) })) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c[0] = 0;" (assignment_expression "local_2c[0] = 0" (subscript_expression "local_2c[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" identifier = identifier) ;) (expression_statement "FUN_001ef040(&local_34,0x20);" (call_expression "FUN_001ef040(&local_34,0x20)" identifier (argument_list "(&local_34,0x20)" ( (pointer_expression "&local_34" & identifier) , number_literal ))) ;) (expression_statement "local_78 = 1;" (assignment_expression "local_78 = 1" identifier = number_literal) ;) (expression_statement "local_50 = *(undefined4 *)(local_64 + 0x3c);" (assignment_expression "local_50 = *(undefined4 *)(local_64 + 0x3c)" identifier = (pointer_expression "*(undefined4 *)(local_64 + 0x3c)" * (cast_expression "(undefined4 *)(local_64 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_64 + 0x3c)" ( (binary_expression "local_64 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "pbVar7 = (byte *)&local_50;" (assignment_expression "pbVar7 = (byte *)&local_50" identifier = (cast_expression "(byte *)&local_50" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_50" & identifier))) ;) (expression_statement "bVar3 = (byte)local_50;" (assignment_expression "bVar3 = (byte)local_50" identifier = (cast_expression "(byte)local_50" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (while_statement "while( true ) {\n    if (bVar3 < 5) {\n                    \n                    \n      puVar8 = (undefined4 *)\n               (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))();\n      return puVar8;\n    }\n    if (3 < local_78) break;\n    pbVar7 = (byte *)((int)&local_50 + local_78);\n    bVar3 = *pbVar7;\n    local_78 = local_78 + 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (bVar3 < 5) {\n                    \n                    \n      puVar8 = (undefined4 *)\n               (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))();\n      return puVar8;\n    }\n    if (3 < local_78) break;\n    pbVar7 = (byte *)((int)&local_50 + local_78);\n    bVar3 = *pbVar7;\n    local_78 = local_78 + 1;\n  }" { (if_statement "if (bVar3 < 5) {\n                    \n                    \n      puVar8 = (undefined4 *)\n               (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))();\n      return puVar8;\n    }" if (parenthesized_expression "(bVar3 < 5)" ( (binary_expression "bVar3 < 5" identifier < number_literal) )) (compound_statement "{\n                    \n                    \n      puVar8 = (undefined4 *)\n               (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))();\n      return puVar8;\n    }" { (expression_statement "puVar8 = (undefined4 *)\n               (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))();" (assignment_expression "puVar8 = (undefined4 *)\n               (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))()" identifier = (cast_expression "(undefined4 *)\n               (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))()" (parenthesized_expression "(*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))" ( (pointer_expression "*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4))" * (cast_expression "(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4))" ( (binary_expression "(int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)" (cast_expression "(int)&__DT_PLTGOT" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&__DT_PLTGOT" & identifier)) + (pointer_expression "*(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)" * (cast_expression "(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_002a6e08 + (uint)*pbVar7 * 4)" ( (binary_expression "&DAT_002a6e08 + (uint)*pbVar7 * 4" (pointer_expression "&DAT_002a6e08" & identifier) + (binary_expression "(uint)*pbVar7 * 4" (binary_expression "(uint)*pbVar7" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) ))))) )))) )) (argument_list "()" ( ))))) ;) (return_statement "return puVar8;" return identifier ;) })) (if_statement "if (3 < local_78) break;" if (parenthesized_expression "(3 < local_78)" ( (binary_expression "3 < local_78" number_literal < identifier) )) (break_statement "break;" break ;)) (expression_statement "pbVar7 = (byte *)((int)&local_50 + local_78);" (assignment_expression "pbVar7 = (byte *)((int)&local_50 + local_78)" identifier = (cast_expression "(byte *)((int)&local_50 + local_78)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_50 + local_78)" ( (binary_expression "(int)&local_50 + local_78" (cast_expression "(int)&local_50" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_50" & identifier)) + identifier) )))) ;) (expression_statement "bVar3 = *pbVar7;" (assignment_expression "bVar3 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) (expression_statement "local_78 = local_78 + 1;" (assignment_expression "local_78 = local_78 + 1" identifier = (binary_expression "local_78 + 1" identifier + number_literal)) ;) })) (if_statement "if ((local_30 < 2) || (uVar10 = FUN_001f10a0(&local_34,0x30,0), uVar10 == 0)) goto LAB_00259336;" if (parenthesized_expression "((local_30 < 2) || (uVar10 = FUN_001f10a0(&local_34,0x30,0), uVar10 == 0))" ( (binary_expression "(local_30 < 2) || (uVar10 = FUN_001f10a0(&local_34,0x30,0), uVar10 == 0)" (parenthesized_expression "(local_30 < 2)" ( (binary_expression "local_30 < 2" identifier < number_literal) )) || (parenthesized_expression "(uVar10 = FUN_001f10a0(&local_34,0x30,0), uVar10 == 0)" ( (comma_expression "uVar10 = FUN_001f10a0(&local_34,0x30,0), uVar10 == 0" (assignment_expression "uVar10 = FUN_001f10a0(&local_34,0x30,0)" identifier = (call_expression "FUN_001f10a0(&local_34,0x30,0)" identifier (argument_list "(&local_34,0x30,0)" ( (pointer_expression "&local_34" & identifier) , number_literal , number_literal )))) , (binary_expression "uVar10 == 0" identifier == number_literal)) ))) )) (goto_statement "goto LAB_00259336;" goto statement_identifier ;)) (if_statement "if (uVar10 == 0xffffffff) {\n    uVar10 = local_30 - 1;\n    if (uVar10 == 0xffffffff) {\n      *local_34 = 0;\n      goto LAB_00259336;\n    }\n    if (uVar10 == 0) goto LAB_00259336;\n  }" if (parenthesized_expression "(uVar10 == 0xffffffff)" ( (binary_expression "uVar10 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n    uVar10 = local_30 - 1;\n    if (uVar10 == 0xffffffff) {\n      *local_34 = 0;\n      goto LAB_00259336;\n    }\n    if (uVar10 == 0) goto LAB_00259336;\n  }" { (expression_statement "uVar10 = local_30 - 1;" (assignment_expression "uVar10 = local_30 - 1" identifier = (binary_expression "local_30 - 1" identifier - number_literal)) ;) (if_statement "if (uVar10 == 0xffffffff) {\n      *local_34 = 0;\n      goto LAB_00259336;\n    }" if (parenthesized_expression "(uVar10 == 0xffffffff)" ( (binary_expression "uVar10 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n      *local_34 = 0;\n      goto LAB_00259336;\n    }" { (expression_statement "*local_34 = 0;" (assignment_expression "*local_34 = 0" (pointer_expression "*local_34" * identifier) = number_literal) ;) (goto_statement "goto LAB_00259336;" goto statement_identifier ;) })) (if_statement "if (uVar10 == 0) goto LAB_00259336;" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00259336;" goto statement_identifier ;)) })) (if_statement "if (local_30 < uVar10) {\n    uVar10 = local_30;\n  }" if (parenthesized_expression "(local_30 < uVar10)" ( (binary_expression "local_30 < uVar10" identifier < identifier) )) (compound_statement "{\n    uVar10 = local_30;\n  }" { (expression_statement "uVar10 = local_30;" (assignment_expression "uVar10 = local_30" identifier = identifier) ;) })) (expression_statement "FUN_001eebf0(&local_34,0,uVar10);" (call_expression "FUN_001eebf0(&local_34,0,uVar10)" identifier (argument_list "(&local_34,0,uVar10)" ( (pointer_expression "&local_34" & identifier) , number_literal , identifier ))) ;) (labeled_statement "LAB_00259336:\n  uVar10 = local_48;" statement_identifier : (expression_statement "uVar10 = local_48;" (assignment_expression "uVar10 = local_48" identifier = identifier) ;)) (if_statement "if (local_48 != 0) {\n    uVar1 = local_48 + 1;\n    uVar9 = 0xf;\n    if (local_4c != local_44) {\n      uVar9 = local_44[0];\n    }\n    if (uVar9 < uVar1) {\n      FUN_001eeaa0(&local_4c,local_48,0,0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar10) = 0;\n    *(undefined1 *)((int)local_4c + uVar10 + 1) = 0;\n    local_48 = uVar1;\n    cVar5 = FUN_0027aa00(*(undefined4 *)(local_64 + 8),*(undefined4 *)(local_64 + 0xc),&local_4c);\n    if (cVar5 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }" if (parenthesized_expression "(local_48 != 0)" ( (binary_expression "local_48 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar1 = local_48 + 1;\n    uVar9 = 0xf;\n    if (local_4c != local_44) {\n      uVar9 = local_44[0];\n    }\n    if (uVar9 < uVar1) {\n      FUN_001eeaa0(&local_4c,local_48,0,0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar10) = 0;\n    *(undefined1 *)((int)local_4c + uVar10 + 1) = 0;\n    local_48 = uVar1;\n    cVar5 = FUN_0027aa00(*(undefined4 *)(local_64 + 8),*(undefined4 *)(local_64 + 0xc),&local_4c);\n    if (cVar5 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }" { (expression_statement "uVar1 = local_48 + 1;" (assignment_expression "uVar1 = local_48 + 1" identifier = (binary_expression "local_48 + 1" identifier + number_literal)) ;) (expression_statement "uVar9 = 0xf;" (assignment_expression "uVar9 = 0xf" identifier = number_literal) ;) (if_statement "if (local_4c != local_44) {\n      uVar9 = local_44[0];\n    }" if (parenthesized_expression "(local_4c != local_44)" ( (binary_expression "local_4c != local_44" identifier != identifier) )) (compound_statement "{\n      uVar9 = local_44[0];\n    }" { (expression_statement "uVar9 = local_44[0];" (assignment_expression "uVar9 = local_44[0]" identifier = (subscript_expression "local_44[0]" identifier [ number_literal ])) ;) })) (if_statement "if (uVar9 < uVar1) {\n      FUN_001eeaa0(&local_4c,local_48,0,0,1);\n    }" if (parenthesized_expression "(uVar9 < uVar1)" ( (binary_expression "uVar9 < uVar1" identifier < identifier) )) (compound_statement "{\n      FUN_001eeaa0(&local_4c,local_48,0,0,1);\n    }" { (expression_statement "FUN_001eeaa0(&local_4c,local_48,0,0,1);" (call_expression "FUN_001eeaa0(&local_4c,local_48,0,0,1)" identifier (argument_list "(&local_4c,local_48,0,0,1)" ( (pointer_expression "&local_4c" & identifier) , identifier , number_literal , number_literal , number_literal ))) ;) })) (expression_statement "*(undefined1 *)((int)local_4c + uVar10) = 0;" (assignment_expression "*(undefined1 *)((int)local_4c + uVar10) = 0" (pointer_expression "*(undefined1 *)((int)local_4c + uVar10)" * (cast_expression "(undefined1 *)((int)local_4c + uVar10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_4c + uVar10)" ( (binary_expression "(int)local_4c + uVar10" (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((int)local_4c + uVar10 + 1) = 0;" (assignment_expression "*(undefined1 *)((int)local_4c + uVar10 + 1) = 0" (pointer_expression "*(undefined1 *)((int)local_4c + uVar10 + 1)" * (cast_expression "(undefined1 *)((int)local_4c + uVar10 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_4c + uVar10 + 1)" ( (binary_expression "(int)local_4c + uVar10 + 1" (binary_expression "(int)local_4c + uVar10" (cast_expression "(int)local_4c" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "local_48 = uVar1;" (assignment_expression "local_48 = uVar1" identifier = identifier) ;) (expression_statement "cVar5 = FUN_0027aa00(*(undefined4 *)(local_64 + 8),*(undefined4 *)(local_64 + 0xc),&local_4c);" (assignment_expression "cVar5 = FUN_0027aa00(*(undefined4 *)(local_64 + 8),*(undefined4 *)(local_64 + 0xc),&local_4c)" identifier = (call_expression "FUN_0027aa00(*(undefined4 *)(local_64 + 8),*(undefined4 *)(local_64 + 0xc),&local_4c)" identifier (argument_list "(*(undefined4 *)(local_64 + 8),*(undefined4 *)(local_64 + 0xc),&local_4c)" ( (pointer_expression "*(undefined4 *)(local_64 + 8)" * (cast_expression "(undefined4 *)(local_64 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_64 + 8)" ( (binary_expression "local_64 + 8" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(local_64 + 0xc)" * (cast_expression "(undefined4 *)(local_64 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_64 + 0xc)" ( (binary_expression "local_64 + 0xc" identifier + number_literal) )))) , (pointer_expression "&local_4c" & identifier) )))) ;) (if_statement "if (cVar5 == '\0') {\n      *param_8 = *param_8 | 4;\n    }" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *param_8 = *param_8 | 4;\n    }" { (expression_statement "*param_8 = *param_8 | 4;" (assignment_expression "*param_8 = *param_8 | 4" (pointer_expression "*param_8" * identifier) = (binary_expression "*param_8 | 4" (pointer_expression "*param_8" * identifier) | number_literal)) ;) })) })) (expression_statement "FUN_001f0930(param_9,&local_34);" (call_expression "FUN_001f0930(param_9,&local_34)" identifier (argument_list "(param_9,&local_34)" ( identifier , (pointer_expression "&local_34" & identifier) ))) ;) (expression_statement "bVar11 = param_3 != (int *)0x0 && param_4 == -1;" (assignment_expression "bVar11 = param_3 != (int *)0x0 && param_4 == -1" identifier = (binary_expression "param_3 != (int *)0x0 && param_4 == -1" (binary_expression "param_3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "param_4 == -1" identifier == number_literal))) ;) (expression_statement "bVar12 = param_4 == -1;" (assignment_expression "bVar12 = param_4 == -1" identifier = (binary_expression "param_4 == -1" identifier == number_literal)) ;) (if_statement "if (bVar11) {\n    if ((int *)param_3[2] < (int *)param_3[3]) {\n      iVar6 = *(int *)param_3[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_3 + 0x24))(param_3);\n    }\n    bVar12 = false;\n    if (iVar6 == -1) {\n      param_3 = (int *)0x0;\n      bVar12 = bVar11;\n    }\n  }" if (parenthesized_expression "(bVar11)" ( identifier )) (compound_statement "{\n    if ((int *)param_3[2] < (int *)param_3[3]) {\n      iVar6 = *(int *)param_3[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_3 + 0x24))(param_3);\n    }\n    bVar12 = false;\n    if (iVar6 == -1) {\n      param_3 = (int *)0x0;\n      bVar12 = bVar11;\n    }\n  }" { (if_statement "if ((int *)param_3[2] < (int *)param_3[3]) {\n      iVar6 = *(int *)param_3[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_3 + 0x24))(param_3);\n    }" if (parenthesized_expression "((int *)param_3[2] < (int *)param_3[3])" ( (binary_expression "(int *)param_3[2] < (int *)param_3[3]" (cast_expression "(int *)param_3[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ])) < (cast_expression "(int *)param_3[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar6 = *(int *)param_3[2];\n    }" { (expression_statement "iVar6 = *(int *)param_3[2];" (assignment_expression "iVar6 = *(int *)param_3[2]" identifier = (pointer_expression "*(int *)param_3[2]" * (cast_expression "(int *)param_3[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n      iVar6 = (**(code **)(*param_3 + 0x24))(param_3);\n    }" else (compound_statement "{\n      iVar6 = (**(code **)(*param_3 + 0x24))(param_3);\n    }" { (expression_statement "iVar6 = (**(code **)(*param_3 + 0x24))(param_3);" (assignment_expression "iVar6 = (**(code **)(*param_3 + 0x24))(param_3)" identifier = (call_expression "(**(code **)(*param_3 + 0x24))(param_3)" (parenthesized_expression "(**(code **)(*param_3 + 0x24))" ( (pointer_expression "**(code **)(*param_3 + 0x24)" * (pointer_expression "*(code **)(*param_3 + 0x24)" * (cast_expression "(code **)(*param_3 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_3 + 0x24)" ( (binary_expression "*param_3 + 0x24" (pointer_expression "*param_3" * identifier) + number_literal) ))))) )) (argument_list "(param_3)" ( identifier )))) ;) }))) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (if_statement "if (iVar6 == -1) {\n      param_3 = (int *)0x0;\n      bVar12 = bVar11;\n    }" if (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) (compound_statement "{\n      param_3 = (int *)0x0;\n      bVar12 = bVar11;\n    }" { (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar12 = bVar11;" (assignment_expression "bVar12 = bVar11" identifier = identifier) ;) })) })) (expression_statement "bVar4 = param_5 != (int *)0x0 && param_6 == -1;" (assignment_expression "bVar4 = param_5 != (int *)0x0 && param_6 == -1" identifier = (binary_expression "param_5 != (int *)0x0 && param_6 == -1" (binary_expression "param_5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "param_6 == -1" identifier == number_literal))) ;) (expression_statement "bVar11 = param_6 == -1;" (assignment_expression "bVar11 = param_6 == -1" identifier = (binary_expression "param_6 == -1" identifier == number_literal)) ;) (if_statement "if (bVar4) {\n    if ((int *)param_5[2] < (int *)param_5[3]) {\n      iVar6 = *(int *)param_5[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_5 + 0x24))(param_5);\n    }\n    bVar11 = false;\n    if (iVar6 == -1) {\n      bVar11 = bVar4;\n    }\n  }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n    if ((int *)param_5[2] < (int *)param_5[3]) {\n      iVar6 = *(int *)param_5[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_5 + 0x24))(param_5);\n    }\n    bVar11 = false;\n    if (iVar6 == -1) {\n      bVar11 = bVar4;\n    }\n  }" { (if_statement "if ((int *)param_5[2] < (int *)param_5[3]) {\n      iVar6 = *(int *)param_5[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_5 + 0x24))(param_5);\n    }" if (parenthesized_expression "((int *)param_5[2] < (int *)param_5[3])" ( (binary_expression "(int *)param_5[2] < (int *)param_5[3]" (cast_expression "(int *)param_5[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_5[2]" identifier [ number_literal ])) < (cast_expression "(int *)param_5[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_5[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar6 = *(int *)param_5[2];\n    }" { (expression_statement "iVar6 = *(int *)param_5[2];" (assignment_expression "iVar6 = *(int *)param_5[2]" identifier = (pointer_expression "*(int *)param_5[2]" * (cast_expression "(int *)param_5[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_5[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n      iVar6 = (**(code **)(*param_5 + 0x24))(param_5);\n    }" else (compound_statement "{\n      iVar6 = (**(code **)(*param_5 + 0x24))(param_5);\n    }" { (expression_statement "iVar6 = (**(code **)(*param_5 + 0x24))(param_5);" (assignment_expression "iVar6 = (**(code **)(*param_5 + 0x24))(param_5)" identifier = (call_expression "(**(code **)(*param_5 + 0x24))(param_5)" (parenthesized_expression "(**(code **)(*param_5 + 0x24))" ( (pointer_expression "**(code **)(*param_5 + 0x24)" * (pointer_expression "*(code **)(*param_5 + 0x24)" * (cast_expression "(code **)(*param_5 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_5 + 0x24)" ( (binary_expression "*param_5 + 0x24" (pointer_expression "*param_5" * identifier) + number_literal) ))))) )) (argument_list "(param_5)" ( identifier )))) ;) }))) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (if_statement "if (iVar6 == -1) {\n      bVar11 = bVar4;\n    }" if (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) (compound_statement "{\n      bVar11 = bVar4;\n    }" { (expression_statement "bVar11 = bVar4;" (assignment_expression "bVar11 = bVar4" identifier = identifier) ;) })) })) (if_statement "if (bVar12 == bVar11) {\n    *param_8 = *param_8 | 2;\n  }" if (parenthesized_expression "(bVar12 == bVar11)" ( (binary_expression "bVar12 == bVar11" identifier == identifier) )) (compound_statement "{\n    *param_8 = *param_8 | 2;\n  }" { (expression_statement "*param_8 = *param_8 | 2;" (assignment_expression "*param_8 = *param_8 | 2" (pointer_expression "*param_8" * identifier) = (binary_expression "*param_8 | 2" (pointer_expression "*param_8" * identifier) | number_literal)) ;) })) (expression_statement "*param_1 = param_3;" (assignment_expression "*param_1 = param_3" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = param_4;" (assignment_expression "param_1[1] = param_4" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (local_34 != local_2c) {\n    FUN_001e6db0(local_34);\n  }" if (parenthesized_expression "(local_34 != local_2c)" ( (binary_expression "local_34 != local_2c" identifier != identifier) )) (compound_statement "{\n    FUN_001e6db0(local_34);\n  }" { (expression_statement "FUN_001e6db0(local_34);" (call_expression "FUN_001e6db0(local_34)" identifier (argument_list "(local_34)" ( identifier ))) ;) })) (if_statement "if (local_4c != local_44) {\n    FUN_001e6db0(local_4c);\n  }" if (parenthesized_expression "(local_4c != local_44)" ( (binary_expression "local_4c != local_44" identifier != identifier) )) (compound_statement "{\n    FUN_001e6db0(local_4c);\n  }" { (expression_statement "FUN_001e6db0(local_4c);" (call_expression "FUN_001e6db0(local_4c)" identifier (argument_list "(local_4c)" ( identifier ))) ;) })) (return_statement "return param_1;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) & LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT ))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression & IDENT)) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) * LIT)) ))))) )))) )) (argument_list ( ))))) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression & IDENT)) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , LIT )))) , (binary_expression IDENT == LIT)) ))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , IDENT ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , LIT , LIT , LIT ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | LIT)) ;) })) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) && (binary_expression IDENT == LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) }))) (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) && (binary_expression IDENT == LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) }))) (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (return_statement return IDENT ;) })))
(function_definition "undefined4 *\nFUN_00258960(undefined4 *param_1,undefined4 param_2,int *param_3,int param_4,int *param_5,\n            int param_6,int param_7,uint *param_8,undefined4 param_9)\n\n{\n  uint uVar1;\n  int *piVar2;\n  byte bVar3;\n  bool bVar4;\n  char cVar5;\n  int iVar6;\n  byte *pbVar7;\n  undefined4 *puVar8;\n  uint uVar9;\n  uint uVar10;\n  bool bVar11;\n  bool bVar12;\n  int local_78;\n  int local_64;\n  undefined4 local_50;\n  uint *local_4c;\n  uint local_48;\n  uint local_44 [4];\n  undefined1 *local_34;\n  uint local_30;\n  undefined1 local_2c [28];\n  \n  FUN_0023c1d0(param_7 + 0x6c);\n  iVar6 = FUN_001e9740(PTR_DAT_0038edb4);\n  piVar2 = (int *)(*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + iVar6 * 4);\n  local_64 = *piVar2;\n  if (local_64 == 0) {\n                    \n    puVar8 = (undefined4 *)FUN_001e5200(0x70);\n    puVar8[1] = 0;\n    puVar8[2] = 0;\n    puVar8[3] = 0;\n    *(undefined1 *)(puVar8 + 4) = 0;\n    *puVar8 = &PTR_FUN_0038d7b8;\n    puVar8[5] = 0;\n    puVar8[6] = 0;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar8[9] = 0;\n    puVar8[10] = 0;\n    puVar8[0xb] = 0;\n    puVar8[0xc] = 0;\n    puVar8[0xd] = 0;\n    puVar8[0xe] = 0;\n    puVar8[0xf] = 0;\n    *(undefined1 *)(puVar8 + 0x1b) = 0;\n                    \n    FUN_0023d400(puVar8,param_7 + 0x6c);\n    FUN_001e9c50(*(undefined4 *)(param_7 + 0x6c),puVar8,iVar6);\n    local_64 = *piVar2;\n  }\n  local_48 = 0;\n  local_44[0] = local_44[0] & 0xffffff00;\n  local_4c = local_44;\n  if (*(char *)(local_64 + 0x10) != '\0') {\n                    \n    FUN_001ef040(&local_4c,0x20);\n  }\n  local_30 = 0;\n  local_2c[0] = 0;\n  local_34 = local_2c;\n                    \n  FUN_001ef040(&local_34,0x20);\n  local_78 = 1;\n  local_50 = *(undefined4 *)(local_64 + 0x3c);\n  pbVar7 = (byte *)&local_50;\n  bVar3 = (byte)local_50;\n  while( true ) {\n    if (bVar3 < 5) {\n                    \n                    \n      puVar8 = (undefined4 *)\n               (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))();\n      return puVar8;\n    }\n    if (3 < local_78) break;\n    pbVar7 = (byte *)((int)&local_50 + local_78);\n    bVar3 = *pbVar7;\n    local_78 = local_78 + 1;\n  }\n  if ((local_30 < 2) || (uVar10 = FUN_001f10a0(&local_34,0x30,0), uVar10 == 0)) goto LAB_00259336;\n  if (uVar10 == 0xffffffff) {\n    uVar10 = local_30 - 1;\n    if (uVar10 == 0xffffffff) {\n      *local_34 = 0;\n      goto LAB_00259336;\n    }\n    if (uVar10 == 0) goto LAB_00259336;\n  }\n  if (local_30 < uVar10) {\n    uVar10 = local_30;\n  }\n  FUN_001eebf0(&local_34,0,uVar10);\nLAB_00259336:\n  uVar10 = local_48;\n  if (local_48 != 0) {\n    uVar1 = local_48 + 1;\n    uVar9 = 0xf;\n    if (local_4c != local_44) {\n      uVar9 = local_44[0];\n    }\n    if (uVar9 < uVar1) {\n      FUN_001eeaa0(&local_4c,local_48,0,0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar10) = 0;\n    *(undefined1 *)((int)local_4c + uVar10 + 1) = 0;\n    local_48 = uVar1;\n    cVar5 = FUN_0027aa00(*(undefined4 *)(local_64 + 8),*(undefined4 *)(local_64 + 0xc),&local_4c);\n    if (cVar5 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }\n  FUN_001f0930(param_9,&local_34);\n  bVar11 = param_3 != (int *)0x0 && param_4 == -1;\n  bVar12 = param_4 == -1;\n  if (bVar11) {\n    if ((int *)param_3[2] < (int *)param_3[3]) {\n      iVar6 = *(int *)param_3[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_3 + 0x24))(param_3);\n    }\n    bVar12 = false;\n    if (iVar6 == -1) {\n      param_3 = (int *)0x0;\n      bVar12 = bVar11;\n    }\n  }\n  bVar4 = param_5 != (int *)0x0 && param_6 == -1;\n  bVar11 = param_6 == -1;\n  if (bVar4) {\n    if ((int *)param_5[2] < (int *)param_5[3]) {\n      iVar6 = *(int *)param_5[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_5 + 0x24))(param_5);\n    }\n    bVar11 = false;\n    if (iVar6 == -1) {\n      bVar11 = bVar4;\n    }\n  }\n  if (bVar12 == bVar11) {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  if (local_34 != local_2c) {\n    FUN_001e6db0(local_34);\n  }\n  if (local_4c != local_44) {\n    FUN_001e6db0(local_4c);\n  }\n  return param_1;\n}" (type_identifier "undefined4") (pointer_declarator "*\nFUN_00258960(undefined4 *param_1,undefined4 param_2,int *param_3,int param_4,int *param_5,\n            int param_6,int param_7,uint *param_8,undefined4 param_9)" (* "*") (function_declarator "FUN_00258960(undefined4 *param_1,undefined4 param_2,int *param_3,int param_4,int *param_5,\n            int param_6,int param_7,uint *param_8,undefined4 param_9)" (identifier "FUN_00258960") (parameter_list "(undefined4 *param_1,undefined4 param_2,int *param_3,int param_4,int *param_5,\n            int param_6,int param_7,uint *param_8,undefined4 param_9)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "int *param_5" (primitive_type "int") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) (, ",") (parameter_declaration "int param_6" (primitive_type "int") (identifier "param_6")) (, ",") (parameter_declaration "int param_7" (primitive_type "int") (identifier "param_7")) (, ",") (parameter_declaration "uint *param_8" (type_identifier "uint") (pointer_declarator "*param_8" (* "*") (identifier "param_8"))) (, ",") (parameter_declaration "undefined4 param_9" (type_identifier "undefined4") (identifier "param_9")) () ")")))) (compound_statement "{\n  uint uVar1;\n  int *piVar2;\n  byte bVar3;\n  bool bVar4;\n  char cVar5;\n  int iVar6;\n  byte *pbVar7;\n  undefined4 *puVar8;\n  uint uVar9;\n  uint uVar10;\n  bool bVar11;\n  bool bVar12;\n  int local_78;\n  int local_64;\n  undefined4 local_50;\n  uint *local_4c;\n  uint local_48;\n  uint local_44 [4];\n  undefined1 *local_34;\n  uint local_30;\n  undefined1 local_2c [28];\n  \n  FUN_0023c1d0(param_7 + 0x6c);\n  iVar6 = FUN_001e9740(PTR_DAT_0038edb4);\n  piVar2 = (int *)(*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + iVar6 * 4);\n  local_64 = *piVar2;\n  if (local_64 == 0) {\n                    \n    puVar8 = (undefined4 *)FUN_001e5200(0x70);\n    puVar8[1] = 0;\n    puVar8[2] = 0;\n    puVar8[3] = 0;\n    *(undefined1 *)(puVar8 + 4) = 0;\n    *puVar8 = &PTR_FUN_0038d7b8;\n    puVar8[5] = 0;\n    puVar8[6] = 0;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar8[9] = 0;\n    puVar8[10] = 0;\n    puVar8[0xb] = 0;\n    puVar8[0xc] = 0;\n    puVar8[0xd] = 0;\n    puVar8[0xe] = 0;\n    puVar8[0xf] = 0;\n    *(undefined1 *)(puVar8 + 0x1b) = 0;\n                    \n    FUN_0023d400(puVar8,param_7 + 0x6c);\n    FUN_001e9c50(*(undefined4 *)(param_7 + 0x6c),puVar8,iVar6);\n    local_64 = *piVar2;\n  }\n  local_48 = 0;\n  local_44[0] = local_44[0] & 0xffffff00;\n  local_4c = local_44;\n  if (*(char *)(local_64 + 0x10) != '\0') {\n                    \n    FUN_001ef040(&local_4c,0x20);\n  }\n  local_30 = 0;\n  local_2c[0] = 0;\n  local_34 = local_2c;\n                    \n  FUN_001ef040(&local_34,0x20);\n  local_78 = 1;\n  local_50 = *(undefined4 *)(local_64 + 0x3c);\n  pbVar7 = (byte *)&local_50;\n  bVar3 = (byte)local_50;\n  while( true ) {\n    if (bVar3 < 5) {\n                    \n                    \n      puVar8 = (undefined4 *)\n               (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))();\n      return puVar8;\n    }\n    if (3 < local_78) break;\n    pbVar7 = (byte *)((int)&local_50 + local_78);\n    bVar3 = *pbVar7;\n    local_78 = local_78 + 1;\n  }\n  if ((local_30 < 2) || (uVar10 = FUN_001f10a0(&local_34,0x30,0), uVar10 == 0)) goto LAB_00259336;\n  if (uVar10 == 0xffffffff) {\n    uVar10 = local_30 - 1;\n    if (uVar10 == 0xffffffff) {\n      *local_34 = 0;\n      goto LAB_00259336;\n    }\n    if (uVar10 == 0) goto LAB_00259336;\n  }\n  if (local_30 < uVar10) {\n    uVar10 = local_30;\n  }\n  FUN_001eebf0(&local_34,0,uVar10);\nLAB_00259336:\n  uVar10 = local_48;\n  if (local_48 != 0) {\n    uVar1 = local_48 + 1;\n    uVar9 = 0xf;\n    if (local_4c != local_44) {\n      uVar9 = local_44[0];\n    }\n    if (uVar9 < uVar1) {\n      FUN_001eeaa0(&local_4c,local_48,0,0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar10) = 0;\n    *(undefined1 *)((int)local_4c + uVar10 + 1) = 0;\n    local_48 = uVar1;\n    cVar5 = FUN_0027aa00(*(undefined4 *)(local_64 + 8),*(undefined4 *)(local_64 + 0xc),&local_4c);\n    if (cVar5 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }\n  FUN_001f0930(param_9,&local_34);\n  bVar11 = param_3 != (int *)0x0 && param_4 == -1;\n  bVar12 = param_4 == -1;\n  if (bVar11) {\n    if ((int *)param_3[2] < (int *)param_3[3]) {\n      iVar6 = *(int *)param_3[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_3 + 0x24))(param_3);\n    }\n    bVar12 = false;\n    if (iVar6 == -1) {\n      param_3 = (int *)0x0;\n      bVar12 = bVar11;\n    }\n  }\n  bVar4 = param_5 != (int *)0x0 && param_6 == -1;\n  bVar11 = param_6 == -1;\n  if (bVar4) {\n    if ((int *)param_5[2] < (int *)param_5[3]) {\n      iVar6 = *(int *)param_5[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_5 + 0x24))(param_5);\n    }\n    bVar11 = false;\n    if (iVar6 == -1) {\n      bVar11 = bVar4;\n    }\n  }\n  if (bVar12 == bVar11) {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  if (local_34 != local_2c) {\n    FUN_001e6db0(local_34);\n  }\n  if (local_4c != local_44) {\n    FUN_001e6db0(local_4c);\n  }\n  return param_1;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "byte bVar3;" (type_identifier "byte") (identifier "bVar3") (; ";")) (declaration "bool bVar4;" (primitive_type "bool") (identifier "bVar4") (; ";")) (declaration "char cVar5;" (primitive_type "char") (identifier "cVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "byte *pbVar7;" (type_identifier "byte") (pointer_declarator "*pbVar7" (* "*") (identifier "pbVar7")) (; ";")) (declaration "undefined4 *puVar8;" (type_identifier "undefined4") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "bool bVar11;" (primitive_type "bool") (identifier "bVar11") (; ";")) (declaration "bool bVar12;" (primitive_type "bool") (identifier "bVar12") (; ";")) (declaration "int local_78;" (primitive_type "int") (identifier "local_78") (; ";")) (declaration "int local_64;" (primitive_type "int") (identifier "local_64") (; ";")) (declaration "undefined4 local_50;" (type_identifier "undefined4") (identifier "local_50") (; ";")) (declaration "uint *local_4c;" (type_identifier "uint") (pointer_declarator "*local_4c" (* "*") (identifier "local_4c")) (; ";")) (declaration "uint local_48;" (type_identifier "uint") (identifier "local_48") (; ";")) (declaration "uint local_44 [4];" (type_identifier "uint") (array_declarator "local_44 [4]" (identifier "local_44") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "undefined1 *local_34;" (type_identifier "undefined1") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (declaration "uint local_30;" (type_identifier "uint") (identifier "local_30") (; ";")) (declaration "undefined1 local_2c [28];" (type_identifier "undefined1") (array_declarator "local_2c [28]" (identifier "local_2c") ([ "[") (number_literal "28") (] "]")) (; ";")) (expression_statement "FUN_0023c1d0(param_7 + 0x6c);" (call_expression "FUN_0023c1d0(param_7 + 0x6c)" (identifier "FUN_0023c1d0") (argument_list "(param_7 + 0x6c)" (( "(") (binary_expression "param_7 + 0x6c" (identifier "param_7") (+ "+") (number_literal "0x6c")) () ")"))) (; ";")) (expression_statement "iVar6 = FUN_001e9740(PTR_DAT_0038edb4);" (assignment_expression "iVar6 = FUN_001e9740(PTR_DAT_0038edb4)" (identifier "iVar6") (= "=") (call_expression "FUN_001e9740(PTR_DAT_0038edb4)" (identifier "FUN_001e9740") (argument_list "(PTR_DAT_0038edb4)" (( "(") (identifier "PTR_DAT_0038edb4") () ")")))) (; ";")) (expression_statement "piVar2 = (int *)(*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + iVar6 * 4);" (assignment_expression "piVar2 = (int *)(*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + iVar6 * 4)" (identifier "piVar2") (= "=") (cast_expression "(int *)(*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + iVar6 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + iVar6 * 4)" (( "(") (binary_expression "*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + iVar6 * 4" (pointer_expression "*(int *)(*(int *)(param_7 + 0x6c) + 0xc)" (* "*") (cast_expression "(int *)(*(int *)(param_7 + 0x6c) + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_7 + 0x6c) + 0xc)" (( "(") (binary_expression "*(int *)(param_7 + 0x6c) + 0xc" (pointer_expression "*(int *)(param_7 + 0x6c)" (* "*") (cast_expression "(int *)(param_7 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_7 + 0x6c)" (( "(") (binary_expression "param_7 + 0x6c" (identifier "param_7") (+ "+") (number_literal "0x6c")) () ")")))) (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (binary_expression "iVar6 * 4" (identifier "iVar6") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "local_64 = *piVar2;" (assignment_expression "local_64 = *piVar2" (identifier "local_64") (= "=") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) (; ";")) (if_statement "if (local_64 == 0) {\n                    \n    puVar8 = (undefined4 *)FUN_001e5200(0x70);\n    puVar8[1] = 0;\n    puVar8[2] = 0;\n    puVar8[3] = 0;\n    *(undefined1 *)(puVar8 + 4) = 0;\n    *puVar8 = &PTR_FUN_0038d7b8;\n    puVar8[5] = 0;\n    puVar8[6] = 0;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar8[9] = 0;\n    puVar8[10] = 0;\n    puVar8[0xb] = 0;\n    puVar8[0xc] = 0;\n    puVar8[0xd] = 0;\n    puVar8[0xe] = 0;\n    puVar8[0xf] = 0;\n    *(undefined1 *)(puVar8 + 0x1b) = 0;\n                    \n    FUN_0023d400(puVar8,param_7 + 0x6c);\n    FUN_001e9c50(*(undefined4 *)(param_7 + 0x6c),puVar8,iVar6);\n    local_64 = *piVar2;\n  }" (if "if") (parenthesized_expression "(local_64 == 0)" (( "(") (binary_expression "local_64 == 0" (identifier "local_64") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    puVar8 = (undefined4 *)FUN_001e5200(0x70);\n    puVar8[1] = 0;\n    puVar8[2] = 0;\n    puVar8[3] = 0;\n    *(undefined1 *)(puVar8 + 4) = 0;\n    *puVar8 = &PTR_FUN_0038d7b8;\n    puVar8[5] = 0;\n    puVar8[6] = 0;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar8[9] = 0;\n    puVar8[10] = 0;\n    puVar8[0xb] = 0;\n    puVar8[0xc] = 0;\n    puVar8[0xd] = 0;\n    puVar8[0xe] = 0;\n    puVar8[0xf] = 0;\n    *(undefined1 *)(puVar8 + 0x1b) = 0;\n                    \n    FUN_0023d400(puVar8,param_7 + 0x6c);\n    FUN_001e9c50(*(undefined4 *)(param_7 + 0x6c),puVar8,iVar6);\n    local_64 = *piVar2;\n  }" ({ "{") (expression_statement "puVar8 = (undefined4 *)FUN_001e5200(0x70);" (assignment_expression "puVar8 = (undefined4 *)FUN_001e5200(0x70)" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)FUN_001e5200(0x70)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001e5200(0x70)" (identifier "FUN_001e5200") (argument_list "(0x70)" (( "(") (number_literal "0x70") () ")"))))) (; ";")) (expression_statement "puVar8[1] = 0;" (assignment_expression "puVar8[1] = 0" (subscript_expression "puVar8[1]" (identifier "puVar8") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[2] = 0;" (assignment_expression "puVar8[2] = 0" (subscript_expression "puVar8[2]" (identifier "puVar8") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[3] = 0;" (assignment_expression "puVar8[3] = 0" (subscript_expression "puVar8[3]" (identifier "puVar8") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(puVar8 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar8 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar8 + 4)" (* "*") (cast_expression "(undefined1 *)(puVar8 + 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 4)" (( "(") (binary_expression "puVar8 + 4" (identifier "puVar8") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar8 = &PTR_FUN_0038d7b8;" (assignment_expression "*puVar8 = &PTR_FUN_0038d7b8" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (pointer_expression "&PTR_FUN_0038d7b8" (& "&") (identifier "PTR_FUN_0038d7b8"))) (; ";")) (expression_statement "puVar8[5] = 0;" (assignment_expression "puVar8[5] = 0" (subscript_expression "puVar8[5]" (identifier "puVar8") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[6] = 0;" (assignment_expression "puVar8[6] = 0" (subscript_expression "puVar8[6]" (identifier "puVar8") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[7] = 0;" (assignment_expression "puVar8[7] = 0" (subscript_expression "puVar8[7]" (identifier "puVar8") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[8] = 0;" (assignment_expression "puVar8[8] = 0" (subscript_expression "puVar8[8]" (identifier "puVar8") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[9] = 0;" (assignment_expression "puVar8[9] = 0" (subscript_expression "puVar8[9]" (identifier "puVar8") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[10] = 0;" (assignment_expression "puVar8[10] = 0" (subscript_expression "puVar8[10]" (identifier "puVar8") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[0xb] = 0;" (assignment_expression "puVar8[0xb] = 0" (subscript_expression "puVar8[0xb]" (identifier "puVar8") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[0xc] = 0;" (assignment_expression "puVar8[0xc] = 0" (subscript_expression "puVar8[0xc]" (identifier "puVar8") ([ "[") (number_literal "0xc") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[0xd] = 0;" (assignment_expression "puVar8[0xd] = 0" (subscript_expression "puVar8[0xd]" (identifier "puVar8") ([ "[") (number_literal "0xd") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[0xe] = 0;" (assignment_expression "puVar8[0xe] = 0" (subscript_expression "puVar8[0xe]" (identifier "puVar8") ([ "[") (number_literal "0xe") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[0xf] = 0;" (assignment_expression "puVar8[0xf] = 0" (subscript_expression "puVar8[0xf]" (identifier "puVar8") ([ "[") (number_literal "0xf") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(puVar8 + 0x1b) = 0;" (assignment_expression "*(undefined1 *)(puVar8 + 0x1b) = 0" (pointer_expression "*(undefined1 *)(puVar8 + 0x1b)" (* "*") (cast_expression "(undefined1 *)(puVar8 + 0x1b)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 0x1b)" (( "(") (binary_expression "puVar8 + 0x1b" (identifier "puVar8") (+ "+") (number_literal "0x1b")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_0023d400(puVar8,param_7 + 0x6c);" (call_expression "FUN_0023d400(puVar8,param_7 + 0x6c)" (identifier "FUN_0023d400") (argument_list "(puVar8,param_7 + 0x6c)" (( "(") (identifier "puVar8") (, ",") (binary_expression "param_7 + 0x6c" (identifier "param_7") (+ "+") (number_literal "0x6c")) () ")"))) (; ";")) (expression_statement "FUN_001e9c50(*(undefined4 *)(param_7 + 0x6c),puVar8,iVar6);" (call_expression "FUN_001e9c50(*(undefined4 *)(param_7 + 0x6c),puVar8,iVar6)" (identifier "FUN_001e9c50") (argument_list "(*(undefined4 *)(param_7 + 0x6c),puVar8,iVar6)" (( "(") (pointer_expression "*(undefined4 *)(param_7 + 0x6c)" (* "*") (cast_expression "(undefined4 *)(param_7 + 0x6c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_7 + 0x6c)" (( "(") (binary_expression "param_7 + 0x6c" (identifier "param_7") (+ "+") (number_literal "0x6c")) () ")")))) (, ",") (identifier "puVar8") (, ",") (identifier "iVar6") () ")"))) (; ";")) (expression_statement "local_64 = *piVar2;" (assignment_expression "local_64 = *piVar2" (identifier "local_64") (= "=") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) (; ";")) (} "}"))) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" (identifier "local_48") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_44[0] = local_44[0] & 0xffffff00;" (assignment_expression "local_44[0] = local_44[0] & 0xffffff00" (subscript_expression "local_44[0]" (identifier "local_44") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "local_44[0] & 0xffffff00" (subscript_expression "local_44[0]" (identifier "local_44") ([ "[") (number_literal "0") (] "]")) (& "&") (number_literal "0xffffff00"))) (; ";")) (expression_statement "local_4c = local_44;" (assignment_expression "local_4c = local_44" (identifier "local_4c") (= "=") (identifier "local_44")) (; ";")) (if_statement "if (*(char *)(local_64 + 0x10) != '\0') {\n                    \n    FUN_001ef040(&local_4c,0x20);\n  }" (if "if") (parenthesized_expression "(*(char *)(local_64 + 0x10) != '\0')" (( "(") (binary_expression "*(char *)(local_64 + 0x10) != '\0'" (pointer_expression "*(char *)(local_64 + 0x10)" (* "*") (cast_expression "(char *)(local_64 + 0x10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_64 + 0x10)" (( "(") (binary_expression "local_64 + 0x10" (identifier "local_64") (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                    \n    FUN_001ef040(&local_4c,0x20);\n  }" ({ "{") (expression_statement "FUN_001ef040(&local_4c,0x20);" (call_expression "FUN_001ef040(&local_4c,0x20)" (identifier "FUN_001ef040") (argument_list "(&local_4c,0x20)" (( "(") (pointer_expression "&local_4c" (& "&") (identifier "local_4c")) (, ",") (number_literal "0x20") () ")"))) (; ";")) (} "}"))) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_2c[0] = 0;" (assignment_expression "local_2c[0] = 0" (subscript_expression "local_2c[0]" (identifier "local_2c") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" (identifier "local_34") (= "=") (identifier "local_2c")) (; ";")) (expression_statement "FUN_001ef040(&local_34,0x20);" (call_expression "FUN_001ef040(&local_34,0x20)" (identifier "FUN_001ef040") (argument_list "(&local_34,0x20)" (( "(") (pointer_expression "&local_34" (& "&") (identifier "local_34")) (, ",") (number_literal "0x20") () ")"))) (; ";")) (expression_statement "local_78 = 1;" (assignment_expression "local_78 = 1" (identifier "local_78") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_50 = *(undefined4 *)(local_64 + 0x3c);" (assignment_expression "local_50 = *(undefined4 *)(local_64 + 0x3c)" (identifier "local_50") (= "=") (pointer_expression "*(undefined4 *)(local_64 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(local_64 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_64 + 0x3c)" (( "(") (binary_expression "local_64 + 0x3c" (identifier "local_64") (+ "+") (number_literal "0x3c")) () ")"))))) (; ";")) (expression_statement "pbVar7 = (byte *)&local_50;" (assignment_expression "pbVar7 = (byte *)&local_50" (identifier "pbVar7") (= "=") (cast_expression "(byte *)&local_50" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&local_50" (& "&") (identifier "local_50")))) (; ";")) (expression_statement "bVar3 = (byte)local_50;" (assignment_expression "bVar3 = (byte)local_50" (identifier "bVar3") (= "=") (cast_expression "(byte)local_50" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_50"))) (; ";")) (while_statement "while( true ) {\n    if (bVar3 < 5) {\n                    \n                    \n      puVar8 = (undefined4 *)\n               (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))();\n      return puVar8;\n    }\n    if (3 < local_78) break;\n    pbVar7 = (byte *)((int)&local_50 + local_78);\n    bVar3 = *pbVar7;\n    local_78 = local_78 + 1;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    if (bVar3 < 5) {\n                    \n                    \n      puVar8 = (undefined4 *)\n               (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))();\n      return puVar8;\n    }\n    if (3 < local_78) break;\n    pbVar7 = (byte *)((int)&local_50 + local_78);\n    bVar3 = *pbVar7;\n    local_78 = local_78 + 1;\n  }" ({ "{") (if_statement "if (bVar3 < 5) {\n                    \n                    \n      puVar8 = (undefined4 *)\n               (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))();\n      return puVar8;\n    }" (if "if") (parenthesized_expression "(bVar3 < 5)" (( "(") (binary_expression "bVar3 < 5" (identifier "bVar3") (< "<") (number_literal "5")) () ")")) (compound_statement "{\n                    \n                    \n      puVar8 = (undefined4 *)\n               (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))();\n      return puVar8;\n    }" ({ "{") (expression_statement "puVar8 = (undefined4 *)\n               (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))();" (assignment_expression "puVar8 = (undefined4 *)\n               (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))()" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)\n               (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))()" (parenthesized_expression "(*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))" (( "(") (pointer_expression "*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4))" (* "*") (cast_expression "(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4))" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4))" (( "(") (binary_expression "(int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)" (cast_expression "(int)&__DT_PLTGOT" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "&__DT_PLTGOT" (& "&") (identifier "__DT_PLTGOT"))) (+ "+") (pointer_expression "*(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)" (* "*") (cast_expression "(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_002a6e08 + (uint)*pbVar7 * 4)" (( "(") (binary_expression "&DAT_002a6e08 + (uint)*pbVar7 * 4" (pointer_expression "&DAT_002a6e08" (& "&") (identifier "DAT_002a6e08")) (+ "+") (binary_expression "(uint)*pbVar7 * 4" (binary_expression "(uint)*pbVar7" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar7")) (* "*") (number_literal "4"))) () ")"))))) () ")")))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (return_statement "return puVar8;" (return "return") (identifier "puVar8") (; ";")) (} "}"))) (if_statement "if (3 < local_78) break;" (if "if") (parenthesized_expression "(3 < local_78)" (( "(") (binary_expression "3 < local_78" (number_literal "3") (< "<") (identifier "local_78")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pbVar7 = (byte *)((int)&local_50 + local_78);" (assignment_expression "pbVar7 = (byte *)((int)&local_50 + local_78)" (identifier "pbVar7") (= "=") (cast_expression "(byte *)((int)&local_50 + local_78)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)&local_50 + local_78)" (( "(") (binary_expression "(int)&local_50 + local_78" (cast_expression "(int)&local_50" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "&local_50" (& "&") (identifier "local_50"))) (+ "+") (identifier "local_78")) () ")")))) (; ";")) (expression_statement "bVar3 = *pbVar7;" (assignment_expression "bVar3 = *pbVar7" (identifier "bVar3") (= "=") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7"))) (; ";")) (expression_statement "local_78 = local_78 + 1;" (assignment_expression "local_78 = local_78 + 1" (identifier "local_78") (= "=") (binary_expression "local_78 + 1" (identifier "local_78") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if ((local_30 < 2) || (uVar10 = FUN_001f10a0(&local_34,0x30,0), uVar10 == 0)) goto LAB_00259336;" (if "if") (parenthesized_expression "((local_30 < 2) || (uVar10 = FUN_001f10a0(&local_34,0x30,0), uVar10 == 0))" (( "(") (binary_expression "(local_30 < 2) || (uVar10 = FUN_001f10a0(&local_34,0x30,0), uVar10 == 0)" (parenthesized_expression "(local_30 < 2)" (( "(") (binary_expression "local_30 < 2" (identifier "local_30") (< "<") (number_literal "2")) () ")")) (|| "||") (parenthesized_expression "(uVar10 = FUN_001f10a0(&local_34,0x30,0), uVar10 == 0)" (( "(") (comma_expression "uVar10 = FUN_001f10a0(&local_34,0x30,0), uVar10 == 0" (assignment_expression "uVar10 = FUN_001f10a0(&local_34,0x30,0)" (identifier "uVar10") (= "=") (call_expression "FUN_001f10a0(&local_34,0x30,0)" (identifier "FUN_001f10a0") (argument_list "(&local_34,0x30,0)" (( "(") (pointer_expression "&local_34" (& "&") (identifier "local_34")) (, ",") (number_literal "0x30") (, ",") (number_literal "0") () ")")))) (, ",") (binary_expression "uVar10 == 0" (identifier "uVar10") (== "==") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto LAB_00259336;" (goto "goto") (statement_identifier "LAB_00259336") (; ";"))) (if_statement "if (uVar10 == 0xffffffff) {\n    uVar10 = local_30 - 1;\n    if (uVar10 == 0xffffffff) {\n      *local_34 = 0;\n      goto LAB_00259336;\n    }\n    if (uVar10 == 0) goto LAB_00259336;\n  }" (if "if") (parenthesized_expression "(uVar10 == 0xffffffff)" (( "(") (binary_expression "uVar10 == 0xffffffff" (identifier "uVar10") (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n    uVar10 = local_30 - 1;\n    if (uVar10 == 0xffffffff) {\n      *local_34 = 0;\n      goto LAB_00259336;\n    }\n    if (uVar10 == 0) goto LAB_00259336;\n  }" ({ "{") (expression_statement "uVar10 = local_30 - 1;" (assignment_expression "uVar10 = local_30 - 1" (identifier "uVar10") (= "=") (binary_expression "local_30 - 1" (identifier "local_30") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar10 == 0xffffffff) {\n      *local_34 = 0;\n      goto LAB_00259336;\n    }" (if "if") (parenthesized_expression "(uVar10 == 0xffffffff)" (( "(") (binary_expression "uVar10 == 0xffffffff" (identifier "uVar10") (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n      *local_34 = 0;\n      goto LAB_00259336;\n    }" ({ "{") (expression_statement "*local_34 = 0;" (assignment_expression "*local_34 = 0" (pointer_expression "*local_34" (* "*") (identifier "local_34")) (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00259336;" (goto "goto") (statement_identifier "LAB_00259336") (; ";")) (} "}"))) (if_statement "if (uVar10 == 0) goto LAB_00259336;" (if "if") (parenthesized_expression "(uVar10 == 0)" (( "(") (binary_expression "uVar10 == 0" (identifier "uVar10") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00259336;" (goto "goto") (statement_identifier "LAB_00259336") (; ";"))) (} "}"))) (if_statement "if (local_30 < uVar10) {\n    uVar10 = local_30;\n  }" (if "if") (parenthesized_expression "(local_30 < uVar10)" (( "(") (binary_expression "local_30 < uVar10" (identifier "local_30") (< "<") (identifier "uVar10")) () ")")) (compound_statement "{\n    uVar10 = local_30;\n  }" ({ "{") (expression_statement "uVar10 = local_30;" (assignment_expression "uVar10 = local_30" (identifier "uVar10") (= "=") (identifier "local_30")) (; ";")) (} "}"))) (expression_statement "FUN_001eebf0(&local_34,0,uVar10);" (call_expression "FUN_001eebf0(&local_34,0,uVar10)" (identifier "FUN_001eebf0") (argument_list "(&local_34,0,uVar10)" (( "(") (pointer_expression "&local_34" (& "&") (identifier "local_34")) (, ",") (number_literal "0") (, ",") (identifier "uVar10") () ")"))) (; ";")) (labeled_statement "LAB_00259336:\n  uVar10 = local_48;" (statement_identifier "LAB_00259336") (: ":") (expression_statement "uVar10 = local_48;" (assignment_expression "uVar10 = local_48" (identifier "uVar10") (= "=") (identifier "local_48")) (; ";"))) (if_statement "if (local_48 != 0) {\n    uVar1 = local_48 + 1;\n    uVar9 = 0xf;\n    if (local_4c != local_44) {\n      uVar9 = local_44[0];\n    }\n    if (uVar9 < uVar1) {\n      FUN_001eeaa0(&local_4c,local_48,0,0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar10) = 0;\n    *(undefined1 *)((int)local_4c + uVar10 + 1) = 0;\n    local_48 = uVar1;\n    cVar5 = FUN_0027aa00(*(undefined4 *)(local_64 + 8),*(undefined4 *)(local_64 + 0xc),&local_4c);\n    if (cVar5 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }" (if "if") (parenthesized_expression "(local_48 != 0)" (( "(") (binary_expression "local_48 != 0" (identifier "local_48") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar1 = local_48 + 1;\n    uVar9 = 0xf;\n    if (local_4c != local_44) {\n      uVar9 = local_44[0];\n    }\n    if (uVar9 < uVar1) {\n      FUN_001eeaa0(&local_4c,local_48,0,0,1);\n    }\n    *(undefined1 *)((int)local_4c + uVar10) = 0;\n    *(undefined1 *)((int)local_4c + uVar10 + 1) = 0;\n    local_48 = uVar1;\n    cVar5 = FUN_0027aa00(*(undefined4 *)(local_64 + 8),*(undefined4 *)(local_64 + 0xc),&local_4c);\n    if (cVar5 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }" ({ "{") (expression_statement "uVar1 = local_48 + 1;" (assignment_expression "uVar1 = local_48 + 1" (identifier "uVar1") (= "=") (binary_expression "local_48 + 1" (identifier "local_48") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar9 = 0xf;" (assignment_expression "uVar9 = 0xf" (identifier "uVar9") (= "=") (number_literal "0xf")) (; ";")) (if_statement "if (local_4c != local_44) {\n      uVar9 = local_44[0];\n    }" (if "if") (parenthesized_expression "(local_4c != local_44)" (( "(") (binary_expression "local_4c != local_44" (identifier "local_4c") (!= "!=") (identifier "local_44")) () ")")) (compound_statement "{\n      uVar9 = local_44[0];\n    }" ({ "{") (expression_statement "uVar9 = local_44[0];" (assignment_expression "uVar9 = local_44[0]" (identifier "uVar9") (= "=") (subscript_expression "local_44[0]" (identifier "local_44") ([ "[") (number_literal "0") (] "]"))) (; ";")) (} "}"))) (if_statement "if (uVar9 < uVar1) {\n      FUN_001eeaa0(&local_4c,local_48,0,0,1);\n    }" (if "if") (parenthesized_expression "(uVar9 < uVar1)" (( "(") (binary_expression "uVar9 < uVar1" (identifier "uVar9") (< "<") (identifier "uVar1")) () ")")) (compound_statement "{\n      FUN_001eeaa0(&local_4c,local_48,0,0,1);\n    }" ({ "{") (expression_statement "FUN_001eeaa0(&local_4c,local_48,0,0,1);" (call_expression "FUN_001eeaa0(&local_4c,local_48,0,0,1)" (identifier "FUN_001eeaa0") (argument_list "(&local_4c,local_48,0,0,1)" (( "(") (pointer_expression "&local_4c" (& "&") (identifier "local_4c")) (, ",") (identifier "local_48") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "1") () ")"))) (; ";")) (} "}"))) (expression_statement "*(undefined1 *)((int)local_4c + uVar10) = 0;" (assignment_expression "*(undefined1 *)((int)local_4c + uVar10) = 0" (pointer_expression "*(undefined1 *)((int)local_4c + uVar10)" (* "*") (cast_expression "(undefined1 *)((int)local_4c + uVar10)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_4c + uVar10)" (( "(") (binary_expression "(int)local_4c + uVar10" (cast_expression "(int)local_4c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_4c")) (+ "+") (identifier "uVar10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)((int)local_4c + uVar10 + 1) = 0;" (assignment_expression "*(undefined1 *)((int)local_4c + uVar10 + 1) = 0" (pointer_expression "*(undefined1 *)((int)local_4c + uVar10 + 1)" (* "*") (cast_expression "(undefined1 *)((int)local_4c + uVar10 + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_4c + uVar10 + 1)" (( "(") (binary_expression "(int)local_4c + uVar10 + 1" (binary_expression "(int)local_4c + uVar10" (cast_expression "(int)local_4c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_4c")) (+ "+") (identifier "uVar10")) (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_48 = uVar1;" (assignment_expression "local_48 = uVar1" (identifier "local_48") (= "=") (identifier "uVar1")) (; ";")) (expression_statement "cVar5 = FUN_0027aa00(*(undefined4 *)(local_64 + 8),*(undefined4 *)(local_64 + 0xc),&local_4c);" (assignment_expression "cVar5 = FUN_0027aa00(*(undefined4 *)(local_64 + 8),*(undefined4 *)(local_64 + 0xc),&local_4c)" (identifier "cVar5") (= "=") (call_expression "FUN_0027aa00(*(undefined4 *)(local_64 + 8),*(undefined4 *)(local_64 + 0xc),&local_4c)" (identifier "FUN_0027aa00") (argument_list "(*(undefined4 *)(local_64 + 8),*(undefined4 *)(local_64 + 0xc),&local_4c)" (( "(") (pointer_expression "*(undefined4 *)(local_64 + 8)" (* "*") (cast_expression "(undefined4 *)(local_64 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_64 + 8)" (( "(") (binary_expression "local_64 + 8" (identifier "local_64") (+ "+") (number_literal "8")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(local_64 + 0xc)" (* "*") (cast_expression "(undefined4 *)(local_64 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_64 + 0xc)" (( "(") (binary_expression "local_64 + 0xc" (identifier "local_64") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (pointer_expression "&local_4c" (& "&") (identifier "local_4c")) () ")")))) (; ";")) (if_statement "if (cVar5 == '\0') {\n      *param_8 = *param_8 | 4;\n    }" (if "if") (parenthesized_expression "(cVar5 == '\0')" (( "(") (binary_expression "cVar5 == '\0'" (identifier "cVar5") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      *param_8 = *param_8 | 4;\n    }" ({ "{") (expression_statement "*param_8 = *param_8 | 4;" (assignment_expression "*param_8 = *param_8 | 4" (pointer_expression "*param_8" (* "*") (identifier "param_8")) (= "=") (binary_expression "*param_8 | 4" (pointer_expression "*param_8" (* "*") (identifier "param_8")) (| "|") (number_literal "4"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "FUN_001f0930(param_9,&local_34);" (call_expression "FUN_001f0930(param_9,&local_34)" (identifier "FUN_001f0930") (argument_list "(param_9,&local_34)" (( "(") (identifier "param_9") (, ",") (pointer_expression "&local_34" (& "&") (identifier "local_34")) () ")"))) (; ";")) (expression_statement "bVar11 = param_3 != (int *)0x0 && param_4 == -1;" (assignment_expression "bVar11 = param_3 != (int *)0x0 && param_4 == -1" (identifier "bVar11") (= "=") (binary_expression "param_3 != (int *)0x0 && param_4 == -1" (binary_expression "param_3 != (int *)0x0" (identifier "param_3") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (binary_expression "param_4 == -1" (identifier "param_4") (== "==") (number_literal "-1")))) (; ";")) (expression_statement "bVar12 = param_4 == -1;" (assignment_expression "bVar12 = param_4 == -1" (identifier "bVar12") (= "=") (binary_expression "param_4 == -1" (identifier "param_4") (== "==") (number_literal "-1"))) (; ";")) (if_statement "if (bVar11) {\n    if ((int *)param_3[2] < (int *)param_3[3]) {\n      iVar6 = *(int *)param_3[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_3 + 0x24))(param_3);\n    }\n    bVar12 = false;\n    if (iVar6 == -1) {\n      param_3 = (int *)0x0;\n      bVar12 = bVar11;\n    }\n  }" (if "if") (parenthesized_expression "(bVar11)" (( "(") (identifier "bVar11") () ")")) (compound_statement "{\n    if ((int *)param_3[2] < (int *)param_3[3]) {\n      iVar6 = *(int *)param_3[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_3 + 0x24))(param_3);\n    }\n    bVar12 = false;\n    if (iVar6 == -1) {\n      param_3 = (int *)0x0;\n      bVar12 = bVar11;\n    }\n  }" ({ "{") (if_statement "if ((int *)param_3[2] < (int *)param_3[3]) {\n      iVar6 = *(int *)param_3[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_3 + 0x24))(param_3);\n    }" (if "if") (parenthesized_expression "((int *)param_3[2] < (int *)param_3[3])" (( "(") (binary_expression "(int *)param_3[2] < (int *)param_3[3]" (cast_expression "(int *)param_3[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(int *)param_3[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n      iVar6 = *(int *)param_3[2];\n    }" ({ "{") (expression_statement "iVar6 = *(int *)param_3[2];" (assignment_expression "iVar6 = *(int *)param_3[2]" (identifier "iVar6") (= "=") (pointer_expression "*(int *)param_3[2]" (* "*") (cast_expression "(int *)param_3[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]"))))) (; ";")) (} "}")) (else_clause "else {\n      iVar6 = (**(code **)(*param_3 + 0x24))(param_3);\n    }" (else "else") (compound_statement "{\n      iVar6 = (**(code **)(*param_3 + 0x24))(param_3);\n    }" ({ "{") (expression_statement "iVar6 = (**(code **)(*param_3 + 0x24))(param_3);" (assignment_expression "iVar6 = (**(code **)(*param_3 + 0x24))(param_3)" (identifier "iVar6") (= "=") (call_expression "(**(code **)(*param_3 + 0x24))(param_3)" (parenthesized_expression "(**(code **)(*param_3 + 0x24))" (( "(") (pointer_expression "**(code **)(*param_3 + 0x24)" (* "*") (pointer_expression "*(code **)(*param_3 + 0x24)" (* "*") (cast_expression "(code **)(*param_3 + 0x24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_3 + 0x24)" (( "(") (binary_expression "*param_3 + 0x24" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (+ "+") (number_literal "0x24")) () ")"))))) () ")")) (argument_list "(param_3)" (( "(") (identifier "param_3") () ")")))) (; ";")) (} "}")))) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" (identifier "bVar12") (= "=") (false "false")) (; ";")) (if_statement "if (iVar6 == -1) {\n      param_3 = (int *)0x0;\n      bVar12 = bVar11;\n    }" (if "if") (parenthesized_expression "(iVar6 == -1)" (( "(") (binary_expression "iVar6 == -1" (identifier "iVar6") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n      param_3 = (int *)0x0;\n      bVar12 = bVar11;\n    }" ({ "{") (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" (identifier "param_3") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "bVar12 = bVar11;" (assignment_expression "bVar12 = bVar11" (identifier "bVar12") (= "=") (identifier "bVar11")) (; ";")) (} "}"))) (} "}"))) (expression_statement "bVar4 = param_5 != (int *)0x0 && param_6 == -1;" (assignment_expression "bVar4 = param_5 != (int *)0x0 && param_6 == -1" (identifier "bVar4") (= "=") (binary_expression "param_5 != (int *)0x0 && param_6 == -1" (binary_expression "param_5 != (int *)0x0" (identifier "param_5") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (binary_expression "param_6 == -1" (identifier "param_6") (== "==") (number_literal "-1")))) (; ";")) (expression_statement "bVar11 = param_6 == -1;" (assignment_expression "bVar11 = param_6 == -1" (identifier "bVar11") (= "=") (binary_expression "param_6 == -1" (identifier "param_6") (== "==") (number_literal "-1"))) (; ";")) (if_statement "if (bVar4) {\n    if ((int *)param_5[2] < (int *)param_5[3]) {\n      iVar6 = *(int *)param_5[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_5 + 0x24))(param_5);\n    }\n    bVar11 = false;\n    if (iVar6 == -1) {\n      bVar11 = bVar4;\n    }\n  }" (if "if") (parenthesized_expression "(bVar4)" (( "(") (identifier "bVar4") () ")")) (compound_statement "{\n    if ((int *)param_5[2] < (int *)param_5[3]) {\n      iVar6 = *(int *)param_5[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_5 + 0x24))(param_5);\n    }\n    bVar11 = false;\n    if (iVar6 == -1) {\n      bVar11 = bVar4;\n    }\n  }" ({ "{") (if_statement "if ((int *)param_5[2] < (int *)param_5[3]) {\n      iVar6 = *(int *)param_5[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_5 + 0x24))(param_5);\n    }" (if "if") (parenthesized_expression "((int *)param_5[2] < (int *)param_5[3])" (( "(") (binary_expression "(int *)param_5[2] < (int *)param_5[3]" (cast_expression "(int *)param_5[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(int *)param_5[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_5[3]" (identifier "param_5") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n      iVar6 = *(int *)param_5[2];\n    }" ({ "{") (expression_statement "iVar6 = *(int *)param_5[2];" (assignment_expression "iVar6 = *(int *)param_5[2]" (identifier "iVar6") (= "=") (pointer_expression "*(int *)param_5[2]" (* "*") (cast_expression "(int *)param_5[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]"))))) (; ";")) (} "}")) (else_clause "else {\n      iVar6 = (**(code **)(*param_5 + 0x24))(param_5);\n    }" (else "else") (compound_statement "{\n      iVar6 = (**(code **)(*param_5 + 0x24))(param_5);\n    }" ({ "{") (expression_statement "iVar6 = (**(code **)(*param_5 + 0x24))(param_5);" (assignment_expression "iVar6 = (**(code **)(*param_5 + 0x24))(param_5)" (identifier "iVar6") (= "=") (call_expression "(**(code **)(*param_5 + 0x24))(param_5)" (parenthesized_expression "(**(code **)(*param_5 + 0x24))" (( "(") (pointer_expression "**(code **)(*param_5 + 0x24)" (* "*") (pointer_expression "*(code **)(*param_5 + 0x24)" (* "*") (cast_expression "(code **)(*param_5 + 0x24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_5 + 0x24)" (( "(") (binary_expression "*param_5 + 0x24" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (+ "+") (number_literal "0x24")) () ")"))))) () ")")) (argument_list "(param_5)" (( "(") (identifier "param_5") () ")")))) (; ";")) (} "}")))) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" (identifier "bVar11") (= "=") (false "false")) (; ";")) (if_statement "if (iVar6 == -1) {\n      bVar11 = bVar4;\n    }" (if "if") (parenthesized_expression "(iVar6 == -1)" (( "(") (binary_expression "iVar6 == -1" (identifier "iVar6") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n      bVar11 = bVar4;\n    }" ({ "{") (expression_statement "bVar11 = bVar4;" (assignment_expression "bVar11 = bVar4" (identifier "bVar11") (= "=") (identifier "bVar4")) (; ";")) (} "}"))) (} "}"))) (if_statement "if (bVar12 == bVar11) {\n    *param_8 = *param_8 | 2;\n  }" (if "if") (parenthesized_expression "(bVar12 == bVar11)" (( "(") (binary_expression "bVar12 == bVar11" (identifier "bVar12") (== "==") (identifier "bVar11")) () ")")) (compound_statement "{\n    *param_8 = *param_8 | 2;\n  }" ({ "{") (expression_statement "*param_8 = *param_8 | 2;" (assignment_expression "*param_8 = *param_8 | 2" (pointer_expression "*param_8" (* "*") (identifier "param_8")) (= "=") (binary_expression "*param_8 | 2" (pointer_expression "*param_8" (* "*") (identifier "param_8")) (| "|") (number_literal "2"))) (; ";")) (} "}"))) (expression_statement "*param_1 = param_3;" (assignment_expression "*param_1 = param_3" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "param_3")) (; ";")) (expression_statement "param_1[1] = param_4;" (assignment_expression "param_1[1] = param_4" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "param_4")) (; ";")) (if_statement "if (local_34 != local_2c) {\n    FUN_001e6db0(local_34);\n  }" (if "if") (parenthesized_expression "(local_34 != local_2c)" (( "(") (binary_expression "local_34 != local_2c" (identifier "local_34") (!= "!=") (identifier "local_2c")) () ")")) (compound_statement "{\n    FUN_001e6db0(local_34);\n  }" ({ "{") (expression_statement "FUN_001e6db0(local_34);" (call_expression "FUN_001e6db0(local_34)" (identifier "FUN_001e6db0") (argument_list "(local_34)" (( "(") (identifier "local_34") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_4c != local_44) {\n    FUN_001e6db0(local_4c);\n  }" (if "if") (parenthesized_expression "(local_4c != local_44)" (( "(") (binary_expression "local_4c != local_44" (identifier "local_4c") (!= "!=") (identifier "local_44")) () ")")) (compound_statement "{\n    FUN_001e6db0(local_4c);\n  }" ({ "{") (expression_statement "FUN_001e6db0(local_4c);" (call_expression "FUN_001e6db0(local_4c)" (identifier "FUN_001e6db0") (argument_list "(local_4c)" (( "(") (identifier "local_4c") () ")"))) (; ";")) (} "}"))) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Removing unreachable block (ram,0x0025933c) */
/* WARNING: Removing unreachable block (ram,0x00259344) */
/* WARNING: Removing unreachable block (ram,0x00258b25) */
/* WARNING: Removing unreachable block (ram,0x00258b2d) */
/* WARNING: Removing unreachable block (ram,0x00258b38) */
/* WARNING: Removing unreachable block (ram,0x00259410) */
/* WARNING: Removing unreachable block (ram,0x00259841) */
/* WARNING: Removing unreachable block (ram,0x0025941c) */
/* WARNING: Removing unreachable block (ram,0x00259420) */
/* WARNING: Removing unreachable block (ram,0x002595b0) */
/* WARNING: Removing unreachable block (ram,0x00259429) */
/* WARNING: Removing unreachable block (ram,0x00258b40) */
/* WARNING: Removing unreachable block (ram,0x00258b4c) */
/* WARNING: Removing unreachable block (ram,0x002594e0) */
/* WARNING: Removing unreachable block (ram,0x00258b58) */
/* WARNING: Removing unreachable block (ram,0x00258b5e) */
/* WARNING: Removing unreachable block (ram,0x00258adb) */
/* WARNING: Removing unreachable block (ram,0x00258ae8) */
/* WARNING: Removing unreachable block (ram,0x002591d0) */
/* WARNING: Removing unreachable block (ram,0x00258aee) */
/* WARNING: Removing unreachable block (ram,0x00258b6d) */
/* WARNING: Removing unreachable block (ram,0x00258b7e) */
/* WARNING: Removing unreachable block (ram,0x00259830) */
/* WARNING: Removing unreachable block (ram,0x00258b8a) */
/* WARNING: Removing unreachable block (ram,0x00258b8c) */
/* WARNING: Removing unreachable block (ram,0x00258b97) */
/* WARNING: Removing unreachable block (ram,0x00258b00) */
/* WARNING: Removing unreachable block (ram,0x002592f0) */
/* WARNING: Removing unreachable block (ram,0x0025981f) */
/* WARNING: Removing unreachable block (ram,0x002592fc) */
/* WARNING: Removing unreachable block (ram,0x002592fe) */
/* WARNING: Removing unreachable block (ram,0x00259309) */
/* WARNING: Removing unreachable block (ram,0x00258b19) */
/* WARNING: Removing unreachable block (ram,0x00259320) */
/* WARNING: Removing unreachable block (ram,0x0025932c) */
/* WARNING: Removing unreachable block (ram,0x002593d8) */
/* WARNING: Removing unreachable block (ram,0x00258fb8) */
/* WARNING: Removing unreachable block (ram,0x00258fbb) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */
/* std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::money_get<wchar_t,
   std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >
   >::_M_extract<false>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >,
   std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&,
   std::_Ios_Iostate&, std::string&) const */

var_4 *
var_15::money_get<var_2,std::istreambuf_iterator<var_2,var_15::var_1<var_2>>>::
var_3<false>(var_4 *var_5,var_4 param_2,var_6 *var_7,var_6 var_40,var_6 *var_8,
                 var_6 var_42,var_6 var_16,var_9 *var_10,var_11 *var_12)

{
  var_9 var_35;
  int *piVar2;
  type_1 var_25;
  bool bVar4;
  char var_38;
  var_9 var_18;
  type_1 *var_26;
  var_4 *puVar8;
  var_9 var_34;
  var_13<var_2,false> *var_21;
  int var_41;
  bool var_44;
  bool var_43;
  int var_27;
  int var_19;
  var_4 local_50;
  var_9 *var_32;
  var_9 var_31;
  var_9 var_33 [4];
  type_2 *var_45;
  var_9 var_28;
  type_2 var_46 [28];
  
  var_14<var_15::ctype<var_2>>((type_3 *)(var_16 + 0x6c));
  var_18 = type_3::id::var_17((type_4 *)PTR_id_0038edb4);
  piVar2 = (int *)(*(int *)(*(int *)(var_16 + 0x6c) + 0xc) + var_18 * 4);
  var_19 = *piVar2;
  if (var_19 == 0) {
                    /* try { // try from 002596a8 to 002596ac has its CatchHandler @ 0025995c */
    var_21 = (var_13<var_2,false> *)var_20(0x70);
    *(var_4 *)(var_21 + 4) = 0;
    *(var_4 *)(var_21 + 8) = 0;
    *(var_4 *)(var_21 + 0xc) = 0;
    var_21[0x10] = (var_13<var_2,false>)0x0;
    *(type_5 ***)var_21 = &PTR____moneypunct_cache_0038d7b8;
    *(var_4 *)(var_21 + 0x14) = 0;
    *(var_4 *)(var_21 + 0x18) = 0;
    *(var_4 *)(var_21 + 0x1c) = 0;
    *(var_4 *)(var_21 + 0x20) = 0;
    *(var_4 *)(var_21 + 0x24) = 0;
    *(var_4 *)(var_21 + 0x28) = 0;
    *(var_4 *)(var_21 + 0x2c) = 0;
    *(var_4 *)(var_21 + 0x30) = 0;
    *(var_4 *)(var_21 + 0x34) = 0;
    *(var_4 *)(var_21 + 0x38) = 0;
    *(var_4 *)(var_21 + 0x3c) = 0;
    var_21[0x6c] = (var_13<var_2,false>)0x0;
                    /* try { // try from 0025972d to 00259731 has its CatchHandler @ 0025995e */
    var_13<var_2,false>::var_22(var_21,(type_3 *)(var_16 + 0x6c));
    locale::_Impl::var_23(*(type_6 **)(var_16 + 0x6c),(type_7 *)var_21,var_18);
    var_19 = *piVar2;
  }
  var_31 = 0;
  var_33[0] = var_33[0] & 0xffffff00;
  var_32 = var_33;
  if (*(char *)(var_19 + 0x10) != '\0') {
                    /* try { // try from 00258a0e to 00258a12 has its CatchHandler @ 00259964 */
    std::string::var_24((var_11 *)&var_32,0x20);
  }
  var_28 = 0;
  var_46[0] = 0;
  var_45 = var_46;
                    /* try { // try from 00258a3e to 00259681 has its CatchHandler @ 00259960 */
  std::string::var_24((var_11 *)&var_45,0x20);
  var_27 = 1;
  local_50 = *(var_4 *)(var_19 + 0x3c);
  var_26 = (type_1 *)&local_50;
  var_25 = (type_1)local_50;
  while( true ) {
    if (var_25 < 5) {
                    /* WARNING: Could not recover jumptable at 0x00258ab2. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      puVar8 = (var_4 *)
               (*(type_8 *)((int)&_GLOBAL_OFFSET_TABLE_ + *(int *)(&DAT_002a6e08 + (var_9)*var_26 * 4))
               )();
      return puVar8;
    }
    if (3 < var_27) break;
    var_26 = (type_1 *)((int)&local_50 + var_27);
    var_25 = *var_26;
    var_27 = var_27 + 1;
  }
  if ((var_28 < 2) ||
     (var_18 = var_15::var_11::var_29((var_11 *)&var_45,'0',0), var_18 == 0))
  goto LAB_00259336;
  if (var_18 == 0xffffffff) {
    var_18 = var_28 - 1;
    if (var_18 == 0xffffffff) {
      *var_45 = 0;
      goto LAB_00259336;
    }
    if (var_18 == 0) goto LAB_00259336;
  }
  if (var_28 < var_18) {
    var_18 = var_28;
  }
  std::string::var_30((var_11 *)&var_45,0,var_18);
LAB_00259336:
  var_18 = var_31;
  if (var_31 != 0) {
    var_35 = var_31 + 1;
    var_34 = 0xf;
    if (var_32 != var_33) {
      var_34 = var_33[0];
    }
    if (var_34 < var_35) {
      std::string::var_36((var_11 *)&var_32,var_31,0,(char *)0x0,1);
    }
    *(type_2 *)((int)var_32 + var_18) = 0;
    *(type_2 *)((int)var_32 + var_18 + 1) = 0;
    var_31 = var_35;
    var_38 = var_37(*(char **)(var_19 + 8),*(var_9 *)(var_19 + 0xc),(var_11 *)&var_32
                             );
    if (var_38 == '\0') {
      *var_10 = *var_10 | 4;
    }
  }
  std::string::var_39(var_12,(var_11 *)&var_45);
  var_44 = var_7 != (int *)0x0 && var_40 == -1;
  var_43 = var_40 == -1;
  if (var_44) {
    if ((int *)var_7[2] < (int *)var_7[3]) {
      var_41 = *(int *)var_7[2];
    }
    else {
      var_41 = (**(type_8 **)(*var_7 + 0x24))(var_7);
    }
    var_43 = false;
    if (var_41 == -1) {
      var_7 = (int *)0x0;
      var_43 = var_44;
    }
  }
  bVar4 = var_8 != (int *)0x0 && var_42 == -1;
  var_44 = var_42 == -1;
  if (bVar4) {
    if ((int *)var_8[2] < (int *)var_8[3]) {
      var_41 = *(int *)var_8[2];
    }
    else {
      var_41 = (**(type_8 **)(*var_8 + 0x24))(var_8);
    }
    var_44 = false;
    if (var_41 == -1) {
      var_44 = bVar4;
    }
  }
  if (var_43 == var_44) {
    *var_10 = *var_10 | 2;
  }
  *var_5 = var_7;
  var_5[1] = var_40;
  if (var_45 != var_46) {
    var_47(var_45);
  }
  if (var_32 != var_33) {
    var_47(var_32);
  }
  return var_5;
}


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

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Removing unreachable block (ram,0x0025933c) */
/* WARNING: Removing unreachable block (ram,0x00259344) */
/* WARNING: Removing unreachable block (ram,0x00258b25) */
/* WARNING: Removing unreachable block (ram,0x00258b2d) */
/* WARNING: Removing unreachable block (ram,0x00258b38) */
/* WARNING: Removing unreachable block (ram,0x00259410) */
/* WARNING: Removing unreachable block (ram,0x00259841) */
/* WARNING: Removing unreachable block (ram,0x0025941c) */
/* WARNING: Removing unreachable block (ram,0x00259420) */
/* WARNING: Removing unreachable block (ram,0x002595b0) */
/* WARNING: Removing unreachable block (ram,0x00259429) */
/* WARNING: Removing unreachable block (ram,0x00258b40) */
/* WARNING: Removing unreachable block (ram,0x00258b4c) */
/* WARNING: Removing unreachable block (ram,0x002594e0) */
/* WARNING: Removing unreachable block (ram,0x00258b58) */
/* WARNING: Removing unreachable block (ram,0x00258b5e) */
/* WARNING: Removing unreachable block (ram,0x00258adb) */
/* WARNING: Removing unreachable block (ram,0x00258ae8) */
/* WARNING: Removing unreachable block (ram,0x002591d0) */
/* WARNING: Removing unreachable block (ram,0x00258aee) */
/* WARNING: Removing unreachable block (ram,0x00258b6d) */
/* WARNING: Removing unreachable block (ram,0x00258b7e) */
/* WARNING: Removing unreachable block (ram,0x00259830) */
/* WARNING: Removing unreachable block (ram,0x00258b8a) */
/* WARNING: Removing unreachable block (ram,0x00258b8c) */
/* WARNING: Removing unreachable block (ram,0x00258b97) */
/* WARNING: Removing unreachable block (ram,0x00258b00) */
/* WARNING: Removing unreachable block (ram,0x002592f0) */
/* WARNING: Removing unreachable block (ram,0x0025981f) */
/* WARNING: Removing unreachable block (ram,0x002592fc) */
/* WARNING: Removing unreachable block (ram,0x002592fe) */
/* WARNING: Removing unreachable block (ram,0x00259309) */
/* WARNING: Removing unreachable block (ram,0x00258b19) */
/* WARNING: Removing unreachable block (ram,0x00259320) */
/* WARNING: Removing unreachable block (ram,0x0025932c) */
/* WARNING: Removing unreachable block (ram,0x002593d8) */
/* WARNING: Removing unreachable block (ram,0x00258fb8) */
/* WARNING: Removing unreachable block (ram,0x00258fbb) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

undefined4 *
MASKED(undefined4 *param_1,undefined4 param_2,int *param_3,int param_4,int *param_5,
            int param_6,int param_7,uint *param_8,undefined4 param_9)

{
  uint uVar1;
  int *piVar2;
  byte bVar3;
  bool bVar4;
  char cVar5;
  int iVar6;
  byte *pbVar7;
  undefined4 *puVar8;
  uint uVar9;
  uint uVar10;
  bool bVar11;
  bool bVar12;
  int local_78;
  int local_64;
  undefined4 local_50;
  uint *local_4c;
  uint local_48;
  uint local_44 [4];
  undefined1 *local_34;
  uint local_30;
  undefined1 local_2c [28];
  
  FUN_0023c1d0(param_7 + 0x6c);
  iVar6 = FUN_001e9740(PTR_DAT_0038edb4);
  piVar2 = (int *)(*(int *)(*(int *)(param_7 + 0x6c) + 0xc) + iVar6 * 4);
  local_64 = *piVar2;
  if (local_64 == 0) {
                    /* try { // try from 002596a8 to 002596ac has its CatchHandler @ 0025995c */
    puVar8 = (undefined4 *)FUN_001e5200(0x70);
    puVar8[1] = 0;
    puVar8[2] = 0;
    puVar8[3] = 0;
    *(undefined1 *)(puVar8 + 4) = 0;
    *puVar8 = &PTR_FUN_0038d7b8;
    puVar8[5] = 0;
    puVar8[6] = 0;
    puVar8[7] = 0;
    puVar8[8] = 0;
    puVar8[9] = 0;
    puVar8[10] = 0;
    puVar8[0xb] = 0;
    puVar8[0xc] = 0;
    puVar8[0xd] = 0;
    puVar8[0xe] = 0;
    puVar8[0xf] = 0;
    *(undefined1 *)(puVar8 + 0x1b) = 0;
                    /* try { // try from 0025972d to 00259731 has its CatchHandler @ 0025995e */
    FUN_0023d400(puVar8,param_7 + 0x6c);
    FUN_001e9c50(*(undefined4 *)(param_7 + 0x6c),puVar8,iVar6);
    local_64 = *piVar2;
  }
  local_48 = 0;
  local_44[0] = local_44[0] & 0xffffff00;
  local_4c = local_44;
  if (*(char *)(local_64 + 0x10) != '\0') {
                    /* try { // try from 00258a0e to 00258a12 has its CatchHandler @ 00259964 */
    FUN_001ef040(&local_4c,0x20);
  }
  local_30 = 0;
  local_2c[0] = 0;
  local_34 = local_2c;
                    /* try { // try from 00258a3e to 00259681 has its CatchHandler @ 00259960 */
  FUN_001ef040(&local_34,0x20);
  local_78 = 1;
  local_50 = *(undefined4 *)(local_64 + 0x3c);
  pbVar7 = (byte *)&local_50;
  bVar3 = (byte)local_50;
  while( true ) {
    if (bVar3 < 5) {
                    /* WARNING: Could not recover jumptable at 0x00258ab2. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      puVar8 = (undefined4 *)
               (*(code *)((int)&__DT_PLTGOT + *(int *)(&DAT_002a6e08 + (uint)*pbVar7 * 4)))();
      return puVar8;
    }
    if (3 < local_78) break;
    pbVar7 = (byte *)((int)&local_50 + local_78);
    bVar3 = *pbVar7;
    local_78 = local_78 + 1;
  }
  if ((local_30 < 2) || (uVar10 = FUN_001f10a0(&local_34,0x30,0), uVar10 == 0)) goto LAB_00259336;
  if (uVar10 == 0xffffffff) {
    uVar10 = local_30 - 1;
    if (uVar10 == 0xffffffff) {
      *local_34 = 0;
      goto LAB_00259336;
    }
    if (uVar10 == 0) goto LAB_00259336;
  }
  if (local_30 < uVar10) {
    uVar10 = local_30;
  }
  FUN_001eebf0(&local_34,0,uVar10);
LAB_00259336:
  uVar10 = local_48;
  if (local_48 != 0) {
    uVar1 = local_48 + 1;
    uVar9 = 0xf;
    if (local_4c != local_44) {
      uVar9 = local_44[0];
    }
    if (uVar9 < uVar1) {
      FUN_001eeaa0(&local_4c,local_48,0,0,1);
    }
    *(undefined1 *)((int)local_4c + uVar10) = 0;
    *(undefined1 *)((int)local_4c + uVar10 + 1) = 0;
    local_48 = uVar1;
    cVar5 = FUN_0027aa00(*(undefined4 *)(local_64 + 8),*(undefined4 *)(local_64 + 0xc),&local_4c);
    if (cVar5 == '\0') {
      *param_8 = *param_8 | 4;
    }
  }
  FUN_001f0930(param_9,&local_34);
  bVar11 = param_3 != (int *)0x0 && param_4 == -1;
  bVar12 = param_4 == -1;
  if (bVar11) {
    if ((int *)param_3[2] < (int *)param_3[3]) {
      iVar6 = *(int *)param_3[2];
    }
    else {
      iVar6 = (**(code **)(*param_3 + 0x24))(param_3);
    }
    bVar12 = false;
    if (iVar6 == -1) {
      param_3 = (int *)0x0;
      bVar12 = bVar11;
    }
  }
  bVar4 = param_5 != (int *)0x0 && param_6 == -1;
  bVar11 = param_6 == -1;
  if (bVar4) {
    if ((int *)param_5[2] < (int *)param_5[3]) {
      iVar6 = *(int *)param_5[2];
    }
    else {
      iVar6 = (**(code **)(*param_5 + 0x24))(param_5);
    }
    bVar11 = false;
    if (iVar6 == -1) {
      bVar11 = bVar4;
    }
  }
  if (bVar12 == bVar11) {
    *param_8 = *param_8 | 2;
  }
  *param_1 = param_3;
  param_1[1] = param_4;
  if (local_34 != local_2c) {
    FUN_001e6db0(local_34);
  }
  if (local_4c != local_44) {
    FUN_001e6db0(local_4c);
  }
  return param_1;
}

