
/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* std::ios_base::failure[abi:cxx11]::failure(std::string const&) */

void __thiscall std::ios_base::failure[abi:cxx11]::failure(failure_abi_cxx11_ *this,string *param_1)

{
  int iVar1;
  uint uVar2;
  int *piVar3;
  int *piVar4;
  undefined4 *puVar5;
  undefined4 uStack_90;
  undefined1 auStack_8c [4];
  uint *local_88;
  int local_84;
  string *local_80;
  uint local_7c;
  int *local_78;
  uint *local_74;
  uint *local_70;
  uint *local_64;
  int local_60;
  uint local_5c [4];
  uint *local_4c;
  int local_48;
  uint local_44 [4];
  int *local_34;
  int local_30;
  int local_2c;
  int local_28;
  int local_24;
  int local_20;
  
  puVar5 = (undefined4 *)auStack_8c;
  uStack_90 = 0x23e67e;
  local_78 = (int *)iostream_category();
  local_80 = (string *)&local_4c;
  if (*(code **)(*local_78 + 0x10) == ::(anonymous_namespace)::io_error_category::message_abi_cxx11_
     ) {
    local_74 = local_44;
    local_48 = 0;
    local_44[0] = local_44[0] & 0xffffff00;
    local_4c = local_74;
                    /* try { // try from 0023e6bc to 0023e6c0 has its CatchHandler @ 0023e897 */
    std::string::_M_replace((string *)&local_4c,0,0,"iostream error",0xe);
  }
  else {
    (**(code **)(*local_78 + 0x10))((string *)&local_4c,local_78,1);
    local_74 = local_44;
    puVar5 = &uStack_90;
  }
  local_70 = local_5c;
  iVar1 = *(int *)param_1;
  *(undefined4 *)((int)puVar5 + -4) = 0;
  *(int *)((int)puVar5 + -8) = *(int *)(param_1 + 4) + iVar1;
  *(int *)((int)puVar5 + -0xc) = iVar1;
  *(uint ***)((int)puVar5 + -0x10) = &local_64;
                    /* try { // try from 0023e6e4 to 0023e6e8 has its CatchHandler @ 0023e89e */
  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e6e9;
  local_64 = local_70;
  __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::_M_construct<char*>();
  if (0x7fffffffU - local_60 < 2) {
    *(char **)((int)puVar5 + -0x10) = "basic_string::append";
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0023e883 to 0023e887 has its CatchHandler @ 0023e8a5 */
    *(undefined1 **)((int)puVar5 + -0x14) = &LAB_0023e888;
    __throw_length_error(*(char **)((int)puVar5 + -0x10));
  }
  *(undefined4 *)((int)puVar5 + -8) = 2;
  *(undefined **)((int)puVar5 + -0xc) = &DAT_002bb1e1;
  *(uint ***)((int)puVar5 + -0x10) = &local_64;
                    /* try { // try from 0023e70a to 0023e70e has its CatchHandler @ 0023e8a5 */
  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e70f;
  std::string::_M_append
            (*(string **)((int)puVar5 + -0x10),*(char **)((int)puVar5 + -0xc),
             *(uint *)((int)puVar5 + -8));
  local_84 = local_60;
  local_88 = local_64;
  local_7c = 0xf;
  if (local_64 != local_70) {
    local_7c = local_5c[0];
  }
  if (local_7c < (uint)(local_60 + local_48)) {
    uVar2 = 0xf;
    if (local_4c != local_74) {
      uVar2 = local_44[0];
    }
    if (uVar2 < (uint)(local_60 + local_48)) goto LAB_0023e751;
    *(int *)((int)puVar5 + -0x10) = local_60;
    *(uint **)((int)puVar5 + -0x14) = local_64;
    *(undefined4 *)((int)puVar5 + -0x18) = 0;
    *(undefined4 *)((int)puVar5 + -0x1c) = 0;
    *(string **)((int)puVar5 + -0x20) = local_80;
                    /* try { // try from 0023e825 to 0023e829 has its CatchHandler @ 0023e890 */
    *(undefined4 *)((int)puVar5 + -0x24) = 0x23e82a;
    piVar3 = (int *)std::string::_M_replace
                              (*(string **)((int)puVar5 + -0x20),*(uint *)((int)puVar5 + -0x1c),
                               *(uint *)((int)puVar5 + -0x18),*(char **)((int)puVar5 + -0x14),
                               *(uint *)((int)puVar5 + -0x10));
    piVar4 = piVar3 + 2;
    local_34 = (int *)*piVar3;
    if (local_34 == piVar4) goto LAB_0023e840;
  }
  else {
LAB_0023e751:
    *(int *)((int)puVar5 + -8) = local_48;
    *(uint **)((int)puVar5 + -0xc) = local_4c;
    *(uint ***)((int)puVar5 + -0x10) = &local_64;
                    /* try { // try from 0023e759 to 0023e75d has its CatchHandler @ 0023e890 */
    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e;
    piVar3 = (int *)std::string::_M_append
                              (*(string **)((int)puVar5 + -0x10),*(char **)((int)puVar5 + -0xc),
                               *(uint *)((int)puVar5 + -8));
    piVar4 = piVar3 + 2;
    local_34 = (int *)*piVar3;
    if (local_34 == piVar4) {
LAB_0023e840:
      local_34 = &local_2c;
      local_2c = piVar3[2];
      local_28 = piVar3[3];
      local_24 = piVar3[4];
      local_20 = piVar3[5];
      goto LAB_0023e77d;
    }
  }
  local_2c = piVar3[2];
LAB_0023e77d:
  local_30 = piVar3[1];
  *(undefined1 *)(piVar3 + 2) = 0;
  *piVar3 = (int)piVar4;
  piVar3[1] = 0;
  *(int ***)((int)puVar5 + -0xc) = &local_34;
  *(failure_abi_cxx11_ **)((int)puVar5 + -0x10) = this;
                    /* try { // try from 0023e79c to 0023e7a0 has its CatchHandler @ 0023e888 */
  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7a1;
  runtime_error::runtime_error
            (*(runtime_error **)((int)puVar5 + -0x10),*(string **)((int)puVar5 + -0xc));
  if (local_34 != &local_2c) {
    *(int **)((int)puVar5 + -0x10) = local_34;
    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7b4;
    operator_delete(*(void **)((int)puVar5 + -0x10));
  }
  if (local_64 != local_70) {
    *(uint **)((int)puVar5 + -0x10) = local_64;
    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7ca;
    operator_delete(*(void **)((int)puVar5 + -0x10));
  }
  if (local_4c != local_74) {
    *(uint **)((int)puVar5 + -0x10) = local_4c;
    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7e0;
    operator_delete(*(void **)((int)puVar5 + -0x10));
  }
  *(undefined4 *)(this + 8) = 1;
  *(int **)(this + 0xc) = local_78;
  *(undefined ***)this = &PTR__failure_003ad1b0;
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

void FUN_0023e660(undefined4 *param_1,int *param_2)

{
  int iVar1;
  uint uVar2;
  int *piVar3;
  int *piVar4;
  undefined4 *puVar5;
  undefined4 uStack_90;
  undefined1 auStack_8c [4];
  uint *local_88;
  int local_84;
  undefined4 **local_80;
  uint local_7c;
  int *local_78;
  uint *local_74;
  uint *local_70;
  uint *local_64;
  int local_60;
  uint local_5c [4];
  uint *local_4c;
  int local_48;
  uint local_44 [4];
  int *local_34;
  int local_30;
  int local_2c;
  int local_28;
  int local_24;
  int local_20;
  
  puVar5 = (undefined4 *)auStack_8c;
  uStack_90 = 0x23e67e;
  local_78 = (int *)FUN_0023e5f0();
  local_80 = &local_4c;
  if (*(code **)(*local_78 + 0x10) == FUN_0023e570) {
    local_74 = local_44;
    local_48 = 0;
    local_44[0] = local_44[0] & 0xffffff00;
    local_4c = local_74;
                    /* try { // try from 0023e6bc to 0023e6c0 has its CatchHandler @ 0023e897 */
    FUN_00207c70(&local_4c,0,0,"iostream error",0xe);
  }
  else {
    (**(code **)(*local_78 + 0x10))(&local_4c,local_78,1);
    local_74 = local_44;
    puVar5 = &uStack_90;
  }
  local_70 = local_5c;
  iVar1 = *param_2;
  *(undefined4 *)((int)puVar5 + -4) = 0;
  *(int *)((int)puVar5 + -8) = param_2[1] + iVar1;
  *(int *)((int)puVar5 + -0xc) = iVar1;
  *(uint ***)((int)puVar5 + -0x10) = &local_64;
                    /* try { // try from 0023e6e4 to 0023e6e8 has its CatchHandler @ 0023e89e */
  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e6e9;
  local_64 = local_70;
  FUN_00068b30();
  if (0x7fffffffU - local_60 < 2) {
    *(char **)((int)puVar5 + -0x10) = "basic_string::append";
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0023e883 to 0023e887 has its CatchHandler @ 0023e8a5 */
    *(undefined1 **)((int)puVar5 + -0x14) = &LAB_0023e888;
    FUN_00244a20();
  }
  *(undefined4 *)((int)puVar5 + -8) = 2;
  *(undefined **)((int)puVar5 + -0xc) = &DAT_002bb1e1;
  *(uint ***)((int)puVar5 + -0x10) = &local_64;
                    /* try { // try from 0023e70a to 0023e70e has its CatchHandler @ 0023e8a5 */
  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e70f;
  FUN_00208840();
  local_84 = local_60;
  local_88 = local_64;
  local_7c = 0xf;
  if (local_64 != local_70) {
    local_7c = local_5c[0];
  }
  if (local_7c < (uint)(local_60 + local_48)) {
    uVar2 = 0xf;
    if (local_4c != local_74) {
      uVar2 = local_44[0];
    }
    if (uVar2 < (uint)(local_60 + local_48)) goto LAB_0023e751;
    *(int *)((int)puVar5 + -0x10) = local_60;
    *(uint **)((int)puVar5 + -0x14) = local_64;
    *(undefined4 *)((int)puVar5 + -0x18) = 0;
    *(undefined4 *)((int)puVar5 + -0x1c) = 0;
    *(undefined4 ***)((int)puVar5 + -0x20) = local_80;
                    /* try { // try from 0023e825 to 0023e829 has its CatchHandler @ 0023e890 */
    *(undefined4 *)((int)puVar5 + -0x24) = 0x23e82a;
    piVar3 = (int *)FUN_00207c70();
    piVar4 = piVar3 + 2;
    local_34 = (int *)*piVar3;
    if (local_34 == piVar4) goto LAB_0023e840;
  }
  else {
LAB_0023e751:
    *(int *)((int)puVar5 + -8) = local_48;
    *(uint **)((int)puVar5 + -0xc) = local_4c;
    *(uint ***)((int)puVar5 + -0x10) = &local_64;
                    /* try { // try from 0023e759 to 0023e75d has its CatchHandler @ 0023e890 */
    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e;
    piVar3 = (int *)FUN_00208840();
    piVar4 = piVar3 + 2;
    local_34 = (int *)*piVar3;
    if (local_34 == piVar4) {
LAB_0023e840:
      local_34 = &local_2c;
      local_2c = piVar3[2];
      local_28 = piVar3[3];
      local_24 = piVar3[4];
      local_20 = piVar3[5];
      goto LAB_0023e77d;
    }
  }
  local_2c = piVar3[2];
LAB_0023e77d:
  local_30 = piVar3[1];
  *(undefined1 *)(piVar3 + 2) = 0;
  *piVar3 = (int)piVar4;
  piVar3[1] = 0;
  *(int ***)((int)puVar5 + -0xc) = &local_34;
  *(undefined4 **)((int)puVar5 + -0x10) = param_1;
                    /* try { // try from 0023e79c to 0023e7a0 has its CatchHandler @ 0023e888 */
  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7a1;
  FUN_002845b0();
  if (local_34 != &local_2c) {
    *(int **)((int)puVar5 + -0x10) = local_34;
    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7b4;
    FUN_001ff030();
  }
  if (local_64 != local_70) {
    *(uint **)((int)puVar5 + -0x10) = local_64;
    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7ca;
    FUN_001ff030();
  }
  if (local_4c != local_74) {
    *(uint **)((int)puVar5 + -0x10) = local_4c;
    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7e0;
    FUN_001ff030();
  }
  param_1[2] = 1;
  param_1[3] = local_78;
  *param_1 = &PTR_FUN_003ad1b0;
  return;
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
LEA EDI,[EBP + -0x48]
CALL 0x0004a046
ADD ESI,0x170993
PUSH EBX
SUB ESP,0x7c
MOV EBX,ESI
CALL 0x0023e5f0
LEA EDX,[ESI + 0xffe8f570]
MOV dword ptr [EBP + -0x7c],EDI
MOV dword ptr [EBP + -0x74],EAX
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x10]
CMP EAX,EDX
JNZ 0x0023e860
LEA EAX,[EBP + -0x40]
SUB ESP,0xc
MOV dword ptr [EBP + -0x44],0x0
MOV dword ptr [EBP + -0x70],EAX
MOV dword ptr [EBP + -0x48],EAX
LEA EAX,[ESI + 0xfff11d15]
PUSH 0xe
PUSH EAX
PUSH 0x0
PUSH 0x0
PUSH EDI
MOV byte ptr [EBP + -0x40],0x0
CALL 0x00207c70
ADD ESP,0x20
LEA EAX,[EBP + -0x58]
MOV ECX,dword ptr [EBP + 0xc]
LEA EDI,[EBP + -0x60]
MOV EBX,ESI
MOV dword ptr [EBP + -0x6c],EAX
MOV dword ptr [EBP + -0x60],EAX
MOV EAX,dword ptr [EBP + 0xc]
MOV EAX,dword ptr [EAX]
PUSH 0x0
MOV EDX,dword ptr [ECX + 0x4]
ADD EDX,EAX
PUSH EDX
PUSH EAX
PUSH EDI
CALL 0x00068b30
MOV EAX,0x7fffffff
SUB EAX,dword ptr [EBP + -0x5c]
ADD ESP,0x10
CMP EAX,0x1
JBE 0x0023e879
SUB ESP,0x4
LEA EAX,[ESI + 0xfff0c1e1]
PUSH 0x2
PUSH EAX
PUSH EDI
CALL 0x00208840
MOV EAX,dword ptr [EBP + -0x5c]
MOV EDX,dword ptr [EBP + -0x44]
ADD ESP,0x10
MOV dword ptr [EBP + -0x80],EAX
LEA ECX,[EAX + EDX*0x1]
MOV EAX,dword ptr [EBP + -0x60]
MOV EBX,EAX
MOV dword ptr [EBP + 0xffffff7c],EAX
MOV EAX,0xf
CMP EBX,dword ptr [EBP + -0x6c]
MOV EBX,EAX
CMOVNZ EBX,dword ptr [EBP + -0x58]
MOV dword ptr [EBP + -0x78],EBX
MOV EBX,dword ptr [EBP + -0x48]
CMP ECX,dword ptr [EBP + -0x78]
JBE 0x0023e751
CMP EBX,dword ptr [EBP + -0x70]
CMOVNZ EAX,dword ptr [EBP + -0x40]
CMP ECX,EAX
JBE 0x0023e810
SUB ESP,0x4
PUSH EDX
PUSH EBX
MOV EBX,ESI
PUSH EDI
CALL 0x00208840
LEA EDI,[EBP + -0x28]
LEA EDX,[EAX + 0x8]
ADD ESP,0x10
MOV dword ptr [EBP + -0x30],EDI
MOV ECX,dword ptr [EAX]
CMP ECX,EDX
JZ 0x0023e840
MOV dword ptr [EBP + -0x30],ECX
MOV ECX,dword ptr [EAX + 0x8]
MOV dword ptr [EBP + -0x28],ECX
MOV ECX,dword ptr [EAX + 0x4]
MOV byte ptr [EAX + 0x8],0x0
SUB ESP,0x8
MOV EBX,ESI
MOV dword ptr [EBP + -0x2c],ECX
MOV dword ptr [EAX],EDX
MOV dword ptr [EAX + 0x4],0x0
LEA EAX,[EBP + -0x30]
PUSH EAX
PUSH dword ptr [EBP + 0x8]
CALL 0x002845b0
MOV EAX,dword ptr [EBP + -0x30]
ADD ESP,0x10
CMP EAX,EDI
JZ 0x0023e7b7
SUB ESP,0xc
PUSH EAX
CALL 0x001ff030
ADD ESP,0x10
MOV EAX,dword ptr [EBP + -0x60]
CMP EAX,dword ptr [EBP + -0x6c]
JZ 0x0023e7cd
SUB ESP,0xc
MOV EBX,ESI
PUSH EAX
CALL 0x001ff030
ADD ESP,0x10
MOV EAX,dword ptr [EBP + -0x48]
CMP EAX,dword ptr [EBP + -0x70]
JZ 0x0023e7e3
SUB ESP,0xc
MOV EBX,ESI
PUSH EAX
CALL 0x001ff030
ADD ESP,0x10
MOV EAX,dword ptr [EBP + 0x8]
MOV EDX,dword ptr [EBP + -0x74]
MOV dword ptr [EAX + 0x8],0x1
MOV dword ptr [EAX + 0xc],EDX
LEA EAX,[ESI + 0xffffe1a8]
MOV ESI,dword ptr [EBP + 0x8]
ADD EAX,0x8
MOV dword ptr [ESI],EAX
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0xc
PUSH dword ptr [EBP + -0x80]
MOV EBX,ESI
PUSH dword ptr [EBP + 0xffffff7c]
PUSH 0x0
PUSH 0x0
PUSH dword ptr [EBP + -0x7c]
CALL 0x00207c70
LEA EDI,[EBP + -0x28]
LEA EDX,[EAX + 0x8]
ADD ESP,0x20
MOV dword ptr [EBP + -0x30],EDI
MOV ECX,dword ptr [EAX]
CMP ECX,EDX
JNZ 0x0023e774
MOV ECX,dword ptr [EAX + 0x8]
MOV dword ptr [EBP + -0x28],ECX
MOV ECX,dword ptr [EAX + 0xc]
MOV dword ptr [EBP + -0x24],ECX
MOV ECX,dword ptr [EAX + 0x10]
MOV dword ptr [EBP + -0x20],ECX
MOV ECX,dword ptr [EAX + 0x14]
MOV dword ptr [EBP + -0x1c],ECX
JMP 0x0023e77d
SUB ESP,0x4
PUSH 0x1
PUSH dword ptr [EBP + -0x74]
PUSH EDI
CALL EAX
LEA EAX,[EBP + -0x40]
ADD ESP,0xc
MOV dword ptr [EBP + -0x70],EAX
JMP 0x0023e6c4
SUB ESP,0xc
LEA EAX,[ESI + 0xffef309f]
PUSH EAX
CALL 0x00244a20
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n\nvoid FUN_0023e660(undefined4 *param_1,int *param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  int *piVar3;\n  int *piVar4;\n  undefined4 *puVar5;\n  undefined4 uStack_90;\n  undefined1 auStack_8c [4];\n  uint *local_88;\n  int local_84;\n  undefined4 **local_80;\n  uint local_7c;\n  int *local_78;\n  uint *local_74;\n  uint *local_70;\n  uint *local_64;\n  int local_60;\n  uint local_5c [4];\n  uint *local_4c;\n  int local_48;\n  uint local_44 [4];\n  int *local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  puVar5 = (undefined4 *)auStack_8c;\n  uStack_90 = 0x23e67e;\n  local_78 = (int *)FUN_0023e5f0();\n  local_80 = &local_4c;\n  if (*(code **)(*local_78 + 0x10) == FUN_0023e570) {\n    local_74 = local_44;\n    local_48 = 0;\n    local_44[0] = local_44[0] & 0xffffff00;\n    local_4c = local_74;\n                    /* try { // try from 0023e6bc to 0023e6c0 has its CatchHandler @ 0023e897 */\n    FUN_00207c70(&local_4c,0,0,"iostream error",0xe);\n  }\n  else {\n    (**(code **)(*local_78 + 0x10))(&local_4c,local_78,1);\n    local_74 = local_44;\n    puVar5 = &uStack_90;\n  }\n  local_70 = local_5c;\n  iVar1 = *param_2;\n  *(undefined4 *)((int)puVar5 + -4) = 0;\n  *(int *)((int)puVar5 + -8) = param_2[1] + iVar1;\n  *(int *)((int)puVar5 + -0xc) = iVar1;\n  *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    /* try { // try from 0023e6e4 to 0023e6e8 has its CatchHandler @ 0023e89e */\n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e6e9;\n  local_64 = local_70;\n  FUN_00068b30();\n  if (0x7fffffffU - local_60 < 2) {\n    *(char **)((int)puVar5 + -0x10) = "basic_string::append";\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0023e883 to 0023e887 has its CatchHandler @ 0023e8a5 */\n    *(undefined1 **)((int)puVar5 + -0x14) = &LAB_0023e888;\n    FUN_00244a20();\n  }\n  *(undefined4 *)((int)puVar5 + -8) = 2;\n  *(undefined **)((int)puVar5 + -0xc) = &DAT_002bb1e1;\n  *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    /* try { // try from 0023e70a to 0023e70e has its CatchHandler @ 0023e8a5 */\n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e70f;\n  FUN_00208840();\n  local_84 = local_60;\n  local_88 = local_64;\n  local_7c = 0xf;\n  if (local_64 != local_70) {\n    local_7c = local_5c[0];\n  }\n  if (local_7c < (uint)(local_60 + local_48)) {\n    uVar2 = 0xf;\n    if (local_4c != local_74) {\n      uVar2 = local_44[0];\n    }\n    if (uVar2 < (uint)(local_60 + local_48)) goto LAB_0023e751;\n    *(int *)((int)puVar5 + -0x10) = local_60;\n    *(uint **)((int)puVar5 + -0x14) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x18) = 0;\n    *(undefined4 *)((int)puVar5 + -0x1c) = 0;\n    *(undefined4 ***)((int)puVar5 + -0x20) = local_80;\n                    /* try { // try from 0023e825 to 0023e829 has its CatchHandler @ 0023e890 */\n    *(undefined4 *)((int)puVar5 + -0x24) = 0x23e82a;\n    piVar3 = (int *)FUN_00207c70();\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) goto LAB_0023e840;\n  }\n  else {\nLAB_0023e751:\n    *(int *)((int)puVar5 + -8) = local_48;\n    *(uint **)((int)puVar5 + -0xc) = local_4c;\n    *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    /* try { // try from 0023e759 to 0023e75d has its CatchHandler @ 0023e890 */\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e;\n    piVar3 = (int *)FUN_00208840();\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) {\nLAB_0023e840:\n      local_34 = &local_2c;\n      local_2c = piVar3[2];\n      local_28 = piVar3[3];\n      local_24 = piVar3[4];\n      local_20 = piVar3[5];\n      goto LAB_0023e77d;\n    }\n  }\n  local_2c = piVar3[2];\nLAB_0023e77d:\n  local_30 = piVar3[1];\n  *(undefined1 *)(piVar3 + 2) = 0;\n  *piVar3 = (int)piVar4;\n  piVar3[1] = 0;\n  *(int ***)((int)puVar5 + -0xc) = &local_34;\n  *(undefined4 **)((int)puVar5 + -0x10) = param_1;\n                    /* try { // try from 0023e79c to 0023e7a0 has its CatchHandler @ 0023e888 */\n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7a1;\n  FUN_002845b0();\n  if (local_34 != &local_2c) {\n    *(int **)((int)puVar5 + -0x10) = local_34;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7b4;\n    FUN_001ff030();\n  }\n  if (local_64 != local_70) {\n    *(uint **)((int)puVar5 + -0x10) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7ca;\n    FUN_001ff030();\n  }\n  if (local_4c != local_74) {\n    *(uint **)((int)puVar5 + -0x10) = local_4c;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7e0;\n    FUN_001ff030();\n  }\n  param_1[2] = 1;\n  param_1[3] = local_78;\n  *param_1 = &PTR_FUN_003ad1b0;\n  return;\n}\n\n" comment (function_definition "void FUN_0023e660(undefined4 *param_1,int *param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  int *piVar3;\n  int *piVar4;\n  undefined4 *puVar5;\n  undefined4 uStack_90;\n  undefined1 auStack_8c [4];\n  uint *local_88;\n  int local_84;\n  undefined4 **local_80;\n  uint local_7c;\n  int *local_78;\n  uint *local_74;\n  uint *local_70;\n  uint *local_64;\n  int local_60;\n  uint local_5c [4];\n  uint *local_4c;\n  int local_48;\n  uint local_44 [4];\n  int *local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  puVar5 = (undefined4 *)auStack_8c;\n  uStack_90 = 0x23e67e;\n  local_78 = (int *)FUN_0023e5f0();\n  local_80 = &local_4c;\n  if (*(code **)(*local_78 + 0x10) == FUN_0023e570) {\n    local_74 = local_44;\n    local_48 = 0;\n    local_44[0] = local_44[0] & 0xffffff00;\n    local_4c = local_74;\n                    /* try { // try from 0023e6bc to 0023e6c0 has its CatchHandler @ 0023e897 */\n    FUN_00207c70(&local_4c,0,0,"iostream error",0xe);\n  }\n  else {\n    (**(code **)(*local_78 + 0x10))(&local_4c,local_78,1);\n    local_74 = local_44;\n    puVar5 = &uStack_90;\n  }\n  local_70 = local_5c;\n  iVar1 = *param_2;\n  *(undefined4 *)((int)puVar5 + -4) = 0;\n  *(int *)((int)puVar5 + -8) = param_2[1] + iVar1;\n  *(int *)((int)puVar5 + -0xc) = iVar1;\n  *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    /* try { // try from 0023e6e4 to 0023e6e8 has its CatchHandler @ 0023e89e */\n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e6e9;\n  local_64 = local_70;\n  FUN_00068b30();\n  if (0x7fffffffU - local_60 < 2) {\n    *(char **)((int)puVar5 + -0x10) = "basic_string::append";\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0023e883 to 0023e887 has its CatchHandler @ 0023e8a5 */\n    *(undefined1 **)((int)puVar5 + -0x14) = &LAB_0023e888;\n    FUN_00244a20();\n  }\n  *(undefined4 *)((int)puVar5 + -8) = 2;\n  *(undefined **)((int)puVar5 + -0xc) = &DAT_002bb1e1;\n  *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    /* try { // try from 0023e70a to 0023e70e has its CatchHandler @ 0023e8a5 */\n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e70f;\n  FUN_00208840();\n  local_84 = local_60;\n  local_88 = local_64;\n  local_7c = 0xf;\n  if (local_64 != local_70) {\n    local_7c = local_5c[0];\n  }\n  if (local_7c < (uint)(local_60 + local_48)) {\n    uVar2 = 0xf;\n    if (local_4c != local_74) {\n      uVar2 = local_44[0];\n    }\n    if (uVar2 < (uint)(local_60 + local_48)) goto LAB_0023e751;\n    *(int *)((int)puVar5 + -0x10) = local_60;\n    *(uint **)((int)puVar5 + -0x14) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x18) = 0;\n    *(undefined4 *)((int)puVar5 + -0x1c) = 0;\n    *(undefined4 ***)((int)puVar5 + -0x20) = local_80;\n                    /* try { // try from 0023e825 to 0023e829 has its CatchHandler @ 0023e890 */\n    *(undefined4 *)((int)puVar5 + -0x24) = 0x23e82a;\n    piVar3 = (int *)FUN_00207c70();\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) goto LAB_0023e840;\n  }\n  else {\nLAB_0023e751:\n    *(int *)((int)puVar5 + -8) = local_48;\n    *(uint **)((int)puVar5 + -0xc) = local_4c;\n    *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    /* try { // try from 0023e759 to 0023e75d has its CatchHandler @ 0023e890 */\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e;\n    piVar3 = (int *)FUN_00208840();\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) {\nLAB_0023e840:\n      local_34 = &local_2c;\n      local_2c = piVar3[2];\n      local_28 = piVar3[3];\n      local_24 = piVar3[4];\n      local_20 = piVar3[5];\n      goto LAB_0023e77d;\n    }\n  }\n  local_2c = piVar3[2];\nLAB_0023e77d:\n  local_30 = piVar3[1];\n  *(undefined1 *)(piVar3 + 2) = 0;\n  *piVar3 = (int)piVar4;\n  piVar3[1] = 0;\n  *(int ***)((int)puVar5 + -0xc) = &local_34;\n  *(undefined4 **)((int)puVar5 + -0x10) = param_1;\n                    /* try { // try from 0023e79c to 0023e7a0 has its CatchHandler @ 0023e888 */\n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7a1;\n  FUN_002845b0();\n  if (local_34 != &local_2c) {\n    *(int **)((int)puVar5 + -0x10) = local_34;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7b4;\n    FUN_001ff030();\n  }\n  if (local_64 != local_70) {\n    *(uint **)((int)puVar5 + -0x10) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7ca;\n    FUN_001ff030();\n  }\n  if (local_4c != local_74) {\n    *(uint **)((int)puVar5 + -0x10) = local_4c;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7e0;\n    FUN_001ff030();\n  }\n  param_1[2] = 1;\n  param_1[3] = local_78;\n  *param_1 = &PTR_FUN_003ad1b0;\n  return;\n}" primitive_type (function_declarator "FUN_0023e660(undefined4 *param_1,int *param_2)" identifier (parameter_list "(undefined4 *param_1,int *param_2)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int *piVar3;\n  int *piVar4;\n  undefined4 *puVar5;\n  undefined4 uStack_90;\n  undefined1 auStack_8c [4];\n  uint *local_88;\n  int local_84;\n  undefined4 **local_80;\n  uint local_7c;\n  int *local_78;\n  uint *local_74;\n  uint *local_70;\n  uint *local_64;\n  int local_60;\n  uint local_5c [4];\n  uint *local_4c;\n  int local_48;\n  uint local_44 [4];\n  int *local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  puVar5 = (undefined4 *)auStack_8c;\n  uStack_90 = 0x23e67e;\n  local_78 = (int *)FUN_0023e5f0();\n  local_80 = &local_4c;\n  if (*(code **)(*local_78 + 0x10) == FUN_0023e570) {\n    local_74 = local_44;\n    local_48 = 0;\n    local_44[0] = local_44[0] & 0xffffff00;\n    local_4c = local_74;\n                    /* try { // try from 0023e6bc to 0023e6c0 has its CatchHandler @ 0023e897 */\n    FUN_00207c70(&local_4c,0,0,"iostream error",0xe);\n  }\n  else {\n    (**(code **)(*local_78 + 0x10))(&local_4c,local_78,1);\n    local_74 = local_44;\n    puVar5 = &uStack_90;\n  }\n  local_70 = local_5c;\n  iVar1 = *param_2;\n  *(undefined4 *)((int)puVar5 + -4) = 0;\n  *(int *)((int)puVar5 + -8) = param_2[1] + iVar1;\n  *(int *)((int)puVar5 + -0xc) = iVar1;\n  *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    /* try { // try from 0023e6e4 to 0023e6e8 has its CatchHandler @ 0023e89e */\n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e6e9;\n  local_64 = local_70;\n  FUN_00068b30();\n  if (0x7fffffffU - local_60 < 2) {\n    *(char **)((int)puVar5 + -0x10) = "basic_string::append";\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0023e883 to 0023e887 has its CatchHandler @ 0023e8a5 */\n    *(undefined1 **)((int)puVar5 + -0x14) = &LAB_0023e888;\n    FUN_00244a20();\n  }\n  *(undefined4 *)((int)puVar5 + -8) = 2;\n  *(undefined **)((int)puVar5 + -0xc) = &DAT_002bb1e1;\n  *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    /* try { // try from 0023e70a to 0023e70e has its CatchHandler @ 0023e8a5 */\n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e70f;\n  FUN_00208840();\n  local_84 = local_60;\n  local_88 = local_64;\n  local_7c = 0xf;\n  if (local_64 != local_70) {\n    local_7c = local_5c[0];\n  }\n  if (local_7c < (uint)(local_60 + local_48)) {\n    uVar2 = 0xf;\n    if (local_4c != local_74) {\n      uVar2 = local_44[0];\n    }\n    if (uVar2 < (uint)(local_60 + local_48)) goto LAB_0023e751;\n    *(int *)((int)puVar5 + -0x10) = local_60;\n    *(uint **)((int)puVar5 + -0x14) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x18) = 0;\n    *(undefined4 *)((int)puVar5 + -0x1c) = 0;\n    *(undefined4 ***)((int)puVar5 + -0x20) = local_80;\n                    /* try { // try from 0023e825 to 0023e829 has its CatchHandler @ 0023e890 */\n    *(undefined4 *)((int)puVar5 + -0x24) = 0x23e82a;\n    piVar3 = (int *)FUN_00207c70();\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) goto LAB_0023e840;\n  }\n  else {\nLAB_0023e751:\n    *(int *)((int)puVar5 + -8) = local_48;\n    *(uint **)((int)puVar5 + -0xc) = local_4c;\n    *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    /* try { // try from 0023e759 to 0023e75d has its CatchHandler @ 0023e890 */\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e;\n    piVar3 = (int *)FUN_00208840();\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) {\nLAB_0023e840:\n      local_34 = &local_2c;\n      local_2c = piVar3[2];\n      local_28 = piVar3[3];\n      local_24 = piVar3[4];\n      local_20 = piVar3[5];\n      goto LAB_0023e77d;\n    }\n  }\n  local_2c = piVar3[2];\nLAB_0023e77d:\n  local_30 = piVar3[1];\n  *(undefined1 *)(piVar3 + 2) = 0;\n  *piVar3 = (int)piVar4;\n  piVar3[1] = 0;\n  *(int ***)((int)puVar5 + -0xc) = &local_34;\n  *(undefined4 **)((int)puVar5 + -0x10) = param_1;\n                    /* try { // try from 0023e79c to 0023e7a0 has its CatchHandler @ 0023e888 */\n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7a1;\n  FUN_002845b0();\n  if (local_34 != &local_2c) {\n    *(int **)((int)puVar5 + -0x10) = local_34;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7b4;\n    FUN_001ff030();\n  }\n  if (local_64 != local_70) {\n    *(uint **)((int)puVar5 + -0x10) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7ca;\n    FUN_001ff030();\n  }\n  if (local_4c != local_74) {\n    *(uint **)((int)puVar5 + -0x10) = local_4c;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7e0;\n    FUN_001ff030();\n  }\n  param_1[2] = 1;\n  param_1[3] = local_78;\n  *param_1 = &PTR_FUN_003ad1b0;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 uStack_90;" type_identifier identifier ;) (declaration "undefined1 auStack_8c [4];" type_identifier (array_declarator "auStack_8c [4]" identifier [ number_literal ]) ;) (declaration "uint *local_88;" type_identifier (pointer_declarator "*local_88" * identifier) ;) (declaration "int local_84;" primitive_type identifier ;) (declaration "undefined4 **local_80;" type_identifier (pointer_declarator "**local_80" * (pointer_declarator "*local_80" * identifier)) ;) (declaration "uint local_7c;" type_identifier identifier ;) (declaration "int *local_78;" primitive_type (pointer_declarator "*local_78" * identifier) ;) (declaration "uint *local_74;" type_identifier (pointer_declarator "*local_74" * identifier) ;) (declaration "uint *local_70;" type_identifier (pointer_declarator "*local_70" * identifier) ;) (declaration "uint *local_64;" type_identifier (pointer_declarator "*local_64" * identifier) ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "uint local_5c [4];" type_identifier (array_declarator "local_5c [4]" identifier [ number_literal ]) ;) (declaration "uint *local_4c;" type_identifier (pointer_declarator "*local_4c" * identifier) ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "uint local_44 [4];" type_identifier (array_declarator "local_44 [4]" identifier [ number_literal ]) ;) (declaration "int *local_34;" primitive_type (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "puVar5 = (undefined4 *)auStack_8c;" (assignment_expression "puVar5 = (undefined4 *)auStack_8c" identifier = (cast_expression "(undefined4 *)auStack_8c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "uStack_90 = 0x23e67e;" (assignment_expression "uStack_90 = 0x23e67e" identifier = number_literal) ;) (expression_statement "local_78 = (int *)FUN_0023e5f0();" (assignment_expression "local_78 = (int *)FUN_0023e5f0()" identifier = (cast_expression "(int *)FUN_0023e5f0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0023e5f0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_80 = &local_4c;" (assignment_expression "local_80 = &local_4c" identifier = (pointer_expression "&local_4c" & identifier)) ;) (if_statement "if (*(code **)(*local_78 + 0x10) == FUN_0023e570) {\n    local_74 = local_44;\n    local_48 = 0;\n    local_44[0] = local_44[0] & 0xffffff00;\n    local_4c = local_74;\n                    /* try { // try from 0023e6bc to 0023e6c0 has its CatchHandler @ 0023e897 */\n    FUN_00207c70(&local_4c,0,0,"iostream error",0xe);\n  }\n  else {\n    (**(code **)(*local_78 + 0x10))(&local_4c,local_78,1);\n    local_74 = local_44;\n    puVar5 = &uStack_90;\n  }" if (parenthesized_expression "(*(code **)(*local_78 + 0x10) == FUN_0023e570)" ( (binary_expression "*(code **)(*local_78 + 0x10) == FUN_0023e570" (pointer_expression "*(code **)(*local_78 + 0x10)" * (cast_expression "(code **)(*local_78 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_78 + 0x10)" ( (binary_expression "*local_78 + 0x10" (pointer_expression "*local_78" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n    local_74 = local_44;\n    local_48 = 0;\n    local_44[0] = local_44[0] & 0xffffff00;\n    local_4c = local_74;\n                    /* try { // try from 0023e6bc to 0023e6c0 has its CatchHandler @ 0023e897 */\n    FUN_00207c70(&local_4c,0,0,"iostream error",0xe);\n  }" { (expression_statement "local_74 = local_44;" (assignment_expression "local_74 = local_44" identifier = 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_74;" (assignment_expression "local_4c = local_74" identifier = identifier) ;) comment (expression_statement "FUN_00207c70(&local_4c,0,0,"iostream error",0xe);" (call_expression "FUN_00207c70(&local_4c,0,0,"iostream error",0xe)" identifier (argument_list "(&local_4c,0,0,"iostream error",0xe)" ( (pointer_expression "&local_4c" & identifier) , number_literal , number_literal , (string_literal ""iostream error"" " string_content ") , number_literal ))) ;) }) (else_clause "else {\n    (**(code **)(*local_78 + 0x10))(&local_4c,local_78,1);\n    local_74 = local_44;\n    puVar5 = &uStack_90;\n  }" else (compound_statement "{\n    (**(code **)(*local_78 + 0x10))(&local_4c,local_78,1);\n    local_74 = local_44;\n    puVar5 = &uStack_90;\n  }" { (expression_statement "(**(code **)(*local_78 + 0x10))(&local_4c,local_78,1);" (call_expression "(**(code **)(*local_78 + 0x10))(&local_4c,local_78,1)" (parenthesized_expression "(**(code **)(*local_78 + 0x10))" ( (pointer_expression "**(code **)(*local_78 + 0x10)" * (pointer_expression "*(code **)(*local_78 + 0x10)" * (cast_expression "(code **)(*local_78 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_78 + 0x10)" ( (binary_expression "*local_78 + 0x10" (pointer_expression "*local_78" * identifier) + number_literal) ))))) )) (argument_list "(&local_4c,local_78,1)" ( (pointer_expression "&local_4c" & identifier) , identifier , number_literal ))) ;) (expression_statement "local_74 = local_44;" (assignment_expression "local_74 = local_44" identifier = identifier) ;) (expression_statement "puVar5 = &uStack_90;" (assignment_expression "puVar5 = &uStack_90" identifier = (pointer_expression "&uStack_90" & identifier)) ;) }))) (expression_statement "local_70 = local_5c;" (assignment_expression "local_70 = local_5c" identifier = identifier) ;) (expression_statement "iVar1 = *param_2;" (assignment_expression "iVar1 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(undefined4 *)((int)puVar5 + -4) = 0;" (assignment_expression "*(undefined4 *)((int)puVar5 + -4) = 0" (pointer_expression "*(undefined4 *)((int)puVar5 + -4)" * (cast_expression "(undefined4 *)((int)puVar5 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -4)" ( (binary_expression "(int)puVar5 + -4" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)((int)puVar5 + -8) = param_2[1] + iVar1;" (assignment_expression "*(int *)((int)puVar5 + -8) = param_2[1] + iVar1" (pointer_expression "*(int *)((int)puVar5 + -8)" * (cast_expression "(int *)((int)puVar5 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -8)" ( (binary_expression "(int)puVar5 + -8" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "param_2[1] + iVar1" (subscript_expression "param_2[1]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "*(int *)((int)puVar5 + -0xc) = iVar1;" (assignment_expression "*(int *)((int)puVar5 + -0xc) = iVar1" (pointer_expression "*(int *)((int)puVar5 + -0xc)" * (cast_expression "(int *)((int)puVar5 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0xc)" ( (binary_expression "(int)puVar5 + -0xc" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint ***)((int)puVar5 + -0x10) = &local_64;" (assignment_expression "*(uint ***)((int)puVar5 + -0x10) = &local_64" (pointer_expression "*(uint ***)((int)puVar5 + -0x10)" * (cast_expression "(uint ***)((int)puVar5 + -0x10)" ( (type_descriptor "uint ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&local_64" & identifier)) ;) comment (expression_statement "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e6e9;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e6e9" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar5 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x14)" ( (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "local_64 = local_70;" (assignment_expression "local_64 = local_70" identifier = identifier) ;) (expression_statement "FUN_00068b30();" (call_expression "FUN_00068b30()" identifier (argument_list "()" ( ))) ;) (if_statement "if (0x7fffffffU - local_60 < 2) {\n    *(char **)((int)puVar5 + -0x10) = "basic_string::append";\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0023e883 to 0023e887 has its CatchHandler @ 0023e8a5 */\n    *(undefined1 **)((int)puVar5 + -0x14) = &LAB_0023e888;\n    FUN_00244a20();\n  }" if (parenthesized_expression "(0x7fffffffU - local_60 < 2)" ( (binary_expression "0x7fffffffU - local_60 < 2" (binary_expression "0x7fffffffU - local_60" number_literal - identifier) < number_literal) )) (compound_statement "{\n    *(char **)((int)puVar5 + -0x10) = "basic_string::append";\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0023e883 to 0023e887 has its CatchHandler @ 0023e8a5 */\n    *(undefined1 **)((int)puVar5 + -0x14) = &LAB_0023e888;\n    FUN_00244a20();\n  }" { (expression_statement "*(char **)((int)puVar5 + -0x10) = "basic_string::append";" (assignment_expression "*(char **)((int)puVar5 + -0x10) = "basic_string::append"" (pointer_expression "*(char **)((int)puVar5 + -0x10)" * (cast_expression "(char **)((int)puVar5 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (string_literal ""basic_string::append"" " string_content ")) ;) comment comment (expression_statement "*(undefined1 **)((int)puVar5 + -0x14) = &LAB_0023e888;" (assignment_expression "*(undefined1 **)((int)puVar5 + -0x14) = &LAB_0023e888" (pointer_expression "*(undefined1 **)((int)puVar5 + -0x14)" * (cast_expression "(undefined1 **)((int)puVar5 + -0x14)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0x14)" ( (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&LAB_0023e888" & identifier)) ;) (expression_statement "FUN_00244a20();" (call_expression "FUN_00244a20()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(undefined4 *)((int)puVar5 + -8) = 2;" (assignment_expression "*(undefined4 *)((int)puVar5 + -8) = 2" (pointer_expression "*(undefined4 *)((int)puVar5 + -8)" * (cast_expression "(undefined4 *)((int)puVar5 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -8)" ( (binary_expression "(int)puVar5 + -8" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined **)((int)puVar5 + -0xc) = &DAT_002bb1e1;" (assignment_expression "*(undefined **)((int)puVar5 + -0xc) = &DAT_002bb1e1" (pointer_expression "*(undefined **)((int)puVar5 + -0xc)" * (cast_expression "(undefined **)((int)puVar5 + -0xc)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0xc)" ( (binary_expression "(int)puVar5 + -0xc" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&DAT_002bb1e1" & identifier)) ;) (expression_statement "*(uint ***)((int)puVar5 + -0x10) = &local_64;" (assignment_expression "*(uint ***)((int)puVar5 + -0x10) = &local_64" (pointer_expression "*(uint ***)((int)puVar5 + -0x10)" * (cast_expression "(uint ***)((int)puVar5 + -0x10)" ( (type_descriptor "uint ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&local_64" & identifier)) ;) comment (expression_statement "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e70f;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e70f" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar5 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x14)" ( (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00208840();" (call_expression "FUN_00208840()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_84 = local_60;" (assignment_expression "local_84 = local_60" identifier = identifier) ;) (expression_statement "local_88 = local_64;" (assignment_expression "local_88 = local_64" identifier = identifier) ;) (expression_statement "local_7c = 0xf;" (assignment_expression "local_7c = 0xf" identifier = number_literal) ;) (if_statement "if (local_64 != local_70) {\n    local_7c = local_5c[0];\n  }" if (parenthesized_expression "(local_64 != local_70)" ( (binary_expression "local_64 != local_70" identifier != identifier) )) (compound_statement "{\n    local_7c = local_5c[0];\n  }" { (expression_statement "local_7c = local_5c[0];" (assignment_expression "local_7c = local_5c[0]" identifier = (subscript_expression "local_5c[0]" identifier [ number_literal ])) ;) })) (if_statement "if (local_7c < (uint)(local_60 + local_48)) {\n    uVar2 = 0xf;\n    if (local_4c != local_74) {\n      uVar2 = local_44[0];\n    }\n    if (uVar2 < (uint)(local_60 + local_48)) goto LAB_0023e751;\n    *(int *)((int)puVar5 + -0x10) = local_60;\n    *(uint **)((int)puVar5 + -0x14) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x18) = 0;\n    *(undefined4 *)((int)puVar5 + -0x1c) = 0;\n    *(undefined4 ***)((int)puVar5 + -0x20) = local_80;\n                    /* try { // try from 0023e825 to 0023e829 has its CatchHandler @ 0023e890 */\n    *(undefined4 *)((int)puVar5 + -0x24) = 0x23e82a;\n    piVar3 = (int *)FUN_00207c70();\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) goto LAB_0023e840;\n  }\n  else {\nLAB_0023e751:\n    *(int *)((int)puVar5 + -8) = local_48;\n    *(uint **)((int)puVar5 + -0xc) = local_4c;\n    *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    /* try { // try from 0023e759 to 0023e75d has its CatchHandler @ 0023e890 */\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e;\n    piVar3 = (int *)FUN_00208840();\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) {\nLAB_0023e840:\n      local_34 = &local_2c;\n      local_2c = piVar3[2];\n      local_28 = piVar3[3];\n      local_24 = piVar3[4];\n      local_20 = piVar3[5];\n      goto LAB_0023e77d;\n    }\n  }" if (parenthesized_expression "(local_7c < (uint)(local_60 + local_48))" ( (binary_expression "local_7c < (uint)(local_60 + local_48)" identifier < (call_expression "(uint)(local_60 + local_48)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_60 + local_48)" ( (binary_expression "local_60 + local_48" identifier + identifier) )))) )) (compound_statement "{\n    uVar2 = 0xf;\n    if (local_4c != local_74) {\n      uVar2 = local_44[0];\n    }\n    if (uVar2 < (uint)(local_60 + local_48)) goto LAB_0023e751;\n    *(int *)((int)puVar5 + -0x10) = local_60;\n    *(uint **)((int)puVar5 + -0x14) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x18) = 0;\n    *(undefined4 *)((int)puVar5 + -0x1c) = 0;\n    *(undefined4 ***)((int)puVar5 + -0x20) = local_80;\n                    /* try { // try from 0023e825 to 0023e829 has its CatchHandler @ 0023e890 */\n    *(undefined4 *)((int)puVar5 + -0x24) = 0x23e82a;\n    piVar3 = (int *)FUN_00207c70();\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) goto LAB_0023e840;\n  }" { (expression_statement "uVar2 = 0xf;" (assignment_expression "uVar2 = 0xf" identifier = number_literal) ;) (if_statement "if (local_4c != local_74) {\n      uVar2 = local_44[0];\n    }" if (parenthesized_expression "(local_4c != local_74)" ( (binary_expression "local_4c != local_74" identifier != identifier) )) (compound_statement "{\n      uVar2 = local_44[0];\n    }" { (expression_statement "uVar2 = local_44[0];" (assignment_expression "uVar2 = local_44[0]" identifier = (subscript_expression "local_44[0]" identifier [ number_literal ])) ;) })) (if_statement "if (uVar2 < (uint)(local_60 + local_48)) goto LAB_0023e751;" if (parenthesized_expression "(uVar2 < (uint)(local_60 + local_48))" ( (binary_expression "uVar2 < (uint)(local_60 + local_48)" identifier < (call_expression "(uint)(local_60 + local_48)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_60 + local_48)" ( (binary_expression "local_60 + local_48" identifier + identifier) )))) )) (goto_statement "goto LAB_0023e751;" goto statement_identifier ;)) (expression_statement "*(int *)((int)puVar5 + -0x10) = local_60;" (assignment_expression "*(int *)((int)puVar5 + -0x10) = local_60" (pointer_expression "*(int *)((int)puVar5 + -0x10)" * (cast_expression "(int *)((int)puVar5 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)((int)puVar5 + -0x14) = local_64;" (assignment_expression "*(uint **)((int)puVar5 + -0x14) = local_64" (pointer_expression "*(uint **)((int)puVar5 + -0x14)" * (cast_expression "(uint **)((int)puVar5 + -0x14)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0x14)" ( (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)puVar5 + -0x18) = 0;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x18) = 0" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x18)" * (cast_expression "(undefined4 *)((int)puVar5 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x18)" ( (binary_expression "(int)puVar5 + -0x18" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)puVar5 + -0x1c) = 0;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x1c) = 0" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x1c)" * (cast_expression "(undefined4 *)((int)puVar5 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x1c)" ( (binary_expression "(int)puVar5 + -0x1c" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 ***)((int)puVar5 + -0x20) = local_80;" (assignment_expression "*(undefined4 ***)((int)puVar5 + -0x20) = local_80" (pointer_expression "*(undefined4 ***)((int)puVar5 + -0x20)" * (cast_expression "(undefined4 ***)((int)puVar5 + -0x20)" ( (type_descriptor "undefined4 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)puVar5 + -0x20)" ( (binary_expression "(int)puVar5 + -0x20" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) comment (expression_statement "*(undefined4 *)((int)puVar5 + -0x24) = 0x23e82a;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x24) = 0x23e82a" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x24)" * (cast_expression "(undefined4 *)((int)puVar5 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x24)" ( (binary_expression "(int)puVar5 + -0x24" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "piVar3 = (int *)FUN_00207c70();" (assignment_expression "piVar3 = (int *)FUN_00207c70()" identifier = (cast_expression "(int *)FUN_00207c70()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00207c70()" identifier (argument_list "()" ( ))))) ;) (expression_statement "piVar4 = piVar3 + 2;" (assignment_expression "piVar4 = piVar3 + 2" identifier = (binary_expression "piVar3 + 2" identifier + number_literal)) ;) (expression_statement "local_34 = (int *)*piVar3;" (assignment_expression "local_34 = (int *)*piVar3" identifier = (cast_expression "(int *)*piVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar3" * identifier))) ;) (if_statement "if (local_34 == piVar4) goto LAB_0023e840;" if (parenthesized_expression "(local_34 == piVar4)" ( (binary_expression "local_34 == piVar4" identifier == identifier) )) (goto_statement "goto LAB_0023e840;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_0023e751:\n    *(int *)((int)puVar5 + -8) = local_48;\n    *(uint **)((int)puVar5 + -0xc) = local_4c;\n    *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    /* try { // try from 0023e759 to 0023e75d has its CatchHandler @ 0023e890 */\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e;\n    piVar3 = (int *)FUN_00208840();\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) {\nLAB_0023e840:\n      local_34 = &local_2c;\n      local_2c = piVar3[2];\n      local_28 = piVar3[3];\n      local_24 = piVar3[4];\n      local_20 = piVar3[5];\n      goto LAB_0023e77d;\n    }\n  }" else (compound_statement "{\nLAB_0023e751:\n    *(int *)((int)puVar5 + -8) = local_48;\n    *(uint **)((int)puVar5 + -0xc) = local_4c;\n    *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    /* try { // try from 0023e759 to 0023e75d has its CatchHandler @ 0023e890 */\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e;\n    piVar3 = (int *)FUN_00208840();\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) {\nLAB_0023e840:\n      local_34 = &local_2c;\n      local_2c = piVar3[2];\n      local_28 = piVar3[3];\n      local_24 = piVar3[4];\n      local_20 = piVar3[5];\n      goto LAB_0023e77d;\n    }\n  }" { (labeled_statement "LAB_0023e751:\n    *(int *)((int)puVar5 + -8) = local_48;" statement_identifier : (expression_statement "*(int *)((int)puVar5 + -8) = local_48;" (assignment_expression "*(int *)((int)puVar5 + -8) = local_48" (pointer_expression "*(int *)((int)puVar5 + -8)" * (cast_expression "(int *)((int)puVar5 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -8)" ( (binary_expression "(int)puVar5 + -8" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;)) (expression_statement "*(uint **)((int)puVar5 + -0xc) = local_4c;" (assignment_expression "*(uint **)((int)puVar5 + -0xc) = local_4c" (pointer_expression "*(uint **)((int)puVar5 + -0xc)" * (cast_expression "(uint **)((int)puVar5 + -0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0xc)" ( (binary_expression "(int)puVar5 + -0xc" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint ***)((int)puVar5 + -0x10) = &local_64;" (assignment_expression "*(uint ***)((int)puVar5 + -0x10) = &local_64" (pointer_expression "*(uint ***)((int)puVar5 + -0x10)" * (cast_expression "(uint ***)((int)puVar5 + -0x10)" ( (type_descriptor "uint ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&local_64" & identifier)) ;) comment (expression_statement "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar5 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x14)" ( (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "piVar3 = (int *)FUN_00208840();" (assignment_expression "piVar3 = (int *)FUN_00208840()" identifier = (cast_expression "(int *)FUN_00208840()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00208840()" identifier (argument_list "()" ( ))))) ;) (expression_statement "piVar4 = piVar3 + 2;" (assignment_expression "piVar4 = piVar3 + 2" identifier = (binary_expression "piVar3 + 2" identifier + number_literal)) ;) (expression_statement "local_34 = (int *)*piVar3;" (assignment_expression "local_34 = (int *)*piVar3" identifier = (cast_expression "(int *)*piVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar3" * identifier))) ;) (if_statement "if (local_34 == piVar4) {\nLAB_0023e840:\n      local_34 = &local_2c;\n      local_2c = piVar3[2];\n      local_28 = piVar3[3];\n      local_24 = piVar3[4];\n      local_20 = piVar3[5];\n      goto LAB_0023e77d;\n    }" if (parenthesized_expression "(local_34 == piVar4)" ( (binary_expression "local_34 == piVar4" identifier == identifier) )) (compound_statement "{\nLAB_0023e840:\n      local_34 = &local_2c;\n      local_2c = piVar3[2];\n      local_28 = piVar3[3];\n      local_24 = piVar3[4];\n      local_20 = piVar3[5];\n      goto LAB_0023e77d;\n    }" { (labeled_statement "LAB_0023e840:\n      local_34 = &local_2c;" statement_identifier : (expression_statement "local_34 = &local_2c;" (assignment_expression "local_34 = &local_2c" identifier = (pointer_expression "&local_2c" & identifier)) ;)) (expression_statement "local_2c = piVar3[2];" (assignment_expression "local_2c = piVar3[2]" identifier = (subscript_expression "piVar3[2]" identifier [ number_literal ])) ;) (expression_statement "local_28 = piVar3[3];" (assignment_expression "local_28 = piVar3[3]" identifier = (subscript_expression "piVar3[3]" identifier [ number_literal ])) ;) (expression_statement "local_24 = piVar3[4];" (assignment_expression "local_24 = piVar3[4]" identifier = (subscript_expression "piVar3[4]" identifier [ number_literal ])) ;) (expression_statement "local_20 = piVar3[5];" (assignment_expression "local_20 = piVar3[5]" identifier = (subscript_expression "piVar3[5]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_0023e77d;" goto statement_identifier ;) })) }))) (expression_statement "local_2c = piVar3[2];" (assignment_expression "local_2c = piVar3[2]" identifier = (subscript_expression "piVar3[2]" identifier [ number_literal ])) ;) (labeled_statement "LAB_0023e77d:\n  local_30 = piVar3[1];" statement_identifier : (expression_statement "local_30 = piVar3[1];" (assignment_expression "local_30 = piVar3[1]" identifier = (subscript_expression "piVar3[1]" identifier [ number_literal ])) ;)) (expression_statement "*(undefined1 *)(piVar3 + 2) = 0;" (assignment_expression "*(undefined1 *)(piVar3 + 2) = 0" (pointer_expression "*(undefined1 *)(piVar3 + 2)" * (cast_expression "(undefined1 *)(piVar3 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 2)" ( (binary_expression "piVar3 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*piVar3 = (int)piVar4;" (assignment_expression "*piVar3 = (int)piVar4" (pointer_expression "*piVar3" * identifier) = (cast_expression "(int)piVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar3[1] = 0;" (assignment_expression "piVar3[1] = 0" (subscript_expression "piVar3[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int ***)((int)puVar5 + -0xc) = &local_34;" (assignment_expression "*(int ***)((int)puVar5 + -0xc) = &local_34" (pointer_expression "*(int ***)((int)puVar5 + -0xc)" * (cast_expression "(int ***)((int)puVar5 + -0xc)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)puVar5 + -0xc)" ( (binary_expression "(int)puVar5 + -0xc" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&local_34" & identifier)) ;) (expression_statement "*(undefined4 **)((int)puVar5 + -0x10) = param_1;" (assignment_expression "*(undefined4 **)((int)puVar5 + -0x10) = param_1" (pointer_expression "*(undefined4 **)((int)puVar5 + -0x10)" * (cast_expression "(undefined4 **)((int)puVar5 + -0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) comment (expression_statement "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7a1;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7a1" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar5 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x14)" ( (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_002845b0();" (call_expression "FUN_002845b0()" identifier (argument_list "()" ( ))) ;) (if_statement "if (local_34 != &local_2c) {\n    *(int **)((int)puVar5 + -0x10) = local_34;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7b4;\n    FUN_001ff030();\n  }" if (parenthesized_expression "(local_34 != &local_2c)" ( (binary_expression "local_34 != &local_2c" identifier != (pointer_expression "&local_2c" & identifier)) )) (compound_statement "{\n    *(int **)((int)puVar5 + -0x10) = local_34;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7b4;\n    FUN_001ff030();\n  }" { (expression_statement "*(int **)((int)puVar5 + -0x10) = local_34;" (assignment_expression "*(int **)((int)puVar5 + -0x10) = local_34" (pointer_expression "*(int **)((int)puVar5 + -0x10)" * (cast_expression "(int **)((int)puVar5 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7b4;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7b4" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar5 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x14)" ( (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001ff030();" (call_expression "FUN_001ff030()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (local_64 != local_70) {\n    *(uint **)((int)puVar5 + -0x10) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7ca;\n    FUN_001ff030();\n  }" if (parenthesized_expression "(local_64 != local_70)" ( (binary_expression "local_64 != local_70" identifier != identifier) )) (compound_statement "{\n    *(uint **)((int)puVar5 + -0x10) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7ca;\n    FUN_001ff030();\n  }" { (expression_statement "*(uint **)((int)puVar5 + -0x10) = local_64;" (assignment_expression "*(uint **)((int)puVar5 + -0x10) = local_64" (pointer_expression "*(uint **)((int)puVar5 + -0x10)" * (cast_expression "(uint **)((int)puVar5 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7ca;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7ca" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar5 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x14)" ( (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001ff030();" (call_expression "FUN_001ff030()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (local_4c != local_74) {\n    *(uint **)((int)puVar5 + -0x10) = local_4c;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7e0;\n    FUN_001ff030();\n  }" if (parenthesized_expression "(local_4c != local_74)" ( (binary_expression "local_4c != local_74" identifier != identifier) )) (compound_statement "{\n    *(uint **)((int)puVar5 + -0x10) = local_4c;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7e0;\n    FUN_001ff030();\n  }" { (expression_statement "*(uint **)((int)puVar5 + -0x10) = local_4c;" (assignment_expression "*(uint **)((int)puVar5 + -0x10) = local_4c" (pointer_expression "*(uint **)((int)puVar5 + -0x10)" * (cast_expression "(uint **)((int)puVar5 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7e0;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7e0" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar5 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x14)" ( (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001ff030();" (call_expression "FUN_001ff030()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "param_1[2] = 1;" (assignment_expression "param_1[2] = 1" (subscript_expression "param_1[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[3] = local_78;" (assignment_expression "param_1[3] = local_78" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_1 = &PTR_FUN_003ad1b0;" (assignment_expression "*param_1 = &PTR_FUN_003ad1b0" (pointer_expression "*param_1" * identifier) = (pointer_expression "&PTR_FUN_003ad1b0" & identifier)) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n/* std::ios_base::failure[abi:cxx11]::failure(std::string const&) */\n\nvoid __thiscall std::ios_base::failure[abi:cxx11]::failure(failure_abi_cxx11_ *this,string *param_1)\n\n{\n  int iVar1;\n  uint uVar2;\n  int *piVar3;\n  int *piVar4;\n  undefined4 *puVar5;\n  undefined4 uStack_90;\n  undefined1 auStack_8c [4];\n  uint *local_88;\n  int local_84;\n  string *local_80;\n  uint local_7c;\n  int *local_78;\n  uint *local_74;\n  uint *local_70;\n  uint *local_64;\n  int local_60;\n  uint local_5c [4];\n  uint *local_4c;\n  int local_48;\n  uint local_44 [4];\n  int *local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  puVar5 = (undefined4 *)auStack_8c;\n  uStack_90 = 0x23e67e;\n  local_78 = (int *)iostream_category();\n  local_80 = (string *)&local_4c;\n  if (*(code **)(*local_78 + 0x10) == ::(anonymous_namespace)::io_error_category::message_abi_cxx11_\n     ) {\n    local_74 = local_44;\n    local_48 = 0;\n    local_44[0] = local_44[0] & 0xffffff00;\n    local_4c = local_74;\n                    /* try { // try from 0023e6bc to 0023e6c0 has its CatchHandler @ 0023e897 */\n    std::string::_M_replace((string *)&local_4c,0,0,"iostream error",0xe);\n  }\n  else {\n    (**(code **)(*local_78 + 0x10))((string *)&local_4c,local_78,1);\n    local_74 = local_44;\n    puVar5 = &uStack_90;\n  }\n  local_70 = local_5c;\n  iVar1 = *(int *)param_1;\n  *(undefined4 *)((int)puVar5 + -4) = 0;\n  *(int *)((int)puVar5 + -8) = *(int *)(param_1 + 4) + iVar1;\n  *(int *)((int)puVar5 + -0xc) = iVar1;\n  *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    /* try { // try from 0023e6e4 to 0023e6e8 has its CatchHandler @ 0023e89e */\n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e6e9;\n  local_64 = local_70;\n  __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::_M_construct<char*>();\n  if (0x7fffffffU - local_60 < 2) {\n    *(char **)((int)puVar5 + -0x10) = "basic_string::append";\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0023e883 to 0023e887 has its CatchHandler @ 0023e8a5 */\n    *(undefined1 **)((int)puVar5 + -0x14) = &LAB_0023e888;\n    __throw_length_error(*(char **)((int)puVar5 + -0x10));\n  }\n  *(undefined4 *)((int)puVar5 + -8) = 2;\n  *(undefined **)((int)puVar5 + -0xc) = &DAT_002bb1e1;\n  *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    /* try { // try from 0023e70a to 0023e70e has its CatchHandler @ 0023e8a5 */\n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e70f;\n  std::string::_M_append\n            (*(string **)((int)puVar5 + -0x10),*(char **)((int)puVar5 + -0xc),\n             *(uint *)((int)puVar5 + -8));\n  local_84 = local_60;\n  local_88 = local_64;\n  local_7c = 0xf;\n  if (local_64 != local_70) {\n    local_7c = local_5c[0];\n  }\n  if (local_7c < (uint)(local_60 + local_48)) {\n    uVar2 = 0xf;\n    if (local_4c != local_74) {\n      uVar2 = local_44[0];\n    }\n    if (uVar2 < (uint)(local_60 + local_48)) goto LAB_0023e751;\n    *(int *)((int)puVar5 + -0x10) = local_60;\n    *(uint **)((int)puVar5 + -0x14) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x18) = 0;\n    *(undefined4 *)((int)puVar5 + -0x1c) = 0;\n    *(string **)((int)puVar5 + -0x20) = local_80;\n                    /* try { // try from 0023e825 to 0023e829 has its CatchHandler @ 0023e890 */\n    *(undefined4 *)((int)puVar5 + -0x24) = 0x23e82a;\n    piVar3 = (int *)std::string::_M_replace\n                              (*(string **)((int)puVar5 + -0x20),*(uint *)((int)puVar5 + -0x1c),\n                               *(uint *)((int)puVar5 + -0x18),*(char **)((int)puVar5 + -0x14),\n                               *(uint *)((int)puVar5 + -0x10));\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) goto LAB_0023e840;\n  }\n  else {\nLAB_0023e751:\n    *(int *)((int)puVar5 + -8) = local_48;\n    *(uint **)((int)puVar5 + -0xc) = local_4c;\n    *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    /* try { // try from 0023e759 to 0023e75d has its CatchHandler @ 0023e890 */\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e;\n    piVar3 = (int *)std::string::_M_append\n                              (*(string **)((int)puVar5 + -0x10),*(char **)((int)puVar5 + -0xc),\n                               *(uint *)((int)puVar5 + -8));\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) {\nLAB_0023e840:\n      local_34 = &local_2c;\n      local_2c = piVar3[2];\n      local_28 = piVar3[3];\n      local_24 = piVar3[4];\n      local_20 = piVar3[5];\n      goto LAB_0023e77d;\n    }\n  }\n  local_2c = piVar3[2];\nLAB_0023e77d:\n  local_30 = piVar3[1];\n  *(undefined1 *)(piVar3 + 2) = 0;\n  *piVar3 = (int)piVar4;\n  piVar3[1] = 0;\n  *(int ***)((int)puVar5 + -0xc) = &local_34;\n  *(failure_abi_cxx11_ **)((int)puVar5 + -0x10) = this;\n                    /* try { // try from 0023e79c to 0023e7a0 has its CatchHandler @ 0023e888 */\n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7a1;\n  runtime_error::runtime_error\n            (*(runtime_error **)((int)puVar5 + -0x10),*(string **)((int)puVar5 + -0xc));\n  if (local_34 != &local_2c) {\n    *(int **)((int)puVar5 + -0x10) = local_34;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7b4;\n    operator_delete(*(void **)((int)puVar5 + -0x10));\n  }\n  if (local_64 != local_70) {\n    *(uint **)((int)puVar5 + -0x10) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7ca;\n    operator_delete(*(void **)((int)puVar5 + -0x10));\n  }\n  if (local_4c != local_74) {\n    *(uint **)((int)puVar5 + -0x10) = local_4c;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7e0;\n    operator_delete(*(void **)((int)puVar5 + -0x10));\n  }\n  *(undefined4 *)(this + 8) = 1;\n  *(int **)(this + 0xc) = local_78;\n  *(undefined ***)this = &PTR__failure_003ad1b0;\n  return;\n}\n\n" comment comment (function_definition "void __thiscall std::ios_base::failure[abi:cxx11]::failure(failure_abi_cxx11_ *this,string *param_1)\n\n{\n  int iVar1;\n  uint uVar2;\n  int *piVar3;\n  int *piVar4;\n  undefined4 *puVar5;\n  undefined4 uStack_90;\n  undefined1 auStack_8c [4];\n  uint *local_88;\n  int local_84;\n  string *local_80;\n  uint local_7c;\n  int *local_78;\n  uint *local_74;\n  uint *local_70;\n  uint *local_64;\n  int local_60;\n  uint local_5c [4];\n  uint *local_4c;\n  int local_48;\n  uint local_44 [4];\n  int *local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  puVar5 = (undefined4 *)auStack_8c;\n  uStack_90 = 0x23e67e;\n  local_78 = (int *)iostream_category();\n  local_80 = (string *)&local_4c;\n  if (*(code **)(*local_78 + 0x10) == ::(anonymous_namespace)::io_error_category::message_abi_cxx11_\n     ) {\n    local_74 = local_44;\n    local_48 = 0;\n    local_44[0] = local_44[0] & 0xffffff00;\n    local_4c = local_74;\n                    /* try { // try from 0023e6bc to 0023e6c0 has its CatchHandler @ 0023e897 */\n    std::string::_M_replace((string *)&local_4c,0,0,"iostream error",0xe);\n  }\n  else {\n    (**(code **)(*local_78 + 0x10))((string *)&local_4c,local_78,1);\n    local_74 = local_44;\n    puVar5 = &uStack_90;\n  }\n  local_70 = local_5c;\n  iVar1 = *(int *)param_1;\n  *(undefined4 *)((int)puVar5 + -4) = 0;\n  *(int *)((int)puVar5 + -8) = *(int *)(param_1 + 4) + iVar1;\n  *(int *)((int)puVar5 + -0xc) = iVar1;\n  *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    /* try { // try from 0023e6e4 to 0023e6e8 has its CatchHandler @ 0023e89e */\n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e6e9;\n  local_64 = local_70;\n  __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::_M_construct<char*>();\n  if (0x7fffffffU - local_60 < 2) {\n    *(char **)((int)puVar5 + -0x10) = "basic_string::append";\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0023e883 to 0023e887 has its CatchHandler @ 0023e8a5 */\n    *(undefined1 **)((int)puVar5 + -0x14) = &LAB_0023e888;\n    __throw_length_error(*(char **)((int)puVar5 + -0x10));\n  }\n  *(undefined4 *)((int)puVar5 + -8) = 2;\n  *(undefined **)((int)puVar5 + -0xc) = &DAT_002bb1e1;\n  *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    /* try { // try from 0023e70a to 0023e70e has its CatchHandler @ 0023e8a5 */\n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e70f;\n  std::string::_M_append\n            (*(string **)((int)puVar5 + -0x10),*(char **)((int)puVar5 + -0xc),\n             *(uint *)((int)puVar5 + -8));\n  local_84 = local_60;\n  local_88 = local_64;\n  local_7c = 0xf;\n  if (local_64 != local_70) {\n    local_7c = local_5c[0];\n  }\n  if (local_7c < (uint)(local_60 + local_48)) {\n    uVar2 = 0xf;\n    if (local_4c != local_74) {\n      uVar2 = local_44[0];\n    }\n    if (uVar2 < (uint)(local_60 + local_48)) goto LAB_0023e751;\n    *(int *)((int)puVar5 + -0x10) = local_60;\n    *(uint **)((int)puVar5 + -0x14) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x18) = 0;\n    *(undefined4 *)((int)puVar5 + -0x1c) = 0;\n    *(string **)((int)puVar5 + -0x20) = local_80;\n                    /* try { // try from 0023e825 to 0023e829 has its CatchHandler @ 0023e890 */\n    *(undefined4 *)((int)puVar5 + -0x24) = 0x23e82a;\n    piVar3 = (int *)std::string::_M_replace\n                              (*(string **)((int)puVar5 + -0x20),*(uint *)((int)puVar5 + -0x1c),\n                               *(uint *)((int)puVar5 + -0x18),*(char **)((int)puVar5 + -0x14),\n                               *(uint *)((int)puVar5 + -0x10));\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) goto LAB_0023e840;\n  }\n  else {\nLAB_0023e751:\n    *(int *)((int)puVar5 + -8) = local_48;\n    *(uint **)((int)puVar5 + -0xc) = local_4c;\n    *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    /* try { // try from 0023e759 to 0023e75d has its CatchHandler @ 0023e890 */\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e;\n    piVar3 = (int *)std::string::_M_append\n                              (*(string **)((int)puVar5 + -0x10),*(char **)((int)puVar5 + -0xc),\n                               *(uint *)((int)puVar5 + -8));\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) {\nLAB_0023e840:\n      local_34 = &local_2c;\n      local_2c = piVar3[2];\n      local_28 = piVar3[3];\n      local_24 = piVar3[4];\n      local_20 = piVar3[5];\n      goto LAB_0023e77d;\n    }\n  }\n  local_2c = piVar3[2];\nLAB_0023e77d:\n  local_30 = piVar3[1];\n  *(undefined1 *)(piVar3 + 2) = 0;\n  *piVar3 = (int)piVar4;\n  piVar3[1] = 0;\n  *(int ***)((int)puVar5 + -0xc) = &local_34;\n  *(failure_abi_cxx11_ **)((int)puVar5 + -0x10) = this;\n                    /* try { // try from 0023e79c to 0023e7a0 has its CatchHandler @ 0023e888 */\n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7a1;\n  runtime_error::runtime_error\n            (*(runtime_error **)((int)puVar5 + -0x10),*(string **)((int)puVar5 + -0xc));\n  if (local_34 != &local_2c) {\n    *(int **)((int)puVar5 + -0x10) = local_34;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7b4;\n    operator_delete(*(void **)((int)puVar5 + -0x10));\n  }\n  if (local_64 != local_70) {\n    *(uint **)((int)puVar5 + -0x10) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7ca;\n    operator_delete(*(void **)((int)puVar5 + -0x10));\n  }\n  if (local_4c != local_74) {\n    *(uint **)((int)puVar5 + -0x10) = local_4c;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7e0;\n    operator_delete(*(void **)((int)puVar5 + -0x10));\n  }\n  *(undefined4 *)(this + 8) = 1;\n  *(int **)(this + 0xc) = local_78;\n  *(undefined ***)this = &PTR__failure_003ad1b0;\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::ios_base::failure[abi:cxx11]::" identifier : : identifier : : (array_declarator "failure[abi:cxx11]" identifier [ (ERROR "abi:" identifier :) identifier ]) : :) (function_declarator "failure(failure_abi_cxx11_ *this,string *param_1)" identifier (parameter_list "(failure_abi_cxx11_ *this,string *param_1)" ( (parameter_declaration "failure_abi_cxx11_ *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "string *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int *piVar3;\n  int *piVar4;\n  undefined4 *puVar5;\n  undefined4 uStack_90;\n  undefined1 auStack_8c [4];\n  uint *local_88;\n  int local_84;\n  string *local_80;\n  uint local_7c;\n  int *local_78;\n  uint *local_74;\n  uint *local_70;\n  uint *local_64;\n  int local_60;\n  uint local_5c [4];\n  uint *local_4c;\n  int local_48;\n  uint local_44 [4];\n  int *local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  puVar5 = (undefined4 *)auStack_8c;\n  uStack_90 = 0x23e67e;\n  local_78 = (int *)iostream_category();\n  local_80 = (string *)&local_4c;\n  if (*(code **)(*local_78 + 0x10) == ::(anonymous_namespace)::io_error_category::message_abi_cxx11_\n     ) {\n    local_74 = local_44;\n    local_48 = 0;\n    local_44[0] = local_44[0] & 0xffffff00;\n    local_4c = local_74;\n                    /* try { // try from 0023e6bc to 0023e6c0 has its CatchHandler @ 0023e897 */\n    std::string::_M_replace((string *)&local_4c,0,0,"iostream error",0xe);\n  }\n  else {\n    (**(code **)(*local_78 + 0x10))((string *)&local_4c,local_78,1);\n    local_74 = local_44;\n    puVar5 = &uStack_90;\n  }\n  local_70 = local_5c;\n  iVar1 = *(int *)param_1;\n  *(undefined4 *)((int)puVar5 + -4) = 0;\n  *(int *)((int)puVar5 + -8) = *(int *)(param_1 + 4) + iVar1;\n  *(int *)((int)puVar5 + -0xc) = iVar1;\n  *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    /* try { // try from 0023e6e4 to 0023e6e8 has its CatchHandler @ 0023e89e */\n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e6e9;\n  local_64 = local_70;\n  __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::_M_construct<char*>();\n  if (0x7fffffffU - local_60 < 2) {\n    *(char **)((int)puVar5 + -0x10) = "basic_string::append";\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0023e883 to 0023e887 has its CatchHandler @ 0023e8a5 */\n    *(undefined1 **)((int)puVar5 + -0x14) = &LAB_0023e888;\n    __throw_length_error(*(char **)((int)puVar5 + -0x10));\n  }\n  *(undefined4 *)((int)puVar5 + -8) = 2;\n  *(undefined **)((int)puVar5 + -0xc) = &DAT_002bb1e1;\n  *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    /* try { // try from 0023e70a to 0023e70e has its CatchHandler @ 0023e8a5 */\n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e70f;\n  std::string::_M_append\n            (*(string **)((int)puVar5 + -0x10),*(char **)((int)puVar5 + -0xc),\n             *(uint *)((int)puVar5 + -8));\n  local_84 = local_60;\n  local_88 = local_64;\n  local_7c = 0xf;\n  if (local_64 != local_70) {\n    local_7c = local_5c[0];\n  }\n  if (local_7c < (uint)(local_60 + local_48)) {\n    uVar2 = 0xf;\n    if (local_4c != local_74) {\n      uVar2 = local_44[0];\n    }\n    if (uVar2 < (uint)(local_60 + local_48)) goto LAB_0023e751;\n    *(int *)((int)puVar5 + -0x10) = local_60;\n    *(uint **)((int)puVar5 + -0x14) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x18) = 0;\n    *(undefined4 *)((int)puVar5 + -0x1c) = 0;\n    *(string **)((int)puVar5 + -0x20) = local_80;\n                    /* try { // try from 0023e825 to 0023e829 has its CatchHandler @ 0023e890 */\n    *(undefined4 *)((int)puVar5 + -0x24) = 0x23e82a;\n    piVar3 = (int *)std::string::_M_replace\n                              (*(string **)((int)puVar5 + -0x20),*(uint *)((int)puVar5 + -0x1c),\n                               *(uint *)((int)puVar5 + -0x18),*(char **)((int)puVar5 + -0x14),\n                               *(uint *)((int)puVar5 + -0x10));\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) goto LAB_0023e840;\n  }\n  else {\nLAB_0023e751:\n    *(int *)((int)puVar5 + -8) = local_48;\n    *(uint **)((int)puVar5 + -0xc) = local_4c;\n    *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    /* try { // try from 0023e759 to 0023e75d has its CatchHandler @ 0023e890 */\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e;\n    piVar3 = (int *)std::string::_M_append\n                              (*(string **)((int)puVar5 + -0x10),*(char **)((int)puVar5 + -0xc),\n                               *(uint *)((int)puVar5 + -8));\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) {\nLAB_0023e840:\n      local_34 = &local_2c;\n      local_2c = piVar3[2];\n      local_28 = piVar3[3];\n      local_24 = piVar3[4];\n      local_20 = piVar3[5];\n      goto LAB_0023e77d;\n    }\n  }\n  local_2c = piVar3[2];\nLAB_0023e77d:\n  local_30 = piVar3[1];\n  *(undefined1 *)(piVar3 + 2) = 0;\n  *piVar3 = (int)piVar4;\n  piVar3[1] = 0;\n  *(int ***)((int)puVar5 + -0xc) = &local_34;\n  *(failure_abi_cxx11_ **)((int)puVar5 + -0x10) = this;\n                    /* try { // try from 0023e79c to 0023e7a0 has its CatchHandler @ 0023e888 */\n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7a1;\n  runtime_error::runtime_error\n            (*(runtime_error **)((int)puVar5 + -0x10),*(string **)((int)puVar5 + -0xc));\n  if (local_34 != &local_2c) {\n    *(int **)((int)puVar5 + -0x10) = local_34;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7b4;\n    operator_delete(*(void **)((int)puVar5 + -0x10));\n  }\n  if (local_64 != local_70) {\n    *(uint **)((int)puVar5 + -0x10) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7ca;\n    operator_delete(*(void **)((int)puVar5 + -0x10));\n  }\n  if (local_4c != local_74) {\n    *(uint **)((int)puVar5 + -0x10) = local_4c;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7e0;\n    operator_delete(*(void **)((int)puVar5 + -0x10));\n  }\n  *(undefined4 *)(this + 8) = 1;\n  *(int **)(this + 0xc) = local_78;\n  *(undefined ***)this = &PTR__failure_003ad1b0;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 uStack_90;" type_identifier identifier ;) (declaration "undefined1 auStack_8c [4];" type_identifier (array_declarator "auStack_8c [4]" identifier [ number_literal ]) ;) (declaration "uint *local_88;" type_identifier (pointer_declarator "*local_88" * identifier) ;) (declaration "int local_84;" primitive_type identifier ;) (declaration "string *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "uint local_7c;" type_identifier identifier ;) (declaration "int *local_78;" primitive_type (pointer_declarator "*local_78" * identifier) ;) (declaration "uint *local_74;" type_identifier (pointer_declarator "*local_74" * identifier) ;) (declaration "uint *local_70;" type_identifier (pointer_declarator "*local_70" * identifier) ;) (declaration "uint *local_64;" type_identifier (pointer_declarator "*local_64" * identifier) ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "uint local_5c [4];" type_identifier (array_declarator "local_5c [4]" identifier [ number_literal ]) ;) (declaration "uint *local_4c;" type_identifier (pointer_declarator "*local_4c" * identifier) ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "uint local_44 [4];" type_identifier (array_declarator "local_44 [4]" identifier [ number_literal ]) ;) (declaration "int *local_34;" primitive_type (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "puVar5 = (undefined4 *)auStack_8c;" (assignment_expression "puVar5 = (undefined4 *)auStack_8c" identifier = (cast_expression "(undefined4 *)auStack_8c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "uStack_90 = 0x23e67e;" (assignment_expression "uStack_90 = 0x23e67e" identifier = number_literal) ;) (expression_statement "local_78 = (int *)iostream_category();" (assignment_expression "local_78 = (int *)iostream_category()" identifier = (cast_expression "(int *)iostream_category()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "iostream_category()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_80 = (string *)&local_4c;" (assignment_expression "local_80 = (string *)&local_4c" identifier = (cast_expression "(string *)&local_4c" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_4c" & identifier))) ;) (if_statement "if (*(code **)(*local_78 + 0x10) == ::(anonymous_namespace)::io_error_category::message_abi_cxx11_\n     ) {\n    local_74 = local_44;\n    local_48 = 0;\n    local_44[0] = local_44[0] & 0xffffff00;\n    local_4c = local_74;\n                    /* try { // try from 0023e6bc to 0023e6c0 has its CatchHandler @ 0023e897 */\n    std::string::_M_replace((string *)&local_4c,0,0,"iostream error",0xe);\n  }\n  else {\n    (**(code **)(*local_78 + 0x10))((string *)&local_4c,local_78,1);\n    local_74 = local_44;\n    puVar5 = &uStack_90;\n  }" if (parenthesized_expression "(*(code **)(*local_78 + 0x10) == ::(anonymous_namespace)" ( (binary_expression "*(code **)(*local_78 + 0x10) == ::(anonymous_namespace" (pointer_expression "*(code **)(*local_78 + 0x10)" * (cast_expression "(code **)(*local_78 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_78 + 0x10)" ( (binary_expression "*local_78 + 0x10" (pointer_expression "*local_78" * identifier) + number_literal) )))) == (ERROR "::(" : : () identifier) )) (ERROR "::" : :) (labeled_statement "io_error_category::message_abi_cxx11_\n     ) {\n    local_74 = local_44;\n    local_48 = 0;\n    local_44[0] = local_44[0] & 0xffffff00;\n    local_4c = local_74;\n                    /* try { // try from 0023e6bc to 0023e6c0 has its CatchHandler @ 0023e897 */\n    std::string::_M_replace((string *)&local_4c,0,0,"iostream error",0xe);\n  }" statement_identifier : (ERROR ":message_abi_cxx11_\n     )" : identifier )) (compound_statement "{\n    local_74 = local_44;\n    local_48 = 0;\n    local_44[0] = local_44[0] & 0xffffff00;\n    local_4c = local_74;\n                    /* try { // try from 0023e6bc to 0023e6c0 has its CatchHandler @ 0023e897 */\n    std::string::_M_replace((string *)&local_4c,0,0,"iostream error",0xe);\n  }" { (expression_statement "local_74 = local_44;" (assignment_expression "local_74 = local_44" identifier = 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_74;" (assignment_expression "local_4c = local_74" identifier = identifier) ;) comment (labeled_statement "std::string::_M_replace((string *)&local_4c,0,0,"iostream error",0xe);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace((string *)&local_4c,0,0,"iostream error",0xe);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace((string *)&local_4c,0,0,"iostream error",0xe);" (call_expression "_M_replace((string *)&local_4c,0,0,"iostream error",0xe)" identifier (argument_list "((string *)&local_4c,0,0,"iostream error",0xe)" ( (cast_expression "(string *)&local_4c" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_4c" & identifier)) , number_literal , number_literal , (string_literal ""iostream error"" " string_content ") , number_literal ))) ;))) })) (else_clause "else {\n    (**(code **)(*local_78 + 0x10))((string *)&local_4c,local_78,1);\n    local_74 = local_44;\n    puVar5 = &uStack_90;\n  }" else (compound_statement "{\n    (**(code **)(*local_78 + 0x10))((string *)&local_4c,local_78,1);\n    local_74 = local_44;\n    puVar5 = &uStack_90;\n  }" { (expression_statement "(**(code **)(*local_78 + 0x10))((string *)&local_4c,local_78,1);" (call_expression "(**(code **)(*local_78 + 0x10))((string *)&local_4c,local_78,1)" (parenthesized_expression "(**(code **)(*local_78 + 0x10))" ( (pointer_expression "**(code **)(*local_78 + 0x10)" * (pointer_expression "*(code **)(*local_78 + 0x10)" * (cast_expression "(code **)(*local_78 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_78 + 0x10)" ( (binary_expression "*local_78 + 0x10" (pointer_expression "*local_78" * identifier) + number_literal) ))))) )) (argument_list "((string *)&local_4c,local_78,1)" ( (cast_expression "(string *)&local_4c" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_4c" & identifier)) , identifier , number_literal ))) ;) (expression_statement "local_74 = local_44;" (assignment_expression "local_74 = local_44" identifier = identifier) ;) (expression_statement "puVar5 = &uStack_90;" (assignment_expression "puVar5 = &uStack_90" identifier = (pointer_expression "&uStack_90" & identifier)) ;) }))) (expression_statement "local_70 = local_5c;" (assignment_expression "local_70 = local_5c" identifier = identifier) ;) (expression_statement "iVar1 = *(int *)param_1;" (assignment_expression "iVar1 = *(int *)param_1" identifier = (pointer_expression "*(int *)param_1" * (cast_expression "(int *)param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(undefined4 *)((int)puVar5 + -4) = 0;" (assignment_expression "*(undefined4 *)((int)puVar5 + -4) = 0" (pointer_expression "*(undefined4 *)((int)puVar5 + -4)" * (cast_expression "(undefined4 *)((int)puVar5 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -4)" ( (binary_expression "(int)puVar5 + -4" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)((int)puVar5 + -8) = *(int *)(param_1 + 4) + iVar1;" (assignment_expression "*(int *)((int)puVar5 + -8) = *(int *)(param_1 + 4) + iVar1" (pointer_expression "*(int *)((int)puVar5 + -8)" * (cast_expression "(int *)((int)puVar5 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -8)" ( (binary_expression "(int)puVar5 + -8" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(int *)(param_1 + 4) + iVar1" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) + identifier)) ;) (expression_statement "*(int *)((int)puVar5 + -0xc) = iVar1;" (assignment_expression "*(int *)((int)puVar5 + -0xc) = iVar1" (pointer_expression "*(int *)((int)puVar5 + -0xc)" * (cast_expression "(int *)((int)puVar5 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0xc)" ( (binary_expression "(int)puVar5 + -0xc" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint ***)((int)puVar5 + -0x10) = &local_64;" (assignment_expression "*(uint ***)((int)puVar5 + -0x10) = &local_64" (pointer_expression "*(uint ***)((int)puVar5 + -0x10)" * (cast_expression "(uint ***)((int)puVar5 + -0x10)" ( (type_descriptor "uint ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&local_64" & identifier)) ;) comment (expression_statement "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e6e9;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e6e9" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar5 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x14)" ( (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "local_64 = local_70;" (assignment_expression "local_64 = local_70" identifier = identifier) ;) (ERROR "__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : :) (expression_statement "allocator<char>_>::_M_construct<char*>();" (binary_expression "allocator<char>_>::_M_construct<char" (binary_expression "allocator<char>_>::_M_construct" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "::" : :) identifier) < identifier) (ERROR "*>()" * > ( )) ;) (if_statement "if (0x7fffffffU - local_60 < 2) {\n    *(char **)((int)puVar5 + -0x10) = "basic_string::append";\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0023e883 to 0023e887 has its CatchHandler @ 0023e8a5 */\n    *(undefined1 **)((int)puVar5 + -0x14) = &LAB_0023e888;\n    __throw_length_error(*(char **)((int)puVar5 + -0x10));\n  }" if (parenthesized_expression "(0x7fffffffU - local_60 < 2)" ( (binary_expression "0x7fffffffU - local_60 < 2" (binary_expression "0x7fffffffU - local_60" number_literal - identifier) < number_literal) )) (compound_statement "{\n    *(char **)((int)puVar5 + -0x10) = "basic_string::append";\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0023e883 to 0023e887 has its CatchHandler @ 0023e8a5 */\n    *(undefined1 **)((int)puVar5 + -0x14) = &LAB_0023e888;\n    __throw_length_error(*(char **)((int)puVar5 + -0x10));\n  }" { (expression_statement "*(char **)((int)puVar5 + -0x10) = "basic_string::append";" (assignment_expression "*(char **)((int)puVar5 + -0x10) = "basic_string::append"" (pointer_expression "*(char **)((int)puVar5 + -0x10)" * (cast_expression "(char **)((int)puVar5 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (string_literal ""basic_string::append"" " string_content ")) ;) comment comment (expression_statement "*(undefined1 **)((int)puVar5 + -0x14) = &LAB_0023e888;" (assignment_expression "*(undefined1 **)((int)puVar5 + -0x14) = &LAB_0023e888" (pointer_expression "*(undefined1 **)((int)puVar5 + -0x14)" * (cast_expression "(undefined1 **)((int)puVar5 + -0x14)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0x14)" ( (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&LAB_0023e888" & identifier)) ;) (expression_statement "__throw_length_error(*(char **)((int)puVar5 + -0x10));" (call_expression "__throw_length_error(*(char **)((int)puVar5 + -0x10))" identifier (argument_list "(*(char **)((int)puVar5 + -0x10))" ( (pointer_expression "*(char **)((int)puVar5 + -0x10)" * (cast_expression "(char **)((int)puVar5 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) })) (expression_statement "*(undefined4 *)((int)puVar5 + -8) = 2;" (assignment_expression "*(undefined4 *)((int)puVar5 + -8) = 2" (pointer_expression "*(undefined4 *)((int)puVar5 + -8)" * (cast_expression "(undefined4 *)((int)puVar5 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -8)" ( (binary_expression "(int)puVar5 + -8" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined **)((int)puVar5 + -0xc) = &DAT_002bb1e1;" (assignment_expression "*(undefined **)((int)puVar5 + -0xc) = &DAT_002bb1e1" (pointer_expression "*(undefined **)((int)puVar5 + -0xc)" * (cast_expression "(undefined **)((int)puVar5 + -0xc)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0xc)" ( (binary_expression "(int)puVar5 + -0xc" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&DAT_002bb1e1" & identifier)) ;) (expression_statement "*(uint ***)((int)puVar5 + -0x10) = &local_64;" (assignment_expression "*(uint ***)((int)puVar5 + -0x10) = &local_64" (pointer_expression "*(uint ***)((int)puVar5 + -0x10)" * (cast_expression "(uint ***)((int)puVar5 + -0x10)" ( (type_descriptor "uint ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&local_64" & identifier)) ;) comment (expression_statement "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e70f;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e70f" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar5 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x14)" ( (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (labeled_statement "std::string::_M_append\n            (*(string **)((int)puVar5 + -0x10),*(char **)((int)puVar5 + -0xc),\n             *(uint *)((int)puVar5 + -8));" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_append\n            (*(string **)((int)puVar5 + -0x10),*(char **)((int)puVar5 + -0xc),\n             *(uint *)((int)puVar5 + -8));" statement_identifier : (ERROR ":" :) (expression_statement "_M_append\n            (*(string **)((int)puVar5 + -0x10),*(char **)((int)puVar5 + -0xc),\n             *(uint *)((int)puVar5 + -8));" (call_expression "_M_append\n            (*(string **)((int)puVar5 + -0x10),*(char **)((int)puVar5 + -0xc),\n             *(uint *)((int)puVar5 + -8))" identifier (argument_list "(*(string **)((int)puVar5 + -0x10),*(char **)((int)puVar5 + -0xc),\n             *(uint *)((int)puVar5 + -8))" ( (pointer_expression "*(string **)((int)puVar5 + -0x10)" * (cast_expression "(string **)((int)puVar5 + -0x10)" ( (type_descriptor "string **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(char **)((int)puVar5 + -0xc)" * (cast_expression "(char **)((int)puVar5 + -0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0xc)" ( (binary_expression "(int)puVar5 + -0xc" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(uint *)((int)puVar5 + -8)" * (cast_expression "(uint *)((int)puVar5 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -8)" ( (binary_expression "(int)puVar5 + -8" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;))) (expression_statement "local_84 = local_60;" (assignment_expression "local_84 = local_60" identifier = identifier) ;) (expression_statement "local_88 = local_64;" (assignment_expression "local_88 = local_64" identifier = identifier) ;) (expression_statement "local_7c = 0xf;" (assignment_expression "local_7c = 0xf" identifier = number_literal) ;) (if_statement "if (local_64 != local_70) {\n    local_7c = local_5c[0];\n  }" if (parenthesized_expression "(local_64 != local_70)" ( (binary_expression "local_64 != local_70" identifier != identifier) )) (compound_statement "{\n    local_7c = local_5c[0];\n  }" { (expression_statement "local_7c = local_5c[0];" (assignment_expression "local_7c = local_5c[0]" identifier = (subscript_expression "local_5c[0]" identifier [ number_literal ])) ;) })) (if_statement "if (local_7c < (uint)(local_60 + local_48)) {\n    uVar2 = 0xf;\n    if (local_4c != local_74) {\n      uVar2 = local_44[0];\n    }\n    if (uVar2 < (uint)(local_60 + local_48)) goto LAB_0023e751;\n    *(int *)((int)puVar5 + -0x10) = local_60;\n    *(uint **)((int)puVar5 + -0x14) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x18) = 0;\n    *(undefined4 *)((int)puVar5 + -0x1c) = 0;\n    *(string **)((int)puVar5 + -0x20) = local_80;\n                    /* try { // try from 0023e825 to 0023e829 has its CatchHandler @ 0023e890 */\n    *(undefined4 *)((int)puVar5 + -0x24) = 0x23e82a;\n    piVar3 = (int *)std::string::_M_replace\n                              (*(string **)((int)puVar5 + -0x20),*(uint *)((int)puVar5 + -0x1c),\n                               *(uint *)((int)puVar5 + -0x18),*(char **)((int)puVar5 + -0x14),\n                               *(uint *)((int)puVar5 + -0x10));\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) goto LAB_0023e840;\n  }\n  else {\nLAB_0023e751:\n    *(int *)((int)puVar5 + -8) = local_48;\n    *(uint **)((int)puVar5 + -0xc) = local_4c;\n    *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    /* try { // try from 0023e759 to 0023e75d has its CatchHandler @ 0023e890 */\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e;\n    piVar3 = (int *)std::string::_M_append\n                              (*(string **)((int)puVar5 + -0x10),*(char **)((int)puVar5 + -0xc),\n                               *(uint *)((int)puVar5 + -8));\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) {\nLAB_0023e840:\n      local_34 = &local_2c;\n      local_2c = piVar3[2];\n      local_28 = piVar3[3];\n      local_24 = piVar3[4];\n      local_20 = piVar3[5];\n      goto LAB_0023e77d;\n    }\n  }" if (parenthesized_expression "(local_7c < (uint)(local_60 + local_48))" ( (binary_expression "local_7c < (uint)(local_60 + local_48)" identifier < (call_expression "(uint)(local_60 + local_48)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_60 + local_48)" ( (binary_expression "local_60 + local_48" identifier + identifier) )))) )) (compound_statement "{\n    uVar2 = 0xf;\n    if (local_4c != local_74) {\n      uVar2 = local_44[0];\n    }\n    if (uVar2 < (uint)(local_60 + local_48)) goto LAB_0023e751;\n    *(int *)((int)puVar5 + -0x10) = local_60;\n    *(uint **)((int)puVar5 + -0x14) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x18) = 0;\n    *(undefined4 *)((int)puVar5 + -0x1c) = 0;\n    *(string **)((int)puVar5 + -0x20) = local_80;\n                    /* try { // try from 0023e825 to 0023e829 has its CatchHandler @ 0023e890 */\n    *(undefined4 *)((int)puVar5 + -0x24) = 0x23e82a;\n    piVar3 = (int *)std::string::_M_replace\n                              (*(string **)((int)puVar5 + -0x20),*(uint *)((int)puVar5 + -0x1c),\n                               *(uint *)((int)puVar5 + -0x18),*(char **)((int)puVar5 + -0x14),\n                               *(uint *)((int)puVar5 + -0x10));\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) goto LAB_0023e840;\n  }" { (expression_statement "uVar2 = 0xf;" (assignment_expression "uVar2 = 0xf" identifier = number_literal) ;) (if_statement "if (local_4c != local_74) {\n      uVar2 = local_44[0];\n    }" if (parenthesized_expression "(local_4c != local_74)" ( (binary_expression "local_4c != local_74" identifier != identifier) )) (compound_statement "{\n      uVar2 = local_44[0];\n    }" { (expression_statement "uVar2 = local_44[0];" (assignment_expression "uVar2 = local_44[0]" identifier = (subscript_expression "local_44[0]" identifier [ number_literal ])) ;) })) (if_statement "if (uVar2 < (uint)(local_60 + local_48)) goto LAB_0023e751;" if (parenthesized_expression "(uVar2 < (uint)(local_60 + local_48))" ( (binary_expression "uVar2 < (uint)(local_60 + local_48)" identifier < (call_expression "(uint)(local_60 + local_48)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_60 + local_48)" ( (binary_expression "local_60 + local_48" identifier + identifier) )))) )) (goto_statement "goto LAB_0023e751;" goto statement_identifier ;)) (expression_statement "*(int *)((int)puVar5 + -0x10) = local_60;" (assignment_expression "*(int *)((int)puVar5 + -0x10) = local_60" (pointer_expression "*(int *)((int)puVar5 + -0x10)" * (cast_expression "(int *)((int)puVar5 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)((int)puVar5 + -0x14) = local_64;" (assignment_expression "*(uint **)((int)puVar5 + -0x14) = local_64" (pointer_expression "*(uint **)((int)puVar5 + -0x14)" * (cast_expression "(uint **)((int)puVar5 + -0x14)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0x14)" ( (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)puVar5 + -0x18) = 0;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x18) = 0" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x18)" * (cast_expression "(undefined4 *)((int)puVar5 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x18)" ( (binary_expression "(int)puVar5 + -0x18" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)puVar5 + -0x1c) = 0;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x1c) = 0" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x1c)" * (cast_expression "(undefined4 *)((int)puVar5 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x1c)" ( (binary_expression "(int)puVar5 + -0x1c" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(string **)((int)puVar5 + -0x20) = local_80;" (assignment_expression "*(string **)((int)puVar5 + -0x20) = local_80" (pointer_expression "*(string **)((int)puVar5 + -0x20)" * (cast_expression "(string **)((int)puVar5 + -0x20)" ( (type_descriptor "string **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0x20)" ( (binary_expression "(int)puVar5 + -0x20" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) comment (expression_statement "*(undefined4 *)((int)puVar5 + -0x24) = 0x23e82a;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x24) = 0x23e82a" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x24)" * (cast_expression "(undefined4 *)((int)puVar5 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x24)" ( (binary_expression "(int)puVar5 + -0x24" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (ERROR "piVar3 = (int *)std::" (assignment_expression "piVar3 = (int *)std" identifier = (cast_expression "(int *)std" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) : :) (labeled_statement "string::_M_replace\n                              (*(string **)((int)puVar5 + -0x20),*(uint *)((int)puVar5 + -0x1c),\n                               *(uint *)((int)puVar5 + -0x18),*(char **)((int)puVar5 + -0x14),\n                               *(uint *)((int)puVar5 + -0x10));" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace\n                              (*(string **)((int)puVar5 + -0x20),*(uint *)((int)puVar5 + -0x1c),\n                               *(uint *)((int)puVar5 + -0x18),*(char **)((int)puVar5 + -0x14),\n                               *(uint *)((int)puVar5 + -0x10));" (call_expression "_M_replace\n                              (*(string **)((int)puVar5 + -0x20),*(uint *)((int)puVar5 + -0x1c),\n                               *(uint *)((int)puVar5 + -0x18),*(char **)((int)puVar5 + -0x14),\n                               *(uint *)((int)puVar5 + -0x10))" identifier (argument_list "(*(string **)((int)puVar5 + -0x20),*(uint *)((int)puVar5 + -0x1c),\n                               *(uint *)((int)puVar5 + -0x18),*(char **)((int)puVar5 + -0x14),\n                               *(uint *)((int)puVar5 + -0x10))" ( (pointer_expression "*(string **)((int)puVar5 + -0x20)" * (cast_expression "(string **)((int)puVar5 + -0x20)" ( (type_descriptor "string **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0x20)" ( (binary_expression "(int)puVar5 + -0x20" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(uint *)((int)puVar5 + -0x1c)" * (cast_expression "(uint *)((int)puVar5 + -0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x1c)" ( (binary_expression "(int)puVar5 + -0x1c" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(uint *)((int)puVar5 + -0x18)" * (cast_expression "(uint *)((int)puVar5 + -0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x18)" ( (binary_expression "(int)puVar5 + -0x18" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(char **)((int)puVar5 + -0x14)" * (cast_expression "(char **)((int)puVar5 + -0x14)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0x14)" ( (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(uint *)((int)puVar5 + -0x10)" * (cast_expression "(uint *)((int)puVar5 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;)) (expression_statement "piVar4 = piVar3 + 2;" (assignment_expression "piVar4 = piVar3 + 2" identifier = (binary_expression "piVar3 + 2" identifier + number_literal)) ;) (expression_statement "local_34 = (int *)*piVar3;" (assignment_expression "local_34 = (int *)*piVar3" identifier = (cast_expression "(int *)*piVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar3" * identifier))) ;) (if_statement "if (local_34 == piVar4) goto LAB_0023e840;" if (parenthesized_expression "(local_34 == piVar4)" ( (binary_expression "local_34 == piVar4" identifier == identifier) )) (goto_statement "goto LAB_0023e840;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_0023e751:\n    *(int *)((int)puVar5 + -8) = local_48;\n    *(uint **)((int)puVar5 + -0xc) = local_4c;\n    *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    /* try { // try from 0023e759 to 0023e75d has its CatchHandler @ 0023e890 */\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e;\n    piVar3 = (int *)std::string::_M_append\n                              (*(string **)((int)puVar5 + -0x10),*(char **)((int)puVar5 + -0xc),\n                               *(uint *)((int)puVar5 + -8));\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) {\nLAB_0023e840:\n      local_34 = &local_2c;\n      local_2c = piVar3[2];\n      local_28 = piVar3[3];\n      local_24 = piVar3[4];\n      local_20 = piVar3[5];\n      goto LAB_0023e77d;\n    }\n  }" else (compound_statement "{\nLAB_0023e751:\n    *(int *)((int)puVar5 + -8) = local_48;\n    *(uint **)((int)puVar5 + -0xc) = local_4c;\n    *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    /* try { // try from 0023e759 to 0023e75d has its CatchHandler @ 0023e890 */\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e;\n    piVar3 = (int *)std::string::_M_append\n                              (*(string **)((int)puVar5 + -0x10),*(char **)((int)puVar5 + -0xc),\n                               *(uint *)((int)puVar5 + -8));\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) {\nLAB_0023e840:\n      local_34 = &local_2c;\n      local_2c = piVar3[2];\n      local_28 = piVar3[3];\n      local_24 = piVar3[4];\n      local_20 = piVar3[5];\n      goto LAB_0023e77d;\n    }\n  }" { (labeled_statement "LAB_0023e751:\n    *(int *)((int)puVar5 + -8) = local_48;" statement_identifier : (expression_statement "*(int *)((int)puVar5 + -8) = local_48;" (assignment_expression "*(int *)((int)puVar5 + -8) = local_48" (pointer_expression "*(int *)((int)puVar5 + -8)" * (cast_expression "(int *)((int)puVar5 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -8)" ( (binary_expression "(int)puVar5 + -8" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;)) (expression_statement "*(uint **)((int)puVar5 + -0xc) = local_4c;" (assignment_expression "*(uint **)((int)puVar5 + -0xc) = local_4c" (pointer_expression "*(uint **)((int)puVar5 + -0xc)" * (cast_expression "(uint **)((int)puVar5 + -0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0xc)" ( (binary_expression "(int)puVar5 + -0xc" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint ***)((int)puVar5 + -0x10) = &local_64;" (assignment_expression "*(uint ***)((int)puVar5 + -0x10) = &local_64" (pointer_expression "*(uint ***)((int)puVar5 + -0x10)" * (cast_expression "(uint ***)((int)puVar5 + -0x10)" ( (type_descriptor "uint ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&local_64" & identifier)) ;) comment (expression_statement "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar5 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x14)" ( (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (ERROR "piVar3 = (int *)std::" (assignment_expression "piVar3 = (int *)std" identifier = (cast_expression "(int *)std" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) : :) (labeled_statement "string::_M_append\n                              (*(string **)((int)puVar5 + -0x10),*(char **)((int)puVar5 + -0xc),\n                               *(uint *)((int)puVar5 + -8));" statement_identifier : (ERROR ":" :) (expression_statement "_M_append\n                              (*(string **)((int)puVar5 + -0x10),*(char **)((int)puVar5 + -0xc),\n                               *(uint *)((int)puVar5 + -8));" (call_expression "_M_append\n                              (*(string **)((int)puVar5 + -0x10),*(char **)((int)puVar5 + -0xc),\n                               *(uint *)((int)puVar5 + -8))" identifier (argument_list "(*(string **)((int)puVar5 + -0x10),*(char **)((int)puVar5 + -0xc),\n                               *(uint *)((int)puVar5 + -8))" ( (pointer_expression "*(string **)((int)puVar5 + -0x10)" * (cast_expression "(string **)((int)puVar5 + -0x10)" ( (type_descriptor "string **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(char **)((int)puVar5 + -0xc)" * (cast_expression "(char **)((int)puVar5 + -0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0xc)" ( (binary_expression "(int)puVar5 + -0xc" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(uint *)((int)puVar5 + -8)" * (cast_expression "(uint *)((int)puVar5 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -8)" ( (binary_expression "(int)puVar5 + -8" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;)) (expression_statement "piVar4 = piVar3 + 2;" (assignment_expression "piVar4 = piVar3 + 2" identifier = (binary_expression "piVar3 + 2" identifier + number_literal)) ;) (expression_statement "local_34 = (int *)*piVar3;" (assignment_expression "local_34 = (int *)*piVar3" identifier = (cast_expression "(int *)*piVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar3" * identifier))) ;) (if_statement "if (local_34 == piVar4) {\nLAB_0023e840:\n      local_34 = &local_2c;\n      local_2c = piVar3[2];\n      local_28 = piVar3[3];\n      local_24 = piVar3[4];\n      local_20 = piVar3[5];\n      goto LAB_0023e77d;\n    }" if (parenthesized_expression "(local_34 == piVar4)" ( (binary_expression "local_34 == piVar4" identifier == identifier) )) (compound_statement "{\nLAB_0023e840:\n      local_34 = &local_2c;\n      local_2c = piVar3[2];\n      local_28 = piVar3[3];\n      local_24 = piVar3[4];\n      local_20 = piVar3[5];\n      goto LAB_0023e77d;\n    }" { (labeled_statement "LAB_0023e840:\n      local_34 = &local_2c;" statement_identifier : (expression_statement "local_34 = &local_2c;" (assignment_expression "local_34 = &local_2c" identifier = (pointer_expression "&local_2c" & identifier)) ;)) (expression_statement "local_2c = piVar3[2];" (assignment_expression "local_2c = piVar3[2]" identifier = (subscript_expression "piVar3[2]" identifier [ number_literal ])) ;) (expression_statement "local_28 = piVar3[3];" (assignment_expression "local_28 = piVar3[3]" identifier = (subscript_expression "piVar3[3]" identifier [ number_literal ])) ;) (expression_statement "local_24 = piVar3[4];" (assignment_expression "local_24 = piVar3[4]" identifier = (subscript_expression "piVar3[4]" identifier [ number_literal ])) ;) (expression_statement "local_20 = piVar3[5];" (assignment_expression "local_20 = piVar3[5]" identifier = (subscript_expression "piVar3[5]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_0023e77d;" goto statement_identifier ;) })) }))) (expression_statement "local_2c = piVar3[2];" (assignment_expression "local_2c = piVar3[2]" identifier = (subscript_expression "piVar3[2]" identifier [ number_literal ])) ;) (labeled_statement "LAB_0023e77d:\n  local_30 = piVar3[1];" statement_identifier : (expression_statement "local_30 = piVar3[1];" (assignment_expression "local_30 = piVar3[1]" identifier = (subscript_expression "piVar3[1]" identifier [ number_literal ])) ;)) (expression_statement "*(undefined1 *)(piVar3 + 2) = 0;" (assignment_expression "*(undefined1 *)(piVar3 + 2) = 0" (pointer_expression "*(undefined1 *)(piVar3 + 2)" * (cast_expression "(undefined1 *)(piVar3 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 2)" ( (binary_expression "piVar3 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*piVar3 = (int)piVar4;" (assignment_expression "*piVar3 = (int)piVar4" (pointer_expression "*piVar3" * identifier) = (cast_expression "(int)piVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar3[1] = 0;" (assignment_expression "piVar3[1] = 0" (subscript_expression "piVar3[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int ***)((int)puVar5 + -0xc) = &local_34;" (assignment_expression "*(int ***)((int)puVar5 + -0xc) = &local_34" (pointer_expression "*(int ***)((int)puVar5 + -0xc)" * (cast_expression "(int ***)((int)puVar5 + -0xc)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)puVar5 + -0xc)" ( (binary_expression "(int)puVar5 + -0xc" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&local_34" & identifier)) ;) (expression_statement "*(failure_abi_cxx11_ **)((int)puVar5 + -0x10) = this;" (assignment_expression "*(failure_abi_cxx11_ **)((int)puVar5 + -0x10) = this" (pointer_expression "*(failure_abi_cxx11_ **)((int)puVar5 + -0x10)" * (cast_expression "(failure_abi_cxx11_ **)((int)puVar5 + -0x10)" ( (type_descriptor "failure_abi_cxx11_ **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) comment (expression_statement "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7a1;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7a1" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar5 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x14)" ( (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (labeled_statement "runtime_error::runtime_error\n            (*(runtime_error **)((int)puVar5 + -0x10),*(string **)((int)puVar5 + -0xc));" statement_identifier : (ERROR ":" :) (expression_statement "runtime_error\n            (*(runtime_error **)((int)puVar5 + -0x10),*(string **)((int)puVar5 + -0xc));" (call_expression "runtime_error\n            (*(runtime_error **)((int)puVar5 + -0x10),*(string **)((int)puVar5 + -0xc))" identifier (argument_list "(*(runtime_error **)((int)puVar5 + -0x10),*(string **)((int)puVar5 + -0xc))" ( (pointer_expression "*(runtime_error **)((int)puVar5 + -0x10)" * (cast_expression "(runtime_error **)((int)puVar5 + -0x10)" ( (type_descriptor "runtime_error **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(string **)((int)puVar5 + -0xc)" * (cast_expression "(string **)((int)puVar5 + -0xc)" ( (type_descriptor "string **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0xc)" ( (binary_expression "(int)puVar5 + -0xc" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;)) (if_statement "if (local_34 != &local_2c) {\n    *(int **)((int)puVar5 + -0x10) = local_34;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7b4;\n    operator_delete(*(void **)((int)puVar5 + -0x10));\n  }" if (parenthesized_expression "(local_34 != &local_2c)" ( (binary_expression "local_34 != &local_2c" identifier != (pointer_expression "&local_2c" & identifier)) )) (compound_statement "{\n    *(int **)((int)puVar5 + -0x10) = local_34;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7b4;\n    operator_delete(*(void **)((int)puVar5 + -0x10));\n  }" { (expression_statement "*(int **)((int)puVar5 + -0x10) = local_34;" (assignment_expression "*(int **)((int)puVar5 + -0x10) = local_34" (pointer_expression "*(int **)((int)puVar5 + -0x10)" * (cast_expression "(int **)((int)puVar5 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7b4;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7b4" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar5 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x14)" ( (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "operator_delete(*(void **)((int)puVar5 + -0x10));" (call_expression "operator_delete(*(void **)((int)puVar5 + -0x10))" identifier (argument_list "(*(void **)((int)puVar5 + -0x10))" ( (pointer_expression "*(void **)((int)puVar5 + -0x10)" * (cast_expression "(void **)((int)puVar5 + -0x10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) })) (if_statement "if (local_64 != local_70) {\n    *(uint **)((int)puVar5 + -0x10) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7ca;\n    operator_delete(*(void **)((int)puVar5 + -0x10));\n  }" if (parenthesized_expression "(local_64 != local_70)" ( (binary_expression "local_64 != local_70" identifier != identifier) )) (compound_statement "{\n    *(uint **)((int)puVar5 + -0x10) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7ca;\n    operator_delete(*(void **)((int)puVar5 + -0x10));\n  }" { (expression_statement "*(uint **)((int)puVar5 + -0x10) = local_64;" (assignment_expression "*(uint **)((int)puVar5 + -0x10) = local_64" (pointer_expression "*(uint **)((int)puVar5 + -0x10)" * (cast_expression "(uint **)((int)puVar5 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7ca;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7ca" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar5 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x14)" ( (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "operator_delete(*(void **)((int)puVar5 + -0x10));" (call_expression "operator_delete(*(void **)((int)puVar5 + -0x10))" identifier (argument_list "(*(void **)((int)puVar5 + -0x10))" ( (pointer_expression "*(void **)((int)puVar5 + -0x10)" * (cast_expression "(void **)((int)puVar5 + -0x10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) })) (if_statement "if (local_4c != local_74) {\n    *(uint **)((int)puVar5 + -0x10) = local_4c;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7e0;\n    operator_delete(*(void **)((int)puVar5 + -0x10));\n  }" if (parenthesized_expression "(local_4c != local_74)" ( (binary_expression "local_4c != local_74" identifier != identifier) )) (compound_statement "{\n    *(uint **)((int)puVar5 + -0x10) = local_4c;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7e0;\n    operator_delete(*(void **)((int)puVar5 + -0x10));\n  }" { (expression_statement "*(uint **)((int)puVar5 + -0x10) = local_4c;" (assignment_expression "*(uint **)((int)puVar5 + -0x10) = local_4c" (pointer_expression "*(uint **)((int)puVar5 + -0x10)" * (cast_expression "(uint **)((int)puVar5 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7e0;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7e0" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar5 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x14)" ( (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "operator_delete(*(void **)((int)puVar5 + -0x10));" (call_expression "operator_delete(*(void **)((int)puVar5 + -0x10))" identifier (argument_list "(*(void **)((int)puVar5 + -0x10))" ( (pointer_expression "*(void **)((int)puVar5 + -0x10)" * (cast_expression "(void **)((int)puVar5 + -0x10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) })) (expression_statement "*(undefined4 *)(this + 8) = 1;" (assignment_expression "*(undefined4 *)(this + 8) = 1" (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 "*(int **)(this + 0xc) = local_78;" (assignment_expression "*(int **)(this + 0xc) = local_78" (pointer_expression "*(int **)(this + 0xc)" * (cast_expression "(int **)(this + 0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined ***)this = &PTR__failure_003ad1b0;" (assignment_expression "*(undefined ***)this = &PTR__failure_003ad1b0" (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__failure_003ad1b0" & identifier)) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0023e660(undefined4 *param_1,int *param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  int *piVar3;\n  int *piVar4;\n  undefined4 *puVar5;\n  undefined4 uStack_90;\n  undefined1 auStack_8c [4];\n  uint *local_88;\n  int local_84;\n  undefined4 **local_80;\n  uint local_7c;\n  int *local_78;\n  uint *local_74;\n  uint *local_70;\n  uint *local_64;\n  int local_60;\n  uint local_5c [4];\n  uint *local_4c;\n  int local_48;\n  uint local_44 [4];\n  int *local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  puVar5 = (undefined4 *)auStack_8c;\n  uStack_90 = 0x23e67e;\n  local_78 = (int *)FUN_0023e5f0();\n  local_80 = &local_4c;\n  if (*(code **)(*local_78 + 0x10) == FUN_0023e570) {\n    local_74 = local_44;\n    local_48 = 0;\n    local_44[0] = local_44[0] & 0xffffff00;\n    local_4c = local_74;\n                    \n    FUN_00207c70(&local_4c,0,0,"iostream error",0xe);\n  }\n  else {\n    (**(code **)(*local_78 + 0x10))(&local_4c,local_78,1);\n    local_74 = local_44;\n    puVar5 = &uStack_90;\n  }\n  local_70 = local_5c;\n  iVar1 = *param_2;\n  *(undefined4 *)((int)puVar5 + -4) = 0;\n  *(int *)((int)puVar5 + -8) = param_2[1] + iVar1;\n  *(int *)((int)puVar5 + -0xc) = iVar1;\n  *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    \n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e6e9;\n  local_64 = local_70;\n  FUN_00068b30();\n  if (0x7fffffffU - local_60 < 2) {\n    *(char **)((int)puVar5 + -0x10) = "basic_string::append";\n                    \n                    \n    *(undefined1 **)((int)puVar5 + -0x14) = &LAB_0023e888;\n    FUN_00244a20();\n  }\n  *(undefined4 *)((int)puVar5 + -8) = 2;\n  *(undefined **)((int)puVar5 + -0xc) = &DAT_002bb1e1;\n  *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    \n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e70f;\n  FUN_00208840();\n  local_84 = local_60;\n  local_88 = local_64;\n  local_7c = 0xf;\n  if (local_64 != local_70) {\n    local_7c = local_5c[0];\n  }\n  if (local_7c < (uint)(local_60 + local_48)) {\n    uVar2 = 0xf;\n    if (local_4c != local_74) {\n      uVar2 = local_44[0];\n    }\n    if (uVar2 < (uint)(local_60 + local_48)) goto LAB_0023e751;\n    *(int *)((int)puVar5 + -0x10) = local_60;\n    *(uint **)((int)puVar5 + -0x14) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x18) = 0;\n    *(undefined4 *)((int)puVar5 + -0x1c) = 0;\n    *(undefined4 ***)((int)puVar5 + -0x20) = local_80;\n                    \n    *(undefined4 *)((int)puVar5 + -0x24) = 0x23e82a;\n    piVar3 = (int *)FUN_00207c70();\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) goto LAB_0023e840;\n  }\n  else {\nLAB_0023e751:\n    *(int *)((int)puVar5 + -8) = local_48;\n    *(uint **)((int)puVar5 + -0xc) = local_4c;\n    *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    \n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e;\n    piVar3 = (int *)FUN_00208840();\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) {\nLAB_0023e840:\n      local_34 = &local_2c;\n      local_2c = piVar3[2];\n      local_28 = piVar3[3];\n      local_24 = piVar3[4];\n      local_20 = piVar3[5];\n      goto LAB_0023e77d;\n    }\n  }\n  local_2c = piVar3[2];\nLAB_0023e77d:\n  local_30 = piVar3[1];\n  *(undefined1 *)(piVar3 + 2) = 0;\n  *piVar3 = (int)piVar4;\n  piVar3[1] = 0;\n  *(int ***)((int)puVar5 + -0xc) = &local_34;\n  *(undefined4 **)((int)puVar5 + -0x10) = param_1;\n                    \n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7a1;\n  FUN_002845b0();\n  if (local_34 != &local_2c) {\n    *(int **)((int)puVar5 + -0x10) = local_34;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7b4;\n    FUN_001ff030();\n  }\n  if (local_64 != local_70) {\n    *(uint **)((int)puVar5 + -0x10) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7ca;\n    FUN_001ff030();\n  }\n  if (local_4c != local_74) {\n    *(uint **)((int)puVar5 + -0x10) = local_4c;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7e0;\n    FUN_001ff030();\n  }\n  param_1[2] = 1;\n  param_1[3] = local_78;\n  *param_1 = &PTR_FUN_003ad1b0;\n  return;\n}\n\n" (function_definition "void FUN_0023e660(undefined4 *param_1,int *param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  int *piVar3;\n  int *piVar4;\n  undefined4 *puVar5;\n  undefined4 uStack_90;\n  undefined1 auStack_8c [4];\n  uint *local_88;\n  int local_84;\n  undefined4 **local_80;\n  uint local_7c;\n  int *local_78;\n  uint *local_74;\n  uint *local_70;\n  uint *local_64;\n  int local_60;\n  uint local_5c [4];\n  uint *local_4c;\n  int local_48;\n  uint local_44 [4];\n  int *local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  puVar5 = (undefined4 *)auStack_8c;\n  uStack_90 = 0x23e67e;\n  local_78 = (int *)FUN_0023e5f0();\n  local_80 = &local_4c;\n  if (*(code **)(*local_78 + 0x10) == FUN_0023e570) {\n    local_74 = local_44;\n    local_48 = 0;\n    local_44[0] = local_44[0] & 0xffffff00;\n    local_4c = local_74;\n                    \n    FUN_00207c70(&local_4c,0,0,"iostream error",0xe);\n  }\n  else {\n    (**(code **)(*local_78 + 0x10))(&local_4c,local_78,1);\n    local_74 = local_44;\n    puVar5 = &uStack_90;\n  }\n  local_70 = local_5c;\n  iVar1 = *param_2;\n  *(undefined4 *)((int)puVar5 + -4) = 0;\n  *(int *)((int)puVar5 + -8) = param_2[1] + iVar1;\n  *(int *)((int)puVar5 + -0xc) = iVar1;\n  *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    \n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e6e9;\n  local_64 = local_70;\n  FUN_00068b30();\n  if (0x7fffffffU - local_60 < 2) {\n    *(char **)((int)puVar5 + -0x10) = "basic_string::append";\n                    \n                    \n    *(undefined1 **)((int)puVar5 + -0x14) = &LAB_0023e888;\n    FUN_00244a20();\n  }\n  *(undefined4 *)((int)puVar5 + -8) = 2;\n  *(undefined **)((int)puVar5 + -0xc) = &DAT_002bb1e1;\n  *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    \n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e70f;\n  FUN_00208840();\n  local_84 = local_60;\n  local_88 = local_64;\n  local_7c = 0xf;\n  if (local_64 != local_70) {\n    local_7c = local_5c[0];\n  }\n  if (local_7c < (uint)(local_60 + local_48)) {\n    uVar2 = 0xf;\n    if (local_4c != local_74) {\n      uVar2 = local_44[0];\n    }\n    if (uVar2 < (uint)(local_60 + local_48)) goto LAB_0023e751;\n    *(int *)((int)puVar5 + -0x10) = local_60;\n    *(uint **)((int)puVar5 + -0x14) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x18) = 0;\n    *(undefined4 *)((int)puVar5 + -0x1c) = 0;\n    *(undefined4 ***)((int)puVar5 + -0x20) = local_80;\n                    \n    *(undefined4 *)((int)puVar5 + -0x24) = 0x23e82a;\n    piVar3 = (int *)FUN_00207c70();\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) goto LAB_0023e840;\n  }\n  else {\nLAB_0023e751:\n    *(int *)((int)puVar5 + -8) = local_48;\n    *(uint **)((int)puVar5 + -0xc) = local_4c;\n    *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    \n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e;\n    piVar3 = (int *)FUN_00208840();\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) {\nLAB_0023e840:\n      local_34 = &local_2c;\n      local_2c = piVar3[2];\n      local_28 = piVar3[3];\n      local_24 = piVar3[4];\n      local_20 = piVar3[5];\n      goto LAB_0023e77d;\n    }\n  }\n  local_2c = piVar3[2];\nLAB_0023e77d:\n  local_30 = piVar3[1];\n  *(undefined1 *)(piVar3 + 2) = 0;\n  *piVar3 = (int)piVar4;\n  piVar3[1] = 0;\n  *(int ***)((int)puVar5 + -0xc) = &local_34;\n  *(undefined4 **)((int)puVar5 + -0x10) = param_1;\n                    \n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7a1;\n  FUN_002845b0();\n  if (local_34 != &local_2c) {\n    *(int **)((int)puVar5 + -0x10) = local_34;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7b4;\n    FUN_001ff030();\n  }\n  if (local_64 != local_70) {\n    *(uint **)((int)puVar5 + -0x10) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7ca;\n    FUN_001ff030();\n  }\n  if (local_4c != local_74) {\n    *(uint **)((int)puVar5 + -0x10) = local_4c;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7e0;\n    FUN_001ff030();\n  }\n  param_1[2] = 1;\n  param_1[3] = local_78;\n  *param_1 = &PTR_FUN_003ad1b0;\n  return;\n}" primitive_type (function_declarator "FUN_0023e660(undefined4 *param_1,int *param_2)" identifier (parameter_list "(undefined4 *param_1,int *param_2)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int *piVar3;\n  int *piVar4;\n  undefined4 *puVar5;\n  undefined4 uStack_90;\n  undefined1 auStack_8c [4];\n  uint *local_88;\n  int local_84;\n  undefined4 **local_80;\n  uint local_7c;\n  int *local_78;\n  uint *local_74;\n  uint *local_70;\n  uint *local_64;\n  int local_60;\n  uint local_5c [4];\n  uint *local_4c;\n  int local_48;\n  uint local_44 [4];\n  int *local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  puVar5 = (undefined4 *)auStack_8c;\n  uStack_90 = 0x23e67e;\n  local_78 = (int *)FUN_0023e5f0();\n  local_80 = &local_4c;\n  if (*(code **)(*local_78 + 0x10) == FUN_0023e570) {\n    local_74 = local_44;\n    local_48 = 0;\n    local_44[0] = local_44[0] & 0xffffff00;\n    local_4c = local_74;\n                    \n    FUN_00207c70(&local_4c,0,0,"iostream error",0xe);\n  }\n  else {\n    (**(code **)(*local_78 + 0x10))(&local_4c,local_78,1);\n    local_74 = local_44;\n    puVar5 = &uStack_90;\n  }\n  local_70 = local_5c;\n  iVar1 = *param_2;\n  *(undefined4 *)((int)puVar5 + -4) = 0;\n  *(int *)((int)puVar5 + -8) = param_2[1] + iVar1;\n  *(int *)((int)puVar5 + -0xc) = iVar1;\n  *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    \n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e6e9;\n  local_64 = local_70;\n  FUN_00068b30();\n  if (0x7fffffffU - local_60 < 2) {\n    *(char **)((int)puVar5 + -0x10) = "basic_string::append";\n                    \n                    \n    *(undefined1 **)((int)puVar5 + -0x14) = &LAB_0023e888;\n    FUN_00244a20();\n  }\n  *(undefined4 *)((int)puVar5 + -8) = 2;\n  *(undefined **)((int)puVar5 + -0xc) = &DAT_002bb1e1;\n  *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    \n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e70f;\n  FUN_00208840();\n  local_84 = local_60;\n  local_88 = local_64;\n  local_7c = 0xf;\n  if (local_64 != local_70) {\n    local_7c = local_5c[0];\n  }\n  if (local_7c < (uint)(local_60 + local_48)) {\n    uVar2 = 0xf;\n    if (local_4c != local_74) {\n      uVar2 = local_44[0];\n    }\n    if (uVar2 < (uint)(local_60 + local_48)) goto LAB_0023e751;\n    *(int *)((int)puVar5 + -0x10) = local_60;\n    *(uint **)((int)puVar5 + -0x14) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x18) = 0;\n    *(undefined4 *)((int)puVar5 + -0x1c) = 0;\n    *(undefined4 ***)((int)puVar5 + -0x20) = local_80;\n                    \n    *(undefined4 *)((int)puVar5 + -0x24) = 0x23e82a;\n    piVar3 = (int *)FUN_00207c70();\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) goto LAB_0023e840;\n  }\n  else {\nLAB_0023e751:\n    *(int *)((int)puVar5 + -8) = local_48;\n    *(uint **)((int)puVar5 + -0xc) = local_4c;\n    *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    \n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e;\n    piVar3 = (int *)FUN_00208840();\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) {\nLAB_0023e840:\n      local_34 = &local_2c;\n      local_2c = piVar3[2];\n      local_28 = piVar3[3];\n      local_24 = piVar3[4];\n      local_20 = piVar3[5];\n      goto LAB_0023e77d;\n    }\n  }\n  local_2c = piVar3[2];\nLAB_0023e77d:\n  local_30 = piVar3[1];\n  *(undefined1 *)(piVar3 + 2) = 0;\n  *piVar3 = (int)piVar4;\n  piVar3[1] = 0;\n  *(int ***)((int)puVar5 + -0xc) = &local_34;\n  *(undefined4 **)((int)puVar5 + -0x10) = param_1;\n                    \n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7a1;\n  FUN_002845b0();\n  if (local_34 != &local_2c) {\n    *(int **)((int)puVar5 + -0x10) = local_34;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7b4;\n    FUN_001ff030();\n  }\n  if (local_64 != local_70) {\n    *(uint **)((int)puVar5 + -0x10) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7ca;\n    FUN_001ff030();\n  }\n  if (local_4c != local_74) {\n    *(uint **)((int)puVar5 + -0x10) = local_4c;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7e0;\n    FUN_001ff030();\n  }\n  param_1[2] = 1;\n  param_1[3] = local_78;\n  *param_1 = &PTR_FUN_003ad1b0;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 uStack_90;" type_identifier identifier ;) (declaration "undefined1 auStack_8c [4];" type_identifier (array_declarator "auStack_8c [4]" identifier [ number_literal ]) ;) (declaration "uint *local_88;" type_identifier (pointer_declarator "*local_88" * identifier) ;) (declaration "int local_84;" primitive_type identifier ;) (declaration "undefined4 **local_80;" type_identifier (pointer_declarator "**local_80" * (pointer_declarator "*local_80" * identifier)) ;) (declaration "uint local_7c;" type_identifier identifier ;) (declaration "int *local_78;" primitive_type (pointer_declarator "*local_78" * identifier) ;) (declaration "uint *local_74;" type_identifier (pointer_declarator "*local_74" * identifier) ;) (declaration "uint *local_70;" type_identifier (pointer_declarator "*local_70" * identifier) ;) (declaration "uint *local_64;" type_identifier (pointer_declarator "*local_64" * identifier) ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "uint local_5c [4];" type_identifier (array_declarator "local_5c [4]" identifier [ number_literal ]) ;) (declaration "uint *local_4c;" type_identifier (pointer_declarator "*local_4c" * identifier) ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "uint local_44 [4];" type_identifier (array_declarator "local_44 [4]" identifier [ number_literal ]) ;) (declaration "int *local_34;" primitive_type (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "puVar5 = (undefined4 *)auStack_8c;" (assignment_expression "puVar5 = (undefined4 *)auStack_8c" identifier = (cast_expression "(undefined4 *)auStack_8c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "uStack_90 = 0x23e67e;" (assignment_expression "uStack_90 = 0x23e67e" identifier = number_literal) ;) (expression_statement "local_78 = (int *)FUN_0023e5f0();" (assignment_expression "local_78 = (int *)FUN_0023e5f0()" identifier = (cast_expression "(int *)FUN_0023e5f0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0023e5f0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_80 = &local_4c;" (assignment_expression "local_80 = &local_4c" identifier = (pointer_expression "&local_4c" & identifier)) ;) (if_statement "if (*(code **)(*local_78 + 0x10) == FUN_0023e570) {\n    local_74 = local_44;\n    local_48 = 0;\n    local_44[0] = local_44[0] & 0xffffff00;\n    local_4c = local_74;\n                    \n    FUN_00207c70(&local_4c,0,0,"iostream error",0xe);\n  }\n  else {\n    (**(code **)(*local_78 + 0x10))(&local_4c,local_78,1);\n    local_74 = local_44;\n    puVar5 = &uStack_90;\n  }" if (parenthesized_expression "(*(code **)(*local_78 + 0x10) == FUN_0023e570)" ( (binary_expression "*(code **)(*local_78 + 0x10) == FUN_0023e570" (pointer_expression "*(code **)(*local_78 + 0x10)" * (cast_expression "(code **)(*local_78 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_78 + 0x10)" ( (binary_expression "*local_78 + 0x10" (pointer_expression "*local_78" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n    local_74 = local_44;\n    local_48 = 0;\n    local_44[0] = local_44[0] & 0xffffff00;\n    local_4c = local_74;\n                    \n    FUN_00207c70(&local_4c,0,0,"iostream error",0xe);\n  }" { (expression_statement "local_74 = local_44;" (assignment_expression "local_74 = local_44" identifier = 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_74;" (assignment_expression "local_4c = local_74" identifier = identifier) ;) (expression_statement "FUN_00207c70(&local_4c,0,0,"iostream error",0xe);" (call_expression "FUN_00207c70(&local_4c,0,0,"iostream error",0xe)" identifier (argument_list "(&local_4c,0,0,"iostream error",0xe)" ( (pointer_expression "&local_4c" & identifier) , number_literal , number_literal , (string_literal ""iostream error"" " string_content ") , number_literal ))) ;) }) (else_clause "else {\n    (**(code **)(*local_78 + 0x10))(&local_4c,local_78,1);\n    local_74 = local_44;\n    puVar5 = &uStack_90;\n  }" else (compound_statement "{\n    (**(code **)(*local_78 + 0x10))(&local_4c,local_78,1);\n    local_74 = local_44;\n    puVar5 = &uStack_90;\n  }" { (expression_statement "(**(code **)(*local_78 + 0x10))(&local_4c,local_78,1);" (call_expression "(**(code **)(*local_78 + 0x10))(&local_4c,local_78,1)" (parenthesized_expression "(**(code **)(*local_78 + 0x10))" ( (pointer_expression "**(code **)(*local_78 + 0x10)" * (pointer_expression "*(code **)(*local_78 + 0x10)" * (cast_expression "(code **)(*local_78 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_78 + 0x10)" ( (binary_expression "*local_78 + 0x10" (pointer_expression "*local_78" * identifier) + number_literal) ))))) )) (argument_list "(&local_4c,local_78,1)" ( (pointer_expression "&local_4c" & identifier) , identifier , number_literal ))) ;) (expression_statement "local_74 = local_44;" (assignment_expression "local_74 = local_44" identifier = identifier) ;) (expression_statement "puVar5 = &uStack_90;" (assignment_expression "puVar5 = &uStack_90" identifier = (pointer_expression "&uStack_90" & identifier)) ;) }))) (expression_statement "local_70 = local_5c;" (assignment_expression "local_70 = local_5c" identifier = identifier) ;) (expression_statement "iVar1 = *param_2;" (assignment_expression "iVar1 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(undefined4 *)((int)puVar5 + -4) = 0;" (assignment_expression "*(undefined4 *)((int)puVar5 + -4) = 0" (pointer_expression "*(undefined4 *)((int)puVar5 + -4)" * (cast_expression "(undefined4 *)((int)puVar5 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -4)" ( (binary_expression "(int)puVar5 + -4" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)((int)puVar5 + -8) = param_2[1] + iVar1;" (assignment_expression "*(int *)((int)puVar5 + -8) = param_2[1] + iVar1" (pointer_expression "*(int *)((int)puVar5 + -8)" * (cast_expression "(int *)((int)puVar5 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -8)" ( (binary_expression "(int)puVar5 + -8" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "param_2[1] + iVar1" (subscript_expression "param_2[1]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "*(int *)((int)puVar5 + -0xc) = iVar1;" (assignment_expression "*(int *)((int)puVar5 + -0xc) = iVar1" (pointer_expression "*(int *)((int)puVar5 + -0xc)" * (cast_expression "(int *)((int)puVar5 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0xc)" ( (binary_expression "(int)puVar5 + -0xc" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint ***)((int)puVar5 + -0x10) = &local_64;" (assignment_expression "*(uint ***)((int)puVar5 + -0x10) = &local_64" (pointer_expression "*(uint ***)((int)puVar5 + -0x10)" * (cast_expression "(uint ***)((int)puVar5 + -0x10)" ( (type_descriptor "uint ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&local_64" & identifier)) ;) (expression_statement "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e6e9;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e6e9" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar5 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x14)" ( (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "local_64 = local_70;" (assignment_expression "local_64 = local_70" identifier = identifier) ;) (expression_statement "FUN_00068b30();" (call_expression "FUN_00068b30()" identifier (argument_list "()" ( ))) ;) (if_statement "if (0x7fffffffU - local_60 < 2) {\n    *(char **)((int)puVar5 + -0x10) = "basic_string::append";\n                    \n                    \n    *(undefined1 **)((int)puVar5 + -0x14) = &LAB_0023e888;\n    FUN_00244a20();\n  }" if (parenthesized_expression "(0x7fffffffU - local_60 < 2)" ( (binary_expression "0x7fffffffU - local_60 < 2" (binary_expression "0x7fffffffU - local_60" number_literal - identifier) < number_literal) )) (compound_statement "{\n    *(char **)((int)puVar5 + -0x10) = "basic_string::append";\n                    \n                    \n    *(undefined1 **)((int)puVar5 + -0x14) = &LAB_0023e888;\n    FUN_00244a20();\n  }" { (expression_statement "*(char **)((int)puVar5 + -0x10) = "basic_string::append";" (assignment_expression "*(char **)((int)puVar5 + -0x10) = "basic_string::append"" (pointer_expression "*(char **)((int)puVar5 + -0x10)" * (cast_expression "(char **)((int)puVar5 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (string_literal ""basic_string::append"" " string_content ")) ;) (expression_statement "*(undefined1 **)((int)puVar5 + -0x14) = &LAB_0023e888;" (assignment_expression "*(undefined1 **)((int)puVar5 + -0x14) = &LAB_0023e888" (pointer_expression "*(undefined1 **)((int)puVar5 + -0x14)" * (cast_expression "(undefined1 **)((int)puVar5 + -0x14)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0x14)" ( (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&LAB_0023e888" & identifier)) ;) (expression_statement "FUN_00244a20();" (call_expression "FUN_00244a20()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(undefined4 *)((int)puVar5 + -8) = 2;" (assignment_expression "*(undefined4 *)((int)puVar5 + -8) = 2" (pointer_expression "*(undefined4 *)((int)puVar5 + -8)" * (cast_expression "(undefined4 *)((int)puVar5 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -8)" ( (binary_expression "(int)puVar5 + -8" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined **)((int)puVar5 + -0xc) = &DAT_002bb1e1;" (assignment_expression "*(undefined **)((int)puVar5 + -0xc) = &DAT_002bb1e1" (pointer_expression "*(undefined **)((int)puVar5 + -0xc)" * (cast_expression "(undefined **)((int)puVar5 + -0xc)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0xc)" ( (binary_expression "(int)puVar5 + -0xc" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&DAT_002bb1e1" & identifier)) ;) (expression_statement "*(uint ***)((int)puVar5 + -0x10) = &local_64;" (assignment_expression "*(uint ***)((int)puVar5 + -0x10) = &local_64" (pointer_expression "*(uint ***)((int)puVar5 + -0x10)" * (cast_expression "(uint ***)((int)puVar5 + -0x10)" ( (type_descriptor "uint ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&local_64" & identifier)) ;) (expression_statement "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e70f;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e70f" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar5 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x14)" ( (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00208840();" (call_expression "FUN_00208840()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_84 = local_60;" (assignment_expression "local_84 = local_60" identifier = identifier) ;) (expression_statement "local_88 = local_64;" (assignment_expression "local_88 = local_64" identifier = identifier) ;) (expression_statement "local_7c = 0xf;" (assignment_expression "local_7c = 0xf" identifier = number_literal) ;) (if_statement "if (local_64 != local_70) {\n    local_7c = local_5c[0];\n  }" if (parenthesized_expression "(local_64 != local_70)" ( (binary_expression "local_64 != local_70" identifier != identifier) )) (compound_statement "{\n    local_7c = local_5c[0];\n  }" { (expression_statement "local_7c = local_5c[0];" (assignment_expression "local_7c = local_5c[0]" identifier = (subscript_expression "local_5c[0]" identifier [ number_literal ])) ;) })) (if_statement "if (local_7c < (uint)(local_60 + local_48)) {\n    uVar2 = 0xf;\n    if (local_4c != local_74) {\n      uVar2 = local_44[0];\n    }\n    if (uVar2 < (uint)(local_60 + local_48)) goto LAB_0023e751;\n    *(int *)((int)puVar5 + -0x10) = local_60;\n    *(uint **)((int)puVar5 + -0x14) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x18) = 0;\n    *(undefined4 *)((int)puVar5 + -0x1c) = 0;\n    *(undefined4 ***)((int)puVar5 + -0x20) = local_80;\n                    \n    *(undefined4 *)((int)puVar5 + -0x24) = 0x23e82a;\n    piVar3 = (int *)FUN_00207c70();\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) goto LAB_0023e840;\n  }\n  else {\nLAB_0023e751:\n    *(int *)((int)puVar5 + -8) = local_48;\n    *(uint **)((int)puVar5 + -0xc) = local_4c;\n    *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    \n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e;\n    piVar3 = (int *)FUN_00208840();\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) {\nLAB_0023e840:\n      local_34 = &local_2c;\n      local_2c = piVar3[2];\n      local_28 = piVar3[3];\n      local_24 = piVar3[4];\n      local_20 = piVar3[5];\n      goto LAB_0023e77d;\n    }\n  }" if (parenthesized_expression "(local_7c < (uint)(local_60 + local_48))" ( (binary_expression "local_7c < (uint)(local_60 + local_48)" identifier < (call_expression "(uint)(local_60 + local_48)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_60 + local_48)" ( (binary_expression "local_60 + local_48" identifier + identifier) )))) )) (compound_statement "{\n    uVar2 = 0xf;\n    if (local_4c != local_74) {\n      uVar2 = local_44[0];\n    }\n    if (uVar2 < (uint)(local_60 + local_48)) goto LAB_0023e751;\n    *(int *)((int)puVar5 + -0x10) = local_60;\n    *(uint **)((int)puVar5 + -0x14) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x18) = 0;\n    *(undefined4 *)((int)puVar5 + -0x1c) = 0;\n    *(undefined4 ***)((int)puVar5 + -0x20) = local_80;\n                    \n    *(undefined4 *)((int)puVar5 + -0x24) = 0x23e82a;\n    piVar3 = (int *)FUN_00207c70();\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) goto LAB_0023e840;\n  }" { (expression_statement "uVar2 = 0xf;" (assignment_expression "uVar2 = 0xf" identifier = number_literal) ;) (if_statement "if (local_4c != local_74) {\n      uVar2 = local_44[0];\n    }" if (parenthesized_expression "(local_4c != local_74)" ( (binary_expression "local_4c != local_74" identifier != identifier) )) (compound_statement "{\n      uVar2 = local_44[0];\n    }" { (expression_statement "uVar2 = local_44[0];" (assignment_expression "uVar2 = local_44[0]" identifier = (subscript_expression "local_44[0]" identifier [ number_literal ])) ;) })) (if_statement "if (uVar2 < (uint)(local_60 + local_48)) goto LAB_0023e751;" if (parenthesized_expression "(uVar2 < (uint)(local_60 + local_48))" ( (binary_expression "uVar2 < (uint)(local_60 + local_48)" identifier < (call_expression "(uint)(local_60 + local_48)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_60 + local_48)" ( (binary_expression "local_60 + local_48" identifier + identifier) )))) )) (goto_statement "goto LAB_0023e751;" goto statement_identifier ;)) (expression_statement "*(int *)((int)puVar5 + -0x10) = local_60;" (assignment_expression "*(int *)((int)puVar5 + -0x10) = local_60" (pointer_expression "*(int *)((int)puVar5 + -0x10)" * (cast_expression "(int *)((int)puVar5 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)((int)puVar5 + -0x14) = local_64;" (assignment_expression "*(uint **)((int)puVar5 + -0x14) = local_64" (pointer_expression "*(uint **)((int)puVar5 + -0x14)" * (cast_expression "(uint **)((int)puVar5 + -0x14)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0x14)" ( (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)puVar5 + -0x18) = 0;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x18) = 0" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x18)" * (cast_expression "(undefined4 *)((int)puVar5 + -0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x18)" ( (binary_expression "(int)puVar5 + -0x18" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)puVar5 + -0x1c) = 0;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x1c) = 0" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x1c)" * (cast_expression "(undefined4 *)((int)puVar5 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x1c)" ( (binary_expression "(int)puVar5 + -0x1c" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 ***)((int)puVar5 + -0x20) = local_80;" (assignment_expression "*(undefined4 ***)((int)puVar5 + -0x20) = local_80" (pointer_expression "*(undefined4 ***)((int)puVar5 + -0x20)" * (cast_expression "(undefined4 ***)((int)puVar5 + -0x20)" ( (type_descriptor "undefined4 ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)puVar5 + -0x20)" ( (binary_expression "(int)puVar5 + -0x20" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)puVar5 + -0x24) = 0x23e82a;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x24) = 0x23e82a" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x24)" * (cast_expression "(undefined4 *)((int)puVar5 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x24)" ( (binary_expression "(int)puVar5 + -0x24" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "piVar3 = (int *)FUN_00207c70();" (assignment_expression "piVar3 = (int *)FUN_00207c70()" identifier = (cast_expression "(int *)FUN_00207c70()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00207c70()" identifier (argument_list "()" ( ))))) ;) (expression_statement "piVar4 = piVar3 + 2;" (assignment_expression "piVar4 = piVar3 + 2" identifier = (binary_expression "piVar3 + 2" identifier + number_literal)) ;) (expression_statement "local_34 = (int *)*piVar3;" (assignment_expression "local_34 = (int *)*piVar3" identifier = (cast_expression "(int *)*piVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar3" * identifier))) ;) (if_statement "if (local_34 == piVar4) goto LAB_0023e840;" if (parenthesized_expression "(local_34 == piVar4)" ( (binary_expression "local_34 == piVar4" identifier == identifier) )) (goto_statement "goto LAB_0023e840;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_0023e751:\n    *(int *)((int)puVar5 + -8) = local_48;\n    *(uint **)((int)puVar5 + -0xc) = local_4c;\n    *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    \n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e;\n    piVar3 = (int *)FUN_00208840();\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) {\nLAB_0023e840:\n      local_34 = &local_2c;\n      local_2c = piVar3[2];\n      local_28 = piVar3[3];\n      local_24 = piVar3[4];\n      local_20 = piVar3[5];\n      goto LAB_0023e77d;\n    }\n  }" else (compound_statement "{\nLAB_0023e751:\n    *(int *)((int)puVar5 + -8) = local_48;\n    *(uint **)((int)puVar5 + -0xc) = local_4c;\n    *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    \n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e;\n    piVar3 = (int *)FUN_00208840();\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) {\nLAB_0023e840:\n      local_34 = &local_2c;\n      local_2c = piVar3[2];\n      local_28 = piVar3[3];\n      local_24 = piVar3[4];\n      local_20 = piVar3[5];\n      goto LAB_0023e77d;\n    }\n  }" { (labeled_statement "LAB_0023e751:\n    *(int *)((int)puVar5 + -8) = local_48;" statement_identifier : (expression_statement "*(int *)((int)puVar5 + -8) = local_48;" (assignment_expression "*(int *)((int)puVar5 + -8) = local_48" (pointer_expression "*(int *)((int)puVar5 + -8)" * (cast_expression "(int *)((int)puVar5 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -8)" ( (binary_expression "(int)puVar5 + -8" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;)) (expression_statement "*(uint **)((int)puVar5 + -0xc) = local_4c;" (assignment_expression "*(uint **)((int)puVar5 + -0xc) = local_4c" (pointer_expression "*(uint **)((int)puVar5 + -0xc)" * (cast_expression "(uint **)((int)puVar5 + -0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0xc)" ( (binary_expression "(int)puVar5 + -0xc" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint ***)((int)puVar5 + -0x10) = &local_64;" (assignment_expression "*(uint ***)((int)puVar5 + -0x10) = &local_64" (pointer_expression "*(uint ***)((int)puVar5 + -0x10)" * (cast_expression "(uint ***)((int)puVar5 + -0x10)" ( (type_descriptor "uint ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&local_64" & identifier)) ;) (expression_statement "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar5 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x14)" ( (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "piVar3 = (int *)FUN_00208840();" (assignment_expression "piVar3 = (int *)FUN_00208840()" identifier = (cast_expression "(int *)FUN_00208840()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00208840()" identifier (argument_list "()" ( ))))) ;) (expression_statement "piVar4 = piVar3 + 2;" (assignment_expression "piVar4 = piVar3 + 2" identifier = (binary_expression "piVar3 + 2" identifier + number_literal)) ;) (expression_statement "local_34 = (int *)*piVar3;" (assignment_expression "local_34 = (int *)*piVar3" identifier = (cast_expression "(int *)*piVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar3" * identifier))) ;) (if_statement "if (local_34 == piVar4) {\nLAB_0023e840:\n      local_34 = &local_2c;\n      local_2c = piVar3[2];\n      local_28 = piVar3[3];\n      local_24 = piVar3[4];\n      local_20 = piVar3[5];\n      goto LAB_0023e77d;\n    }" if (parenthesized_expression "(local_34 == piVar4)" ( (binary_expression "local_34 == piVar4" identifier == identifier) )) (compound_statement "{\nLAB_0023e840:\n      local_34 = &local_2c;\n      local_2c = piVar3[2];\n      local_28 = piVar3[3];\n      local_24 = piVar3[4];\n      local_20 = piVar3[5];\n      goto LAB_0023e77d;\n    }" { (labeled_statement "LAB_0023e840:\n      local_34 = &local_2c;" statement_identifier : (expression_statement "local_34 = &local_2c;" (assignment_expression "local_34 = &local_2c" identifier = (pointer_expression "&local_2c" & identifier)) ;)) (expression_statement "local_2c = piVar3[2];" (assignment_expression "local_2c = piVar3[2]" identifier = (subscript_expression "piVar3[2]" identifier [ number_literal ])) ;) (expression_statement "local_28 = piVar3[3];" (assignment_expression "local_28 = piVar3[3]" identifier = (subscript_expression "piVar3[3]" identifier [ number_literal ])) ;) (expression_statement "local_24 = piVar3[4];" (assignment_expression "local_24 = piVar3[4]" identifier = (subscript_expression "piVar3[4]" identifier [ number_literal ])) ;) (expression_statement "local_20 = piVar3[5];" (assignment_expression "local_20 = piVar3[5]" identifier = (subscript_expression "piVar3[5]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_0023e77d;" goto statement_identifier ;) })) }))) (expression_statement "local_2c = piVar3[2];" (assignment_expression "local_2c = piVar3[2]" identifier = (subscript_expression "piVar3[2]" identifier [ number_literal ])) ;) (labeled_statement "LAB_0023e77d:\n  local_30 = piVar3[1];" statement_identifier : (expression_statement "local_30 = piVar3[1];" (assignment_expression "local_30 = piVar3[1]" identifier = (subscript_expression "piVar3[1]" identifier [ number_literal ])) ;)) (expression_statement "*(undefined1 *)(piVar3 + 2) = 0;" (assignment_expression "*(undefined1 *)(piVar3 + 2) = 0" (pointer_expression "*(undefined1 *)(piVar3 + 2)" * (cast_expression "(undefined1 *)(piVar3 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 2)" ( (binary_expression "piVar3 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*piVar3 = (int)piVar4;" (assignment_expression "*piVar3 = (int)piVar4" (pointer_expression "*piVar3" * identifier) = (cast_expression "(int)piVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar3[1] = 0;" (assignment_expression "piVar3[1] = 0" (subscript_expression "piVar3[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int ***)((int)puVar5 + -0xc) = &local_34;" (assignment_expression "*(int ***)((int)puVar5 + -0xc) = &local_34" (pointer_expression "*(int ***)((int)puVar5 + -0xc)" * (cast_expression "(int ***)((int)puVar5 + -0xc)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)puVar5 + -0xc)" ( (binary_expression "(int)puVar5 + -0xc" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "&local_34" & identifier)) ;) (expression_statement "*(undefined4 **)((int)puVar5 + -0x10) = param_1;" (assignment_expression "*(undefined4 **)((int)puVar5 + -0x10) = param_1" (pointer_expression "*(undefined4 **)((int)puVar5 + -0x10)" * (cast_expression "(undefined4 **)((int)puVar5 + -0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7a1;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7a1" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar5 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x14)" ( (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_002845b0();" (call_expression "FUN_002845b0()" identifier (argument_list "()" ( ))) ;) (if_statement "if (local_34 != &local_2c) {\n    *(int **)((int)puVar5 + -0x10) = local_34;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7b4;\n    FUN_001ff030();\n  }" if (parenthesized_expression "(local_34 != &local_2c)" ( (binary_expression "local_34 != &local_2c" identifier != (pointer_expression "&local_2c" & identifier)) )) (compound_statement "{\n    *(int **)((int)puVar5 + -0x10) = local_34;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7b4;\n    FUN_001ff030();\n  }" { (expression_statement "*(int **)((int)puVar5 + -0x10) = local_34;" (assignment_expression "*(int **)((int)puVar5 + -0x10) = local_34" (pointer_expression "*(int **)((int)puVar5 + -0x10)" * (cast_expression "(int **)((int)puVar5 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7b4;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7b4" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar5 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x14)" ( (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001ff030();" (call_expression "FUN_001ff030()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (local_64 != local_70) {\n    *(uint **)((int)puVar5 + -0x10) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7ca;\n    FUN_001ff030();\n  }" if (parenthesized_expression "(local_64 != local_70)" ( (binary_expression "local_64 != local_70" identifier != identifier) )) (compound_statement "{\n    *(uint **)((int)puVar5 + -0x10) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7ca;\n    FUN_001ff030();\n  }" { (expression_statement "*(uint **)((int)puVar5 + -0x10) = local_64;" (assignment_expression "*(uint **)((int)puVar5 + -0x10) = local_64" (pointer_expression "*(uint **)((int)puVar5 + -0x10)" * (cast_expression "(uint **)((int)puVar5 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7ca;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7ca" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar5 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x14)" ( (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001ff030();" (call_expression "FUN_001ff030()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (local_4c != local_74) {\n    *(uint **)((int)puVar5 + -0x10) = local_4c;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7e0;\n    FUN_001ff030();\n  }" if (parenthesized_expression "(local_4c != local_74)" ( (binary_expression "local_4c != local_74" identifier != identifier) )) (compound_statement "{\n    *(uint **)((int)puVar5 + -0x10) = local_4c;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7e0;\n    FUN_001ff030();\n  }" { (expression_statement "*(uint **)((int)puVar5 + -0x10) = local_4c;" (assignment_expression "*(uint **)((int)puVar5 + -0x10) = local_4c" (pointer_expression "*(uint **)((int)puVar5 + -0x10)" * (cast_expression "(uint **)((int)puVar5 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)puVar5 + -0x10)" ( (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7e0;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7e0" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x14)" * (cast_expression "(undefined4 *)((int)puVar5 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -0x14)" ( (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_001ff030();" (call_expression "FUN_001ff030()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "param_1[2] = 1;" (assignment_expression "param_1[2] = 1" (subscript_expression "param_1[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[3] = local_78;" (assignment_expression "param_1[3] = local_78" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_1 = &PTR_FUN_003ad1b0;" (assignment_expression "*param_1 = &PTR_FUN_003ad1b0" (pointer_expression "*param_1" * identifier) = (pointer_expression "&PTR_FUN_003ad1b0" & identifier)) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (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 ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = 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) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , LIT , (string_literal " string_content ") , LIT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( (pointer_expression & IDENT) , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + 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) + LIT) )))) = (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression LIT - IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (string_literal " string_content ")) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + IDENT) )))) )) (compound_statement { (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 < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + IDENT) )))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + 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) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ 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) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (return_statement return ;) })))
(function_definition "void FUN_0023e660(undefined4 *param_1,int *param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  int *piVar3;\n  int *piVar4;\n  undefined4 *puVar5;\n  undefined4 uStack_90;\n  undefined1 auStack_8c [4];\n  uint *local_88;\n  int local_84;\n  undefined4 **local_80;\n  uint local_7c;\n  int *local_78;\n  uint *local_74;\n  uint *local_70;\n  uint *local_64;\n  int local_60;\n  uint local_5c [4];\n  uint *local_4c;\n  int local_48;\n  uint local_44 [4];\n  int *local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  puVar5 = (undefined4 *)auStack_8c;\n  uStack_90 = 0x23e67e;\n  local_78 = (int *)FUN_0023e5f0();\n  local_80 = &local_4c;\n  if (*(code **)(*local_78 + 0x10) == FUN_0023e570) {\n    local_74 = local_44;\n    local_48 = 0;\n    local_44[0] = local_44[0] & 0xffffff00;\n    local_4c = local_74;\n                    \n    FUN_00207c70(&local_4c,0,0,"iostream error",0xe);\n  }\n  else {\n    (**(code **)(*local_78 + 0x10))(&local_4c,local_78,1);\n    local_74 = local_44;\n    puVar5 = &uStack_90;\n  }\n  local_70 = local_5c;\n  iVar1 = *param_2;\n  *(undefined4 *)((int)puVar5 + -4) = 0;\n  *(int *)((int)puVar5 + -8) = param_2[1] + iVar1;\n  *(int *)((int)puVar5 + -0xc) = iVar1;\n  *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    \n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e6e9;\n  local_64 = local_70;\n  FUN_00068b30();\n  if (0x7fffffffU - local_60 < 2) {\n    *(char **)((int)puVar5 + -0x10) = "basic_string::append";\n                    \n                    \n    *(undefined1 **)((int)puVar5 + -0x14) = &LAB_0023e888;\n    FUN_00244a20();\n  }\n  *(undefined4 *)((int)puVar5 + -8) = 2;\n  *(undefined **)((int)puVar5 + -0xc) = &DAT_002bb1e1;\n  *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    \n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e70f;\n  FUN_00208840();\n  local_84 = local_60;\n  local_88 = local_64;\n  local_7c = 0xf;\n  if (local_64 != local_70) {\n    local_7c = local_5c[0];\n  }\n  if (local_7c < (uint)(local_60 + local_48)) {\n    uVar2 = 0xf;\n    if (local_4c != local_74) {\n      uVar2 = local_44[0];\n    }\n    if (uVar2 < (uint)(local_60 + local_48)) goto LAB_0023e751;\n    *(int *)((int)puVar5 + -0x10) = local_60;\n    *(uint **)((int)puVar5 + -0x14) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x18) = 0;\n    *(undefined4 *)((int)puVar5 + -0x1c) = 0;\n    *(undefined4 ***)((int)puVar5 + -0x20) = local_80;\n                    \n    *(undefined4 *)((int)puVar5 + -0x24) = 0x23e82a;\n    piVar3 = (int *)FUN_00207c70();\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) goto LAB_0023e840;\n  }\n  else {\nLAB_0023e751:\n    *(int *)((int)puVar5 + -8) = local_48;\n    *(uint **)((int)puVar5 + -0xc) = local_4c;\n    *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    \n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e;\n    piVar3 = (int *)FUN_00208840();\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) {\nLAB_0023e840:\n      local_34 = &local_2c;\n      local_2c = piVar3[2];\n      local_28 = piVar3[3];\n      local_24 = piVar3[4];\n      local_20 = piVar3[5];\n      goto LAB_0023e77d;\n    }\n  }\n  local_2c = piVar3[2];\nLAB_0023e77d:\n  local_30 = piVar3[1];\n  *(undefined1 *)(piVar3 + 2) = 0;\n  *piVar3 = (int)piVar4;\n  piVar3[1] = 0;\n  *(int ***)((int)puVar5 + -0xc) = &local_34;\n  *(undefined4 **)((int)puVar5 + -0x10) = param_1;\n                    \n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7a1;\n  FUN_002845b0();\n  if (local_34 != &local_2c) {\n    *(int **)((int)puVar5 + -0x10) = local_34;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7b4;\n    FUN_001ff030();\n  }\n  if (local_64 != local_70) {\n    *(uint **)((int)puVar5 + -0x10) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7ca;\n    FUN_001ff030();\n  }\n  if (local_4c != local_74) {\n    *(uint **)((int)puVar5 + -0x10) = local_4c;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7e0;\n    FUN_001ff030();\n  }\n  param_1[2] = 1;\n  param_1[3] = local_78;\n  *param_1 = &PTR_FUN_003ad1b0;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0023e660(undefined4 *param_1,int *param_2)" (identifier "FUN_0023e660") (parameter_list "(undefined4 *param_1,int *param_2)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int *piVar3;\n  int *piVar4;\n  undefined4 *puVar5;\n  undefined4 uStack_90;\n  undefined1 auStack_8c [4];\n  uint *local_88;\n  int local_84;\n  undefined4 **local_80;\n  uint local_7c;\n  int *local_78;\n  uint *local_74;\n  uint *local_70;\n  uint *local_64;\n  int local_60;\n  uint local_5c [4];\n  uint *local_4c;\n  int local_48;\n  uint local_44 [4];\n  int *local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  puVar5 = (undefined4 *)auStack_8c;\n  uStack_90 = 0x23e67e;\n  local_78 = (int *)FUN_0023e5f0();\n  local_80 = &local_4c;\n  if (*(code **)(*local_78 + 0x10) == FUN_0023e570) {\n    local_74 = local_44;\n    local_48 = 0;\n    local_44[0] = local_44[0] & 0xffffff00;\n    local_4c = local_74;\n                    \n    FUN_00207c70(&local_4c,0,0,"iostream error",0xe);\n  }\n  else {\n    (**(code **)(*local_78 + 0x10))(&local_4c,local_78,1);\n    local_74 = local_44;\n    puVar5 = &uStack_90;\n  }\n  local_70 = local_5c;\n  iVar1 = *param_2;\n  *(undefined4 *)((int)puVar5 + -4) = 0;\n  *(int *)((int)puVar5 + -8) = param_2[1] + iVar1;\n  *(int *)((int)puVar5 + -0xc) = iVar1;\n  *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    \n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e6e9;\n  local_64 = local_70;\n  FUN_00068b30();\n  if (0x7fffffffU - local_60 < 2) {\n    *(char **)((int)puVar5 + -0x10) = "basic_string::append";\n                    \n                    \n    *(undefined1 **)((int)puVar5 + -0x14) = &LAB_0023e888;\n    FUN_00244a20();\n  }\n  *(undefined4 *)((int)puVar5 + -8) = 2;\n  *(undefined **)((int)puVar5 + -0xc) = &DAT_002bb1e1;\n  *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    \n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e70f;\n  FUN_00208840();\n  local_84 = local_60;\n  local_88 = local_64;\n  local_7c = 0xf;\n  if (local_64 != local_70) {\n    local_7c = local_5c[0];\n  }\n  if (local_7c < (uint)(local_60 + local_48)) {\n    uVar2 = 0xf;\n    if (local_4c != local_74) {\n      uVar2 = local_44[0];\n    }\n    if (uVar2 < (uint)(local_60 + local_48)) goto LAB_0023e751;\n    *(int *)((int)puVar5 + -0x10) = local_60;\n    *(uint **)((int)puVar5 + -0x14) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x18) = 0;\n    *(undefined4 *)((int)puVar5 + -0x1c) = 0;\n    *(undefined4 ***)((int)puVar5 + -0x20) = local_80;\n                    \n    *(undefined4 *)((int)puVar5 + -0x24) = 0x23e82a;\n    piVar3 = (int *)FUN_00207c70();\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) goto LAB_0023e840;\n  }\n  else {\nLAB_0023e751:\n    *(int *)((int)puVar5 + -8) = local_48;\n    *(uint **)((int)puVar5 + -0xc) = local_4c;\n    *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    \n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e;\n    piVar3 = (int *)FUN_00208840();\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) {\nLAB_0023e840:\n      local_34 = &local_2c;\n      local_2c = piVar3[2];\n      local_28 = piVar3[3];\n      local_24 = piVar3[4];\n      local_20 = piVar3[5];\n      goto LAB_0023e77d;\n    }\n  }\n  local_2c = piVar3[2];\nLAB_0023e77d:\n  local_30 = piVar3[1];\n  *(undefined1 *)(piVar3 + 2) = 0;\n  *piVar3 = (int)piVar4;\n  piVar3[1] = 0;\n  *(int ***)((int)puVar5 + -0xc) = &local_34;\n  *(undefined4 **)((int)puVar5 + -0x10) = param_1;\n                    \n  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7a1;\n  FUN_002845b0();\n  if (local_34 != &local_2c) {\n    *(int **)((int)puVar5 + -0x10) = local_34;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7b4;\n    FUN_001ff030();\n  }\n  if (local_64 != local_70) {\n    *(uint **)((int)puVar5 + -0x10) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7ca;\n    FUN_001ff030();\n  }\n  if (local_4c != local_74) {\n    *(uint **)((int)puVar5 + -0x10) = local_4c;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7e0;\n    FUN_001ff030();\n  }\n  param_1[2] = 1;\n  param_1[3] = local_78;\n  *param_1 = &PTR_FUN_003ad1b0;\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "undefined4 *puVar5;" (type_identifier "undefined4") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined4 uStack_90;" (type_identifier "undefined4") (identifier "uStack_90") (; ";")) (declaration "undefined1 auStack_8c [4];" (type_identifier "undefined1") (array_declarator "auStack_8c [4]" (identifier "auStack_8c") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "uint *local_88;" (type_identifier "uint") (pointer_declarator "*local_88" (* "*") (identifier "local_88")) (; ";")) (declaration "int local_84;" (primitive_type "int") (identifier "local_84") (; ";")) (declaration "undefined4 **local_80;" (type_identifier "undefined4") (pointer_declarator "**local_80" (* "*") (pointer_declarator "*local_80" (* "*") (identifier "local_80"))) (; ";")) (declaration "uint local_7c;" (type_identifier "uint") (identifier "local_7c") (; ";")) (declaration "int *local_78;" (primitive_type "int") (pointer_declarator "*local_78" (* "*") (identifier "local_78")) (; ";")) (declaration "uint *local_74;" (type_identifier "uint") (pointer_declarator "*local_74" (* "*") (identifier "local_74")) (; ";")) (declaration "uint *local_70;" (type_identifier "uint") (pointer_declarator "*local_70" (* "*") (identifier "local_70")) (; ";")) (declaration "uint *local_64;" (type_identifier "uint") (pointer_declarator "*local_64" (* "*") (identifier "local_64")) (; ";")) (declaration "int local_60;" (primitive_type "int") (identifier "local_60") (; ";")) (declaration "uint local_5c [4];" (type_identifier "uint") (array_declarator "local_5c [4]" (identifier "local_5c") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "uint *local_4c;" (type_identifier "uint") (pointer_declarator "*local_4c" (* "*") (identifier "local_4c")) (; ";")) (declaration "int local_48;" (primitive_type "int") (identifier "local_48") (; ";")) (declaration "uint local_44 [4];" (type_identifier "uint") (array_declarator "local_44 [4]" (identifier "local_44") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "int *local_34;" (primitive_type "int") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (declaration "int local_28;" (primitive_type "int") (identifier "local_28") (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (expression_statement "puVar5 = (undefined4 *)auStack_8c;" (assignment_expression "puVar5 = (undefined4 *)auStack_8c" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)auStack_8c" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "auStack_8c"))) (; ";")) (expression_statement "uStack_90 = 0x23e67e;" (assignment_expression "uStack_90 = 0x23e67e" (identifier "uStack_90") (= "=") (number_literal "0x23e67e")) (; ";")) (expression_statement "local_78 = (int *)FUN_0023e5f0();" (assignment_expression "local_78 = (int *)FUN_0023e5f0()" (identifier "local_78") (= "=") (cast_expression "(int *)FUN_0023e5f0()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0023e5f0()" (identifier "FUN_0023e5f0") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "local_80 = &local_4c;" (assignment_expression "local_80 = &local_4c" (identifier "local_80") (= "=") (pointer_expression "&local_4c" (& "&") (identifier "local_4c"))) (; ";")) (if_statement "if (*(code **)(*local_78 + 0x10) == FUN_0023e570) {\n    local_74 = local_44;\n    local_48 = 0;\n    local_44[0] = local_44[0] & 0xffffff00;\n    local_4c = local_74;\n                    \n    FUN_00207c70(&local_4c,0,0,"iostream error",0xe);\n  }\n  else {\n    (**(code **)(*local_78 + 0x10))(&local_4c,local_78,1);\n    local_74 = local_44;\n    puVar5 = &uStack_90;\n  }" (if "if") (parenthesized_expression "(*(code **)(*local_78 + 0x10) == FUN_0023e570)" (( "(") (binary_expression "*(code **)(*local_78 + 0x10) == FUN_0023e570" (pointer_expression "*(code **)(*local_78 + 0x10)" (* "*") (cast_expression "(code **)(*local_78 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*local_78 + 0x10)" (( "(") (binary_expression "*local_78 + 0x10" (pointer_expression "*local_78" (* "*") (identifier "local_78")) (+ "+") (number_literal "0x10")) () ")")))) (== "==") (identifier "FUN_0023e570")) () ")")) (compound_statement "{\n    local_74 = local_44;\n    local_48 = 0;\n    local_44[0] = local_44[0] & 0xffffff00;\n    local_4c = local_74;\n                    \n    FUN_00207c70(&local_4c,0,0,"iostream error",0xe);\n  }" ({ "{") (expression_statement "local_74 = local_44;" (assignment_expression "local_74 = local_44" (identifier "local_74") (= "=") (identifier "local_44")) (; ";")) (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_74;" (assignment_expression "local_4c = local_74" (identifier "local_4c") (= "=") (identifier "local_74")) (; ";")) (expression_statement "FUN_00207c70(&local_4c,0,0,"iostream error",0xe);" (call_expression "FUN_00207c70(&local_4c,0,0,"iostream error",0xe)" (identifier "FUN_00207c70") (argument_list "(&local_4c,0,0,"iostream error",0xe)" (( "(") (pointer_expression "&local_4c" (& "&") (identifier "local_4c")) (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (string_literal ""iostream error"" (" """) (string_content "iostream error") (" """)) (, ",") (number_literal "0xe") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    (**(code **)(*local_78 + 0x10))(&local_4c,local_78,1);\n    local_74 = local_44;\n    puVar5 = &uStack_90;\n  }" (else "else") (compound_statement "{\n    (**(code **)(*local_78 + 0x10))(&local_4c,local_78,1);\n    local_74 = local_44;\n    puVar5 = &uStack_90;\n  }" ({ "{") (expression_statement "(**(code **)(*local_78 + 0x10))(&local_4c,local_78,1);" (call_expression "(**(code **)(*local_78 + 0x10))(&local_4c,local_78,1)" (parenthesized_expression "(**(code **)(*local_78 + 0x10))" (( "(") (pointer_expression "**(code **)(*local_78 + 0x10)" (* "*") (pointer_expression "*(code **)(*local_78 + 0x10)" (* "*") (cast_expression "(code **)(*local_78 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*local_78 + 0x10)" (( "(") (binary_expression "*local_78 + 0x10" (pointer_expression "*local_78" (* "*") (identifier "local_78")) (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "(&local_4c,local_78,1)" (( "(") (pointer_expression "&local_4c" (& "&") (identifier "local_4c")) (, ",") (identifier "local_78") (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "local_74 = local_44;" (assignment_expression "local_74 = local_44" (identifier "local_74") (= "=") (identifier "local_44")) (; ";")) (expression_statement "puVar5 = &uStack_90;" (assignment_expression "puVar5 = &uStack_90" (identifier "puVar5") (= "=") (pointer_expression "&uStack_90" (& "&") (identifier "uStack_90"))) (; ";")) (} "}")))) (expression_statement "local_70 = local_5c;" (assignment_expression "local_70 = local_5c" (identifier "local_70") (= "=") (identifier "local_5c")) (; ";")) (expression_statement "iVar1 = *param_2;" (assignment_expression "iVar1 = *param_2" (identifier "iVar1") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "*(undefined4 *)((int)puVar5 + -4) = 0;" (assignment_expression "*(undefined4 *)((int)puVar5 + -4) = 0" (pointer_expression "*(undefined4 *)((int)puVar5 + -4)" (* "*") (cast_expression "(undefined4 *)((int)puVar5 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + -4)" (( "(") (binary_expression "(int)puVar5 + -4" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)((int)puVar5 + -8) = param_2[1] + iVar1;" (assignment_expression "*(int *)((int)puVar5 + -8) = param_2[1] + iVar1" (pointer_expression "*(int *)((int)puVar5 + -8)" (* "*") (cast_expression "(int *)((int)puVar5 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + -8)" (( "(") (binary_expression "(int)puVar5 + -8" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (binary_expression "param_2[1] + iVar1" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (+ "+") (identifier "iVar1"))) (; ";")) (expression_statement "*(int *)((int)puVar5 + -0xc) = iVar1;" (assignment_expression "*(int *)((int)puVar5 + -0xc) = iVar1" (pointer_expression "*(int *)((int)puVar5 + -0xc)" (* "*") (cast_expression "(int *)((int)puVar5 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + -0xc)" (( "(") (binary_expression "(int)puVar5 + -0xc" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "iVar1")) (; ";")) (expression_statement "*(uint ***)((int)puVar5 + -0x10) = &local_64;" (assignment_expression "*(uint ***)((int)puVar5 + -0x10) = &local_64" (pointer_expression "*(uint ***)((int)puVar5 + -0x10)" (* "*") (cast_expression "(uint ***)((int)puVar5 + -0x10)" (( "(") (type_descriptor "uint ***" (type_identifier "uint") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "((int)puVar5 + -0x10)" (( "(") (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (pointer_expression "&local_64" (& "&") (identifier "local_64"))) (; ";")) (expression_statement "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e6e9;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e6e9" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)puVar5 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + -0x14)" (( "(") (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x23e6e9")) (; ";")) (expression_statement "local_64 = local_70;" (assignment_expression "local_64 = local_70" (identifier "local_64") (= "=") (identifier "local_70")) (; ";")) (expression_statement "FUN_00068b30();" (call_expression "FUN_00068b30()" (identifier "FUN_00068b30") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (0x7fffffffU - local_60 < 2) {\n    *(char **)((int)puVar5 + -0x10) = "basic_string::append";\n                    \n                    \n    *(undefined1 **)((int)puVar5 + -0x14) = &LAB_0023e888;\n    FUN_00244a20();\n  }" (if "if") (parenthesized_expression "(0x7fffffffU - local_60 < 2)" (( "(") (binary_expression "0x7fffffffU - local_60 < 2" (binary_expression "0x7fffffffU - local_60" (number_literal "0x7fffffffU") (- "-") (identifier "local_60")) (< "<") (number_literal "2")) () ")")) (compound_statement "{\n    *(char **)((int)puVar5 + -0x10) = "basic_string::append";\n                    \n                    \n    *(undefined1 **)((int)puVar5 + -0x14) = &LAB_0023e888;\n    FUN_00244a20();\n  }" ({ "{") (expression_statement "*(char **)((int)puVar5 + -0x10) = "basic_string::append";" (assignment_expression "*(char **)((int)puVar5 + -0x10) = "basic_string::append"" (pointer_expression "*(char **)((int)puVar5 + -0x10)" (* "*") (cast_expression "(char **)((int)puVar5 + -0x10)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)puVar5 + -0x10)" (( "(") (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (string_literal ""basic_string::append"" (" """) (string_content "basic_string::append") (" """))) (; ";")) (expression_statement "*(undefined1 **)((int)puVar5 + -0x14) = &LAB_0023e888;" (assignment_expression "*(undefined1 **)((int)puVar5 + -0x14) = &LAB_0023e888" (pointer_expression "*(undefined1 **)((int)puVar5 + -0x14)" (* "*") (cast_expression "(undefined1 **)((int)puVar5 + -0x14)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)puVar5 + -0x14)" (( "(") (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "&LAB_0023e888" (& "&") (identifier "LAB_0023e888"))) (; ";")) (expression_statement "FUN_00244a20();" (call_expression "FUN_00244a20()" (identifier "FUN_00244a20") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)((int)puVar5 + -8) = 2;" (assignment_expression "*(undefined4 *)((int)puVar5 + -8) = 2" (pointer_expression "*(undefined4 *)((int)puVar5 + -8)" (* "*") (cast_expression "(undefined4 *)((int)puVar5 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + -8)" (( "(") (binary_expression "(int)puVar5 + -8" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (number_literal "2")) (; ";")) (expression_statement "*(undefined **)((int)puVar5 + -0xc) = &DAT_002bb1e1;" (assignment_expression "*(undefined **)((int)puVar5 + -0xc) = &DAT_002bb1e1" (pointer_expression "*(undefined **)((int)puVar5 + -0xc)" (* "*") (cast_expression "(undefined **)((int)puVar5 + -0xc)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)puVar5 + -0xc)" (( "(") (binary_expression "(int)puVar5 + -0xc" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (pointer_expression "&DAT_002bb1e1" (& "&") (identifier "DAT_002bb1e1"))) (; ";")) (expression_statement "*(uint ***)((int)puVar5 + -0x10) = &local_64;" (assignment_expression "*(uint ***)((int)puVar5 + -0x10) = &local_64" (pointer_expression "*(uint ***)((int)puVar5 + -0x10)" (* "*") (cast_expression "(uint ***)((int)puVar5 + -0x10)" (( "(") (type_descriptor "uint ***" (type_identifier "uint") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "((int)puVar5 + -0x10)" (( "(") (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (pointer_expression "&local_64" (& "&") (identifier "local_64"))) (; ";")) (expression_statement "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e70f;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e70f" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)puVar5 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + -0x14)" (( "(") (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x23e70f")) (; ";")) (expression_statement "FUN_00208840();" (call_expression "FUN_00208840()" (identifier "FUN_00208840") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_84 = local_60;" (assignment_expression "local_84 = local_60" (identifier "local_84") (= "=") (identifier "local_60")) (; ";")) (expression_statement "local_88 = local_64;" (assignment_expression "local_88 = local_64" (identifier "local_88") (= "=") (identifier "local_64")) (; ";")) (expression_statement "local_7c = 0xf;" (assignment_expression "local_7c = 0xf" (identifier "local_7c") (= "=") (number_literal "0xf")) (; ";")) (if_statement "if (local_64 != local_70) {\n    local_7c = local_5c[0];\n  }" (if "if") (parenthesized_expression "(local_64 != local_70)" (( "(") (binary_expression "local_64 != local_70" (identifier "local_64") (!= "!=") (identifier "local_70")) () ")")) (compound_statement "{\n    local_7c = local_5c[0];\n  }" ({ "{") (expression_statement "local_7c = local_5c[0];" (assignment_expression "local_7c = local_5c[0]" (identifier "local_7c") (= "=") (subscript_expression "local_5c[0]" (identifier "local_5c") ([ "[") (number_literal "0") (] "]"))) (; ";")) (} "}"))) (if_statement "if (local_7c < (uint)(local_60 + local_48)) {\n    uVar2 = 0xf;\n    if (local_4c != local_74) {\n      uVar2 = local_44[0];\n    }\n    if (uVar2 < (uint)(local_60 + local_48)) goto LAB_0023e751;\n    *(int *)((int)puVar5 + -0x10) = local_60;\n    *(uint **)((int)puVar5 + -0x14) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x18) = 0;\n    *(undefined4 *)((int)puVar5 + -0x1c) = 0;\n    *(undefined4 ***)((int)puVar5 + -0x20) = local_80;\n                    \n    *(undefined4 *)((int)puVar5 + -0x24) = 0x23e82a;\n    piVar3 = (int *)FUN_00207c70();\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) goto LAB_0023e840;\n  }\n  else {\nLAB_0023e751:\n    *(int *)((int)puVar5 + -8) = local_48;\n    *(uint **)((int)puVar5 + -0xc) = local_4c;\n    *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    \n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e;\n    piVar3 = (int *)FUN_00208840();\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) {\nLAB_0023e840:\n      local_34 = &local_2c;\n      local_2c = piVar3[2];\n      local_28 = piVar3[3];\n      local_24 = piVar3[4];\n      local_20 = piVar3[5];\n      goto LAB_0023e77d;\n    }\n  }" (if "if") (parenthesized_expression "(local_7c < (uint)(local_60 + local_48))" (( "(") (binary_expression "local_7c < (uint)(local_60 + local_48)" (identifier "local_7c") (< "<") (call_expression "(uint)(local_60 + local_48)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_60 + local_48)" (( "(") (binary_expression "local_60 + local_48" (identifier "local_60") (+ "+") (identifier "local_48")) () ")")))) () ")")) (compound_statement "{\n    uVar2 = 0xf;\n    if (local_4c != local_74) {\n      uVar2 = local_44[0];\n    }\n    if (uVar2 < (uint)(local_60 + local_48)) goto LAB_0023e751;\n    *(int *)((int)puVar5 + -0x10) = local_60;\n    *(uint **)((int)puVar5 + -0x14) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x18) = 0;\n    *(undefined4 *)((int)puVar5 + -0x1c) = 0;\n    *(undefined4 ***)((int)puVar5 + -0x20) = local_80;\n                    \n    *(undefined4 *)((int)puVar5 + -0x24) = 0x23e82a;\n    piVar3 = (int *)FUN_00207c70();\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) goto LAB_0023e840;\n  }" ({ "{") (expression_statement "uVar2 = 0xf;" (assignment_expression "uVar2 = 0xf" (identifier "uVar2") (= "=") (number_literal "0xf")) (; ";")) (if_statement "if (local_4c != local_74) {\n      uVar2 = local_44[0];\n    }" (if "if") (parenthesized_expression "(local_4c != local_74)" (( "(") (binary_expression "local_4c != local_74" (identifier "local_4c") (!= "!=") (identifier "local_74")) () ")")) (compound_statement "{\n      uVar2 = local_44[0];\n    }" ({ "{") (expression_statement "uVar2 = local_44[0];" (assignment_expression "uVar2 = local_44[0]" (identifier "uVar2") (= "=") (subscript_expression "local_44[0]" (identifier "local_44") ([ "[") (number_literal "0") (] "]"))) (; ";")) (} "}"))) (if_statement "if (uVar2 < (uint)(local_60 + local_48)) goto LAB_0023e751;" (if "if") (parenthesized_expression "(uVar2 < (uint)(local_60 + local_48))" (( "(") (binary_expression "uVar2 < (uint)(local_60 + local_48)" (identifier "uVar2") (< "<") (call_expression "(uint)(local_60 + local_48)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_60 + local_48)" (( "(") (binary_expression "local_60 + local_48" (identifier "local_60") (+ "+") (identifier "local_48")) () ")")))) () ")")) (goto_statement "goto LAB_0023e751;" (goto "goto") (statement_identifier "LAB_0023e751") (; ";"))) (expression_statement "*(int *)((int)puVar5 + -0x10) = local_60;" (assignment_expression "*(int *)((int)puVar5 + -0x10) = local_60" (pointer_expression "*(int *)((int)puVar5 + -0x10)" (* "*") (cast_expression "(int *)((int)puVar5 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + -0x10)" (( "(") (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_60")) (; ";")) (expression_statement "*(uint **)((int)puVar5 + -0x14) = local_64;" (assignment_expression "*(uint **)((int)puVar5 + -0x14) = local_64" (pointer_expression "*(uint **)((int)puVar5 + -0x14)" (* "*") (cast_expression "(uint **)((int)puVar5 + -0x14)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)puVar5 + -0x14)" (( "(") (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "local_64")) (; ";")) (expression_statement "*(undefined4 *)((int)puVar5 + -0x18) = 0;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x18) = 0" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x18)" (* "*") (cast_expression "(undefined4 *)((int)puVar5 + -0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + -0x18)" (( "(") (binary_expression "(int)puVar5 + -0x18" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)((int)puVar5 + -0x1c) = 0;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x1c) = 0" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x1c)" (* "*") (cast_expression "(undefined4 *)((int)puVar5 + -0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + -0x1c)" (( "(") (binary_expression "(int)puVar5 + -0x1c" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 ***)((int)puVar5 + -0x20) = local_80;" (assignment_expression "*(undefined4 ***)((int)puVar5 + -0x20) = local_80" (pointer_expression "*(undefined4 ***)((int)puVar5 + -0x20)" (* "*") (cast_expression "(undefined4 ***)((int)puVar5 + -0x20)" (( "(") (type_descriptor "undefined4 ***" (type_identifier "undefined4") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "((int)puVar5 + -0x20)" (( "(") (binary_expression "(int)puVar5 + -0x20" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "local_80")) (; ";")) (expression_statement "*(undefined4 *)((int)puVar5 + -0x24) = 0x23e82a;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x24) = 0x23e82a" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x24)" (* "*") (cast_expression "(undefined4 *)((int)puVar5 + -0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + -0x24)" (( "(") (binary_expression "(int)puVar5 + -0x24" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (number_literal "0x23e82a")) (; ";")) (expression_statement "piVar3 = (int *)FUN_00207c70();" (assignment_expression "piVar3 = (int *)FUN_00207c70()" (identifier "piVar3") (= "=") (cast_expression "(int *)FUN_00207c70()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00207c70()" (identifier "FUN_00207c70") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "piVar4 = piVar3 + 2;" (assignment_expression "piVar4 = piVar3 + 2" (identifier "piVar4") (= "=") (binary_expression "piVar3 + 2" (identifier "piVar3") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "local_34 = (int *)*piVar3;" (assignment_expression "local_34 = (int *)*piVar3" (identifier "local_34") (= "=") (cast_expression "(int *)*piVar3" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar3" (* "*") (identifier "piVar3")))) (; ";")) (if_statement "if (local_34 == piVar4) goto LAB_0023e840;" (if "if") (parenthesized_expression "(local_34 == piVar4)" (( "(") (binary_expression "local_34 == piVar4" (identifier "local_34") (== "==") (identifier "piVar4")) () ")")) (goto_statement "goto LAB_0023e840;" (goto "goto") (statement_identifier "LAB_0023e840") (; ";"))) (} "}")) (else_clause "else {\nLAB_0023e751:\n    *(int *)((int)puVar5 + -8) = local_48;\n    *(uint **)((int)puVar5 + -0xc) = local_4c;\n    *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    \n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e;\n    piVar3 = (int *)FUN_00208840();\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) {\nLAB_0023e840:\n      local_34 = &local_2c;\n      local_2c = piVar3[2];\n      local_28 = piVar3[3];\n      local_24 = piVar3[4];\n      local_20 = piVar3[5];\n      goto LAB_0023e77d;\n    }\n  }" (else "else") (compound_statement "{\nLAB_0023e751:\n    *(int *)((int)puVar5 + -8) = local_48;\n    *(uint **)((int)puVar5 + -0xc) = local_4c;\n    *(uint ***)((int)puVar5 + -0x10) = &local_64;\n                    \n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e;\n    piVar3 = (int *)FUN_00208840();\n    piVar4 = piVar3 + 2;\n    local_34 = (int *)*piVar3;\n    if (local_34 == piVar4) {\nLAB_0023e840:\n      local_34 = &local_2c;\n      local_2c = piVar3[2];\n      local_28 = piVar3[3];\n      local_24 = piVar3[4];\n      local_20 = piVar3[5];\n      goto LAB_0023e77d;\n    }\n  }" ({ "{") (labeled_statement "LAB_0023e751:\n    *(int *)((int)puVar5 + -8) = local_48;" (statement_identifier "LAB_0023e751") (: ":") (expression_statement "*(int *)((int)puVar5 + -8) = local_48;" (assignment_expression "*(int *)((int)puVar5 + -8) = local_48" (pointer_expression "*(int *)((int)puVar5 + -8)" (* "*") (cast_expression "(int *)((int)puVar5 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + -8)" (( "(") (binary_expression "(int)puVar5 + -8" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "local_48")) (; ";"))) (expression_statement "*(uint **)((int)puVar5 + -0xc) = local_4c;" (assignment_expression "*(uint **)((int)puVar5 + -0xc) = local_4c" (pointer_expression "*(uint **)((int)puVar5 + -0xc)" (* "*") (cast_expression "(uint **)((int)puVar5 + -0xc)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)puVar5 + -0xc)" (( "(") (binary_expression "(int)puVar5 + -0xc" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "local_4c")) (; ";")) (expression_statement "*(uint ***)((int)puVar5 + -0x10) = &local_64;" (assignment_expression "*(uint ***)((int)puVar5 + -0x10) = &local_64" (pointer_expression "*(uint ***)((int)puVar5 + -0x10)" (* "*") (cast_expression "(uint ***)((int)puVar5 + -0x10)" (( "(") (type_descriptor "uint ***" (type_identifier "uint") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "((int)puVar5 + -0x10)" (( "(") (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (pointer_expression "&local_64" (& "&") (identifier "local_64"))) (; ";")) (expression_statement "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)puVar5 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + -0x14)" (( "(") (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x23e75e")) (; ";")) (expression_statement "piVar3 = (int *)FUN_00208840();" (assignment_expression "piVar3 = (int *)FUN_00208840()" (identifier "piVar3") (= "=") (cast_expression "(int *)FUN_00208840()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00208840()" (identifier "FUN_00208840") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "piVar4 = piVar3 + 2;" (assignment_expression "piVar4 = piVar3 + 2" (identifier "piVar4") (= "=") (binary_expression "piVar3 + 2" (identifier "piVar3") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "local_34 = (int *)*piVar3;" (assignment_expression "local_34 = (int *)*piVar3" (identifier "local_34") (= "=") (cast_expression "(int *)*piVar3" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar3" (* "*") (identifier "piVar3")))) (; ";")) (if_statement "if (local_34 == piVar4) {\nLAB_0023e840:\n      local_34 = &local_2c;\n      local_2c = piVar3[2];\n      local_28 = piVar3[3];\n      local_24 = piVar3[4];\n      local_20 = piVar3[5];\n      goto LAB_0023e77d;\n    }" (if "if") (parenthesized_expression "(local_34 == piVar4)" (( "(") (binary_expression "local_34 == piVar4" (identifier "local_34") (== "==") (identifier "piVar4")) () ")")) (compound_statement "{\nLAB_0023e840:\n      local_34 = &local_2c;\n      local_2c = piVar3[2];\n      local_28 = piVar3[3];\n      local_24 = piVar3[4];\n      local_20 = piVar3[5];\n      goto LAB_0023e77d;\n    }" ({ "{") (labeled_statement "LAB_0023e840:\n      local_34 = &local_2c;" (statement_identifier "LAB_0023e840") (: ":") (expression_statement "local_34 = &local_2c;" (assignment_expression "local_34 = &local_2c" (identifier "local_34") (= "=") (pointer_expression "&local_2c" (& "&") (identifier "local_2c"))) (; ";"))) (expression_statement "local_2c = piVar3[2];" (assignment_expression "local_2c = piVar3[2]" (identifier "local_2c") (= "=") (subscript_expression "piVar3[2]" (identifier "piVar3") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "local_28 = piVar3[3];" (assignment_expression "local_28 = piVar3[3]" (identifier "local_28") (= "=") (subscript_expression "piVar3[3]" (identifier "piVar3") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "local_24 = piVar3[4];" (assignment_expression "local_24 = piVar3[4]" (identifier "local_24") (= "=") (subscript_expression "piVar3[4]" (identifier "piVar3") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "local_20 = piVar3[5];" (assignment_expression "local_20 = piVar3[5]" (identifier "local_20") (= "=") (subscript_expression "piVar3[5]" (identifier "piVar3") ([ "[") (number_literal "5") (] "]"))) (; ";")) (goto_statement "goto LAB_0023e77d;" (goto "goto") (statement_identifier "LAB_0023e77d") (; ";")) (} "}"))) (} "}")))) (expression_statement "local_2c = piVar3[2];" (assignment_expression "local_2c = piVar3[2]" (identifier "local_2c") (= "=") (subscript_expression "piVar3[2]" (identifier "piVar3") ([ "[") (number_literal "2") (] "]"))) (; ";")) (labeled_statement "LAB_0023e77d:\n  local_30 = piVar3[1];" (statement_identifier "LAB_0023e77d") (: ":") (expression_statement "local_30 = piVar3[1];" (assignment_expression "local_30 = piVar3[1]" (identifier "local_30") (= "=") (subscript_expression "piVar3[1]" (identifier "piVar3") ([ "[") (number_literal "1") (] "]"))) (; ";"))) (expression_statement "*(undefined1 *)(piVar3 + 2) = 0;" (assignment_expression "*(undefined1 *)(piVar3 + 2) = 0" (pointer_expression "*(undefined1 *)(piVar3 + 2)" (* "*") (cast_expression "(undefined1 *)(piVar3 + 2)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar3 + 2)" (( "(") (binary_expression "piVar3 + 2" (identifier "piVar3") (+ "+") (number_literal "2")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*piVar3 = (int)piVar4;" (assignment_expression "*piVar3 = (int)piVar4" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (= "=") (cast_expression "(int)piVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar4"))) (; ";")) (expression_statement "piVar3[1] = 0;" (assignment_expression "piVar3[1] = 0" (subscript_expression "piVar3[1]" (identifier "piVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int ***)((int)puVar5 + -0xc) = &local_34;" (assignment_expression "*(int ***)((int)puVar5 + -0xc) = &local_34" (pointer_expression "*(int ***)((int)puVar5 + -0xc)" (* "*") (cast_expression "(int ***)((int)puVar5 + -0xc)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "((int)puVar5 + -0xc)" (( "(") (binary_expression "(int)puVar5 + -0xc" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (pointer_expression "&local_34" (& "&") (identifier "local_34"))) (; ";")) (expression_statement "*(undefined4 **)((int)puVar5 + -0x10) = param_1;" (assignment_expression "*(undefined4 **)((int)puVar5 + -0x10) = param_1" (pointer_expression "*(undefined4 **)((int)puVar5 + -0x10)" (* "*") (cast_expression "(undefined4 **)((int)puVar5 + -0x10)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)puVar5 + -0x10)" (( "(") (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7a1;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7a1" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)puVar5 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + -0x14)" (( "(") (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x23e7a1")) (; ";")) (expression_statement "FUN_002845b0();" (call_expression "FUN_002845b0()" (identifier "FUN_002845b0") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (local_34 != &local_2c) {\n    *(int **)((int)puVar5 + -0x10) = local_34;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7b4;\n    FUN_001ff030();\n  }" (if "if") (parenthesized_expression "(local_34 != &local_2c)" (( "(") (binary_expression "local_34 != &local_2c" (identifier "local_34") (!= "!=") (pointer_expression "&local_2c" (& "&") (identifier "local_2c"))) () ")")) (compound_statement "{\n    *(int **)((int)puVar5 + -0x10) = local_34;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7b4;\n    FUN_001ff030();\n  }" ({ "{") (expression_statement "*(int **)((int)puVar5 + -0x10) = local_34;" (assignment_expression "*(int **)((int)puVar5 + -0x10) = local_34" (pointer_expression "*(int **)((int)puVar5 + -0x10)" (* "*") (cast_expression "(int **)((int)puVar5 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)puVar5 + -0x10)" (( "(") (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_34")) (; ";")) (expression_statement "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7b4;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7b4" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)puVar5 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + -0x14)" (( "(") (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x23e7b4")) (; ";")) (expression_statement "FUN_001ff030();" (call_expression "FUN_001ff030()" (identifier "FUN_001ff030") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_64 != local_70) {\n    *(uint **)((int)puVar5 + -0x10) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7ca;\n    FUN_001ff030();\n  }" (if "if") (parenthesized_expression "(local_64 != local_70)" (( "(") (binary_expression "local_64 != local_70" (identifier "local_64") (!= "!=") (identifier "local_70")) () ")")) (compound_statement "{\n    *(uint **)((int)puVar5 + -0x10) = local_64;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7ca;\n    FUN_001ff030();\n  }" ({ "{") (expression_statement "*(uint **)((int)puVar5 + -0x10) = local_64;" (assignment_expression "*(uint **)((int)puVar5 + -0x10) = local_64" (pointer_expression "*(uint **)((int)puVar5 + -0x10)" (* "*") (cast_expression "(uint **)((int)puVar5 + -0x10)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)puVar5 + -0x10)" (( "(") (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_64")) (; ";")) (expression_statement "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7ca;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7ca" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)puVar5 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + -0x14)" (( "(") (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x23e7ca")) (; ";")) (expression_statement "FUN_001ff030();" (call_expression "FUN_001ff030()" (identifier "FUN_001ff030") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_4c != local_74) {\n    *(uint **)((int)puVar5 + -0x10) = local_4c;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7e0;\n    FUN_001ff030();\n  }" (if "if") (parenthesized_expression "(local_4c != local_74)" (( "(") (binary_expression "local_4c != local_74" (identifier "local_4c") (!= "!=") (identifier "local_74")) () ")")) (compound_statement "{\n    *(uint **)((int)puVar5 + -0x10) = local_4c;\n    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7e0;\n    FUN_001ff030();\n  }" ({ "{") (expression_statement "*(uint **)((int)puVar5 + -0x10) = local_4c;" (assignment_expression "*(uint **)((int)puVar5 + -0x10) = local_4c" (pointer_expression "*(uint **)((int)puVar5 + -0x10)" (* "*") (cast_expression "(uint **)((int)puVar5 + -0x10)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)puVar5 + -0x10)" (( "(") (binary_expression "(int)puVar5 + -0x10" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_4c")) (; ";")) (expression_statement "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7e0;" (assignment_expression "*(undefined4 *)((int)puVar5 + -0x14) = 0x23e7e0" (pointer_expression "*(undefined4 *)((int)puVar5 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)puVar5 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + -0x14)" (( "(") (binary_expression "(int)puVar5 + -0x14" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x23e7e0")) (; ";")) (expression_statement "FUN_001ff030();" (call_expression "FUN_001ff030()" (identifier "FUN_001ff030") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "param_1[2] = 1;" (assignment_expression "param_1[2] = 1" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "param_1[3] = local_78;" (assignment_expression "param_1[3] = local_78" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "local_78")) (; ";")) (expression_statement "*param_1 = &PTR_FUN_003ad1b0;" (assignment_expression "*param_1 = &PTR_FUN_003ad1b0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (pointer_expression "&PTR_FUN_003ad1b0" (& "&") (identifier "PTR_FUN_003ad1b0"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* std::ios_base::failure[abi:cxx11]::failure(std::string const&) */

void __thiscall std::ios_base::function_1[abi:cxx11]::function_1(type_1 *var_25,type_2 *var_4)

{
  int var_5;
  type_3 var_19;
  int *var_20;
  int *var_22;
  type_4 *puVar5;
  type_4 uStack_90;
  type_5 auStack_8c [4];
  type_3 *local_88;
  int local_84;
  type_2 *local_80;
  type_3 var_15;
  int *local_78;
  type_3 *var_18;
  type_3 *var_14;
  type_3 *var_13;
  int var_10;
  type_3 local_5c [4];
  type_3 *var_17;
  int var_16;
  type_3 local_44 [4];
  int *var_21;
  int local_30;
  int local_2c;
  int local_28;
  int local_24;
  int local_20;
  
  puVar5 = (type_4 *)auStack_8c;
  uStack_90 = 0x23e67e;
  local_78 = (int *)var_1();
  local_80 = (type_2 *)&var_17;
  if (*(type_6 **)(*local_78 + 0x10) == ::(var_2)::io_error_category::message_abi_cxx11_
     ) {
    var_18 = local_44;
    var_16 = 0;
    local_44[0] = local_44[0] & 0xffffff00;
    var_17 = var_18;
                    /* try { // try from 0023e6bc to 0023e6c0 has its CatchHandler @ 0023e897 */
    std::string::var_3((type_2 *)&var_17,0,0,"iostream error",0xe);
  }
  else {
    (**(type_6 **)(*local_78 + 0x10))((type_2 *)&var_17,local_78,1);
    var_18 = local_44;
    puVar5 = &uStack_90;
  }
  var_14 = local_5c;
  var_5 = *(int *)var_4;
  *(type_4 *)((int)puVar5 + -4) = 0;
  *(int *)((int)puVar5 + -8) = *(int *)(var_4 + 4) + var_5;
  *(int *)((int)puVar5 + -0xc) = var_5;
  *(type_3 ***)((int)puVar5 + -0x10) = &var_13;
                    /* try { // try from 0023e6e4 to 0023e6e8 has its CatchHandler @ 0023e89e */
  *(type_4 *)((int)puVar5 + -0x14) = 0x23e6e9;
  var_13 = var_14;
  __cxx11::basic_string<var_7,_std::char_traits<var_7>,_std::var_6<var_7>var_8>::var_9<var_7*>();
  if (0x7fffffffU - var_10 < 2) {
    *(char **)((int)puVar5 + -0x10) = "basic_string::append";
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0023e883 to 0023e887 has its CatchHandler @ 0023e8a5 */
    *(type_5 **)((int)puVar5 + -0x14) = &LAB_0023e888;
    var_11(*(char **)((int)puVar5 + -0x10));
  }
  *(type_4 *)((int)puVar5 + -8) = 2;
  *(type_7 **)((int)puVar5 + -0xc) = &DAT_002bb1e1;
  *(type_3 ***)((int)puVar5 + -0x10) = &var_13;
                    /* try { // try from 0023e70a to 0023e70e has its CatchHandler @ 0023e8a5 */
  *(type_4 *)((int)puVar5 + -0x14) = 0x23e70f;
  std::string::var_12
            (*(type_2 **)((int)puVar5 + -0x10),*(char **)((int)puVar5 + -0xc),
             *(type_3 *)((int)puVar5 + -8));
  local_84 = var_10;
  local_88 = var_13;
  var_15 = 0xf;
  if (var_13 != var_14) {
    var_15 = local_5c[0];
  }
  if (var_15 < (type_3)(var_10 + var_16)) {
    var_19 = 0xf;
    if (var_17 != var_18) {
      var_19 = local_44[0];
    }
    if (var_19 < (type_3)(var_10 + var_16)) goto LAB_0023e751;
    *(int *)((int)puVar5 + -0x10) = var_10;
    *(type_3 **)((int)puVar5 + -0x14) = var_13;
    *(type_4 *)((int)puVar5 + -0x18) = 0;
    *(type_4 *)((int)puVar5 + -0x1c) = 0;
    *(type_2 **)((int)puVar5 + -0x20) = local_80;
                    /* try { // try from 0023e825 to 0023e829 has its CatchHandler @ 0023e890 */
    *(type_4 *)((int)puVar5 + -0x24) = 0x23e82a;
    var_20 = (int *)std::string::var_3
                              (*(type_2 **)((int)puVar5 + -0x20),*(type_3 *)((int)puVar5 + -0x1c),
                               *(type_3 *)((int)puVar5 + -0x18),*(char **)((int)puVar5 + -0x14),
                               *(type_3 *)((int)puVar5 + -0x10));
    var_22 = var_20 + 2;
    var_21 = (int *)*var_20;
    if (var_21 == var_22) goto LAB_0023e840;
  }
  else {
LAB_0023e751:
    *(int *)((int)puVar5 + -8) = var_16;
    *(type_3 **)((int)puVar5 + -0xc) = var_17;
    *(type_3 ***)((int)puVar5 + -0x10) = &var_13;
                    /* try { // try from 0023e759 to 0023e75d has its CatchHandler @ 0023e890 */
    *(type_4 *)((int)puVar5 + -0x14) = 0x23e75e;
    var_20 = (int *)std::string::var_12
                              (*(type_2 **)((int)puVar5 + -0x10),*(char **)((int)puVar5 + -0xc),
                               *(type_3 *)((int)puVar5 + -8));
    var_22 = var_20 + 2;
    var_21 = (int *)*var_20;
    if (var_21 == var_22) {
LAB_0023e840:
      var_21 = &local_2c;
      local_2c = var_20[2];
      local_28 = var_20[3];
      local_24 = var_20[4];
      local_20 = var_20[5];
      goto LAB_0023e77d;
    }
  }
  local_2c = var_20[2];
LAB_0023e77d:
  local_30 = var_20[1];
  *(type_5 *)(var_20 + 2) = 0;
  *var_20 = (int)var_22;
  var_20[1] = 0;
  *(int ***)((int)puVar5 + -0xc) = &var_21;
  *(type_1 **)((int)puVar5 + -0x10) = var_25;
                    /* try { // try from 0023e79c to 0023e7a0 has its CatchHandler @ 0023e888 */
  *(type_4 *)((int)puVar5 + -0x14) = 0x23e7a1;
  runtime_error::var_23
            (*(var_23 **)((int)puVar5 + -0x10),*(type_2 **)((int)puVar5 + -0xc));
  if (var_21 != &local_2c) {
    *(int **)((int)puVar5 + -0x10) = var_21;
    *(type_4 *)((int)puVar5 + -0x14) = 0x23e7b4;
    var_24(*(void **)((int)puVar5 + -0x10));
  }
  if (var_13 != var_14) {
    *(type_3 **)((int)puVar5 + -0x10) = var_13;
    *(type_4 *)((int)puVar5 + -0x14) = 0x23e7ca;
    var_24(*(void **)((int)puVar5 + -0x10));
  }
  if (var_17 != var_18) {
    *(type_3 **)((int)puVar5 + -0x10) = var_17;
    *(type_4 *)((int)puVar5 + -0x14) = 0x23e7e0;
    var_24(*(void **)((int)puVar5 + -0x10));
  }
  *(type_4 *)(var_25 + 8) = 1;
  *(int **)(var_25 + 0xc) = local_78;
  *(type_7 ***)var_25 = &PTR__failure_003ad1b0;
  return;
}


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

/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

void MASKED(undefined4 *param_1,int *param_2)

{
  int iVar1;
  uint uVar2;
  int *piVar3;
  int *piVar4;
  undefined4 *puVar5;
  undefined4 uStack_90;
  undefined1 auStack_8c [4];
  uint *local_88;
  int local_84;
  undefined4 **local_80;
  uint local_7c;
  int *local_78;
  uint *local_74;
  uint *local_70;
  uint *local_64;
  int local_60;
  uint local_5c [4];
  uint *local_4c;
  int local_48;
  uint local_44 [4];
  int *local_34;
  int local_30;
  int local_2c;
  int local_28;
  int local_24;
  int local_20;
  
  puVar5 = (undefined4 *)auStack_8c;
  uStack_90 = 0x23e67e;
  local_78 = (int *)FUN_0023e5f0();
  local_80 = &local_4c;
  if (*(code **)(*local_78 + 0x10) == FUN_0023e570) {
    local_74 = local_44;
    local_48 = 0;
    local_44[0] = local_44[0] & 0xffffff00;
    local_4c = local_74;
                    /* try { // try from 0023e6bc to 0023e6c0 has its CatchHandler @ 0023e897 */
    FUN_00207c70(&local_4c,0,0,"iostream error",0xe);
  }
  else {
    (**(code **)(*local_78 + 0x10))(&local_4c,local_78,1);
    local_74 = local_44;
    puVar5 = &uStack_90;
  }
  local_70 = local_5c;
  iVar1 = *param_2;
  *(undefined4 *)((int)puVar5 + -4) = 0;
  *(int *)((int)puVar5 + -8) = param_2[1] + iVar1;
  *(int *)((int)puVar5 + -0xc) = iVar1;
  *(uint ***)((int)puVar5 + -0x10) = &local_64;
                    /* try { // try from 0023e6e4 to 0023e6e8 has its CatchHandler @ 0023e89e */
  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e6e9;
  local_64 = local_70;
  FUN_00068b30();
  if (0x7fffffffU - local_60 < 2) {
    *(char **)((int)puVar5 + -0x10) = "basic_string::append";
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0023e883 to 0023e887 has its CatchHandler @ 0023e8a5 */
    *(undefined1 **)((int)puVar5 + -0x14) = &LAB_0023e888;
    FUN_00244a20();
  }
  *(undefined4 *)((int)puVar5 + -8) = 2;
  *(undefined **)((int)puVar5 + -0xc) = &DAT_002bb1e1;
  *(uint ***)((int)puVar5 + -0x10) = &local_64;
                    /* try { // try from 0023e70a to 0023e70e has its CatchHandler @ 0023e8a5 */
  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e70f;
  FUN_00208840();
  local_84 = local_60;
  local_88 = local_64;
  local_7c = 0xf;
  if (local_64 != local_70) {
    local_7c = local_5c[0];
  }
  if (local_7c < (uint)(local_60 + local_48)) {
    uVar2 = 0xf;
    if (local_4c != local_74) {
      uVar2 = local_44[0];
    }
    if (uVar2 < (uint)(local_60 + local_48)) goto LAB_0023e751;
    *(int *)((int)puVar5 + -0x10) = local_60;
    *(uint **)((int)puVar5 + -0x14) = local_64;
    *(undefined4 *)((int)puVar5 + -0x18) = 0;
    *(undefined4 *)((int)puVar5 + -0x1c) = 0;
    *(undefined4 ***)((int)puVar5 + -0x20) = local_80;
                    /* try { // try from 0023e825 to 0023e829 has its CatchHandler @ 0023e890 */
    *(undefined4 *)((int)puVar5 + -0x24) = 0x23e82a;
    piVar3 = (int *)FUN_00207c70();
    piVar4 = piVar3 + 2;
    local_34 = (int *)*piVar3;
    if (local_34 == piVar4) goto LAB_0023e840;
  }
  else {
LAB_0023e751:
    *(int *)((int)puVar5 + -8) = local_48;
    *(uint **)((int)puVar5 + -0xc) = local_4c;
    *(uint ***)((int)puVar5 + -0x10) = &local_64;
                    /* try { // try from 0023e759 to 0023e75d has its CatchHandler @ 0023e890 */
    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e75e;
    piVar3 = (int *)FUN_00208840();
    piVar4 = piVar3 + 2;
    local_34 = (int *)*piVar3;
    if (local_34 == piVar4) {
LAB_0023e840:
      local_34 = &local_2c;
      local_2c = piVar3[2];
      local_28 = piVar3[3];
      local_24 = piVar3[4];
      local_20 = piVar3[5];
      goto LAB_0023e77d;
    }
  }
  local_2c = piVar3[2];
LAB_0023e77d:
  local_30 = piVar3[1];
  *(undefined1 *)(piVar3 + 2) = 0;
  *piVar3 = (int)piVar4;
  piVar3[1] = 0;
  *(int ***)((int)puVar5 + -0xc) = &local_34;
  *(undefined4 **)((int)puVar5 + -0x10) = param_1;
                    /* try { // try from 0023e79c to 0023e7a0 has its CatchHandler @ 0023e888 */
  *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7a1;
  FUN_002845b0();
  if (local_34 != &local_2c) {
    *(int **)((int)puVar5 + -0x10) = local_34;
    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7b4;
    FUN_001ff030();
  }
  if (local_64 != local_70) {
    *(uint **)((int)puVar5 + -0x10) = local_64;
    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7ca;
    FUN_001ff030();
  }
  if (local_4c != local_74) {
    *(uint **)((int)puVar5 + -0x10) = local_4c;
    *(undefined4 *)((int)puVar5 + -0x14) = 0x23e7e0;
    FUN_001ff030();
  }
  param_1[2] = 1;
  param_1[3] = local_78;
  *param_1 = &PTR_FUN_003ad1b0;
  return;
}

