
/* std::__moneypunct_cache<char, false>::_M_cache(std::locale const&) */

void __thiscall
std::__moneypunct_cache<char,false>::_M_cache(__moneypunct_cache<char,false> *this,locale *param_1)

{
  ulong uVar1;
  __moneypunct_cache<char,false> _Var2;
  undefined4 uVar3;
  moneypunct *pmVar4;
  char *pcVar5;
  char *pcVar6;
  char *pcVar7;
  char *pcVar8;
  ctype *this_00;
  string *local_70;
  allocator local_5b;
  allocator local_5a;
  allocator local_59;
  long local_58;
  long local_50;
  long local_48;
  long local_40 [2];
  
  pmVar4 = use_facet<std::moneypunct<char,false>>(param_1);
  if (*(code **)(*(long *)pmVar4 + 0x10) == (code *)PTR_do_decimal_point_0043db38) {
    _Var2 = *(__moneypunct_cache<char,false> *)(*(long *)(pmVar4 + 0x10) + 0x21);
  }
  else {
    _Var2 = (__moneypunct_cache<char,false>)(**(code **)(*(long *)pmVar4 + 0x10))(pmVar4);
  }
  this[0x21] = _Var2;
  if (*(code **)(*(long *)pmVar4 + 0x18) == (code *)PTR_do_thousands_sep_0043dc00) {
    _Var2 = *(__moneypunct_cache<char,false> *)(*(long *)(pmVar4 + 0x10) + 0x22);
  }
  else {
    _Var2 = (__moneypunct_cache<char,false>)(**(code **)(*(long *)pmVar4 + 0x18))(pmVar4);
  }
  this[0x22] = _Var2;
  if (*(code **)(*(long *)pmVar4 + 0x40) == (code *)PTR_do_frac_digits_0043dbb0) {
    uVar3 = *(undefined4 *)(*(long *)(pmVar4 + 0x10) + 0x58);
  }
  else {
    uVar3 = (**(code **)(*(long *)pmVar4 + 0x40))(pmVar4);
  }
  *(undefined4 *)(this + 0x58) = uVar3;
  if (*(code **)(*(long *)pmVar4 + 0x20) == (code *)PTR_do_grouping_0043df18) {
                    /* try { // try from 002ed938 to 002ed93c has its CatchHandler @ 002edd7a */
    std::string::string((string *)&local_58,*(char **)(*(long *)(pmVar4 + 0x10) + 0x10),
                        (allocator *)local_40);
  }
  else {
                    /* try { // try from 002edb73 to 002edb74 has its CatchHandler @ 002edd7a */
    (**(code **)(*(long *)pmVar4 + 0x20))(&local_58,pmVar4);
  }
  uVar1 = *(ulong *)(local_58 + -0x18);
  *(ulong *)(this + 0x18) = uVar1;
                    /* try { // try from 002ed94a to 002ed94e has its CatchHandler @ 002edd6f */
  pcVar5 = (char *)operator_new__(uVar1);
                    /* try { // try from 002ed95e to 002ed962 has its CatchHandler @ 002edd76 */
  std::string::copy((string *)&local_58,pcVar5,*(ulong *)(this + 0x18),0);
  _Var2 = (__moneypunct_cache<char,false>)0x0;
  if (*(long *)(this + 0x18) != 0) {
    _Var2 = (__moneypunct_cache<char,false>)((byte)(*pcVar5 - 1U) < 0x7e);
  }
  this[0x20] = _Var2;
  if (*(code **)(*(long *)pmVar4 + 0x28) == (code *)PTR_do_curr_symbol_0043db70) {
                    /* try { // try from 002ed99d to 002ed9a1 has its CatchHandler @ 002edc63 */
    std::string::string((string *)&local_50,*(char **)(*(long *)(pmVar4 + 0x10) + 0x28),&local_5b);
  }
  else {
                    /* try { // try from 002edbcb to 002edbcc has its CatchHandler @ 002edc5f */
    (**(code **)(*(long *)pmVar4 + 0x28))(&local_50,pmVar4);
  }
  uVar1 = *(ulong *)(local_50 + -0x18);
  *(ulong *)(this + 0x30) = uVar1;
                    /* try { // try from 002ed9af to 002ed9b3 has its CatchHandler @ 002edd0f */
  pcVar6 = (char *)operator_new__(uVar1);
                    /* try { // try from 002ed9c3 to 002ed9c7 has its CatchHandler @ 002edd0b */
  std::string::copy((string *)&local_50,pcVar6,*(ulong *)(this + 0x30),0);
  if (*(code **)(*(long *)pmVar4 + 0x30) == (code *)PTR_do_positive_sign_0043dfe8) {
                    /* try { // try from 002ed9f2 to 002ed9f6 has its CatchHandler @ 002edc61 */
    std::string::string((string *)&local_48,*(char **)(*(long *)(pmVar4 + 0x10) + 0x38),&local_5a);
  }
  else {
                    /* try { // try from 002edbe3 to 002edbe4 has its CatchHandler @ 002eddcf */
    (**(code **)(*(long *)pmVar4 + 0x30))(&local_48,pmVar4);
  }
  uVar1 = *(ulong *)(local_48 + -0x18);
  *(ulong *)(this + 0x40) = uVar1;
                    /* try { // try from 002eda04 to 002eda08 has its CatchHandler @ 002edd11 */
  pcVar7 = (char *)operator_new__(uVar1);
                    /* try { // try from 002eda18 to 002eda1c has its CatchHandler @ 002edd0d */
  std::string::copy((string *)&local_48,pcVar7,*(ulong *)(this + 0x40),0);
  if (*(code **)(*(long *)pmVar4 + 0x38) == (code *)PTR_do_negative_sign_0043daf8) {
                    /* try { // try from 002eda4c to 002eda50 has its CatchHandler @ 002edd87 */
    std::string::string((string *)local_40,*(char **)(*(long *)(pmVar4 + 0x10) + 0x48),&local_59);
  }
  else {
                    /* try { // try from 002edc00 to 002edc01 has its CatchHandler @ 002edd78 */
    (**(code **)(*(long *)pmVar4 + 0x38))(local_40,pmVar4);
  }
  local_70 = (string *)local_40;
  uVar1 = *(ulong *)(local_40[0] + -0x18);
  *(ulong *)(this + 0x50) = uVar1;
                    /* try { // try from 002eda5e to 002eda62 has its CatchHandler @ 002eddb2 */
  pcVar8 = (char *)operator_new__(uVar1);
                    /* try { // try from 002eda74 to 002edad9 has its CatchHandler @ 002edd71 */
  std::string::copy(local_70,pcVar8,*(ulong *)(this + 0x50),0);
  if (*(code **)(*(long *)pmVar4 + 0x48) == (code *)PTR_do_pos_format_0043da60) {
    uVar3 = *(undefined4 *)(*(long *)(pmVar4 + 0x10) + 0x5c);
  }
  else {
                    /* try { // try from 002edc13 to 002edc14 has its CatchHandler @ 002edd71 */
    uVar3 = (**(code **)(*(long *)pmVar4 + 0x48))(pmVar4);
  }
  *(undefined4 *)(this + 0x5c) = uVar3;
  if (*(code **)(*(long *)pmVar4 + 0x50) == (code *)PTR_do_neg_format_0043dd00) {
    uVar3 = *(undefined4 *)(*(long *)(pmVar4 + 0x10) + 0x60);
  }
  else {
                    /* try { // try from 002edbb3 to 002edbb4 has its CatchHandler @ 002edd71 */
    uVar3 = (**(code **)(*(long *)pmVar4 + 0x50))(pmVar4);
  }
  *(undefined4 *)(this + 0x60) = uVar3;
  this_00 = use_facet<std::ctype<char>>(param_1);
  ctype<char>::widen((ctype<char> *)this_00,money_base::_S_atoms,money_base::_S_atoms + 0xb,
                     (char *)(this + 100));
  *(char **)(this + 0x10) = pcVar5;
  *(char **)(this + 0x28) = pcVar6;
  *(char **)(this + 0x38) = pcVar7;
  *(char **)(this + 0x48) = pcVar8;
  this[0x6f] = (__moneypunct_cache<char,false>)0x1;
  if ((allocator *)(local_40[0] + -0x18) != (allocator *)&std::string::_Rep::_S_empty_rep_storage) {
    std::string::_Rep::_M_dispose((allocator *)(local_40[0] + -0x18));
  }
  if ((allocator *)(local_48 + -0x18) != (allocator *)&std::string::_Rep::_S_empty_rep_storage) {
    std::string::_Rep::_M_dispose((allocator *)(local_48 + -0x18));
  }
  if ((allocator *)(local_50 + -0x18) != (allocator *)&std::string::_Rep::_S_empty_rep_storage) {
    std::string::_Rep::_M_dispose((allocator *)(local_50 + -0x18));
  }
  if ((allocator *)(local_58 + -0x18) != (allocator *)&std::string::_Rep::_S_empty_rep_storage) {
    std::string::_Rep::_M_dispose((allocator *)(local_58 + -0x18));
  }
  return;
}



void FUN_002ed890(long param_1,undefined8 param_2)

{
  bool bVar1;
  undefined1 uVar2;
  undefined4 uVar3;
  long *plVar4;
  char *pcVar5;
  undefined8 uVar6;
  undefined8 uVar7;
  undefined8 uVar8;
  undefined8 uVar9;
  long *local_70;
  undefined1 local_5b;
  undefined1 local_5a;
  undefined1 local_59;
  long local_58;
  long local_50;
  long local_48;
  long local_40 [2];
  
  plVar4 = (long *)FUN_002ed840(param_2);
  if (*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043db38) {
    uVar2 = *(undefined1 *)(plVar4[2] + 0x21);
  }
  else {
    uVar2 = (**(code **)(*plVar4 + 0x10))(plVar4);
  }
  *(undefined1 *)(param_1 + 0x21) = uVar2;
  if (*(code **)(*plVar4 + 0x18) == (code *)PTR_FUN_0043dc00) {
    uVar2 = *(undefined1 *)(plVar4[2] + 0x22);
  }
  else {
    uVar2 = (**(code **)(*plVar4 + 0x18))(plVar4);
  }
  *(undefined1 *)(param_1 + 0x22) = uVar2;
  if (*(code **)(*plVar4 + 0x40) == (code *)PTR_FUN_0043dbb0) {
    uVar3 = *(undefined4 *)(plVar4[2] + 0x58);
  }
  else {
    uVar3 = (**(code **)(*plVar4 + 0x40))(plVar4);
  }
  *(undefined4 *)(param_1 + 0x58) = uVar3;
  if (*(code **)(*plVar4 + 0x20) == (code *)PTR_FUN_0043df18) {
                    /* try { // try from 002ed938 to 002ed93c has its CatchHandler @ 002edd7a */
    FUN_0030f640(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40);
  }
  else {
                    /* try { // try from 002edb73 to 002edb74 has its CatchHandler @ 002edd7a */
    (**(code **)(*plVar4 + 0x20))(&local_58,plVar4);
  }
  *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(local_58 + -0x18);
                    /* try { // try from 002ed94a to 002ed94e has its CatchHandler @ 002edd6f */
  pcVar5 = (char *)thunk_FUN_002d94a0();
                    /* try { // try from 002ed95e to 002ed962 has its CatchHandler @ 002edd76 */
  FUN_0030cdb0(&local_58,pcVar5,*(undefined8 *)(param_1 + 0x18),0);
  bVar1 = false;
  if (*(long *)(param_1 + 0x18) != 0) {
    bVar1 = (byte)(*pcVar5 - 1U) < 0x7e;
  }
  *(bool *)(param_1 + 0x20) = bVar1;
  if (*(code **)(*plVar4 + 0x28) == (code *)PTR_FUN_0043db70) {
                    /* try { // try from 002ed99d to 002ed9a1 has its CatchHandler @ 002edc63 */
    FUN_0030f640(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b);
  }
  else {
                    /* try { // try from 002edbcb to 002edbcc has its CatchHandler @ 002edc5f */
    (**(code **)(*plVar4 + 0x28))(&local_50,plVar4);
  }
  *(undefined8 *)(param_1 + 0x30) = *(undefined8 *)(local_50 + -0x18);
                    /* try { // try from 002ed9af to 002ed9b3 has its CatchHandler @ 002edd0f */
  uVar6 = thunk_FUN_002d94a0();
                    /* try { // try from 002ed9c3 to 002ed9c7 has its CatchHandler @ 002edd0b */
  FUN_0030cdb0(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0);
  if (*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dfe8) {
                    /* try { // try from 002ed9f2 to 002ed9f6 has its CatchHandler @ 002edc61 */
    FUN_0030f640(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a);
  }
  else {
                    /* try { // try from 002edbe3 to 002edbe4 has its CatchHandler @ 002eddcf */
    (**(code **)(*plVar4 + 0x30))(&local_48,plVar4);
  }
  *(undefined8 *)(param_1 + 0x40) = *(undefined8 *)(local_48 + -0x18);
                    /* try { // try from 002eda04 to 002eda08 has its CatchHandler @ 002edd11 */
  uVar7 = thunk_FUN_002d94a0();
                    /* try { // try from 002eda18 to 002eda1c has its CatchHandler @ 002edd0d */
  FUN_0030cdb0(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0);
  if (*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043daf8) {
                    /* try { // try from 002eda4c to 002eda50 has its CatchHandler @ 002edd87 */
    FUN_0030f640(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59);
  }
  else {
                    /* try { // try from 002edc00 to 002edc01 has its CatchHandler @ 002edd78 */
    (**(code **)(*plVar4 + 0x38))(local_40,plVar4);
  }
  local_70 = local_40;
  *(undefined8 *)(param_1 + 0x50) = *(undefined8 *)(local_40[0] + -0x18);
                    /* try { // try from 002eda5e to 002eda62 has its CatchHandler @ 002eddb2 */
  uVar8 = thunk_FUN_002d94a0();
                    /* try { // try from 002eda74 to 002edad9 has its CatchHandler @ 002edd71 */
  FUN_0030cdb0(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0);
  if (*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043da60) {
    uVar3 = *(undefined4 *)(plVar4[2] + 0x5c);
  }
  else {
                    /* try { // try from 002edc13 to 002edc14 has its CatchHandler @ 002edd71 */
    uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4);
  }
  *(undefined4 *)(param_1 + 0x5c) = uVar3;
  if (*(code **)(*plVar4 + 0x50) == (code *)PTR_FUN_0043dd00) {
    uVar3 = *(undefined4 *)(plVar4[2] + 0x60);
  }
  else {
                    /* try { // try from 002edbb3 to 002edbb4 has its CatchHandler @ 002edd71 */
    uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4);
  }
  *(undefined4 *)(param_1 + 0x60) = uVar3;
  uVar9 = FUN_002ec670(param_2);
  FUN_002ea750(uVar9,PTR_DAT_0043e720,PTR_DAT_0043e720 + 0xb,param_1 + 100);
  *(char **)(param_1 + 0x10) = pcVar5;
  *(undefined8 *)(param_1 + 0x28) = uVar6;
  *(undefined8 *)(param_1 + 0x38) = uVar7;
  *(undefined8 *)(param_1 + 0x48) = uVar8;
  *(undefined1 *)(param_1 + 0x6f) = 1;
  if ((undefined8 *)(local_40[0] + -0x18) != &DAT_0044a540) {
    FUN_002ea270((undefined8 *)(local_40[0] + -0x18),&local_59);
  }
  if ((undefined8 *)(local_48 + -0x18) != &DAT_0044a540) {
    FUN_002ea270((undefined8 *)(local_48 + -0x18),&local_59);
  }
  if ((undefined8 *)(local_50 + -0x18) != &DAT_0044a540) {
    FUN_002ea270((undefined8 *)(local_50 + -0x18),&local_59);
  }
  if ((undefined8 *)(local_58 + -0x18) != &DAT_0044a540) {
    FUN_002ea270((undefined8 *)(local_58 + -0x18),&local_59);
  }
  return;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
MOV RBX,RDI
MOV RDI,RSI
SUB RSP,0x48
MOV qword ptr [RSP],RSI
CALL 0x002ed840
MOV RBP,RAX
MOV RAX,qword ptr [RAX]
MOV RAX,qword ptr [RAX + 0x10]
CMP RAX,qword ptr [0x0043db38]
JNZ 0x002edba0
MOV RAX,qword ptr [RBP + 0x10]
MOVZX EAX,byte ptr [RAX + 0x21]
MOV byte ptr [RBX + 0x21],AL
MOV RAX,qword ptr [RBP]
MOV RAX,qword ptr [RAX + 0x18]
CMP RAX,qword ptr [0x0043dc00]
JNZ 0x002edb90
MOV RAX,qword ptr [RBP + 0x10]
MOVZX EAX,byte ptr [RAX + 0x22]
MOV byte ptr [RBX + 0x22],AL
MOV RAX,qword ptr [RBP]
MOV RAX,qword ptr [RAX + 0x40]
CMP RAX,qword ptr [0x0043dbb0]
JNZ 0x002edb80
MOV RAX,qword ptr [RBP + 0x10]
MOV EAX,dword ptr [RAX + 0x58]
MOV dword ptr [RBX + 0x58],EAX
MOV RAX,qword ptr [RBP]
MOV RAX,qword ptr [RAX + 0x20]
CMP RAX,qword ptr [0x0043df18]
JNZ 0x002edb68
MOV RAX,qword ptr [RBP + 0x10]
LEA R13,[RSP + 0x20]
LEA RDX,[RSP + 0x38]
MOV RDI,R13
MOV RSI,qword ptr [RAX + 0x10]
CALL 0x0030f640
MOV RAX,qword ptr [RSP + 0x20]
MOV RDI,qword ptr [RAX + -0x18]
MOV qword ptr [RBX + 0x18],RDI
CALL 0x002d9440
MOV RDX,qword ptr [RBX + 0x18]
XOR ECX,ECX
MOV RSI,RAX
MOV RDI,R13
MOV R12,RAX
CALL 0x0030cdb0
XOR EAX,EAX
CMP qword ptr [RBX + 0x18],0x0
JNZ 0x002edb50
MOV byte ptr [RBX + 0x20],AL
MOV RAX,qword ptr [RBP]
MOV RAX,qword ptr [RAX + 0x28]
CMP RAX,qword ptr [0x0043db70]
JNZ 0x002edbc0
MOV RAX,qword ptr [RBP + 0x10]
LEA R13,[RSP + 0x28]
LEA RDX,[RSP + 0x1d]
MOV RDI,R13
MOV RSI,qword ptr [RAX + 0x28]
CALL 0x0030f640
MOV RAX,qword ptr [RSP + 0x28]
MOV RDI,qword ptr [RAX + -0x18]
MOV qword ptr [RBX + 0x30],RDI
CALL 0x002d9440
MOV RDX,qword ptr [RBX + 0x30]
XOR ECX,ECX
MOV RSI,RAX
MOV RDI,R13
MOV R15,RAX
CALL 0x0030cdb0
MOV RAX,qword ptr [RBP]
MOV RAX,qword ptr [RAX + 0x30]
CMP RAX,qword ptr [0x0043dfe8]
JNZ 0x002edbd8
MOV RAX,qword ptr [RBP + 0x10]
LEA R13,[RSP + 0x30]
LEA RDX,[RSP + 0x1e]
MOV RDI,R13
MOV RSI,qword ptr [RAX + 0x38]
CALL 0x0030f640
MOV RAX,qword ptr [RSP + 0x30]
MOV RDI,qword ptr [RAX + -0x18]
MOV qword ptr [RBX + 0x40],RDI
CALL 0x002d9440
MOV RDX,qword ptr [RBX + 0x40]
XOR ECX,ECX
MOV RSI,RAX
MOV RDI,R13
MOV R14,RAX
CALL 0x0030cdb0
MOV RAX,qword ptr [RBP]
MOV RAX,qword ptr [RAX + 0x38]
CMP RAX,qword ptr [0x0043daf8]
JNZ 0x002edbf0
MOV RAX,qword ptr [RBP + 0x10]
LEA RDX,[RSP + 0x1f]
MOV RSI,qword ptr [RAX + 0x48]
LEA RAX,[RSP + 0x38]
MOV RDI,RAX
MOV qword ptr [RSP + 0x8],RAX
CALL 0x0030f640
MOV RAX,qword ptr [RSP + 0x38]
MOV RDI,qword ptr [RAX + -0x18]
MOV qword ptr [RBX + 0x50],RDI
CALL 0x002d9440
MOV RDX,qword ptr [RBX + 0x50]
MOV RDI,qword ptr [RSP + 0x8]
XOR ECX,ECX
MOV RSI,RAX
MOV R13,RAX
CALL 0x0030cdb0
MOV RAX,qword ptr [RBP]
MOV RAX,qword ptr [RAX + 0x48]
CMP RAX,qword ptr [0x0043da60]
JNZ 0x002edc10
MOV RAX,qword ptr [RBP + 0x10]
MOV EAX,dword ptr [RAX + 0x5c]
MOV dword ptr [RBX + 0x5c],EAX
MOV RAX,qword ptr [RBP]
MOV RAX,qword ptr [RAX + 0x50]
CMP RAX,qword ptr [0x0043dd00]
JNZ 0x002edbb0
MOV RAX,qword ptr [RBP + 0x10]
MOV EAX,dword ptr [RAX + 0x60]
MOV dword ptr [RBX + 0x60],EAX
MOV RDI,qword ptr [RSP]
CALL 0x002ec670
LEA RDX,[0x43e720]
LEA RCX,[RBX + 0x64]
MOV RDI,RAX
MOV RSI,qword ptr [RDX]
LEA RDX,[RSI + 0xb]
CALL 0x002ea750
MOV RAX,qword ptr [RSP + 0x38]
MOV qword ptr [RBX + 0x10],R12
MOV qword ptr [RBX + 0x28],R15
MOV qword ptr [RBX + 0x38],R14
LEA RDI,[RAX + -0x18]
MOV qword ptr [RBX + 0x48],R13
MOV byte ptr [RBX + 0x6f],0x1
LEA RBX,[0x44a540]
CMP RDI,RBX
JNZ 0x002edc40
MOV RAX,qword ptr [RSP + 0x30]
LEA RDI,[RAX + -0x18]
CMP RDI,RBX
JNZ 0x002edc50
MOV RAX,qword ptr [RSP + 0x28]
LEA RDI,[RAX + -0x18]
CMP RDI,RBX
JNZ 0x002edc20
MOV RAX,qword ptr [RSP + 0x20]
LEA RDI,[RAX + -0x18]
CMP RDI,RBX
JNZ 0x002edc30
ADD RSP,0x48
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOVZX EAX,byte ptr [R12]
SUB EAX,0x1
CMP AL,0x7d
SETBE AL
JMP 0x002ed970
LEA R13,[RSP + 0x20]
MOV RSI,RBP
MOV RDI,R13
CALL RAX
JMP 0x002ed93d
MOV RDI,RBP
CALL RAX
JMP 0x002ed90b
MOV RDI,RBP
CALL RAX
JMP 0x002ed8ec
MOV RDI,RBP
CALL RAX
JMP 0x002ed8cc
MOV RDI,RBP
CALL RAX
JMP 0x002edab4
LEA R13,[RSP + 0x28]
MOV RSI,RBP
MOV RDI,R13
CALL RAX
JMP 0x002ed9a2
LEA R13,[RSP + 0x30]
MOV RSI,RBP
MOV RDI,R13
CALL RAX
JMP 0x002ed9f7
LEA RCX,[RSP + 0x38]
MOV RSI,RBP
MOV qword ptr [RSP + 0x8],RCX
MOV RDI,RCX
CALL RAX
JMP 0x002eda51
MOV RDI,RBP
CALL RAX
JMP 0x002eda95
LEA RSI,[RSP + 0x1f]
CALL 0x002ea270
JMP 0x002edb2b
LEA RSI,[RSP + 0x1f]
CALL 0x002ea270
JMP 0x002edb3d
LEA RSI,[RSP + 0x1f]
CALL 0x002ea270
JMP 0x002edb07
LEA RSI,[RSP + 0x1f]
CALL 0x002ea270
JMP 0x002edb19
(translation_unit "void FUN_002ed890(long param_1,undefined8 param_2)\n\n{\n  bool bVar1;\n  undefined1 uVar2;\n  undefined4 uVar3;\n  long *plVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  undefined8 uVar8;\n  undefined8 uVar9;\n  long *local_70;\n  undefined1 local_5b;\n  undefined1 local_5a;\n  undefined1 local_59;\n  long local_58;\n  long local_50;\n  long local_48;\n  long local_40 [2];\n  \n  plVar4 = (long *)FUN_002ed840(param_2);\n  if (*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043db38) {\n    uVar2 = *(undefined1 *)(plVar4[2] + 0x21);\n  }\n  else {\n    uVar2 = (**(code **)(*plVar4 + 0x10))(plVar4);\n  }\n  *(undefined1 *)(param_1 + 0x21) = uVar2;\n  if (*(code **)(*plVar4 + 0x18) == (code *)PTR_FUN_0043dc00) {\n    uVar2 = *(undefined1 *)(plVar4[2] + 0x22);\n  }\n  else {\n    uVar2 = (**(code **)(*plVar4 + 0x18))(plVar4);\n  }\n  *(undefined1 *)(param_1 + 0x22) = uVar2;\n  if (*(code **)(*plVar4 + 0x40) == (code *)PTR_FUN_0043dbb0) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x58);\n  }\n  else {\n    uVar3 = (**(code **)(*plVar4 + 0x40))(plVar4);\n  }\n  *(undefined4 *)(param_1 + 0x58) = uVar3;\n  if (*(code **)(*plVar4 + 0x20) == (code *)PTR_FUN_0043df18) {\n                    /* try { // try from 002ed938 to 002ed93c has its CatchHandler @ 002edd7a */\n    FUN_0030f640(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40);\n  }\n  else {\n                    /* try { // try from 002edb73 to 002edb74 has its CatchHandler @ 002edd7a */\n    (**(code **)(*plVar4 + 0x20))(&local_58,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(local_58 + -0x18);\n                    /* try { // try from 002ed94a to 002ed94e has its CatchHandler @ 002edd6f */\n  pcVar5 = (char *)thunk_FUN_002d94a0();\n                    /* try { // try from 002ed95e to 002ed962 has its CatchHandler @ 002edd76 */\n  FUN_0030cdb0(&local_58,pcVar5,*(undefined8 *)(param_1 + 0x18),0);\n  bVar1 = false;\n  if (*(long *)(param_1 + 0x18) != 0) {\n    bVar1 = (byte)(*pcVar5 - 1U) < 0x7e;\n  }\n  *(bool *)(param_1 + 0x20) = bVar1;\n  if (*(code **)(*plVar4 + 0x28) == (code *)PTR_FUN_0043db70) {\n                    /* try { // try from 002ed99d to 002ed9a1 has its CatchHandler @ 002edc63 */\n    FUN_0030f640(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b);\n  }\n  else {\n                    /* try { // try from 002edbcb to 002edbcc has its CatchHandler @ 002edc5f */\n    (**(code **)(*plVar4 + 0x28))(&local_50,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x30) = *(undefined8 *)(local_50 + -0x18);\n                    /* try { // try from 002ed9af to 002ed9b3 has its CatchHandler @ 002edd0f */\n  uVar6 = thunk_FUN_002d94a0();\n                    /* try { // try from 002ed9c3 to 002ed9c7 has its CatchHandler @ 002edd0b */\n  FUN_0030cdb0(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0);\n  if (*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dfe8) {\n                    /* try { // try from 002ed9f2 to 002ed9f6 has its CatchHandler @ 002edc61 */\n    FUN_0030f640(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a);\n  }\n  else {\n                    /* try { // try from 002edbe3 to 002edbe4 has its CatchHandler @ 002eddcf */\n    (**(code **)(*plVar4 + 0x30))(&local_48,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x40) = *(undefined8 *)(local_48 + -0x18);\n                    /* try { // try from 002eda04 to 002eda08 has its CatchHandler @ 002edd11 */\n  uVar7 = thunk_FUN_002d94a0();\n                    /* try { // try from 002eda18 to 002eda1c has its CatchHandler @ 002edd0d */\n  FUN_0030cdb0(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0);\n  if (*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043daf8) {\n                    /* try { // try from 002eda4c to 002eda50 has its CatchHandler @ 002edd87 */\n    FUN_0030f640(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59);\n  }\n  else {\n                    /* try { // try from 002edc00 to 002edc01 has its CatchHandler @ 002edd78 */\n    (**(code **)(*plVar4 + 0x38))(local_40,plVar4);\n  }\n  local_70 = local_40;\n  *(undefined8 *)(param_1 + 0x50) = *(undefined8 *)(local_40[0] + -0x18);\n                    /* try { // try from 002eda5e to 002eda62 has its CatchHandler @ 002eddb2 */\n  uVar8 = thunk_FUN_002d94a0();\n                    /* try { // try from 002eda74 to 002edad9 has its CatchHandler @ 002edd71 */\n  FUN_0030cdb0(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0);\n  if (*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043da60) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x5c);\n  }\n  else {\n                    /* try { // try from 002edc13 to 002edc14 has its CatchHandler @ 002edd71 */\n    uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4);\n  }\n  *(undefined4 *)(param_1 + 0x5c) = uVar3;\n  if (*(code **)(*plVar4 + 0x50) == (code *)PTR_FUN_0043dd00) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x60);\n  }\n  else {\n                    /* try { // try from 002edbb3 to 002edbb4 has its CatchHandler @ 002edd71 */\n    uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4);\n  }\n  *(undefined4 *)(param_1 + 0x60) = uVar3;\n  uVar9 = FUN_002ec670(param_2);\n  FUN_002ea750(uVar9,PTR_DAT_0043e720,PTR_DAT_0043e720 + 0xb,param_1 + 100);\n  *(char **)(param_1 + 0x10) = pcVar5;\n  *(undefined8 *)(param_1 + 0x28) = uVar6;\n  *(undefined8 *)(param_1 + 0x38) = uVar7;\n  *(undefined8 *)(param_1 + 0x48) = uVar8;\n  *(undefined1 *)(param_1 + 0x6f) = 1;\n  if ((undefined8 *)(local_40[0] + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_40[0] + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_48 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_48 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_50 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_50 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_58 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_58 + -0x18),&local_59);\n  }\n  return;\n}\n\n" (function_definition "void FUN_002ed890(long param_1,undefined8 param_2)\n\n{\n  bool bVar1;\n  undefined1 uVar2;\n  undefined4 uVar3;\n  long *plVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  undefined8 uVar8;\n  undefined8 uVar9;\n  long *local_70;\n  undefined1 local_5b;\n  undefined1 local_5a;\n  undefined1 local_59;\n  long local_58;\n  long local_50;\n  long local_48;\n  long local_40 [2];\n  \n  plVar4 = (long *)FUN_002ed840(param_2);\n  if (*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043db38) {\n    uVar2 = *(undefined1 *)(plVar4[2] + 0x21);\n  }\n  else {\n    uVar2 = (**(code **)(*plVar4 + 0x10))(plVar4);\n  }\n  *(undefined1 *)(param_1 + 0x21) = uVar2;\n  if (*(code **)(*plVar4 + 0x18) == (code *)PTR_FUN_0043dc00) {\n    uVar2 = *(undefined1 *)(plVar4[2] + 0x22);\n  }\n  else {\n    uVar2 = (**(code **)(*plVar4 + 0x18))(plVar4);\n  }\n  *(undefined1 *)(param_1 + 0x22) = uVar2;\n  if (*(code **)(*plVar4 + 0x40) == (code *)PTR_FUN_0043dbb0) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x58);\n  }\n  else {\n    uVar3 = (**(code **)(*plVar4 + 0x40))(plVar4);\n  }\n  *(undefined4 *)(param_1 + 0x58) = uVar3;\n  if (*(code **)(*plVar4 + 0x20) == (code *)PTR_FUN_0043df18) {\n                    /* try { // try from 002ed938 to 002ed93c has its CatchHandler @ 002edd7a */\n    FUN_0030f640(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40);\n  }\n  else {\n                    /* try { // try from 002edb73 to 002edb74 has its CatchHandler @ 002edd7a */\n    (**(code **)(*plVar4 + 0x20))(&local_58,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(local_58 + -0x18);\n                    /* try { // try from 002ed94a to 002ed94e has its CatchHandler @ 002edd6f */\n  pcVar5 = (char *)thunk_FUN_002d94a0();\n                    /* try { // try from 002ed95e to 002ed962 has its CatchHandler @ 002edd76 */\n  FUN_0030cdb0(&local_58,pcVar5,*(undefined8 *)(param_1 + 0x18),0);\n  bVar1 = false;\n  if (*(long *)(param_1 + 0x18) != 0) {\n    bVar1 = (byte)(*pcVar5 - 1U) < 0x7e;\n  }\n  *(bool *)(param_1 + 0x20) = bVar1;\n  if (*(code **)(*plVar4 + 0x28) == (code *)PTR_FUN_0043db70) {\n                    /* try { // try from 002ed99d to 002ed9a1 has its CatchHandler @ 002edc63 */\n    FUN_0030f640(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b);\n  }\n  else {\n                    /* try { // try from 002edbcb to 002edbcc has its CatchHandler @ 002edc5f */\n    (**(code **)(*plVar4 + 0x28))(&local_50,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x30) = *(undefined8 *)(local_50 + -0x18);\n                    /* try { // try from 002ed9af to 002ed9b3 has its CatchHandler @ 002edd0f */\n  uVar6 = thunk_FUN_002d94a0();\n                    /* try { // try from 002ed9c3 to 002ed9c7 has its CatchHandler @ 002edd0b */\n  FUN_0030cdb0(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0);\n  if (*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dfe8) {\n                    /* try { // try from 002ed9f2 to 002ed9f6 has its CatchHandler @ 002edc61 */\n    FUN_0030f640(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a);\n  }\n  else {\n                    /* try { // try from 002edbe3 to 002edbe4 has its CatchHandler @ 002eddcf */\n    (**(code **)(*plVar4 + 0x30))(&local_48,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x40) = *(undefined8 *)(local_48 + -0x18);\n                    /* try { // try from 002eda04 to 002eda08 has its CatchHandler @ 002edd11 */\n  uVar7 = thunk_FUN_002d94a0();\n                    /* try { // try from 002eda18 to 002eda1c has its CatchHandler @ 002edd0d */\n  FUN_0030cdb0(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0);\n  if (*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043daf8) {\n                    /* try { // try from 002eda4c to 002eda50 has its CatchHandler @ 002edd87 */\n    FUN_0030f640(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59);\n  }\n  else {\n                    /* try { // try from 002edc00 to 002edc01 has its CatchHandler @ 002edd78 */\n    (**(code **)(*plVar4 + 0x38))(local_40,plVar4);\n  }\n  local_70 = local_40;\n  *(undefined8 *)(param_1 + 0x50) = *(undefined8 *)(local_40[0] + -0x18);\n                    /* try { // try from 002eda5e to 002eda62 has its CatchHandler @ 002eddb2 */\n  uVar8 = thunk_FUN_002d94a0();\n                    /* try { // try from 002eda74 to 002edad9 has its CatchHandler @ 002edd71 */\n  FUN_0030cdb0(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0);\n  if (*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043da60) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x5c);\n  }\n  else {\n                    /* try { // try from 002edc13 to 002edc14 has its CatchHandler @ 002edd71 */\n    uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4);\n  }\n  *(undefined4 *)(param_1 + 0x5c) = uVar3;\n  if (*(code **)(*plVar4 + 0x50) == (code *)PTR_FUN_0043dd00) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x60);\n  }\n  else {\n                    /* try { // try from 002edbb3 to 002edbb4 has its CatchHandler @ 002edd71 */\n    uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4);\n  }\n  *(undefined4 *)(param_1 + 0x60) = uVar3;\n  uVar9 = FUN_002ec670(param_2);\n  FUN_002ea750(uVar9,PTR_DAT_0043e720,PTR_DAT_0043e720 + 0xb,param_1 + 100);\n  *(char **)(param_1 + 0x10) = pcVar5;\n  *(undefined8 *)(param_1 + 0x28) = uVar6;\n  *(undefined8 *)(param_1 + 0x38) = uVar7;\n  *(undefined8 *)(param_1 + 0x48) = uVar8;\n  *(undefined1 *)(param_1 + 0x6f) = 1;\n  if ((undefined8 *)(local_40[0] + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_40[0] + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_48 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_48 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_50 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_50 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_58 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_58 + -0x18),&local_59);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_002ed890(long param_1,undefined8 param_2)" identifier (parameter_list "(long param_1,undefined8 param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  undefined1 uVar2;\n  undefined4 uVar3;\n  long *plVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  undefined8 uVar8;\n  undefined8 uVar9;\n  long *local_70;\n  undefined1 local_5b;\n  undefined1 local_5a;\n  undefined1 local_59;\n  long local_58;\n  long local_50;\n  long local_48;\n  long local_40 [2];\n  \n  plVar4 = (long *)FUN_002ed840(param_2);\n  if (*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043db38) {\n    uVar2 = *(undefined1 *)(plVar4[2] + 0x21);\n  }\n  else {\n    uVar2 = (**(code **)(*plVar4 + 0x10))(plVar4);\n  }\n  *(undefined1 *)(param_1 + 0x21) = uVar2;\n  if (*(code **)(*plVar4 + 0x18) == (code *)PTR_FUN_0043dc00) {\n    uVar2 = *(undefined1 *)(plVar4[2] + 0x22);\n  }\n  else {\n    uVar2 = (**(code **)(*plVar4 + 0x18))(plVar4);\n  }\n  *(undefined1 *)(param_1 + 0x22) = uVar2;\n  if (*(code **)(*plVar4 + 0x40) == (code *)PTR_FUN_0043dbb0) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x58);\n  }\n  else {\n    uVar3 = (**(code **)(*plVar4 + 0x40))(plVar4);\n  }\n  *(undefined4 *)(param_1 + 0x58) = uVar3;\n  if (*(code **)(*plVar4 + 0x20) == (code *)PTR_FUN_0043df18) {\n                    /* try { // try from 002ed938 to 002ed93c has its CatchHandler @ 002edd7a */\n    FUN_0030f640(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40);\n  }\n  else {\n                    /* try { // try from 002edb73 to 002edb74 has its CatchHandler @ 002edd7a */\n    (**(code **)(*plVar4 + 0x20))(&local_58,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(local_58 + -0x18);\n                    /* try { // try from 002ed94a to 002ed94e has its CatchHandler @ 002edd6f */\n  pcVar5 = (char *)thunk_FUN_002d94a0();\n                    /* try { // try from 002ed95e to 002ed962 has its CatchHandler @ 002edd76 */\n  FUN_0030cdb0(&local_58,pcVar5,*(undefined8 *)(param_1 + 0x18),0);\n  bVar1 = false;\n  if (*(long *)(param_1 + 0x18) != 0) {\n    bVar1 = (byte)(*pcVar5 - 1U) < 0x7e;\n  }\n  *(bool *)(param_1 + 0x20) = bVar1;\n  if (*(code **)(*plVar4 + 0x28) == (code *)PTR_FUN_0043db70) {\n                    /* try { // try from 002ed99d to 002ed9a1 has its CatchHandler @ 002edc63 */\n    FUN_0030f640(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b);\n  }\n  else {\n                    /* try { // try from 002edbcb to 002edbcc has its CatchHandler @ 002edc5f */\n    (**(code **)(*plVar4 + 0x28))(&local_50,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x30) = *(undefined8 *)(local_50 + -0x18);\n                    /* try { // try from 002ed9af to 002ed9b3 has its CatchHandler @ 002edd0f */\n  uVar6 = thunk_FUN_002d94a0();\n                    /* try { // try from 002ed9c3 to 002ed9c7 has its CatchHandler @ 002edd0b */\n  FUN_0030cdb0(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0);\n  if (*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dfe8) {\n                    /* try { // try from 002ed9f2 to 002ed9f6 has its CatchHandler @ 002edc61 */\n    FUN_0030f640(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a);\n  }\n  else {\n                    /* try { // try from 002edbe3 to 002edbe4 has its CatchHandler @ 002eddcf */\n    (**(code **)(*plVar4 + 0x30))(&local_48,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x40) = *(undefined8 *)(local_48 + -0x18);\n                    /* try { // try from 002eda04 to 002eda08 has its CatchHandler @ 002edd11 */\n  uVar7 = thunk_FUN_002d94a0();\n                    /* try { // try from 002eda18 to 002eda1c has its CatchHandler @ 002edd0d */\n  FUN_0030cdb0(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0);\n  if (*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043daf8) {\n                    /* try { // try from 002eda4c to 002eda50 has its CatchHandler @ 002edd87 */\n    FUN_0030f640(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59);\n  }\n  else {\n                    /* try { // try from 002edc00 to 002edc01 has its CatchHandler @ 002edd78 */\n    (**(code **)(*plVar4 + 0x38))(local_40,plVar4);\n  }\n  local_70 = local_40;\n  *(undefined8 *)(param_1 + 0x50) = *(undefined8 *)(local_40[0] + -0x18);\n                    /* try { // try from 002eda5e to 002eda62 has its CatchHandler @ 002eddb2 */\n  uVar8 = thunk_FUN_002d94a0();\n                    /* try { // try from 002eda74 to 002edad9 has its CatchHandler @ 002edd71 */\n  FUN_0030cdb0(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0);\n  if (*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043da60) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x5c);\n  }\n  else {\n                    /* try { // try from 002edc13 to 002edc14 has its CatchHandler @ 002edd71 */\n    uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4);\n  }\n  *(undefined4 *)(param_1 + 0x5c) = uVar3;\n  if (*(code **)(*plVar4 + 0x50) == (code *)PTR_FUN_0043dd00) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x60);\n  }\n  else {\n                    /* try { // try from 002edbb3 to 002edbb4 has its CatchHandler @ 002edd71 */\n    uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4);\n  }\n  *(undefined4 *)(param_1 + 0x60) = uVar3;\n  uVar9 = FUN_002ec670(param_2);\n  FUN_002ea750(uVar9,PTR_DAT_0043e720,PTR_DAT_0043e720 + 0xb,param_1 + 100);\n  *(char **)(param_1 + 0x10) = pcVar5;\n  *(undefined8 *)(param_1 + 0x28) = uVar6;\n  *(undefined8 *)(param_1 + 0x38) = uVar7;\n  *(undefined8 *)(param_1 + 0x48) = uVar8;\n  *(undefined1 *)(param_1 + 0x6f) = 1;\n  if ((undefined8 *)(local_40[0] + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_40[0] + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_48 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_48 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_50 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_50 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_58 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_58 + -0x18),&local_59);\n  }\n  return;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "undefined1 uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "undefined8 uVar8;" type_identifier identifier ;) (declaration "undefined8 uVar9;" type_identifier identifier ;) (declaration "long *local_70;" (sized_type_specifier "long" long) (pointer_declarator "*local_70" * identifier) ;) (declaration "undefined1 local_5b;" type_identifier identifier ;) (declaration "undefined1 local_5a;" type_identifier identifier ;) (declaration "undefined1 local_59;" type_identifier identifier ;) (declaration "long local_58;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_50;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_48;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_40 [2];" (sized_type_specifier "long" long) (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (expression_statement "plVar4 = (long *)FUN_002ed840(param_2);" (assignment_expression "plVar4 = (long *)FUN_002ed840(param_2)" identifier = (cast_expression "(long *)FUN_002ed840(param_2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002ed840(param_2)" identifier (argument_list "(param_2)" ( identifier ))))) ;) (if_statement "if (*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043db38) {\n    uVar2 = *(undefined1 *)(plVar4[2] + 0x21);\n  }\n  else {\n    uVar2 = (**(code **)(*plVar4 + 0x10))(plVar4);\n  }" if (parenthesized_expression "(*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043db38)" ( (binary_expression "*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043db38" (pointer_expression "*(code **)(*plVar4 + 0x10)" * (cast_expression "(code **)(*plVar4 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x10)" ( (binary_expression "*plVar4 + 0x10" (pointer_expression "*plVar4" * identifier) + number_literal) )))) == (cast_expression "(code *)PTR_FUN_0043db38" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    uVar2 = *(undefined1 *)(plVar4[2] + 0x21);\n  }" { (expression_statement "uVar2 = *(undefined1 *)(plVar4[2] + 0x21);" (assignment_expression "uVar2 = *(undefined1 *)(plVar4[2] + 0x21)" identifier = (pointer_expression "*(undefined1 *)(plVar4[2] + 0x21)" * (cast_expression "(undefined1 *)(plVar4[2] + 0x21)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4[2] + 0x21)" ( (binary_expression "plVar4[2] + 0x21" (subscript_expression "plVar4[2]" identifier [ number_literal ]) + number_literal) ))))) ;) }) (else_clause "else {\n    uVar2 = (**(code **)(*plVar4 + 0x10))(plVar4);\n  }" else (compound_statement "{\n    uVar2 = (**(code **)(*plVar4 + 0x10))(plVar4);\n  }" { (expression_statement "uVar2 = (**(code **)(*plVar4 + 0x10))(plVar4);" (assignment_expression "uVar2 = (**(code **)(*plVar4 + 0x10))(plVar4)" identifier = (call_expression "(**(code **)(*plVar4 + 0x10))(plVar4)" (parenthesized_expression "(**(code **)(*plVar4 + 0x10))" ( (pointer_expression "**(code **)(*plVar4 + 0x10)" * (pointer_expression "*(code **)(*plVar4 + 0x10)" * (cast_expression "(code **)(*plVar4 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x10)" ( (binary_expression "*plVar4 + 0x10" (pointer_expression "*plVar4" * identifier) + number_literal) ))))) )) (argument_list "(plVar4)" ( identifier )))) ;) }))) (expression_statement "*(undefined1 *)(param_1 + 0x21) = uVar2;" (assignment_expression "*(undefined1 *)(param_1 + 0x21) = uVar2" (pointer_expression "*(undefined1 *)(param_1 + 0x21)" * (cast_expression "(undefined1 *)(param_1 + 0x21)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x21)" ( (binary_expression "param_1 + 0x21" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(code **)(*plVar4 + 0x18) == (code *)PTR_FUN_0043dc00) {\n    uVar2 = *(undefined1 *)(plVar4[2] + 0x22);\n  }\n  else {\n    uVar2 = (**(code **)(*plVar4 + 0x18))(plVar4);\n  }" if (parenthesized_expression "(*(code **)(*plVar4 + 0x18) == (code *)PTR_FUN_0043dc00)" ( (binary_expression "*(code **)(*plVar4 + 0x18) == (code *)PTR_FUN_0043dc00" (pointer_expression "*(code **)(*plVar4 + 0x18)" * (cast_expression "(code **)(*plVar4 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x18)" ( (binary_expression "*plVar4 + 0x18" (pointer_expression "*plVar4" * identifier) + number_literal) )))) == (cast_expression "(code *)PTR_FUN_0043dc00" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    uVar2 = *(undefined1 *)(plVar4[2] + 0x22);\n  }" { (expression_statement "uVar2 = *(undefined1 *)(plVar4[2] + 0x22);" (assignment_expression "uVar2 = *(undefined1 *)(plVar4[2] + 0x22)" identifier = (pointer_expression "*(undefined1 *)(plVar4[2] + 0x22)" * (cast_expression "(undefined1 *)(plVar4[2] + 0x22)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4[2] + 0x22)" ( (binary_expression "plVar4[2] + 0x22" (subscript_expression "plVar4[2]" identifier [ number_literal ]) + number_literal) ))))) ;) }) (else_clause "else {\n    uVar2 = (**(code **)(*plVar4 + 0x18))(plVar4);\n  }" else (compound_statement "{\n    uVar2 = (**(code **)(*plVar4 + 0x18))(plVar4);\n  }" { (expression_statement "uVar2 = (**(code **)(*plVar4 + 0x18))(plVar4);" (assignment_expression "uVar2 = (**(code **)(*plVar4 + 0x18))(plVar4)" identifier = (call_expression "(**(code **)(*plVar4 + 0x18))(plVar4)" (parenthesized_expression "(**(code **)(*plVar4 + 0x18))" ( (pointer_expression "**(code **)(*plVar4 + 0x18)" * (pointer_expression "*(code **)(*plVar4 + 0x18)" * (cast_expression "(code **)(*plVar4 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x18)" ( (binary_expression "*plVar4 + 0x18" (pointer_expression "*plVar4" * identifier) + number_literal) ))))) )) (argument_list "(plVar4)" ( identifier )))) ;) }))) (expression_statement "*(undefined1 *)(param_1 + 0x22) = uVar2;" (assignment_expression "*(undefined1 *)(param_1 + 0x22) = uVar2" (pointer_expression "*(undefined1 *)(param_1 + 0x22)" * (cast_expression "(undefined1 *)(param_1 + 0x22)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x22)" ( (binary_expression "param_1 + 0x22" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(code **)(*plVar4 + 0x40) == (code *)PTR_FUN_0043dbb0) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x58);\n  }\n  else {\n    uVar3 = (**(code **)(*plVar4 + 0x40))(plVar4);\n  }" if (parenthesized_expression "(*(code **)(*plVar4 + 0x40) == (code *)PTR_FUN_0043dbb0)" ( (binary_expression "*(code **)(*plVar4 + 0x40) == (code *)PTR_FUN_0043dbb0" (pointer_expression "*(code **)(*plVar4 + 0x40)" * (cast_expression "(code **)(*plVar4 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x40)" ( (binary_expression "*plVar4 + 0x40" (pointer_expression "*plVar4" * identifier) + number_literal) )))) == (cast_expression "(code *)PTR_FUN_0043dbb0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x58);\n  }" { (expression_statement "uVar3 = *(undefined4 *)(plVar4[2] + 0x58);" (assignment_expression "uVar3 = *(undefined4 *)(plVar4[2] + 0x58)" identifier = (pointer_expression "*(undefined4 *)(plVar4[2] + 0x58)" * (cast_expression "(undefined4 *)(plVar4[2] + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4[2] + 0x58)" ( (binary_expression "plVar4[2] + 0x58" (subscript_expression "plVar4[2]" identifier [ number_literal ]) + number_literal) ))))) ;) }) (else_clause "else {\n    uVar3 = (**(code **)(*plVar4 + 0x40))(plVar4);\n  }" else (compound_statement "{\n    uVar3 = (**(code **)(*plVar4 + 0x40))(plVar4);\n  }" { (expression_statement "uVar3 = (**(code **)(*plVar4 + 0x40))(plVar4);" (assignment_expression "uVar3 = (**(code **)(*plVar4 + 0x40))(plVar4)" identifier = (call_expression "(**(code **)(*plVar4 + 0x40))(plVar4)" (parenthesized_expression "(**(code **)(*plVar4 + 0x40))" ( (pointer_expression "**(code **)(*plVar4 + 0x40)" * (pointer_expression "*(code **)(*plVar4 + 0x40)" * (cast_expression "(code **)(*plVar4 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x40)" ( (binary_expression "*plVar4 + 0x40" (pointer_expression "*plVar4" * identifier) + number_literal) ))))) )) (argument_list "(plVar4)" ( identifier )))) ;) }))) (expression_statement "*(undefined4 *)(param_1 + 0x58) = uVar3;" (assignment_expression "*(undefined4 *)(param_1 + 0x58) = uVar3" (pointer_expression "*(undefined4 *)(param_1 + 0x58)" * (cast_expression "(undefined4 *)(param_1 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(code **)(*plVar4 + 0x20) == (code *)PTR_FUN_0043df18) {\n                    /* try { // try from 002ed938 to 002ed93c has its CatchHandler @ 002edd7a */\n    FUN_0030f640(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40);\n  }\n  else {\n                    /* try { // try from 002edb73 to 002edb74 has its CatchHandler @ 002edd7a */\n    (**(code **)(*plVar4 + 0x20))(&local_58,plVar4);\n  }" if (parenthesized_expression "(*(code **)(*plVar4 + 0x20) == (code *)PTR_FUN_0043df18)" ( (binary_expression "*(code **)(*plVar4 + 0x20) == (code *)PTR_FUN_0043df18" (pointer_expression "*(code **)(*plVar4 + 0x20)" * (cast_expression "(code **)(*plVar4 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x20)" ( (binary_expression "*plVar4 + 0x20" (pointer_expression "*plVar4" * identifier) + number_literal) )))) == (cast_expression "(code *)PTR_FUN_0043df18" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n                    /* try { // try from 002ed938 to 002ed93c has its CatchHandler @ 002edd7a */\n    FUN_0030f640(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40);\n  }" { comment (expression_statement "FUN_0030f640(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40);" (call_expression "FUN_0030f640(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40)" identifier (argument_list "(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40)" ( (pointer_expression "&local_58" & identifier) , (pointer_expression "*(undefined8 *)(plVar4[2] + 0x10)" * (cast_expression "(undefined8 *)(plVar4[2] + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4[2] + 0x10)" ( (binary_expression "plVar4[2] + 0x10" (subscript_expression "plVar4[2]" identifier [ number_literal ]) + number_literal) )))) , identifier ))) ;) }) (else_clause "else {\n                    /* try { // try from 002edb73 to 002edb74 has its CatchHandler @ 002edd7a */\n    (**(code **)(*plVar4 + 0x20))(&local_58,plVar4);\n  }" else (compound_statement "{\n                    /* try { // try from 002edb73 to 002edb74 has its CatchHandler @ 002edd7a */\n    (**(code **)(*plVar4 + 0x20))(&local_58,plVar4);\n  }" { comment (expression_statement "(**(code **)(*plVar4 + 0x20))(&local_58,plVar4);" (call_expression "(**(code **)(*plVar4 + 0x20))(&local_58,plVar4)" (parenthesized_expression "(**(code **)(*plVar4 + 0x20))" ( (pointer_expression "**(code **)(*plVar4 + 0x20)" * (pointer_expression "*(code **)(*plVar4 + 0x20)" * (cast_expression "(code **)(*plVar4 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x20)" ( (binary_expression "*plVar4 + 0x20" (pointer_expression "*plVar4" * identifier) + number_literal) ))))) )) (argument_list "(&local_58,plVar4)" ( (pointer_expression "&local_58" & identifier) , identifier ))) ;) }))) (expression_statement "*(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(local_58 + -0x18);" (assignment_expression "*(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(local_58 + -0x18)" (pointer_expression "*(undefined8 *)(param_1 + 0x18)" * (cast_expression "(undefined8 *)(param_1 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(local_58 + -0x18)" * (cast_expression "(undefined8 *)(local_58 + -0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_58 + -0x18)" ( (binary_expression "local_58 + -0x18" identifier + number_literal) ))))) ;) comment (expression_statement "pcVar5 = (char *)thunk_FUN_002d94a0();" (assignment_expression "pcVar5 = (char *)thunk_FUN_002d94a0()" identifier = (cast_expression "(char *)thunk_FUN_002d94a0()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "thunk_FUN_002d94a0()" identifier (argument_list "()" ( ))))) ;) comment (expression_statement "FUN_0030cdb0(&local_58,pcVar5,*(undefined8 *)(param_1 + 0x18),0);" (call_expression "FUN_0030cdb0(&local_58,pcVar5,*(undefined8 *)(param_1 + 0x18),0)" identifier (argument_list "(&local_58,pcVar5,*(undefined8 *)(param_1 + 0x18),0)" ( (pointer_expression "&local_58" & identifier) , identifier , (pointer_expression "*(undefined8 *)(param_1 + 0x18)" * (cast_expression "(undefined8 *)(param_1 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) , number_literal ))) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (if_statement "if (*(long *)(param_1 + 0x18) != 0) {\n    bVar1 = (byte)(*pcVar5 - 1U) < 0x7e;\n  }" if (parenthesized_expression "(*(long *)(param_1 + 0x18) != 0)" ( (binary_expression "*(long *)(param_1 + 0x18) != 0" (pointer_expression "*(long *)(param_1 + 0x18)" * (cast_expression "(long *)(param_1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    bVar1 = (byte)(*pcVar5 - 1U) < 0x7e;\n  }" { (expression_statement "bVar1 = (byte)(*pcVar5 - 1U) < 0x7e;" (assignment_expression "bVar1 = (byte)(*pcVar5 - 1U) < 0x7e" identifier = (binary_expression "(byte)(*pcVar5 - 1U) < 0x7e" (call_expression "(byte)(*pcVar5 - 1U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(*pcVar5 - 1U)" ( (binary_expression "*pcVar5 - 1U" (pointer_expression "*pcVar5" * identifier) - number_literal) ))) < number_literal)) ;) })) (expression_statement "*(bool *)(param_1 + 0x20) = bVar1;" (assignment_expression "*(bool *)(param_1 + 0x20) = bVar1" (pointer_expression "*(bool *)(param_1 + 0x20)" * (cast_expression "(bool *)(param_1 + 0x20)" ( (type_descriptor "bool *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(code **)(*plVar4 + 0x28) == (code *)PTR_FUN_0043db70) {\n                    /* try { // try from 002ed99d to 002ed9a1 has its CatchHandler @ 002edc63 */\n    FUN_0030f640(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b);\n  }\n  else {\n                    /* try { // try from 002edbcb to 002edbcc has its CatchHandler @ 002edc5f */\n    (**(code **)(*plVar4 + 0x28))(&local_50,plVar4);\n  }" if (parenthesized_expression "(*(code **)(*plVar4 + 0x28) == (code *)PTR_FUN_0043db70)" ( (binary_expression "*(code **)(*plVar4 + 0x28) == (code *)PTR_FUN_0043db70" (pointer_expression "*(code **)(*plVar4 + 0x28)" * (cast_expression "(code **)(*plVar4 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x28)" ( (binary_expression "*plVar4 + 0x28" (pointer_expression "*plVar4" * identifier) + number_literal) )))) == (cast_expression "(code *)PTR_FUN_0043db70" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n                    /* try { // try from 002ed99d to 002ed9a1 has its CatchHandler @ 002edc63 */\n    FUN_0030f640(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b);\n  }" { comment (expression_statement "FUN_0030f640(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b);" (call_expression "FUN_0030f640(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b)" identifier (argument_list "(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b)" ( (pointer_expression "&local_50" & identifier) , (pointer_expression "*(undefined8 *)(plVar4[2] + 0x28)" * (cast_expression "(undefined8 *)(plVar4[2] + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4[2] + 0x28)" ( (binary_expression "plVar4[2] + 0x28" (subscript_expression "plVar4[2]" identifier [ number_literal ]) + number_literal) )))) , (pointer_expression "&local_5b" & identifier) ))) ;) }) (else_clause "else {\n                    /* try { // try from 002edbcb to 002edbcc has its CatchHandler @ 002edc5f */\n    (**(code **)(*plVar4 + 0x28))(&local_50,plVar4);\n  }" else (compound_statement "{\n                    /* try { // try from 002edbcb to 002edbcc has its CatchHandler @ 002edc5f */\n    (**(code **)(*plVar4 + 0x28))(&local_50,plVar4);\n  }" { comment (expression_statement "(**(code **)(*plVar4 + 0x28))(&local_50,plVar4);" (call_expression "(**(code **)(*plVar4 + 0x28))(&local_50,plVar4)" (parenthesized_expression "(**(code **)(*plVar4 + 0x28))" ( (pointer_expression "**(code **)(*plVar4 + 0x28)" * (pointer_expression "*(code **)(*plVar4 + 0x28)" * (cast_expression "(code **)(*plVar4 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x28)" ( (binary_expression "*plVar4 + 0x28" (pointer_expression "*plVar4" * identifier) + number_literal) ))))) )) (argument_list "(&local_50,plVar4)" ( (pointer_expression "&local_50" & identifier) , identifier ))) ;) }))) (expression_statement "*(undefined8 *)(param_1 + 0x30) = *(undefined8 *)(local_50 + -0x18);" (assignment_expression "*(undefined8 *)(param_1 + 0x30) = *(undefined8 *)(local_50 + -0x18)" (pointer_expression "*(undefined8 *)(param_1 + 0x30)" * (cast_expression "(undefined8 *)(param_1 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(local_50 + -0x18)" * (cast_expression "(undefined8 *)(local_50 + -0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + -0x18)" ( (binary_expression "local_50 + -0x18" identifier + number_literal) ))))) ;) comment (expression_statement "uVar6 = thunk_FUN_002d94a0();" (assignment_expression "uVar6 = thunk_FUN_002d94a0()" identifier = (call_expression "thunk_FUN_002d94a0()" identifier (argument_list "()" ( )))) ;) comment (expression_statement "FUN_0030cdb0(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0);" (call_expression "FUN_0030cdb0(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0)" identifier (argument_list "(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0)" ( (pointer_expression "&local_50" & identifier) , identifier , (pointer_expression "*(undefined8 *)(param_1 + 0x30)" * (cast_expression "(undefined8 *)(param_1 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) , number_literal ))) ;) (if_statement "if (*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dfe8) {\n                    /* try { // try from 002ed9f2 to 002ed9f6 has its CatchHandler @ 002edc61 */\n    FUN_0030f640(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a);\n  }\n  else {\n                    /* try { // try from 002edbe3 to 002edbe4 has its CatchHandler @ 002eddcf */\n    (**(code **)(*plVar4 + 0x30))(&local_48,plVar4);\n  }" if (parenthesized_expression "(*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dfe8)" ( (binary_expression "*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dfe8" (pointer_expression "*(code **)(*plVar4 + 0x30)" * (cast_expression "(code **)(*plVar4 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x30)" ( (binary_expression "*plVar4 + 0x30" (pointer_expression "*plVar4" * identifier) + number_literal) )))) == (cast_expression "(code *)PTR_FUN_0043dfe8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n                    /* try { // try from 002ed9f2 to 002ed9f6 has its CatchHandler @ 002edc61 */\n    FUN_0030f640(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a);\n  }" { comment (expression_statement "FUN_0030f640(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a);" (call_expression "FUN_0030f640(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a)" identifier (argument_list "(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a)" ( (pointer_expression "&local_48" & identifier) , (pointer_expression "*(undefined8 *)(plVar4[2] + 0x38)" * (cast_expression "(undefined8 *)(plVar4[2] + 0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4[2] + 0x38)" ( (binary_expression "plVar4[2] + 0x38" (subscript_expression "plVar4[2]" identifier [ number_literal ]) + number_literal) )))) , (pointer_expression "&local_5a" & identifier) ))) ;) }) (else_clause "else {\n                    /* try { // try from 002edbe3 to 002edbe4 has its CatchHandler @ 002eddcf */\n    (**(code **)(*plVar4 + 0x30))(&local_48,plVar4);\n  }" else (compound_statement "{\n                    /* try { // try from 002edbe3 to 002edbe4 has its CatchHandler @ 002eddcf */\n    (**(code **)(*plVar4 + 0x30))(&local_48,plVar4);\n  }" { comment (expression_statement "(**(code **)(*plVar4 + 0x30))(&local_48,plVar4);" (call_expression "(**(code **)(*plVar4 + 0x30))(&local_48,plVar4)" (parenthesized_expression "(**(code **)(*plVar4 + 0x30))" ( (pointer_expression "**(code **)(*plVar4 + 0x30)" * (pointer_expression "*(code **)(*plVar4 + 0x30)" * (cast_expression "(code **)(*plVar4 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x30)" ( (binary_expression "*plVar4 + 0x30" (pointer_expression "*plVar4" * identifier) + number_literal) ))))) )) (argument_list "(&local_48,plVar4)" ( (pointer_expression "&local_48" & identifier) , identifier ))) ;) }))) (expression_statement "*(undefined8 *)(param_1 + 0x40) = *(undefined8 *)(local_48 + -0x18);" (assignment_expression "*(undefined8 *)(param_1 + 0x40) = *(undefined8 *)(local_48 + -0x18)" (pointer_expression "*(undefined8 *)(param_1 + 0x40)" * (cast_expression "(undefined8 *)(param_1 + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(local_48 + -0x18)" * (cast_expression "(undefined8 *)(local_48 + -0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_48 + -0x18)" ( (binary_expression "local_48 + -0x18" identifier + number_literal) ))))) ;) comment (expression_statement "uVar7 = thunk_FUN_002d94a0();" (assignment_expression "uVar7 = thunk_FUN_002d94a0()" identifier = (call_expression "thunk_FUN_002d94a0()" identifier (argument_list "()" ( )))) ;) comment (expression_statement "FUN_0030cdb0(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0);" (call_expression "FUN_0030cdb0(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0)" identifier (argument_list "(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0)" ( (pointer_expression "&local_48" & identifier) , identifier , (pointer_expression "*(undefined8 *)(param_1 + 0x40)" * (cast_expression "(undefined8 *)(param_1 + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) , number_literal ))) ;) (if_statement "if (*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043daf8) {\n                    /* try { // try from 002eda4c to 002eda50 has its CatchHandler @ 002edd87 */\n    FUN_0030f640(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59);\n  }\n  else {\n                    /* try { // try from 002edc00 to 002edc01 has its CatchHandler @ 002edd78 */\n    (**(code **)(*plVar4 + 0x38))(local_40,plVar4);\n  }" if (parenthesized_expression "(*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043daf8)" ( (binary_expression "*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043daf8" (pointer_expression "*(code **)(*plVar4 + 0x38)" * (cast_expression "(code **)(*plVar4 + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x38)" ( (binary_expression "*plVar4 + 0x38" (pointer_expression "*plVar4" * identifier) + number_literal) )))) == (cast_expression "(code *)PTR_FUN_0043daf8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n                    /* try { // try from 002eda4c to 002eda50 has its CatchHandler @ 002edd87 */\n    FUN_0030f640(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59);\n  }" { comment (expression_statement "FUN_0030f640(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59);" (call_expression "FUN_0030f640(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59)" identifier (argument_list "(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59)" ( identifier , (pointer_expression "*(undefined8 *)(plVar4[2] + 0x48)" * (cast_expression "(undefined8 *)(plVar4[2] + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4[2] + 0x48)" ( (binary_expression "plVar4[2] + 0x48" (subscript_expression "plVar4[2]" identifier [ number_literal ]) + number_literal) )))) , (pointer_expression "&local_59" & identifier) ))) ;) }) (else_clause "else {\n                    /* try { // try from 002edc00 to 002edc01 has its CatchHandler @ 002edd78 */\n    (**(code **)(*plVar4 + 0x38))(local_40,plVar4);\n  }" else (compound_statement "{\n                    /* try { // try from 002edc00 to 002edc01 has its CatchHandler @ 002edd78 */\n    (**(code **)(*plVar4 + 0x38))(local_40,plVar4);\n  }" { comment (expression_statement "(**(code **)(*plVar4 + 0x38))(local_40,plVar4);" (call_expression "(**(code **)(*plVar4 + 0x38))(local_40,plVar4)" (parenthesized_expression "(**(code **)(*plVar4 + 0x38))" ( (pointer_expression "**(code **)(*plVar4 + 0x38)" * (pointer_expression "*(code **)(*plVar4 + 0x38)" * (cast_expression "(code **)(*plVar4 + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x38)" ( (binary_expression "*plVar4 + 0x38" (pointer_expression "*plVar4" * identifier) + number_literal) ))))) )) (argument_list "(local_40,plVar4)" ( identifier , identifier ))) ;) }))) (expression_statement "local_70 = local_40;" (assignment_expression "local_70 = local_40" identifier = identifier) ;) (expression_statement "*(undefined8 *)(param_1 + 0x50) = *(undefined8 *)(local_40[0] + -0x18);" (assignment_expression "*(undefined8 *)(param_1 + 0x50) = *(undefined8 *)(local_40[0] + -0x18)" (pointer_expression "*(undefined8 *)(param_1 + 0x50)" * (cast_expression "(undefined8 *)(param_1 + 0x50)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(local_40[0] + -0x18)" * (cast_expression "(undefined8 *)(local_40[0] + -0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40[0] + -0x18)" ( (binary_expression "local_40[0] + -0x18" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal) ))))) ;) comment (expression_statement "uVar8 = thunk_FUN_002d94a0();" (assignment_expression "uVar8 = thunk_FUN_002d94a0()" identifier = (call_expression "thunk_FUN_002d94a0()" identifier (argument_list "()" ( )))) ;) comment (expression_statement "FUN_0030cdb0(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0);" (call_expression "FUN_0030cdb0(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0)" identifier (argument_list "(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0)" ( identifier , identifier , (pointer_expression "*(undefined8 *)(param_1 + 0x50)" * (cast_expression "(undefined8 *)(param_1 + 0x50)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) , number_literal ))) ;) (if_statement "if (*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043da60) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x5c);\n  }\n  else {\n                    /* try { // try from 002edc13 to 002edc14 has its CatchHandler @ 002edd71 */\n    uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4);\n  }" if (parenthesized_expression "(*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043da60)" ( (binary_expression "*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043da60" (pointer_expression "*(code **)(*plVar4 + 0x48)" * (cast_expression "(code **)(*plVar4 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x48)" ( (binary_expression "*plVar4 + 0x48" (pointer_expression "*plVar4" * identifier) + number_literal) )))) == (cast_expression "(code *)PTR_FUN_0043da60" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x5c);\n  }" { (expression_statement "uVar3 = *(undefined4 *)(plVar4[2] + 0x5c);" (assignment_expression "uVar3 = *(undefined4 *)(plVar4[2] + 0x5c)" identifier = (pointer_expression "*(undefined4 *)(plVar4[2] + 0x5c)" * (cast_expression "(undefined4 *)(plVar4[2] + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4[2] + 0x5c)" ( (binary_expression "plVar4[2] + 0x5c" (subscript_expression "plVar4[2]" identifier [ number_literal ]) + number_literal) ))))) ;) }) (else_clause "else {\n                    /* try { // try from 002edc13 to 002edc14 has its CatchHandler @ 002edd71 */\n    uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4);\n  }" else (compound_statement "{\n                    /* try { // try from 002edc13 to 002edc14 has its CatchHandler @ 002edd71 */\n    uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4);\n  }" { comment (expression_statement "uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4);" (assignment_expression "uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4)" identifier = (call_expression "(**(code **)(*plVar4 + 0x48))(plVar4)" (parenthesized_expression "(**(code **)(*plVar4 + 0x48))" ( (pointer_expression "**(code **)(*plVar4 + 0x48)" * (pointer_expression "*(code **)(*plVar4 + 0x48)" * (cast_expression "(code **)(*plVar4 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x48)" ( (binary_expression "*plVar4 + 0x48" (pointer_expression "*plVar4" * identifier) + number_literal) ))))) )) (argument_list "(plVar4)" ( identifier )))) ;) }))) (expression_statement "*(undefined4 *)(param_1 + 0x5c) = uVar3;" (assignment_expression "*(undefined4 *)(param_1 + 0x5c) = uVar3" (pointer_expression "*(undefined4 *)(param_1 + 0x5c)" * (cast_expression "(undefined4 *)(param_1 + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(code **)(*plVar4 + 0x50) == (code *)PTR_FUN_0043dd00) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x60);\n  }\n  else {\n                    /* try { // try from 002edbb3 to 002edbb4 has its CatchHandler @ 002edd71 */\n    uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4);\n  }" if (parenthesized_expression "(*(code **)(*plVar4 + 0x50) == (code *)PTR_FUN_0043dd00)" ( (binary_expression "*(code **)(*plVar4 + 0x50) == (code *)PTR_FUN_0043dd00" (pointer_expression "*(code **)(*plVar4 + 0x50)" * (cast_expression "(code **)(*plVar4 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x50)" ( (binary_expression "*plVar4 + 0x50" (pointer_expression "*plVar4" * identifier) + number_literal) )))) == (cast_expression "(code *)PTR_FUN_0043dd00" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x60);\n  }" { (expression_statement "uVar3 = *(undefined4 *)(plVar4[2] + 0x60);" (assignment_expression "uVar3 = *(undefined4 *)(plVar4[2] + 0x60)" identifier = (pointer_expression "*(undefined4 *)(plVar4[2] + 0x60)" * (cast_expression "(undefined4 *)(plVar4[2] + 0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4[2] + 0x60)" ( (binary_expression "plVar4[2] + 0x60" (subscript_expression "plVar4[2]" identifier [ number_literal ]) + number_literal) ))))) ;) }) (else_clause "else {\n                    /* try { // try from 002edbb3 to 002edbb4 has its CatchHandler @ 002edd71 */\n    uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4);\n  }" else (compound_statement "{\n                    /* try { // try from 002edbb3 to 002edbb4 has its CatchHandler @ 002edd71 */\n    uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4);\n  }" { comment (expression_statement "uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4);" (assignment_expression "uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4)" identifier = (call_expression "(**(code **)(*plVar4 + 0x50))(plVar4)" (parenthesized_expression "(**(code **)(*plVar4 + 0x50))" ( (pointer_expression "**(code **)(*plVar4 + 0x50)" * (pointer_expression "*(code **)(*plVar4 + 0x50)" * (cast_expression "(code **)(*plVar4 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x50)" ( (binary_expression "*plVar4 + 0x50" (pointer_expression "*plVar4" * identifier) + number_literal) ))))) )) (argument_list "(plVar4)" ( identifier )))) ;) }))) (expression_statement "*(undefined4 *)(param_1 + 0x60) = uVar3;" (assignment_expression "*(undefined4 *)(param_1 + 0x60) = uVar3" (pointer_expression "*(undefined4 *)(param_1 + 0x60)" * (cast_expression "(undefined4 *)(param_1 + 0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar9 = FUN_002ec670(param_2);" (assignment_expression "uVar9 = FUN_002ec670(param_2)" identifier = (call_expression "FUN_002ec670(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "FUN_002ea750(uVar9,PTR_DAT_0043e720,PTR_DAT_0043e720 + 0xb,param_1 + 100);" (call_expression "FUN_002ea750(uVar9,PTR_DAT_0043e720,PTR_DAT_0043e720 + 0xb,param_1 + 100)" identifier (argument_list "(uVar9,PTR_DAT_0043e720,PTR_DAT_0043e720 + 0xb,param_1 + 100)" ( identifier , identifier , (binary_expression "PTR_DAT_0043e720 + 0xb" identifier + number_literal) , (binary_expression "param_1 + 100" identifier + number_literal) ))) ;) (expression_statement "*(char **)(param_1 + 0x10) = pcVar5;" (assignment_expression "*(char **)(param_1 + 0x10) = pcVar5" (pointer_expression "*(char **)(param_1 + 0x10)" * (cast_expression "(char **)(param_1 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)(param_1 + 0x28) = uVar6;" (assignment_expression "*(undefined8 *)(param_1 + 0x28) = uVar6" (pointer_expression "*(undefined8 *)(param_1 + 0x28)" * (cast_expression "(undefined8 *)(param_1 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)(param_1 + 0x38) = uVar7;" (assignment_expression "*(undefined8 *)(param_1 + 0x38) = uVar7" (pointer_expression "*(undefined8 *)(param_1 + 0x38)" * (cast_expression "(undefined8 *)(param_1 + 0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)(param_1 + 0x48) = uVar8;" (assignment_expression "*(undefined8 *)(param_1 + 0x48) = uVar8" (pointer_expression "*(undefined8 *)(param_1 + 0x48)" * (cast_expression "(undefined8 *)(param_1 + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + 0x6f) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x6f) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x6f)" * (cast_expression "(undefined1 *)(param_1 + 0x6f)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6f)" ( (binary_expression "param_1 + 0x6f" identifier + number_literal) )))) = number_literal) ;) (if_statement "if ((undefined8 *)(local_40[0] + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_40[0] + -0x18),&local_59);\n  }" if (parenthesized_expression "((undefined8 *)(local_40[0] + -0x18) != &DAT_0044a540)" ( (binary_expression "(undefined8 *)(local_40[0] + -0x18) != &DAT_0044a540" (cast_expression "(undefined8 *)(local_40[0] + -0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40[0] + -0x18)" ( (binary_expression "local_40[0] + -0x18" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal) ))) != (pointer_expression "&DAT_0044a540" & identifier)) )) (compound_statement "{\n    FUN_002ea270((undefined8 *)(local_40[0] + -0x18),&local_59);\n  }" { (expression_statement "FUN_002ea270((undefined8 *)(local_40[0] + -0x18),&local_59);" (call_expression "FUN_002ea270((undefined8 *)(local_40[0] + -0x18),&local_59)" identifier (argument_list "((undefined8 *)(local_40[0] + -0x18),&local_59)" ( (cast_expression "(undefined8 *)(local_40[0] + -0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40[0] + -0x18)" ( (binary_expression "local_40[0] + -0x18" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal) ))) , (pointer_expression "&local_59" & identifier) ))) ;) })) (if_statement "if ((undefined8 *)(local_48 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_48 + -0x18),&local_59);\n  }" if (parenthesized_expression "((undefined8 *)(local_48 + -0x18) != &DAT_0044a540)" ( (binary_expression "(undefined8 *)(local_48 + -0x18) != &DAT_0044a540" (cast_expression "(undefined8 *)(local_48 + -0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_48 + -0x18)" ( (binary_expression "local_48 + -0x18" identifier + number_literal) ))) != (pointer_expression "&DAT_0044a540" & identifier)) )) (compound_statement "{\n    FUN_002ea270((undefined8 *)(local_48 + -0x18),&local_59);\n  }" { (expression_statement "FUN_002ea270((undefined8 *)(local_48 + -0x18),&local_59);" (call_expression "FUN_002ea270((undefined8 *)(local_48 + -0x18),&local_59)" identifier (argument_list "((undefined8 *)(local_48 + -0x18),&local_59)" ( (cast_expression "(undefined8 *)(local_48 + -0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_48 + -0x18)" ( (binary_expression "local_48 + -0x18" identifier + number_literal) ))) , (pointer_expression "&local_59" & identifier) ))) ;) })) (if_statement "if ((undefined8 *)(local_50 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_50 + -0x18),&local_59);\n  }" if (parenthesized_expression "((undefined8 *)(local_50 + -0x18) != &DAT_0044a540)" ( (binary_expression "(undefined8 *)(local_50 + -0x18) != &DAT_0044a540" (cast_expression "(undefined8 *)(local_50 + -0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + -0x18)" ( (binary_expression "local_50 + -0x18" identifier + number_literal) ))) != (pointer_expression "&DAT_0044a540" & identifier)) )) (compound_statement "{\n    FUN_002ea270((undefined8 *)(local_50 + -0x18),&local_59);\n  }" { (expression_statement "FUN_002ea270((undefined8 *)(local_50 + -0x18),&local_59);" (call_expression "FUN_002ea270((undefined8 *)(local_50 + -0x18),&local_59)" identifier (argument_list "((undefined8 *)(local_50 + -0x18),&local_59)" ( (cast_expression "(undefined8 *)(local_50 + -0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + -0x18)" ( (binary_expression "local_50 + -0x18" identifier + number_literal) ))) , (pointer_expression "&local_59" & identifier) ))) ;) })) (if_statement "if ((undefined8 *)(local_58 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_58 + -0x18),&local_59);\n  }" if (parenthesized_expression "((undefined8 *)(local_58 + -0x18) != &DAT_0044a540)" ( (binary_expression "(undefined8 *)(local_58 + -0x18) != &DAT_0044a540" (cast_expression "(undefined8 *)(local_58 + -0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_58 + -0x18)" ( (binary_expression "local_58 + -0x18" identifier + number_literal) ))) != (pointer_expression "&DAT_0044a540" & identifier)) )) (compound_statement "{\n    FUN_002ea270((undefined8 *)(local_58 + -0x18),&local_59);\n  }" { (expression_statement "FUN_002ea270((undefined8 *)(local_58 + -0x18),&local_59);" (call_expression "FUN_002ea270((undefined8 *)(local_58 + -0x18),&local_59)" identifier (argument_list "((undefined8 *)(local_58 + -0x18),&local_59)" ( (cast_expression "(undefined8 *)(local_58 + -0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_58 + -0x18)" ( (binary_expression "local_58 + -0x18" identifier + number_literal) ))) , (pointer_expression "&local_59" & identifier) ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* std::__moneypunct_cache<char, false>::_M_cache(std::locale const&) */\n\nvoid __thiscall\nstd::__moneypunct_cache<char,false>::_M_cache(__moneypunct_cache<char,false> *this,locale *param_1)\n\n{\n  ulong uVar1;\n  __moneypunct_cache<char,false> _Var2;\n  undefined4 uVar3;\n  moneypunct *pmVar4;\n  char *pcVar5;\n  char *pcVar6;\n  char *pcVar7;\n  char *pcVar8;\n  ctype *this_00;\n  string *local_70;\n  allocator local_5b;\n  allocator local_5a;\n  allocator local_59;\n  long local_58;\n  long local_50;\n  long local_48;\n  long local_40 [2];\n  \n  pmVar4 = use_facet<std::moneypunct<char,false>>(param_1);\n  if (*(code **)(*(long *)pmVar4 + 0x10) == (code *)PTR_do_decimal_point_0043db38) {\n    _Var2 = *(__moneypunct_cache<char,false> *)(*(long *)(pmVar4 + 0x10) + 0x21);\n  }\n  else {\n    _Var2 = (__moneypunct_cache<char,false>)(**(code **)(*(long *)pmVar4 + 0x10))(pmVar4);\n  }\n  this[0x21] = _Var2;\n  if (*(code **)(*(long *)pmVar4 + 0x18) == (code *)PTR_do_thousands_sep_0043dc00) {\n    _Var2 = *(__moneypunct_cache<char,false> *)(*(long *)(pmVar4 + 0x10) + 0x22);\n  }\n  else {\n    _Var2 = (__moneypunct_cache<char,false>)(**(code **)(*(long *)pmVar4 + 0x18))(pmVar4);\n  }\n  this[0x22] = _Var2;\n  if (*(code **)(*(long *)pmVar4 + 0x40) == (code *)PTR_do_frac_digits_0043dbb0) {\n    uVar3 = *(undefined4 *)(*(long *)(pmVar4 + 0x10) + 0x58);\n  }\n  else {\n    uVar3 = (**(code **)(*(long *)pmVar4 + 0x40))(pmVar4);\n  }\n  *(undefined4 *)(this + 0x58) = uVar3;\n  if (*(code **)(*(long *)pmVar4 + 0x20) == (code *)PTR_do_grouping_0043df18) {\n                    /* try { // try from 002ed938 to 002ed93c has its CatchHandler @ 002edd7a */\n    std::string::string((string *)&local_58,*(char **)(*(long *)(pmVar4 + 0x10) + 0x10),\n                        (allocator *)local_40);\n  }\n  else {\n                    /* try { // try from 002edb73 to 002edb74 has its CatchHandler @ 002edd7a */\n    (**(code **)(*(long *)pmVar4 + 0x20))(&local_58,pmVar4);\n  }\n  uVar1 = *(ulong *)(local_58 + -0x18);\n  *(ulong *)(this + 0x18) = uVar1;\n                    /* try { // try from 002ed94a to 002ed94e has its CatchHandler @ 002edd6f */\n  pcVar5 = (char *)operator_new__(uVar1);\n                    /* try { // try from 002ed95e to 002ed962 has its CatchHandler @ 002edd76 */\n  std::string::copy((string *)&local_58,pcVar5,*(ulong *)(this + 0x18),0);\n  _Var2 = (__moneypunct_cache<char,false>)0x0;\n  if (*(long *)(this + 0x18) != 0) {\n    _Var2 = (__moneypunct_cache<char,false>)((byte)(*pcVar5 - 1U) < 0x7e);\n  }\n  this[0x20] = _Var2;\n  if (*(code **)(*(long *)pmVar4 + 0x28) == (code *)PTR_do_curr_symbol_0043db70) {\n                    /* try { // try from 002ed99d to 002ed9a1 has its CatchHandler @ 002edc63 */\n    std::string::string((string *)&local_50,*(char **)(*(long *)(pmVar4 + 0x10) + 0x28),&local_5b);\n  }\n  else {\n                    /* try { // try from 002edbcb to 002edbcc has its CatchHandler @ 002edc5f */\n    (**(code **)(*(long *)pmVar4 + 0x28))(&local_50,pmVar4);\n  }\n  uVar1 = *(ulong *)(local_50 + -0x18);\n  *(ulong *)(this + 0x30) = uVar1;\n                    /* try { // try from 002ed9af to 002ed9b3 has its CatchHandler @ 002edd0f */\n  pcVar6 = (char *)operator_new__(uVar1);\n                    /* try { // try from 002ed9c3 to 002ed9c7 has its CatchHandler @ 002edd0b */\n  std::string::copy((string *)&local_50,pcVar6,*(ulong *)(this + 0x30),0);\n  if (*(code **)(*(long *)pmVar4 + 0x30) == (code *)PTR_do_positive_sign_0043dfe8) {\n                    /* try { // try from 002ed9f2 to 002ed9f6 has its CatchHandler @ 002edc61 */\n    std::string::string((string *)&local_48,*(char **)(*(long *)(pmVar4 + 0x10) + 0x38),&local_5a);\n  }\n  else {\n                    /* try { // try from 002edbe3 to 002edbe4 has its CatchHandler @ 002eddcf */\n    (**(code **)(*(long *)pmVar4 + 0x30))(&local_48,pmVar4);\n  }\n  uVar1 = *(ulong *)(local_48 + -0x18);\n  *(ulong *)(this + 0x40) = uVar1;\n                    /* try { // try from 002eda04 to 002eda08 has its CatchHandler @ 002edd11 */\n  pcVar7 = (char *)operator_new__(uVar1);\n                    /* try { // try from 002eda18 to 002eda1c has its CatchHandler @ 002edd0d */\n  std::string::copy((string *)&local_48,pcVar7,*(ulong *)(this + 0x40),0);\n  if (*(code **)(*(long *)pmVar4 + 0x38) == (code *)PTR_do_negative_sign_0043daf8) {\n                    /* try { // try from 002eda4c to 002eda50 has its CatchHandler @ 002edd87 */\n    std::string::string((string *)local_40,*(char **)(*(long *)(pmVar4 + 0x10) + 0x48),&local_59);\n  }\n  else {\n                    /* try { // try from 002edc00 to 002edc01 has its CatchHandler @ 002edd78 */\n    (**(code **)(*(long *)pmVar4 + 0x38))(local_40,pmVar4);\n  }\n  local_70 = (string *)local_40;\n  uVar1 = *(ulong *)(local_40[0] + -0x18);\n  *(ulong *)(this + 0x50) = uVar1;\n                    /* try { // try from 002eda5e to 002eda62 has its CatchHandler @ 002eddb2 */\n  pcVar8 = (char *)operator_new__(uVar1);\n                    /* try { // try from 002eda74 to 002edad9 has its CatchHandler @ 002edd71 */\n  std::string::copy(local_70,pcVar8,*(ulong *)(this + 0x50),0);\n  if (*(code **)(*(long *)pmVar4 + 0x48) == (code *)PTR_do_pos_format_0043da60) {\n    uVar3 = *(undefined4 *)(*(long *)(pmVar4 + 0x10) + 0x5c);\n  }\n  else {\n                    /* try { // try from 002edc13 to 002edc14 has its CatchHandler @ 002edd71 */\n    uVar3 = (**(code **)(*(long *)pmVar4 + 0x48))(pmVar4);\n  }\n  *(undefined4 *)(this + 0x5c) = uVar3;\n  if (*(code **)(*(long *)pmVar4 + 0x50) == (code *)PTR_do_neg_format_0043dd00) {\n    uVar3 = *(undefined4 *)(*(long *)(pmVar4 + 0x10) + 0x60);\n  }\n  else {\n                    /* try { // try from 002edbb3 to 002edbb4 has its CatchHandler @ 002edd71 */\n    uVar3 = (**(code **)(*(long *)pmVar4 + 0x50))(pmVar4);\n  }\n  *(undefined4 *)(this + 0x60) = uVar3;\n  this_00 = use_facet<std::ctype<char>>(param_1);\n  ctype<char>::widen((ctype<char> *)this_00,money_base::_S_atoms,money_base::_S_atoms + 0xb,\n                     (char *)(this + 100));\n  *(char **)(this + 0x10) = pcVar5;\n  *(char **)(this + 0x28) = pcVar6;\n  *(char **)(this + 0x38) = pcVar7;\n  *(char **)(this + 0x48) = pcVar8;\n  this[0x6f] = (__moneypunct_cache<char,false>)0x1;\n  if ((allocator *)(local_40[0] + -0x18) != (allocator *)&std::string::_Rep::_S_empty_rep_storage) {\n    std::string::_Rep::_M_dispose((allocator *)(local_40[0] + -0x18));\n  }\n  if ((allocator *)(local_48 + -0x18) != (allocator *)&std::string::_Rep::_S_empty_rep_storage) {\n    std::string::_Rep::_M_dispose((allocator *)(local_48 + -0x18));\n  }\n  if ((allocator *)(local_50 + -0x18) != (allocator *)&std::string::_Rep::_S_empty_rep_storage) {\n    std::string::_Rep::_M_dispose((allocator *)(local_50 + -0x18));\n  }\n  if ((allocator *)(local_58 + -0x18) != (allocator *)&std::string::_Rep::_S_empty_rep_storage) {\n    std::string::_Rep::_M_dispose((allocator *)(local_58 + -0x18));\n  }\n  return;\n}\n\n" comment (declaration "void __thiscall\nstd::__moneypunct_cache<char,false>::_M_cache(__moneypunct_cache<char,false> *this,locale *param_1)\n\n{\n  ulong uVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::" identifier : :) identifier (ERROR "<char" < primitive_type) , (ERROR "false>::_M_cache(__moneypunct_cache<char,false> *this,locale *param_1)\n\n{\n  ulong" identifier > : : (function_declarator "_M_cache(__moneypunct_cache<char,false> *this,locale *param_1)" identifier (parameter_list "(__moneypunct_cache<char,false> *this,locale *param_1)" ( (parameter_declaration "__moneypunct_cache" type_identifier) (ERROR "<char" < primitive_type) , (parameter_declaration "false> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "locale *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) { identifier) identifier ;) (expression_statement "__moneypunct_cache<char,false> _Var2;" (update_expression "__moneypunct_cache<char,false> _Var2" (binary_expression "__moneypunct_cache<char,false> _Var2" (binary_expression "__moneypunct_cache<char" identifier < identifier) (ERROR ",false" , false) > identifier) --) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "moneypunct *pmVar4;" type_identifier (pointer_declarator "*pmVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "ctype *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "string *local_70;" type_identifier (pointer_declarator "*local_70" * identifier) ;) (declaration "allocator local_5b;" type_identifier identifier ;) (declaration "allocator local_5a;" type_identifier identifier ;) (declaration "allocator local_59;" type_identifier identifier ;) (declaration "long local_58;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_50;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_48;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_40 [2];" (sized_type_specifier "long" long) (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (expression_statement "pmVar4 = use_facet<std::moneypunct<char,false>>(param_1);" (update_expression "pmVar4 = use_facet<std::moneypunct<char,false>>(param_1)" (binary_expression "pmVar4 = use_facet<std::moneypunct<char,false>>(param_1)" (binary_expression "pmVar4 = use_facet<std::moneypunct<char" (assignment_expression "pmVar4 = use_facet<std" identifier = (binary_expression "use_facet<std" identifier < identifier)) (ERROR "::moneypunct" : : identifier) < identifier) (ERROR ",false" , false) >> (parenthesized_expression "(param_1)" ( identifier ))) --) ;) (if_statement "if (*(code **)(*(long *)pmVar4 + 0x10) == (code *)PTR_do_decimal_point_0043db38) {\n    _Var2 = *(__moneypunct_cache<char,false> *)(*(long *)(pmVar4 + 0x10) + 0x21);\n  }\n  else {\n    _Var2 = (__moneypunct_cache<char,false>)(**(code **)(*(long *)pmVar4 + 0x10))(pmVar4);\n  }" if (parenthesized_expression "(*(code **)(*(long *)pmVar4 + 0x10) == (code *)PTR_do_decimal_point_0043db38)" ( (binary_expression "*(code **)(*(long *)pmVar4 + 0x10) == (code *)PTR_do_decimal_point_0043db38" (pointer_expression "*(code **)(*(long *)pmVar4 + 0x10)" * (cast_expression "(code **)(*(long *)pmVar4 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pmVar4 + 0x10)" ( (binary_expression "*(long *)pmVar4 + 0x10" (pointer_expression "*(long *)pmVar4" * (cast_expression "(long *)pmVar4" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == (cast_expression "(code *)PTR_do_decimal_point_0043db38" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    _Var2 = *(__moneypunct_cache<char,false> *)(*(long *)(pmVar4 + 0x10) + 0x21);\n  }" { (expression_statement "_Var2 = *(__moneypunct_cache<char,false> *)(*(long *)(pmVar4 + 0x10) + 0x21);" (assignment_expression "_Var2 = *(__moneypunct_cache<char,false> *)(*(long *)(pmVar4 + 0x10) + 0x21)" identifier = (pointer_expression "*(__moneypunct_cache<char,false> *)(*(long *)(pmVar4 + 0x10) + 0x21)" * (call_expression "(__moneypunct_cache<char,false> *)(*(long *)(pmVar4 + 0x10) + 0x21)" (parenthesized_expression "(__moneypunct_cache<char,false> *)" ( (comma_expression "__moneypunct_cache<char,false> *" (binary_expression "__moneypunct_cache<char" identifier < identifier) , (binary_expression "false> *" false > (pointer_expression "*" * identifier))) )) (argument_list "(*(long *)(pmVar4 + 0x10) + 0x21)" ( (binary_expression "*(long *)(pmVar4 + 0x10) + 0x21" (pointer_expression "*(long *)(pmVar4 + 0x10)" * (cast_expression "(long *)(pmVar4 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pmVar4 + 0x10)" ( (binary_expression "pmVar4 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) }) (else_clause "else {\n    _Var2 = (__moneypunct_cache<char,false>)(**(code **)(*(long *)pmVar4 + 0x10))(pmVar4);\n  }" else (compound_statement "{\n    _Var2 = (__moneypunct_cache<char,false>)(**(code **)(*(long *)pmVar4 + 0x10))(pmVar4);\n  }" { (expression_statement "_Var2 = (__moneypunct_cache<char,false>)(**(code **)(*(long *)pmVar4 + 0x10))(pmVar4);" (assignment_expression "_Var2 = (__moneypunct_cache<char,false>)(**(code **)(*(long *)pmVar4 + 0x10))(pmVar4)" identifier = (call_expression "(__moneypunct_cache<char,false>)(**(code **)(*(long *)pmVar4 + 0x10))(pmVar4)" (call_expression "(__moneypunct_cache<char,false>)(**(code **)(*(long *)pmVar4 + 0x10))" (parenthesized_expression "(__moneypunct_cache<char,false>)" ( (comma_expression "__moneypunct_cache<char,false" (binary_expression "__moneypunct_cache<char" identifier < identifier) , false) (ERROR ">" >) )) (argument_list "(**(code **)(*(long *)pmVar4 + 0x10))" ( (pointer_expression "**(code **)(*(long *)pmVar4 + 0x10)" * (pointer_expression "*(code **)(*(long *)pmVar4 + 0x10)" * (cast_expression "(code **)(*(long *)pmVar4 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pmVar4 + 0x10)" ( (binary_expression "*(long *)pmVar4 + 0x10" (pointer_expression "*(long *)pmVar4" * (cast_expression "(long *)pmVar4" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ))) (argument_list "(pmVar4)" ( identifier )))) ;) }))) (expression_statement "this[0x21] = _Var2;" (assignment_expression "this[0x21] = _Var2" (subscript_expression "this[0x21]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (*(code **)(*(long *)pmVar4 + 0x18) == (code *)PTR_do_thousands_sep_0043dc00) {\n    _Var2 = *(__moneypunct_cache<char,false> *)(*(long *)(pmVar4 + 0x10) + 0x22);\n  }\n  else {\n    _Var2 = (__moneypunct_cache<char,false>)(**(code **)(*(long *)pmVar4 + 0x18))(pmVar4);\n  }" if (parenthesized_expression "(*(code **)(*(long *)pmVar4 + 0x18) == (code *)PTR_do_thousands_sep_0043dc00)" ( (binary_expression "*(code **)(*(long *)pmVar4 + 0x18) == (code *)PTR_do_thousands_sep_0043dc00" (pointer_expression "*(code **)(*(long *)pmVar4 + 0x18)" * (cast_expression "(code **)(*(long *)pmVar4 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pmVar4 + 0x18)" ( (binary_expression "*(long *)pmVar4 + 0x18" (pointer_expression "*(long *)pmVar4" * (cast_expression "(long *)pmVar4" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == (cast_expression "(code *)PTR_do_thousands_sep_0043dc00" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    _Var2 = *(__moneypunct_cache<char,false> *)(*(long *)(pmVar4 + 0x10) + 0x22);\n  }" { (expression_statement "_Var2 = *(__moneypunct_cache<char,false> *)(*(long *)(pmVar4 + 0x10) + 0x22);" (assignment_expression "_Var2 = *(__moneypunct_cache<char,false> *)(*(long *)(pmVar4 + 0x10) + 0x22)" identifier = (pointer_expression "*(__moneypunct_cache<char,false> *)(*(long *)(pmVar4 + 0x10) + 0x22)" * (call_expression "(__moneypunct_cache<char,false> *)(*(long *)(pmVar4 + 0x10) + 0x22)" (parenthesized_expression "(__moneypunct_cache<char,false> *)" ( (comma_expression "__moneypunct_cache<char,false> *" (binary_expression "__moneypunct_cache<char" identifier < identifier) , (binary_expression "false> *" false > (pointer_expression "*" * identifier))) )) (argument_list "(*(long *)(pmVar4 + 0x10) + 0x22)" ( (binary_expression "*(long *)(pmVar4 + 0x10) + 0x22" (pointer_expression "*(long *)(pmVar4 + 0x10)" * (cast_expression "(long *)(pmVar4 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pmVar4 + 0x10)" ( (binary_expression "pmVar4 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) }) (else_clause "else {\n    _Var2 = (__moneypunct_cache<char,false>)(**(code **)(*(long *)pmVar4 + 0x18))(pmVar4);\n  }" else (compound_statement "{\n    _Var2 = (__moneypunct_cache<char,false>)(**(code **)(*(long *)pmVar4 + 0x18))(pmVar4);\n  }" { (expression_statement "_Var2 = (__moneypunct_cache<char,false>)(**(code **)(*(long *)pmVar4 + 0x18))(pmVar4);" (assignment_expression "_Var2 = (__moneypunct_cache<char,false>)(**(code **)(*(long *)pmVar4 + 0x18))(pmVar4)" identifier = (call_expression "(__moneypunct_cache<char,false>)(**(code **)(*(long *)pmVar4 + 0x18))(pmVar4)" (call_expression "(__moneypunct_cache<char,false>)(**(code **)(*(long *)pmVar4 + 0x18))" (parenthesized_expression "(__moneypunct_cache<char,false>)" ( (comma_expression "__moneypunct_cache<char,false" (binary_expression "__moneypunct_cache<char" identifier < identifier) , false) (ERROR ">" >) )) (argument_list "(**(code **)(*(long *)pmVar4 + 0x18))" ( (pointer_expression "**(code **)(*(long *)pmVar4 + 0x18)" * (pointer_expression "*(code **)(*(long *)pmVar4 + 0x18)" * (cast_expression "(code **)(*(long *)pmVar4 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pmVar4 + 0x18)" ( (binary_expression "*(long *)pmVar4 + 0x18" (pointer_expression "*(long *)pmVar4" * (cast_expression "(long *)pmVar4" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ))) (argument_list "(pmVar4)" ( identifier )))) ;) }))) (expression_statement "this[0x22] = _Var2;" (assignment_expression "this[0x22] = _Var2" (subscript_expression "this[0x22]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (*(code **)(*(long *)pmVar4 + 0x40) == (code *)PTR_do_frac_digits_0043dbb0) {\n    uVar3 = *(undefined4 *)(*(long *)(pmVar4 + 0x10) + 0x58);\n  }\n  else {\n    uVar3 = (**(code **)(*(long *)pmVar4 + 0x40))(pmVar4);\n  }" if (parenthesized_expression "(*(code **)(*(long *)pmVar4 + 0x40) == (code *)PTR_do_frac_digits_0043dbb0)" ( (binary_expression "*(code **)(*(long *)pmVar4 + 0x40) == (code *)PTR_do_frac_digits_0043dbb0" (pointer_expression "*(code **)(*(long *)pmVar4 + 0x40)" * (cast_expression "(code **)(*(long *)pmVar4 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pmVar4 + 0x40)" ( (binary_expression "*(long *)pmVar4 + 0x40" (pointer_expression "*(long *)pmVar4" * (cast_expression "(long *)pmVar4" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == (cast_expression "(code *)PTR_do_frac_digits_0043dbb0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    uVar3 = *(undefined4 *)(*(long *)(pmVar4 + 0x10) + 0x58);\n  }" { (expression_statement "uVar3 = *(undefined4 *)(*(long *)(pmVar4 + 0x10) + 0x58);" (assignment_expression "uVar3 = *(undefined4 *)(*(long *)(pmVar4 + 0x10) + 0x58)" identifier = (pointer_expression "*(undefined4 *)(*(long *)(pmVar4 + 0x10) + 0x58)" * (cast_expression "(undefined4 *)(*(long *)(pmVar4 + 0x10) + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(pmVar4 + 0x10) + 0x58)" ( (binary_expression "*(long *)(pmVar4 + 0x10) + 0x58" (pointer_expression "*(long *)(pmVar4 + 0x10)" * (cast_expression "(long *)(pmVar4 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pmVar4 + 0x10)" ( (binary_expression "pmVar4 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) }) (else_clause "else {\n    uVar3 = (**(code **)(*(long *)pmVar4 + 0x40))(pmVar4);\n  }" else (compound_statement "{\n    uVar3 = (**(code **)(*(long *)pmVar4 + 0x40))(pmVar4);\n  }" { (expression_statement "uVar3 = (**(code **)(*(long *)pmVar4 + 0x40))(pmVar4);" (assignment_expression "uVar3 = (**(code **)(*(long *)pmVar4 + 0x40))(pmVar4)" identifier = (call_expression "(**(code **)(*(long *)pmVar4 + 0x40))(pmVar4)" (parenthesized_expression "(**(code **)(*(long *)pmVar4 + 0x40))" ( (pointer_expression "**(code **)(*(long *)pmVar4 + 0x40)" * (pointer_expression "*(code **)(*(long *)pmVar4 + 0x40)" * (cast_expression "(code **)(*(long *)pmVar4 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pmVar4 + 0x40)" ( (binary_expression "*(long *)pmVar4 + 0x40" (pointer_expression "*(long *)pmVar4" * (cast_expression "(long *)pmVar4" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(pmVar4)" ( identifier )))) ;) }))) (expression_statement "*(undefined4 *)(this + 0x58) = uVar3;" (assignment_expression "*(undefined4 *)(this + 0x58) = uVar3" (pointer_expression "*(undefined4 *)(this + 0x58)" * (cast_expression "(undefined4 *)(this + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x58)" ( (binary_expression "this + 0x58" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(code **)(*(long *)pmVar4 + 0x20) == (code *)PTR_do_grouping_0043df18) {\n                    /* try { // try from 002ed938 to 002ed93c has its CatchHandler @ 002edd7a */\n    std::string::string((string *)&local_58,*(char **)(*(long *)(pmVar4 + 0x10) + 0x10),\n                        (allocator *)local_40);\n  }\n  else {\n                    /* try { // try from 002edb73 to 002edb74 has its CatchHandler @ 002edd7a */\n    (**(code **)(*(long *)pmVar4 + 0x20))(&local_58,pmVar4);\n  }" if (parenthesized_expression "(*(code **)(*(long *)pmVar4 + 0x20) == (code *)PTR_do_grouping_0043df18)" ( (binary_expression "*(code **)(*(long *)pmVar4 + 0x20) == (code *)PTR_do_grouping_0043df18" (pointer_expression "*(code **)(*(long *)pmVar4 + 0x20)" * (cast_expression "(code **)(*(long *)pmVar4 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pmVar4 + 0x20)" ( (binary_expression "*(long *)pmVar4 + 0x20" (pointer_expression "*(long *)pmVar4" * (cast_expression "(long *)pmVar4" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == (cast_expression "(code *)PTR_do_grouping_0043df18" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n                    /* try { // try from 002ed938 to 002ed93c has its CatchHandler @ 002edd7a */\n    std::string::string((string *)&local_58,*(char **)(*(long *)(pmVar4 + 0x10) + 0x10),\n                        (allocator *)local_40);\n  }" { comment (labeled_statement "std::string::string((string *)&local_58,*(char **)(*(long *)(pmVar4 + 0x10) + 0x10),\n                        (allocator *)local_40);" statement_identifier : (ERROR ":" :) (labeled_statement "string::string((string *)&local_58,*(char **)(*(long *)(pmVar4 + 0x10) + 0x10),\n                        (allocator *)local_40);" statement_identifier : (ERROR ":" :) (expression_statement "string((string *)&local_58,*(char **)(*(long *)(pmVar4 + 0x10) + 0x10),\n                        (allocator *)local_40);" (call_expression "string((string *)&local_58,*(char **)(*(long *)(pmVar4 + 0x10) + 0x10),\n                        (allocator *)local_40)" identifier (argument_list "((string *)&local_58,*(char **)(*(long *)(pmVar4 + 0x10) + 0x10),\n                        (allocator *)local_40)" ( (cast_expression "(string *)&local_58" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_58" & identifier)) , (pointer_expression "*(char **)(*(long *)(pmVar4 + 0x10) + 0x10)" * (cast_expression "(char **)(*(long *)(pmVar4 + 0x10) + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(pmVar4 + 0x10) + 0x10)" ( (binary_expression "*(long *)(pmVar4 + 0x10) + 0x10" (pointer_expression "*(long *)(pmVar4 + 0x10)" * (cast_expression "(long *)(pmVar4 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pmVar4 + 0x10)" ( (binary_expression "pmVar4 + 0x10" identifier + number_literal) )))) + number_literal) )))) , (cast_expression "(allocator *)local_40" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;))) }) (else_clause "else {\n                    /* try { // try from 002edb73 to 002edb74 has its CatchHandler @ 002edd7a */\n    (**(code **)(*(long *)pmVar4 + 0x20))(&local_58,pmVar4);\n  }" else (compound_statement "{\n                    /* try { // try from 002edb73 to 002edb74 has its CatchHandler @ 002edd7a */\n    (**(code **)(*(long *)pmVar4 + 0x20))(&local_58,pmVar4);\n  }" { comment (expression_statement "(**(code **)(*(long *)pmVar4 + 0x20))(&local_58,pmVar4);" (call_expression "(**(code **)(*(long *)pmVar4 + 0x20))(&local_58,pmVar4)" (parenthesized_expression "(**(code **)(*(long *)pmVar4 + 0x20))" ( (pointer_expression "**(code **)(*(long *)pmVar4 + 0x20)" * (pointer_expression "*(code **)(*(long *)pmVar4 + 0x20)" * (cast_expression "(code **)(*(long *)pmVar4 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pmVar4 + 0x20)" ( (binary_expression "*(long *)pmVar4 + 0x20" (pointer_expression "*(long *)pmVar4" * (cast_expression "(long *)pmVar4" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(&local_58,pmVar4)" ( (pointer_expression "&local_58" & identifier) , identifier ))) ;) }))) (expression_statement "uVar1 = *(ulong *)(local_58 + -0x18);" (assignment_expression "uVar1 = *(ulong *)(local_58 + -0x18)" identifier = (pointer_expression "*(ulong *)(local_58 + -0x18)" * (cast_expression "(ulong *)(local_58 + -0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_58 + -0x18)" ( (binary_expression "local_58 + -0x18" identifier + number_literal) ))))) ;) (expression_statement "*(ulong *)(this + 0x18) = uVar1;" (assignment_expression "*(ulong *)(this + 0x18) = uVar1" (pointer_expression "*(ulong *)(this + 0x18)" * (cast_expression "(ulong *)(this + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x18)" ( (binary_expression "this + 0x18" identifier + number_literal) )))) = identifier) ;) comment (expression_statement "pcVar5 = (char *)operator_new__(uVar1);" (assignment_expression "pcVar5 = (char *)operator_new__(uVar1)" identifier = (cast_expression "(char *)operator_new__(uVar1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new__(uVar1)" identifier (argument_list "(uVar1)" ( identifier ))))) ;) comment (labeled_statement "std::string::copy((string *)&local_58,pcVar5,*(ulong *)(this + 0x18),0);" statement_identifier : (ERROR ":" :) (labeled_statement "string::copy((string *)&local_58,pcVar5,*(ulong *)(this + 0x18),0);" statement_identifier : (ERROR ":" :) (expression_statement "copy((string *)&local_58,pcVar5,*(ulong *)(this + 0x18),0);" (call_expression "copy((string *)&local_58,pcVar5,*(ulong *)(this + 0x18),0)" identifier (argument_list "((string *)&local_58,pcVar5,*(ulong *)(this + 0x18),0)" ( (cast_expression "(string *)&local_58" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_58" & identifier)) , identifier , (pointer_expression "*(ulong *)(this + 0x18)" * (cast_expression "(ulong *)(this + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x18)" ( (binary_expression "this + 0x18" identifier + number_literal) )))) , number_literal ))) ;))) (expression_statement "_Var2 = (__moneypunct_cache<char,false>)0x0;" (assignment_expression "_Var2 = (__moneypunct_cache<char,false>)0x0" identifier = (parenthesized_expression "(__moneypunct_cache<char,false>)0x0" ( (comma_expression "__moneypunct_cache<char,false>)0x0" (binary_expression "__moneypunct_cache<char" identifier < identifier) , (binary_expression "false>)0x0" false > (ERROR ")" )) number_literal)) ))) ;) (if_statement "if (*(long *)(this + 0x18) != 0) {\n    _Var2 = (__moneypunct_cache<char,false>)((byte)(*pcVar5 - 1U) < 0x7e);\n  }" if (parenthesized_expression "(*(long *)(this + 0x18) != 0)" ( (binary_expression "*(long *)(this + 0x18) != 0" (pointer_expression "*(long *)(this + 0x18)" * (cast_expression "(long *)(this + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x18)" ( (binary_expression "this + 0x18" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    _Var2 = (__moneypunct_cache<char,false>)((byte)(*pcVar5 - 1U) < 0x7e);\n  }" { (expression_statement "_Var2 = (__moneypunct_cache<char,false>)((byte)(*pcVar5 - 1U) < 0x7e);" (assignment_expression "_Var2 = (__moneypunct_cache<char,false>)((byte)(*pcVar5 - 1U) < 0x7e)" identifier = (call_expression "(__moneypunct_cache<char,false>)((byte)(*pcVar5 - 1U) < 0x7e)" (parenthesized_expression "(__moneypunct_cache<char,false>)" ( (comma_expression "__moneypunct_cache<char,false" (binary_expression "__moneypunct_cache<char" identifier < identifier) , false) (ERROR ">" >) )) (argument_list "((byte)(*pcVar5 - 1U) < 0x7e)" ( (binary_expression "(byte)(*pcVar5 - 1U) < 0x7e" (call_expression "(byte)(*pcVar5 - 1U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(*pcVar5 - 1U)" ( (binary_expression "*pcVar5 - 1U" (pointer_expression "*pcVar5" * identifier) - number_literal) ))) < number_literal) )))) ;) })) (expression_statement "this[0x20] = _Var2;" (assignment_expression "this[0x20] = _Var2" (subscript_expression "this[0x20]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (*(code **)(*(long *)pmVar4 + 0x28) == (code *)PTR_do_curr_symbol_0043db70) {\n                    /* try { // try from 002ed99d to 002ed9a1 has its CatchHandler @ 002edc63 */\n    std::string::string((string *)&local_50,*(char **)(*(long *)(pmVar4 + 0x10) + 0x28),&local_5b);\n  }\n  else {\n                    /* try { // try from 002edbcb to 002edbcc has its CatchHandler @ 002edc5f */\n    (**(code **)(*(long *)pmVar4 + 0x28))(&local_50,pmVar4);\n  }" if (parenthesized_expression "(*(code **)(*(long *)pmVar4 + 0x28) == (code *)PTR_do_curr_symbol_0043db70)" ( (binary_expression "*(code **)(*(long *)pmVar4 + 0x28) == (code *)PTR_do_curr_symbol_0043db70" (pointer_expression "*(code **)(*(long *)pmVar4 + 0x28)" * (cast_expression "(code **)(*(long *)pmVar4 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pmVar4 + 0x28)" ( (binary_expression "*(long *)pmVar4 + 0x28" (pointer_expression "*(long *)pmVar4" * (cast_expression "(long *)pmVar4" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == (cast_expression "(code *)PTR_do_curr_symbol_0043db70" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n                    /* try { // try from 002ed99d to 002ed9a1 has its CatchHandler @ 002edc63 */\n    std::string::string((string *)&local_50,*(char **)(*(long *)(pmVar4 + 0x10) + 0x28),&local_5b);\n  }" { comment (labeled_statement "std::string::string((string *)&local_50,*(char **)(*(long *)(pmVar4 + 0x10) + 0x28),&local_5b);" statement_identifier : (ERROR ":" :) (labeled_statement "string::string((string *)&local_50,*(char **)(*(long *)(pmVar4 + 0x10) + 0x28),&local_5b);" statement_identifier : (ERROR ":" :) (expression_statement "string((string *)&local_50,*(char **)(*(long *)(pmVar4 + 0x10) + 0x28),&local_5b);" (call_expression "string((string *)&local_50,*(char **)(*(long *)(pmVar4 + 0x10) + 0x28),&local_5b)" identifier (argument_list "((string *)&local_50,*(char **)(*(long *)(pmVar4 + 0x10) + 0x28),&local_5b)" ( (cast_expression "(string *)&local_50" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_50" & identifier)) , (pointer_expression "*(char **)(*(long *)(pmVar4 + 0x10) + 0x28)" * (cast_expression "(char **)(*(long *)(pmVar4 + 0x10) + 0x28)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(pmVar4 + 0x10) + 0x28)" ( (binary_expression "*(long *)(pmVar4 + 0x10) + 0x28" (pointer_expression "*(long *)(pmVar4 + 0x10)" * (cast_expression "(long *)(pmVar4 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pmVar4 + 0x10)" ( (binary_expression "pmVar4 + 0x10" identifier + number_literal) )))) + number_literal) )))) , (pointer_expression "&local_5b" & identifier) ))) ;))) }) (else_clause "else {\n                    /* try { // try from 002edbcb to 002edbcc has its CatchHandler @ 002edc5f */\n    (**(code **)(*(long *)pmVar4 + 0x28))(&local_50,pmVar4);\n  }" else (compound_statement "{\n                    /* try { // try from 002edbcb to 002edbcc has its CatchHandler @ 002edc5f */\n    (**(code **)(*(long *)pmVar4 + 0x28))(&local_50,pmVar4);\n  }" { comment (expression_statement "(**(code **)(*(long *)pmVar4 + 0x28))(&local_50,pmVar4);" (call_expression "(**(code **)(*(long *)pmVar4 + 0x28))(&local_50,pmVar4)" (parenthesized_expression "(**(code **)(*(long *)pmVar4 + 0x28))" ( (pointer_expression "**(code **)(*(long *)pmVar4 + 0x28)" * (pointer_expression "*(code **)(*(long *)pmVar4 + 0x28)" * (cast_expression "(code **)(*(long *)pmVar4 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pmVar4 + 0x28)" ( (binary_expression "*(long *)pmVar4 + 0x28" (pointer_expression "*(long *)pmVar4" * (cast_expression "(long *)pmVar4" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(&local_50,pmVar4)" ( (pointer_expression "&local_50" & identifier) , identifier ))) ;) }))) (expression_statement "uVar1 = *(ulong *)(local_50 + -0x18);" (assignment_expression "uVar1 = *(ulong *)(local_50 + -0x18)" identifier = (pointer_expression "*(ulong *)(local_50 + -0x18)" * (cast_expression "(ulong *)(local_50 + -0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + -0x18)" ( (binary_expression "local_50 + -0x18" identifier + number_literal) ))))) ;) (expression_statement "*(ulong *)(this + 0x30) = uVar1;" (assignment_expression "*(ulong *)(this + 0x30) = uVar1" (pointer_expression "*(ulong *)(this + 0x30)" * (cast_expression "(ulong *)(this + 0x30)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x30)" ( (binary_expression "this + 0x30" identifier + number_literal) )))) = identifier) ;) comment (expression_statement "pcVar6 = (char *)operator_new__(uVar1);" (assignment_expression "pcVar6 = (char *)operator_new__(uVar1)" identifier = (cast_expression "(char *)operator_new__(uVar1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new__(uVar1)" identifier (argument_list "(uVar1)" ( identifier ))))) ;) comment (labeled_statement "std::string::copy((string *)&local_50,pcVar6,*(ulong *)(this + 0x30),0);" statement_identifier : (ERROR ":" :) (labeled_statement "string::copy((string *)&local_50,pcVar6,*(ulong *)(this + 0x30),0);" statement_identifier : (ERROR ":" :) (expression_statement "copy((string *)&local_50,pcVar6,*(ulong *)(this + 0x30),0);" (call_expression "copy((string *)&local_50,pcVar6,*(ulong *)(this + 0x30),0)" identifier (argument_list "((string *)&local_50,pcVar6,*(ulong *)(this + 0x30),0)" ( (cast_expression "(string *)&local_50" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_50" & identifier)) , identifier , (pointer_expression "*(ulong *)(this + 0x30)" * (cast_expression "(ulong *)(this + 0x30)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x30)" ( (binary_expression "this + 0x30" identifier + number_literal) )))) , number_literal ))) ;))) (if_statement "if (*(code **)(*(long *)pmVar4 + 0x30) == (code *)PTR_do_positive_sign_0043dfe8) {\n                    /* try { // try from 002ed9f2 to 002ed9f6 has its CatchHandler @ 002edc61 */\n    std::string::string((string *)&local_48,*(char **)(*(long *)(pmVar4 + 0x10) + 0x38),&local_5a);\n  }\n  else {\n                    /* try { // try from 002edbe3 to 002edbe4 has its CatchHandler @ 002eddcf */\n    (**(code **)(*(long *)pmVar4 + 0x30))(&local_48,pmVar4);\n  }" if (parenthesized_expression "(*(code **)(*(long *)pmVar4 + 0x30) == (code *)PTR_do_positive_sign_0043dfe8)" ( (binary_expression "*(code **)(*(long *)pmVar4 + 0x30) == (code *)PTR_do_positive_sign_0043dfe8" (pointer_expression "*(code **)(*(long *)pmVar4 + 0x30)" * (cast_expression "(code **)(*(long *)pmVar4 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pmVar4 + 0x30)" ( (binary_expression "*(long *)pmVar4 + 0x30" (pointer_expression "*(long *)pmVar4" * (cast_expression "(long *)pmVar4" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == (cast_expression "(code *)PTR_do_positive_sign_0043dfe8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n                    /* try { // try from 002ed9f2 to 002ed9f6 has its CatchHandler @ 002edc61 */\n    std::string::string((string *)&local_48,*(char **)(*(long *)(pmVar4 + 0x10) + 0x38),&local_5a);\n  }" { comment (labeled_statement "std::string::string((string *)&local_48,*(char **)(*(long *)(pmVar4 + 0x10) + 0x38),&local_5a);" statement_identifier : (ERROR ":" :) (labeled_statement "string::string((string *)&local_48,*(char **)(*(long *)(pmVar4 + 0x10) + 0x38),&local_5a);" statement_identifier : (ERROR ":" :) (expression_statement "string((string *)&local_48,*(char **)(*(long *)(pmVar4 + 0x10) + 0x38),&local_5a);" (call_expression "string((string *)&local_48,*(char **)(*(long *)(pmVar4 + 0x10) + 0x38),&local_5a)" identifier (argument_list "((string *)&local_48,*(char **)(*(long *)(pmVar4 + 0x10) + 0x38),&local_5a)" ( (cast_expression "(string *)&local_48" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_48" & identifier)) , (pointer_expression "*(char **)(*(long *)(pmVar4 + 0x10) + 0x38)" * (cast_expression "(char **)(*(long *)(pmVar4 + 0x10) + 0x38)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(pmVar4 + 0x10) + 0x38)" ( (binary_expression "*(long *)(pmVar4 + 0x10) + 0x38" (pointer_expression "*(long *)(pmVar4 + 0x10)" * (cast_expression "(long *)(pmVar4 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pmVar4 + 0x10)" ( (binary_expression "pmVar4 + 0x10" identifier + number_literal) )))) + number_literal) )))) , (pointer_expression "&local_5a" & identifier) ))) ;))) }) (else_clause "else {\n                    /* try { // try from 002edbe3 to 002edbe4 has its CatchHandler @ 002eddcf */\n    (**(code **)(*(long *)pmVar4 + 0x30))(&local_48,pmVar4);\n  }" else (compound_statement "{\n                    /* try { // try from 002edbe3 to 002edbe4 has its CatchHandler @ 002eddcf */\n    (**(code **)(*(long *)pmVar4 + 0x30))(&local_48,pmVar4);\n  }" { comment (expression_statement "(**(code **)(*(long *)pmVar4 + 0x30))(&local_48,pmVar4);" (call_expression "(**(code **)(*(long *)pmVar4 + 0x30))(&local_48,pmVar4)" (parenthesized_expression "(**(code **)(*(long *)pmVar4 + 0x30))" ( (pointer_expression "**(code **)(*(long *)pmVar4 + 0x30)" * (pointer_expression "*(code **)(*(long *)pmVar4 + 0x30)" * (cast_expression "(code **)(*(long *)pmVar4 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pmVar4 + 0x30)" ( (binary_expression "*(long *)pmVar4 + 0x30" (pointer_expression "*(long *)pmVar4" * (cast_expression "(long *)pmVar4" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(&local_48,pmVar4)" ( (pointer_expression "&local_48" & identifier) , identifier ))) ;) }))) (expression_statement "uVar1 = *(ulong *)(local_48 + -0x18);" (assignment_expression "uVar1 = *(ulong *)(local_48 + -0x18)" identifier = (pointer_expression "*(ulong *)(local_48 + -0x18)" * (cast_expression "(ulong *)(local_48 + -0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_48 + -0x18)" ( (binary_expression "local_48 + -0x18" identifier + number_literal) ))))) ;) (expression_statement "*(ulong *)(this + 0x40) = uVar1;" (assignment_expression "*(ulong *)(this + 0x40) = uVar1" (pointer_expression "*(ulong *)(this + 0x40)" * (cast_expression "(ulong *)(this + 0x40)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x40)" ( (binary_expression "this + 0x40" identifier + number_literal) )))) = identifier) ;) comment (expression_statement "pcVar7 = (char *)operator_new__(uVar1);" (assignment_expression "pcVar7 = (char *)operator_new__(uVar1)" identifier = (cast_expression "(char *)operator_new__(uVar1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new__(uVar1)" identifier (argument_list "(uVar1)" ( identifier ))))) ;) comment (labeled_statement "std::string::copy((string *)&local_48,pcVar7,*(ulong *)(this + 0x40),0);" statement_identifier : (ERROR ":" :) (labeled_statement "string::copy((string *)&local_48,pcVar7,*(ulong *)(this + 0x40),0);" statement_identifier : (ERROR ":" :) (expression_statement "copy((string *)&local_48,pcVar7,*(ulong *)(this + 0x40),0);" (call_expression "copy((string *)&local_48,pcVar7,*(ulong *)(this + 0x40),0)" identifier (argument_list "((string *)&local_48,pcVar7,*(ulong *)(this + 0x40),0)" ( (cast_expression "(string *)&local_48" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_48" & identifier)) , identifier , (pointer_expression "*(ulong *)(this + 0x40)" * (cast_expression "(ulong *)(this + 0x40)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x40)" ( (binary_expression "this + 0x40" identifier + number_literal) )))) , number_literal ))) ;))) (if_statement "if (*(code **)(*(long *)pmVar4 + 0x38) == (code *)PTR_do_negative_sign_0043daf8) {\n                    /* try { // try from 002eda4c to 002eda50 has its CatchHandler @ 002edd87 */\n    std::string::string((string *)local_40,*(char **)(*(long *)(pmVar4 + 0x10) + 0x48),&local_59);\n  }\n  else {\n                    /* try { // try from 002edc00 to 002edc01 has its CatchHandler @ 002edd78 */\n    (**(code **)(*(long *)pmVar4 + 0x38))(local_40,pmVar4);\n  }" if (parenthesized_expression "(*(code **)(*(long *)pmVar4 + 0x38) == (code *)PTR_do_negative_sign_0043daf8)" ( (binary_expression "*(code **)(*(long *)pmVar4 + 0x38) == (code *)PTR_do_negative_sign_0043daf8" (pointer_expression "*(code **)(*(long *)pmVar4 + 0x38)" * (cast_expression "(code **)(*(long *)pmVar4 + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pmVar4 + 0x38)" ( (binary_expression "*(long *)pmVar4 + 0x38" (pointer_expression "*(long *)pmVar4" * (cast_expression "(long *)pmVar4" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == (cast_expression "(code *)PTR_do_negative_sign_0043daf8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n                    /* try { // try from 002eda4c to 002eda50 has its CatchHandler @ 002edd87 */\n    std::string::string((string *)local_40,*(char **)(*(long *)(pmVar4 + 0x10) + 0x48),&local_59);\n  }" { comment (labeled_statement "std::string::string((string *)local_40,*(char **)(*(long *)(pmVar4 + 0x10) + 0x48),&local_59);" statement_identifier : (ERROR ":" :) (labeled_statement "string::string((string *)local_40,*(char **)(*(long *)(pmVar4 + 0x10) + 0x48),&local_59);" statement_identifier : (ERROR ":" :) (expression_statement "string((string *)local_40,*(char **)(*(long *)(pmVar4 + 0x10) + 0x48),&local_59);" (call_expression "string((string *)local_40,*(char **)(*(long *)(pmVar4 + 0x10) + 0x48),&local_59)" identifier (argument_list "((string *)local_40,*(char **)(*(long *)(pmVar4 + 0x10) + 0x48),&local_59)" ( (cast_expression "(string *)local_40" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "*(char **)(*(long *)(pmVar4 + 0x10) + 0x48)" * (cast_expression "(char **)(*(long *)(pmVar4 + 0x10) + 0x48)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(pmVar4 + 0x10) + 0x48)" ( (binary_expression "*(long *)(pmVar4 + 0x10) + 0x48" (pointer_expression "*(long *)(pmVar4 + 0x10)" * (cast_expression "(long *)(pmVar4 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pmVar4 + 0x10)" ( (binary_expression "pmVar4 + 0x10" identifier + number_literal) )))) + number_literal) )))) , (pointer_expression "&local_59" & identifier) ))) ;))) }) (else_clause "else {\n                    /* try { // try from 002edc00 to 002edc01 has its CatchHandler @ 002edd78 */\n    (**(code **)(*(long *)pmVar4 + 0x38))(local_40,pmVar4);\n  }" else (compound_statement "{\n                    /* try { // try from 002edc00 to 002edc01 has its CatchHandler @ 002edd78 */\n    (**(code **)(*(long *)pmVar4 + 0x38))(local_40,pmVar4);\n  }" { comment (expression_statement "(**(code **)(*(long *)pmVar4 + 0x38))(local_40,pmVar4);" (call_expression "(**(code **)(*(long *)pmVar4 + 0x38))(local_40,pmVar4)" (parenthesized_expression "(**(code **)(*(long *)pmVar4 + 0x38))" ( (pointer_expression "**(code **)(*(long *)pmVar4 + 0x38)" * (pointer_expression "*(code **)(*(long *)pmVar4 + 0x38)" * (cast_expression "(code **)(*(long *)pmVar4 + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pmVar4 + 0x38)" ( (binary_expression "*(long *)pmVar4 + 0x38" (pointer_expression "*(long *)pmVar4" * (cast_expression "(long *)pmVar4" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(local_40,pmVar4)" ( identifier , identifier ))) ;) }))) (expression_statement "local_70 = (string *)local_40;" (assignment_expression "local_70 = (string *)local_40" identifier = (cast_expression "(string *)local_40" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "uVar1 = *(ulong *)(local_40[0] + -0x18);" (assignment_expression "uVar1 = *(ulong *)(local_40[0] + -0x18)" identifier = (pointer_expression "*(ulong *)(local_40[0] + -0x18)" * (cast_expression "(ulong *)(local_40[0] + -0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40[0] + -0x18)" ( (binary_expression "local_40[0] + -0x18" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "*(ulong *)(this + 0x50) = uVar1;" (assignment_expression "*(ulong *)(this + 0x50) = uVar1" (pointer_expression "*(ulong *)(this + 0x50)" * (cast_expression "(ulong *)(this + 0x50)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x50)" ( (binary_expression "this + 0x50" identifier + number_literal) )))) = identifier) ;) comment (expression_statement "pcVar8 = (char *)operator_new__(uVar1);" (assignment_expression "pcVar8 = (char *)operator_new__(uVar1)" identifier = (cast_expression "(char *)operator_new__(uVar1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new__(uVar1)" identifier (argument_list "(uVar1)" ( identifier ))))) ;) comment (labeled_statement "std::string::copy(local_70,pcVar8,*(ulong *)(this + 0x50),0);" statement_identifier : (ERROR ":" :) (labeled_statement "string::copy(local_70,pcVar8,*(ulong *)(this + 0x50),0);" statement_identifier : (ERROR ":" :) (expression_statement "copy(local_70,pcVar8,*(ulong *)(this + 0x50),0);" (call_expression "copy(local_70,pcVar8,*(ulong *)(this + 0x50),0)" identifier (argument_list "(local_70,pcVar8,*(ulong *)(this + 0x50),0)" ( identifier , identifier , (pointer_expression "*(ulong *)(this + 0x50)" * (cast_expression "(ulong *)(this + 0x50)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x50)" ( (binary_expression "this + 0x50" identifier + number_literal) )))) , number_literal ))) ;))) (if_statement "if (*(code **)(*(long *)pmVar4 + 0x48) == (code *)PTR_do_pos_format_0043da60) {\n    uVar3 = *(undefined4 *)(*(long *)(pmVar4 + 0x10) + 0x5c);\n  }\n  else {\n                    /* try { // try from 002edc13 to 002edc14 has its CatchHandler @ 002edd71 */\n    uVar3 = (**(code **)(*(long *)pmVar4 + 0x48))(pmVar4);\n  }" if (parenthesized_expression "(*(code **)(*(long *)pmVar4 + 0x48) == (code *)PTR_do_pos_format_0043da60)" ( (binary_expression "*(code **)(*(long *)pmVar4 + 0x48) == (code *)PTR_do_pos_format_0043da60" (pointer_expression "*(code **)(*(long *)pmVar4 + 0x48)" * (cast_expression "(code **)(*(long *)pmVar4 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pmVar4 + 0x48)" ( (binary_expression "*(long *)pmVar4 + 0x48" (pointer_expression "*(long *)pmVar4" * (cast_expression "(long *)pmVar4" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == (cast_expression "(code *)PTR_do_pos_format_0043da60" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    uVar3 = *(undefined4 *)(*(long *)(pmVar4 + 0x10) + 0x5c);\n  }" { (expression_statement "uVar3 = *(undefined4 *)(*(long *)(pmVar4 + 0x10) + 0x5c);" (assignment_expression "uVar3 = *(undefined4 *)(*(long *)(pmVar4 + 0x10) + 0x5c)" identifier = (pointer_expression "*(undefined4 *)(*(long *)(pmVar4 + 0x10) + 0x5c)" * (cast_expression "(undefined4 *)(*(long *)(pmVar4 + 0x10) + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(pmVar4 + 0x10) + 0x5c)" ( (binary_expression "*(long *)(pmVar4 + 0x10) + 0x5c" (pointer_expression "*(long *)(pmVar4 + 0x10)" * (cast_expression "(long *)(pmVar4 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pmVar4 + 0x10)" ( (binary_expression "pmVar4 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) }) (else_clause "else {\n                    /* try { // try from 002edc13 to 002edc14 has its CatchHandler @ 002edd71 */\n    uVar3 = (**(code **)(*(long *)pmVar4 + 0x48))(pmVar4);\n  }" else (compound_statement "{\n                    /* try { // try from 002edc13 to 002edc14 has its CatchHandler @ 002edd71 */\n    uVar3 = (**(code **)(*(long *)pmVar4 + 0x48))(pmVar4);\n  }" { comment (expression_statement "uVar3 = (**(code **)(*(long *)pmVar4 + 0x48))(pmVar4);" (assignment_expression "uVar3 = (**(code **)(*(long *)pmVar4 + 0x48))(pmVar4)" identifier = (call_expression "(**(code **)(*(long *)pmVar4 + 0x48))(pmVar4)" (parenthesized_expression "(**(code **)(*(long *)pmVar4 + 0x48))" ( (pointer_expression "**(code **)(*(long *)pmVar4 + 0x48)" * (pointer_expression "*(code **)(*(long *)pmVar4 + 0x48)" * (cast_expression "(code **)(*(long *)pmVar4 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pmVar4 + 0x48)" ( (binary_expression "*(long *)pmVar4 + 0x48" (pointer_expression "*(long *)pmVar4" * (cast_expression "(long *)pmVar4" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(pmVar4)" ( identifier )))) ;) }))) (expression_statement "*(undefined4 *)(this + 0x5c) = uVar3;" (assignment_expression "*(undefined4 *)(this + 0x5c) = uVar3" (pointer_expression "*(undefined4 *)(this + 0x5c)" * (cast_expression "(undefined4 *)(this + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x5c)" ( (binary_expression "this + 0x5c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(code **)(*(long *)pmVar4 + 0x50) == (code *)PTR_do_neg_format_0043dd00) {\n    uVar3 = *(undefined4 *)(*(long *)(pmVar4 + 0x10) + 0x60);\n  }\n  else {\n                    /* try { // try from 002edbb3 to 002edbb4 has its CatchHandler @ 002edd71 */\n    uVar3 = (**(code **)(*(long *)pmVar4 + 0x50))(pmVar4);\n  }" if (parenthesized_expression "(*(code **)(*(long *)pmVar4 + 0x50) == (code *)PTR_do_neg_format_0043dd00)" ( (binary_expression "*(code **)(*(long *)pmVar4 + 0x50) == (code *)PTR_do_neg_format_0043dd00" (pointer_expression "*(code **)(*(long *)pmVar4 + 0x50)" * (cast_expression "(code **)(*(long *)pmVar4 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pmVar4 + 0x50)" ( (binary_expression "*(long *)pmVar4 + 0x50" (pointer_expression "*(long *)pmVar4" * (cast_expression "(long *)pmVar4" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == (cast_expression "(code *)PTR_do_neg_format_0043dd00" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    uVar3 = *(undefined4 *)(*(long *)(pmVar4 + 0x10) + 0x60);\n  }" { (expression_statement "uVar3 = *(undefined4 *)(*(long *)(pmVar4 + 0x10) + 0x60);" (assignment_expression "uVar3 = *(undefined4 *)(*(long *)(pmVar4 + 0x10) + 0x60)" identifier = (pointer_expression "*(undefined4 *)(*(long *)(pmVar4 + 0x10) + 0x60)" * (cast_expression "(undefined4 *)(*(long *)(pmVar4 + 0x10) + 0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(pmVar4 + 0x10) + 0x60)" ( (binary_expression "*(long *)(pmVar4 + 0x10) + 0x60" (pointer_expression "*(long *)(pmVar4 + 0x10)" * (cast_expression "(long *)(pmVar4 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pmVar4 + 0x10)" ( (binary_expression "pmVar4 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) }) (else_clause "else {\n                    /* try { // try from 002edbb3 to 002edbb4 has its CatchHandler @ 002edd71 */\n    uVar3 = (**(code **)(*(long *)pmVar4 + 0x50))(pmVar4);\n  }" else (compound_statement "{\n                    /* try { // try from 002edbb3 to 002edbb4 has its CatchHandler @ 002edd71 */\n    uVar3 = (**(code **)(*(long *)pmVar4 + 0x50))(pmVar4);\n  }" { comment (expression_statement "uVar3 = (**(code **)(*(long *)pmVar4 + 0x50))(pmVar4);" (assignment_expression "uVar3 = (**(code **)(*(long *)pmVar4 + 0x50))(pmVar4)" identifier = (call_expression "(**(code **)(*(long *)pmVar4 + 0x50))(pmVar4)" (parenthesized_expression "(**(code **)(*(long *)pmVar4 + 0x50))" ( (pointer_expression "**(code **)(*(long *)pmVar4 + 0x50)" * (pointer_expression "*(code **)(*(long *)pmVar4 + 0x50)" * (cast_expression "(code **)(*(long *)pmVar4 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pmVar4 + 0x50)" ( (binary_expression "*(long *)pmVar4 + 0x50" (pointer_expression "*(long *)pmVar4" * (cast_expression "(long *)pmVar4" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(pmVar4)" ( identifier )))) ;) }))) (expression_statement "*(undefined4 *)(this + 0x60) = uVar3;" (assignment_expression "*(undefined4 *)(this + 0x60) = uVar3" (pointer_expression "*(undefined4 *)(this + 0x60)" * (cast_expression "(undefined4 *)(this + 0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x60)" ( (binary_expression "this + 0x60" identifier + number_literal) )))) = identifier) ;) (expression_statement "this_00 = use_facet<std::ctype<char>>(param_1);" (update_expression "this_00 = use_facet<std::ctype<char>>(param_1)" (binary_expression "this_00 = use_facet<std::ctype<char>>(param_1)" (assignment_expression "this_00 = use_facet<std" identifier = (binary_expression "use_facet<std" identifier < identifier)) (ERROR "::ctype" : : identifier) < (binary_expression "char>>(param_1)" identifier >> (parenthesized_expression "(param_1)" ( identifier )))) --) ;) (ERROR "ctype<char>::widen((ctype<char> *)this_00,money_base::_S_atoms,money_base::_S_atoms + 0xb,\n                     (char *)(this + 100));\n  *(char **)(this + 0x10) = pcVar5;\n  *(char **)(this + 0x28) = pcVar6;\n  *(char **)(this + 0x38) = pcVar7;\n  *(char **)(this + 0x48) = pcVar8;\n  this[0x6f] = (__moneypunct_cache<char,false>)0x1;\n  if ((allocator *)(local_40[0] + -0x18) != (allocator *)&std::string::_Rep::_S_empty_rep_storage) {\n    std::string::_Rep::_M_dispose((allocator *)(local_40[0] + -0x18));\n  }\n  if ((allocator *)(local_48 + -0x18) != (allocator *)&std::string::_Rep::_S_empty_rep_storage) {\n    std::string::_Rep::_M_dispose((allocator *)(local_48 + -0x18));\n  }\n  if ((allocator *)(local_50 + -0x18) != (allocator *)&std::string::_Rep::_S_empty_rep_storage) {\n    std::string::_Rep::_M_dispose((allocator *)(local_50 + -0x18));\n  }\n  if ((allocator *)(local_58 + -0x18) != (allocator *)&std::string::_Rep::_S_empty_rep_storage) {\n    std::string::_Rep::_M_dispose((allocator *)(local_58 + -0x18));\n  }\n  return;\n}" (binary_expression "ctype<char" identifier < identifier) > (ERROR "::" : :) identifier ( (subscript_expression "(ctype<char> *)this_00,money_base::_S_atoms,money_base::_S_atoms + 0xb,\n                     (char *)(this + 100));\n  *(char **)(this + 0x10) = pcVar5;\n  *(char **)(this + 0x28) = pcVar6;\n  *(char **)(this + 0x38) = pcVar7;\n  *(char **)(this + 0x48) = pcVar8;\n  this[0x6f]" (binary_expression "(ctype<char> *)this_00,money_base::_S_atoms,money_base::_S_atoms + 0xb,\n                     (char *)(this + 100));\n  *(char **)(this + 0x10) = pcVar5;\n  *(char **)(this + 0x28) = pcVar6;\n  *(char **)(this + 0x38) = pcVar7;\n  *(char **)(this + 0x48) = pcVar8" (binary_expression "(ctype<char> *)this_00,money_base::_S_atoms,money_base::_S_atoms + 0xb,\n                     (char *)(this + 100));\n  *(char **)(this + 0x10) = pcVar5;\n  *(char **)(this + 0x28) = pcVar6;\n  *(char **)(this + 0x38) = pcVar7" (binary_expression "(ctype<char> *)this_00,money_base::_S_atoms,money_base::_S_atoms + 0xb,\n                     (char *)(this + 100));\n  *(char **)(this + 0x10) = pcVar5;\n  *(char **)(this + 0x28) = pcVar6" (binary_expression "(ctype<char> *)this_00,money_base::_S_atoms,money_base::_S_atoms + 0xb,\n                     (char *)(this + 100));\n  *(char **)(this + 0x10) = pcVar5" (parenthesized_expression "(ctype<char> *)this_00,money_base::_S_atoms,money_base::_S_atoms + 0xb,\n                     (char *)(this + 100))" ( (ERROR "ctype<char> *)this_00,money_base::_S_atoms,money_base::" (comma_expression "ctype<char> *)this_00,money_base" (binary_expression "ctype<char> *)this_00" (binary_expression "ctype<char" identifier < identifier) > (pointer_expression "*)this_00" * (ERROR ")" )) identifier)) , identifier) : : (comma_expression "_S_atoms,money_base" identifier , identifier) : :) (comma_expression "_S_atoms + 0xb,\n                     (char *)(this + 100)" (binary_expression "_S_atoms + 0xb" identifier + number_literal) , (cast_expression "(char *)(this + 100)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 100)" ( (binary_expression "this + 100" identifier + number_literal) )))) )) (ERROR ";" ;) * (cast_expression "(char **)(this + 0x10) = pcVar5" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (assignment_expression "(this + 0x10) = pcVar5" (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )) = identifier))) (ERROR ";" ;) * (cast_expression "(char **)(this + 0x28) = pcVar6" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (assignment_expression "(this + 0x28) = pcVar6" (parenthesized_expression "(this + 0x28)" ( (binary_expression "this + 0x28" identifier + number_literal) )) = identifier))) (ERROR ";" ;) * (cast_expression "(char **)(this + 0x38) = pcVar7" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (assignment_expression "(this + 0x38) = pcVar7" (parenthesized_expression "(this + 0x38)" ( (binary_expression "this + 0x38" identifier + number_literal) )) = identifier))) (ERROR ";" ;) * (cast_expression "(char **)(this + 0x48) = pcVar8" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (assignment_expression "(this + 0x48) = pcVar8" (parenthesized_expression "(this + 0x48)" ( (binary_expression "this + 0x48" identifier + number_literal) )) = identifier))) (ERROR ";\n  this" ; identifier) [ number_literal ]) = ( (ERROR "__moneypunct_cache<char,false>)0x1;\n  if ((allocator *)(local_40[0] + -0x18) != (allocator *)&std::string::_Rep::_S_empty_rep_storage) {\n    std::string::_Rep::_M_dispose((allocator *)(local_40[0] + -0x18));\n  }\n  if ((allocator *)(local_48 + -0x18) != (allocator *)&std::string::_Rep::_S_empty_rep_storage) {\n    std::string::_Rep::_M_dispose((allocator *)(local_48 + -0x18));\n  }\n  if ((allocator *)(local_50 + -0x18) != (allocator *)&std::string::_Rep::_S_empty_rep_storage) {\n    std::string::_Rep::_M_dispose((allocator *)(local_50 + -0x18));\n  }\n  if ((allocator *)(local_58 + -0x18) != (allocator *)&std::string::_Rep::_S_empty_rep_storage)" (comma_expression "__moneypunct_cache<char,false>)0x1" (binary_expression "__moneypunct_cache<char" identifier < identifier) , (binary_expression "false>)0x1" false > (ERROR ")" )) number_literal)) ; if (compound_literal_expression "((allocator *)(local_40[0] + -0x18) != (allocator *)&std::string::_Rep::_S_empty_rep_storage) {\n    std::string::_Rep::_M_dispose((allocator *)(local_40[0] + -0x18));\n  }" ( (ERROR "(allocator *)(local_40[0] + -0x18) != (allocator *)&std::string::_Rep::" (binary_expression "(allocator *)(local_40[0] + -0x18) != (allocator *)&std" (cast_expression "(allocator *)(local_40[0] + -0x18)" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40[0] + -0x18)" ( (binary_expression "local_40[0] + -0x18" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal) ))) != (cast_expression "(allocator *)&std" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&std" & identifier))) : : identifier : : identifier : :) (type_descriptor "_S_empty_rep_storage" type_identifier) ) (initializer_list "{\n    std::string::_Rep::_M_dispose((allocator *)(local_40[0] + -0x18));\n  }" { (initializer_pair "std::string::_Rep::_M_dispose((allocator *)(local_40[0] + -0x18))" field_identifier (ERROR "::string::_Rep:" : : identifier : : identifier :) : (call_expression "_M_dispose((allocator *)(local_40[0] + -0x18))" identifier (argument_list "((allocator *)(local_40[0] + -0x18))" ( (cast_expression "(allocator *)(local_40[0] + -0x18)" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40[0] + -0x18)" ( (binary_expression "local_40[0] + -0x18" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal) ))) )))) (ERROR ";" ;) })) (call_expression "if ((allocator *)(local_48 + -0x18) != (allocator *)&std::string::_Rep::_S_empty_rep_storage)" identifier (argument_list "((allocator *)(local_48 + -0x18) != (allocator *)&std::string::_Rep::_S_empty_rep_storage)" ( (binary_expression "(allocator *)(local_48 + -0x18) != (allocator *)&std" (cast_expression "(allocator *)(local_48 + -0x18)" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_48 + -0x18)" ( (binary_expression "local_48 + -0x18" identifier + number_literal) ))) != (cast_expression "(allocator *)&std" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&std" & identifier))) (ERROR "::string::_Rep::_S_empty_rep_storage" : : identifier : : identifier : : identifier) ))) (compound_statement "{\n    std::string::_Rep::_M_dispose((allocator *)(local_48 + -0x18));\n  }" { (labeled_statement "std::string::_Rep::_M_dispose((allocator *)(local_48 + -0x18));" statement_identifier : (ERROR ":" :) (labeled_statement "string::_Rep::_M_dispose((allocator *)(local_48 + -0x18));" statement_identifier : (ERROR ":" :) (labeled_statement "_Rep::_M_dispose((allocator *)(local_48 + -0x18));" statement_identifier : (ERROR ":" :) (expression_statement "_M_dispose((allocator *)(local_48 + -0x18));" (call_expression "_M_dispose((allocator *)(local_48 + -0x18))" identifier (argument_list "((allocator *)(local_48 + -0x18))" ( (cast_expression "(allocator *)(local_48 + -0x18)" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_48 + -0x18)" ( (binary_expression "local_48 + -0x18" identifier + number_literal) ))) ))) ;)))) }) if (compound_literal_expression "((allocator *)(local_50 + -0x18) != (allocator *)&std::string::_Rep::_S_empty_rep_storage) {\n    std::string::_Rep::_M_dispose((allocator *)(local_50 + -0x18));\n  }" ( (ERROR "(allocator *)(local_50 + -0x18) != (allocator *)&std::string::_Rep::" (binary_expression "(allocator *)(local_50 + -0x18) != (allocator *)&std" (cast_expression "(allocator *)(local_50 + -0x18)" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + -0x18)" ( (binary_expression "local_50 + -0x18" identifier + number_literal) ))) != (cast_expression "(allocator *)&std" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&std" & identifier))) : : identifier : : identifier : :) (type_descriptor "_S_empty_rep_storage" type_identifier) ) (initializer_list "{\n    std::string::_Rep::_M_dispose((allocator *)(local_50 + -0x18));\n  }" { (initializer_pair "std::string::_Rep::_M_dispose((allocator *)(local_50 + -0x18))" field_identifier (ERROR "::string::_Rep:" : : identifier : : identifier :) : (call_expression "_M_dispose((allocator *)(local_50 + -0x18))" identifier (argument_list "((allocator *)(local_50 + -0x18))" ( (cast_expression "(allocator *)(local_50 + -0x18)" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + -0x18)" ( (binary_expression "local_50 + -0x18" identifier + number_literal) ))) )))) (ERROR ";" ;) })) (call_expression "if ((allocator *)(local_58 + -0x18) != (allocator *)&std::string::_Rep::_S_empty_rep_storage)" identifier (argument_list "((allocator *)(local_58 + -0x18) != (allocator *)&std::string::_Rep::_S_empty_rep_storage)" ( (binary_expression "(allocator *)(local_58 + -0x18) != (allocator *)&std" (cast_expression "(allocator *)(local_58 + -0x18)" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_58 + -0x18)" ( (binary_expression "local_58 + -0x18" identifier + number_literal) ))) != (cast_expression "(allocator *)&std" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&std" & identifier))) (ERROR "::string::_Rep::_S_empty_rep_storage" : : identifier : : identifier : : identifier) )))) (compound_statement "{\n    std::string::_Rep::_M_dispose((allocator *)(local_58 + -0x18));\n  }" { (labeled_statement "std::string::_Rep::_M_dispose((allocator *)(local_58 + -0x18));" statement_identifier : (ERROR ":" :) (labeled_statement "string::_Rep::_M_dispose((allocator *)(local_58 + -0x18));" statement_identifier : (ERROR ":" :) (labeled_statement "_Rep::_M_dispose((allocator *)(local_58 + -0x18));" statement_identifier : (ERROR ":" :) (expression_statement "_M_dispose((allocator *)(local_58 + -0x18));" (call_expression "_M_dispose((allocator *)(local_58 + -0x18))" identifier (argument_list "((allocator *)(local_58 + -0x18))" ( (cast_expression "(allocator *)(local_58 + -0x18)" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_58 + -0x18)" ( (binary_expression "local_58 + -0x18" identifier + number_literal) ))) ))) ;)))) }) return ; }))
(translation_unit "void FUN_002ed890(long param_1,undefined8 param_2)\n\n{\n  bool bVar1;\n  undefined1 uVar2;\n  undefined4 uVar3;\n  long *plVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  undefined8 uVar8;\n  undefined8 uVar9;\n  long *local_70;\n  undefined1 local_5b;\n  undefined1 local_5a;\n  undefined1 local_59;\n  long local_58;\n  long local_50;\n  long local_48;\n  long local_40 [2];\n  \n  plVar4 = (long *)FUN_002ed840(param_2);\n  if (*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043db38) {\n    uVar2 = *(undefined1 *)(plVar4[2] + 0x21);\n  }\n  else {\n    uVar2 = (**(code **)(*plVar4 + 0x10))(plVar4);\n  }\n  *(undefined1 *)(param_1 + 0x21) = uVar2;\n  if (*(code **)(*plVar4 + 0x18) == (code *)PTR_FUN_0043dc00) {\n    uVar2 = *(undefined1 *)(plVar4[2] + 0x22);\n  }\n  else {\n    uVar2 = (**(code **)(*plVar4 + 0x18))(plVar4);\n  }\n  *(undefined1 *)(param_1 + 0x22) = uVar2;\n  if (*(code **)(*plVar4 + 0x40) == (code *)PTR_FUN_0043dbb0) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x58);\n  }\n  else {\n    uVar3 = (**(code **)(*plVar4 + 0x40))(plVar4);\n  }\n  *(undefined4 *)(param_1 + 0x58) = uVar3;\n  if (*(code **)(*plVar4 + 0x20) == (code *)PTR_FUN_0043df18) {\n                    \n    FUN_0030f640(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40);\n  }\n  else {\n                    \n    (**(code **)(*plVar4 + 0x20))(&local_58,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(local_58 + -0x18);\n                    \n  pcVar5 = (char *)thunk_FUN_002d94a0();\n                    \n  FUN_0030cdb0(&local_58,pcVar5,*(undefined8 *)(param_1 + 0x18),0);\n  bVar1 = false;\n  if (*(long *)(param_1 + 0x18) != 0) {\n    bVar1 = (byte)(*pcVar5 - 1U) < 0x7e;\n  }\n  *(bool *)(param_1 + 0x20) = bVar1;\n  if (*(code **)(*plVar4 + 0x28) == (code *)PTR_FUN_0043db70) {\n                    \n    FUN_0030f640(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b);\n  }\n  else {\n                    \n    (**(code **)(*plVar4 + 0x28))(&local_50,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x30) = *(undefined8 *)(local_50 + -0x18);\n                    \n  uVar6 = thunk_FUN_002d94a0();\n                    \n  FUN_0030cdb0(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0);\n  if (*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dfe8) {\n                    \n    FUN_0030f640(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a);\n  }\n  else {\n                    \n    (**(code **)(*plVar4 + 0x30))(&local_48,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x40) = *(undefined8 *)(local_48 + -0x18);\n                    \n  uVar7 = thunk_FUN_002d94a0();\n                    \n  FUN_0030cdb0(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0);\n  if (*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043daf8) {\n                    \n    FUN_0030f640(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59);\n  }\n  else {\n                    \n    (**(code **)(*plVar4 + 0x38))(local_40,plVar4);\n  }\n  local_70 = local_40;\n  *(undefined8 *)(param_1 + 0x50) = *(undefined8 *)(local_40[0] + -0x18);\n                    \n  uVar8 = thunk_FUN_002d94a0();\n                    \n  FUN_0030cdb0(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0);\n  if (*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043da60) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x5c);\n  }\n  else {\n                    \n    uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4);\n  }\n  *(undefined4 *)(param_1 + 0x5c) = uVar3;\n  if (*(code **)(*plVar4 + 0x50) == (code *)PTR_FUN_0043dd00) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x60);\n  }\n  else {\n                    \n    uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4);\n  }\n  *(undefined4 *)(param_1 + 0x60) = uVar3;\n  uVar9 = FUN_002ec670(param_2);\n  FUN_002ea750(uVar9,PTR_DAT_0043e720,PTR_DAT_0043e720 + 0xb,param_1 + 100);\n  *(char **)(param_1 + 0x10) = pcVar5;\n  *(undefined8 *)(param_1 + 0x28) = uVar6;\n  *(undefined8 *)(param_1 + 0x38) = uVar7;\n  *(undefined8 *)(param_1 + 0x48) = uVar8;\n  *(undefined1 *)(param_1 + 0x6f) = 1;\n  if ((undefined8 *)(local_40[0] + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_40[0] + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_48 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_48 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_50 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_50 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_58 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_58 + -0x18),&local_59);\n  }\n  return;\n}\n\n" (function_definition "void FUN_002ed890(long param_1,undefined8 param_2)\n\n{\n  bool bVar1;\n  undefined1 uVar2;\n  undefined4 uVar3;\n  long *plVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  undefined8 uVar8;\n  undefined8 uVar9;\n  long *local_70;\n  undefined1 local_5b;\n  undefined1 local_5a;\n  undefined1 local_59;\n  long local_58;\n  long local_50;\n  long local_48;\n  long local_40 [2];\n  \n  plVar4 = (long *)FUN_002ed840(param_2);\n  if (*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043db38) {\n    uVar2 = *(undefined1 *)(plVar4[2] + 0x21);\n  }\n  else {\n    uVar2 = (**(code **)(*plVar4 + 0x10))(plVar4);\n  }\n  *(undefined1 *)(param_1 + 0x21) = uVar2;\n  if (*(code **)(*plVar4 + 0x18) == (code *)PTR_FUN_0043dc00) {\n    uVar2 = *(undefined1 *)(plVar4[2] + 0x22);\n  }\n  else {\n    uVar2 = (**(code **)(*plVar4 + 0x18))(plVar4);\n  }\n  *(undefined1 *)(param_1 + 0x22) = uVar2;\n  if (*(code **)(*plVar4 + 0x40) == (code *)PTR_FUN_0043dbb0) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x58);\n  }\n  else {\n    uVar3 = (**(code **)(*plVar4 + 0x40))(plVar4);\n  }\n  *(undefined4 *)(param_1 + 0x58) = uVar3;\n  if (*(code **)(*plVar4 + 0x20) == (code *)PTR_FUN_0043df18) {\n                    \n    FUN_0030f640(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40);\n  }\n  else {\n                    \n    (**(code **)(*plVar4 + 0x20))(&local_58,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(local_58 + -0x18);\n                    \n  pcVar5 = (char *)thunk_FUN_002d94a0();\n                    \n  FUN_0030cdb0(&local_58,pcVar5,*(undefined8 *)(param_1 + 0x18),0);\n  bVar1 = false;\n  if (*(long *)(param_1 + 0x18) != 0) {\n    bVar1 = (byte)(*pcVar5 - 1U) < 0x7e;\n  }\n  *(bool *)(param_1 + 0x20) = bVar1;\n  if (*(code **)(*plVar4 + 0x28) == (code *)PTR_FUN_0043db70) {\n                    \n    FUN_0030f640(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b);\n  }\n  else {\n                    \n    (**(code **)(*plVar4 + 0x28))(&local_50,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x30) = *(undefined8 *)(local_50 + -0x18);\n                    \n  uVar6 = thunk_FUN_002d94a0();\n                    \n  FUN_0030cdb0(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0);\n  if (*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dfe8) {\n                    \n    FUN_0030f640(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a);\n  }\n  else {\n                    \n    (**(code **)(*plVar4 + 0x30))(&local_48,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x40) = *(undefined8 *)(local_48 + -0x18);\n                    \n  uVar7 = thunk_FUN_002d94a0();\n                    \n  FUN_0030cdb0(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0);\n  if (*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043daf8) {\n                    \n    FUN_0030f640(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59);\n  }\n  else {\n                    \n    (**(code **)(*plVar4 + 0x38))(local_40,plVar4);\n  }\n  local_70 = local_40;\n  *(undefined8 *)(param_1 + 0x50) = *(undefined8 *)(local_40[0] + -0x18);\n                    \n  uVar8 = thunk_FUN_002d94a0();\n                    \n  FUN_0030cdb0(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0);\n  if (*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043da60) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x5c);\n  }\n  else {\n                    \n    uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4);\n  }\n  *(undefined4 *)(param_1 + 0x5c) = uVar3;\n  if (*(code **)(*plVar4 + 0x50) == (code *)PTR_FUN_0043dd00) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x60);\n  }\n  else {\n                    \n    uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4);\n  }\n  *(undefined4 *)(param_1 + 0x60) = uVar3;\n  uVar9 = FUN_002ec670(param_2);\n  FUN_002ea750(uVar9,PTR_DAT_0043e720,PTR_DAT_0043e720 + 0xb,param_1 + 100);\n  *(char **)(param_1 + 0x10) = pcVar5;\n  *(undefined8 *)(param_1 + 0x28) = uVar6;\n  *(undefined8 *)(param_1 + 0x38) = uVar7;\n  *(undefined8 *)(param_1 + 0x48) = uVar8;\n  *(undefined1 *)(param_1 + 0x6f) = 1;\n  if ((undefined8 *)(local_40[0] + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_40[0] + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_48 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_48 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_50 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_50 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_58 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_58 + -0x18),&local_59);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_002ed890(long param_1,undefined8 param_2)" identifier (parameter_list "(long param_1,undefined8 param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  undefined1 uVar2;\n  undefined4 uVar3;\n  long *plVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  undefined8 uVar8;\n  undefined8 uVar9;\n  long *local_70;\n  undefined1 local_5b;\n  undefined1 local_5a;\n  undefined1 local_59;\n  long local_58;\n  long local_50;\n  long local_48;\n  long local_40 [2];\n  \n  plVar4 = (long *)FUN_002ed840(param_2);\n  if (*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043db38) {\n    uVar2 = *(undefined1 *)(plVar4[2] + 0x21);\n  }\n  else {\n    uVar2 = (**(code **)(*plVar4 + 0x10))(plVar4);\n  }\n  *(undefined1 *)(param_1 + 0x21) = uVar2;\n  if (*(code **)(*plVar4 + 0x18) == (code *)PTR_FUN_0043dc00) {\n    uVar2 = *(undefined1 *)(plVar4[2] + 0x22);\n  }\n  else {\n    uVar2 = (**(code **)(*plVar4 + 0x18))(plVar4);\n  }\n  *(undefined1 *)(param_1 + 0x22) = uVar2;\n  if (*(code **)(*plVar4 + 0x40) == (code *)PTR_FUN_0043dbb0) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x58);\n  }\n  else {\n    uVar3 = (**(code **)(*plVar4 + 0x40))(plVar4);\n  }\n  *(undefined4 *)(param_1 + 0x58) = uVar3;\n  if (*(code **)(*plVar4 + 0x20) == (code *)PTR_FUN_0043df18) {\n                    \n    FUN_0030f640(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40);\n  }\n  else {\n                    \n    (**(code **)(*plVar4 + 0x20))(&local_58,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(local_58 + -0x18);\n                    \n  pcVar5 = (char *)thunk_FUN_002d94a0();\n                    \n  FUN_0030cdb0(&local_58,pcVar5,*(undefined8 *)(param_1 + 0x18),0);\n  bVar1 = false;\n  if (*(long *)(param_1 + 0x18) != 0) {\n    bVar1 = (byte)(*pcVar5 - 1U) < 0x7e;\n  }\n  *(bool *)(param_1 + 0x20) = bVar1;\n  if (*(code **)(*plVar4 + 0x28) == (code *)PTR_FUN_0043db70) {\n                    \n    FUN_0030f640(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b);\n  }\n  else {\n                    \n    (**(code **)(*plVar4 + 0x28))(&local_50,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x30) = *(undefined8 *)(local_50 + -0x18);\n                    \n  uVar6 = thunk_FUN_002d94a0();\n                    \n  FUN_0030cdb0(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0);\n  if (*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dfe8) {\n                    \n    FUN_0030f640(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a);\n  }\n  else {\n                    \n    (**(code **)(*plVar4 + 0x30))(&local_48,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x40) = *(undefined8 *)(local_48 + -0x18);\n                    \n  uVar7 = thunk_FUN_002d94a0();\n                    \n  FUN_0030cdb0(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0);\n  if (*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043daf8) {\n                    \n    FUN_0030f640(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59);\n  }\n  else {\n                    \n    (**(code **)(*plVar4 + 0x38))(local_40,plVar4);\n  }\n  local_70 = local_40;\n  *(undefined8 *)(param_1 + 0x50) = *(undefined8 *)(local_40[0] + -0x18);\n                    \n  uVar8 = thunk_FUN_002d94a0();\n                    \n  FUN_0030cdb0(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0);\n  if (*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043da60) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x5c);\n  }\n  else {\n                    \n    uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4);\n  }\n  *(undefined4 *)(param_1 + 0x5c) = uVar3;\n  if (*(code **)(*plVar4 + 0x50) == (code *)PTR_FUN_0043dd00) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x60);\n  }\n  else {\n                    \n    uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4);\n  }\n  *(undefined4 *)(param_1 + 0x60) = uVar3;\n  uVar9 = FUN_002ec670(param_2);\n  FUN_002ea750(uVar9,PTR_DAT_0043e720,PTR_DAT_0043e720 + 0xb,param_1 + 100);\n  *(char **)(param_1 + 0x10) = pcVar5;\n  *(undefined8 *)(param_1 + 0x28) = uVar6;\n  *(undefined8 *)(param_1 + 0x38) = uVar7;\n  *(undefined8 *)(param_1 + 0x48) = uVar8;\n  *(undefined1 *)(param_1 + 0x6f) = 1;\n  if ((undefined8 *)(local_40[0] + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_40[0] + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_48 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_48 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_50 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_50 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_58 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_58 + -0x18),&local_59);\n  }\n  return;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "undefined1 uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "undefined8 uVar8;" type_identifier identifier ;) (declaration "undefined8 uVar9;" type_identifier identifier ;) (declaration "long *local_70;" (sized_type_specifier "long" long) (pointer_declarator "*local_70" * identifier) ;) (declaration "undefined1 local_5b;" type_identifier identifier ;) (declaration "undefined1 local_5a;" type_identifier identifier ;) (declaration "undefined1 local_59;" type_identifier identifier ;) (declaration "long local_58;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_50;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_48;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_40 [2];" (sized_type_specifier "long" long) (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (expression_statement "plVar4 = (long *)FUN_002ed840(param_2);" (assignment_expression "plVar4 = (long *)FUN_002ed840(param_2)" identifier = (cast_expression "(long *)FUN_002ed840(param_2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002ed840(param_2)" identifier (argument_list "(param_2)" ( identifier ))))) ;) (if_statement "if (*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043db38) {\n    uVar2 = *(undefined1 *)(plVar4[2] + 0x21);\n  }\n  else {\n    uVar2 = (**(code **)(*plVar4 + 0x10))(plVar4);\n  }" if (parenthesized_expression "(*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043db38)" ( (binary_expression "*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043db38" (pointer_expression "*(code **)(*plVar4 + 0x10)" * (cast_expression "(code **)(*plVar4 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x10)" ( (binary_expression "*plVar4 + 0x10" (pointer_expression "*plVar4" * identifier) + number_literal) )))) == (cast_expression "(code *)PTR_FUN_0043db38" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    uVar2 = *(undefined1 *)(plVar4[2] + 0x21);\n  }" { (expression_statement "uVar2 = *(undefined1 *)(plVar4[2] + 0x21);" (assignment_expression "uVar2 = *(undefined1 *)(plVar4[2] + 0x21)" identifier = (pointer_expression "*(undefined1 *)(plVar4[2] + 0x21)" * (cast_expression "(undefined1 *)(plVar4[2] + 0x21)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4[2] + 0x21)" ( (binary_expression "plVar4[2] + 0x21" (subscript_expression "plVar4[2]" identifier [ number_literal ]) + number_literal) ))))) ;) }) (else_clause "else {\n    uVar2 = (**(code **)(*plVar4 + 0x10))(plVar4);\n  }" else (compound_statement "{\n    uVar2 = (**(code **)(*plVar4 + 0x10))(plVar4);\n  }" { (expression_statement "uVar2 = (**(code **)(*plVar4 + 0x10))(plVar4);" (assignment_expression "uVar2 = (**(code **)(*plVar4 + 0x10))(plVar4)" identifier = (call_expression "(**(code **)(*plVar4 + 0x10))(plVar4)" (parenthesized_expression "(**(code **)(*plVar4 + 0x10))" ( (pointer_expression "**(code **)(*plVar4 + 0x10)" * (pointer_expression "*(code **)(*plVar4 + 0x10)" * (cast_expression "(code **)(*plVar4 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x10)" ( (binary_expression "*plVar4 + 0x10" (pointer_expression "*plVar4" * identifier) + number_literal) ))))) )) (argument_list "(plVar4)" ( identifier )))) ;) }))) (expression_statement "*(undefined1 *)(param_1 + 0x21) = uVar2;" (assignment_expression "*(undefined1 *)(param_1 + 0x21) = uVar2" (pointer_expression "*(undefined1 *)(param_1 + 0x21)" * (cast_expression "(undefined1 *)(param_1 + 0x21)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x21)" ( (binary_expression "param_1 + 0x21" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(code **)(*plVar4 + 0x18) == (code *)PTR_FUN_0043dc00) {\n    uVar2 = *(undefined1 *)(plVar4[2] + 0x22);\n  }\n  else {\n    uVar2 = (**(code **)(*plVar4 + 0x18))(plVar4);\n  }" if (parenthesized_expression "(*(code **)(*plVar4 + 0x18) == (code *)PTR_FUN_0043dc00)" ( (binary_expression "*(code **)(*plVar4 + 0x18) == (code *)PTR_FUN_0043dc00" (pointer_expression "*(code **)(*plVar4 + 0x18)" * (cast_expression "(code **)(*plVar4 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x18)" ( (binary_expression "*plVar4 + 0x18" (pointer_expression "*plVar4" * identifier) + number_literal) )))) == (cast_expression "(code *)PTR_FUN_0043dc00" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    uVar2 = *(undefined1 *)(plVar4[2] + 0x22);\n  }" { (expression_statement "uVar2 = *(undefined1 *)(plVar4[2] + 0x22);" (assignment_expression "uVar2 = *(undefined1 *)(plVar4[2] + 0x22)" identifier = (pointer_expression "*(undefined1 *)(plVar4[2] + 0x22)" * (cast_expression "(undefined1 *)(plVar4[2] + 0x22)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4[2] + 0x22)" ( (binary_expression "plVar4[2] + 0x22" (subscript_expression "plVar4[2]" identifier [ number_literal ]) + number_literal) ))))) ;) }) (else_clause "else {\n    uVar2 = (**(code **)(*plVar4 + 0x18))(plVar4);\n  }" else (compound_statement "{\n    uVar2 = (**(code **)(*plVar4 + 0x18))(plVar4);\n  }" { (expression_statement "uVar2 = (**(code **)(*plVar4 + 0x18))(plVar4);" (assignment_expression "uVar2 = (**(code **)(*plVar4 + 0x18))(plVar4)" identifier = (call_expression "(**(code **)(*plVar4 + 0x18))(plVar4)" (parenthesized_expression "(**(code **)(*plVar4 + 0x18))" ( (pointer_expression "**(code **)(*plVar4 + 0x18)" * (pointer_expression "*(code **)(*plVar4 + 0x18)" * (cast_expression "(code **)(*plVar4 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x18)" ( (binary_expression "*plVar4 + 0x18" (pointer_expression "*plVar4" * identifier) + number_literal) ))))) )) (argument_list "(plVar4)" ( identifier )))) ;) }))) (expression_statement "*(undefined1 *)(param_1 + 0x22) = uVar2;" (assignment_expression "*(undefined1 *)(param_1 + 0x22) = uVar2" (pointer_expression "*(undefined1 *)(param_1 + 0x22)" * (cast_expression "(undefined1 *)(param_1 + 0x22)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x22)" ( (binary_expression "param_1 + 0x22" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(code **)(*plVar4 + 0x40) == (code *)PTR_FUN_0043dbb0) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x58);\n  }\n  else {\n    uVar3 = (**(code **)(*plVar4 + 0x40))(plVar4);\n  }" if (parenthesized_expression "(*(code **)(*plVar4 + 0x40) == (code *)PTR_FUN_0043dbb0)" ( (binary_expression "*(code **)(*plVar4 + 0x40) == (code *)PTR_FUN_0043dbb0" (pointer_expression "*(code **)(*plVar4 + 0x40)" * (cast_expression "(code **)(*plVar4 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x40)" ( (binary_expression "*plVar4 + 0x40" (pointer_expression "*plVar4" * identifier) + number_literal) )))) == (cast_expression "(code *)PTR_FUN_0043dbb0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x58);\n  }" { (expression_statement "uVar3 = *(undefined4 *)(plVar4[2] + 0x58);" (assignment_expression "uVar3 = *(undefined4 *)(plVar4[2] + 0x58)" identifier = (pointer_expression "*(undefined4 *)(plVar4[2] + 0x58)" * (cast_expression "(undefined4 *)(plVar4[2] + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4[2] + 0x58)" ( (binary_expression "plVar4[2] + 0x58" (subscript_expression "plVar4[2]" identifier [ number_literal ]) + number_literal) ))))) ;) }) (else_clause "else {\n    uVar3 = (**(code **)(*plVar4 + 0x40))(plVar4);\n  }" else (compound_statement "{\n    uVar3 = (**(code **)(*plVar4 + 0x40))(plVar4);\n  }" { (expression_statement "uVar3 = (**(code **)(*plVar4 + 0x40))(plVar4);" (assignment_expression "uVar3 = (**(code **)(*plVar4 + 0x40))(plVar4)" identifier = (call_expression "(**(code **)(*plVar4 + 0x40))(plVar4)" (parenthesized_expression "(**(code **)(*plVar4 + 0x40))" ( (pointer_expression "**(code **)(*plVar4 + 0x40)" * (pointer_expression "*(code **)(*plVar4 + 0x40)" * (cast_expression "(code **)(*plVar4 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x40)" ( (binary_expression "*plVar4 + 0x40" (pointer_expression "*plVar4" * identifier) + number_literal) ))))) )) (argument_list "(plVar4)" ( identifier )))) ;) }))) (expression_statement "*(undefined4 *)(param_1 + 0x58) = uVar3;" (assignment_expression "*(undefined4 *)(param_1 + 0x58) = uVar3" (pointer_expression "*(undefined4 *)(param_1 + 0x58)" * (cast_expression "(undefined4 *)(param_1 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(code **)(*plVar4 + 0x20) == (code *)PTR_FUN_0043df18) {\n                    \n    FUN_0030f640(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40);\n  }\n  else {\n                    \n    (**(code **)(*plVar4 + 0x20))(&local_58,plVar4);\n  }" if (parenthesized_expression "(*(code **)(*plVar4 + 0x20) == (code *)PTR_FUN_0043df18)" ( (binary_expression "*(code **)(*plVar4 + 0x20) == (code *)PTR_FUN_0043df18" (pointer_expression "*(code **)(*plVar4 + 0x20)" * (cast_expression "(code **)(*plVar4 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x20)" ( (binary_expression "*plVar4 + 0x20" (pointer_expression "*plVar4" * identifier) + number_literal) )))) == (cast_expression "(code *)PTR_FUN_0043df18" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n                    \n    FUN_0030f640(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40);\n  }" { (expression_statement "FUN_0030f640(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40);" (call_expression "FUN_0030f640(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40)" identifier (argument_list "(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40)" ( (pointer_expression "&local_58" & identifier) , (pointer_expression "*(undefined8 *)(plVar4[2] + 0x10)" * (cast_expression "(undefined8 *)(plVar4[2] + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4[2] + 0x10)" ( (binary_expression "plVar4[2] + 0x10" (subscript_expression "plVar4[2]" identifier [ number_literal ]) + number_literal) )))) , identifier ))) ;) }) (else_clause "else {\n                    \n    (**(code **)(*plVar4 + 0x20))(&local_58,plVar4);\n  }" else (compound_statement "{\n                    \n    (**(code **)(*plVar4 + 0x20))(&local_58,plVar4);\n  }" { (expression_statement "(**(code **)(*plVar4 + 0x20))(&local_58,plVar4);" (call_expression "(**(code **)(*plVar4 + 0x20))(&local_58,plVar4)" (parenthesized_expression "(**(code **)(*plVar4 + 0x20))" ( (pointer_expression "**(code **)(*plVar4 + 0x20)" * (pointer_expression "*(code **)(*plVar4 + 0x20)" * (cast_expression "(code **)(*plVar4 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x20)" ( (binary_expression "*plVar4 + 0x20" (pointer_expression "*plVar4" * identifier) + number_literal) ))))) )) (argument_list "(&local_58,plVar4)" ( (pointer_expression "&local_58" & identifier) , identifier ))) ;) }))) (expression_statement "*(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(local_58 + -0x18);" (assignment_expression "*(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(local_58 + -0x18)" (pointer_expression "*(undefined8 *)(param_1 + 0x18)" * (cast_expression "(undefined8 *)(param_1 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(local_58 + -0x18)" * (cast_expression "(undefined8 *)(local_58 + -0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_58 + -0x18)" ( (binary_expression "local_58 + -0x18" identifier + number_literal) ))))) ;) (expression_statement "pcVar5 = (char *)thunk_FUN_002d94a0();" (assignment_expression "pcVar5 = (char *)thunk_FUN_002d94a0()" identifier = (cast_expression "(char *)thunk_FUN_002d94a0()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "thunk_FUN_002d94a0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "FUN_0030cdb0(&local_58,pcVar5,*(undefined8 *)(param_1 + 0x18),0);" (call_expression "FUN_0030cdb0(&local_58,pcVar5,*(undefined8 *)(param_1 + 0x18),0)" identifier (argument_list "(&local_58,pcVar5,*(undefined8 *)(param_1 + 0x18),0)" ( (pointer_expression "&local_58" & identifier) , identifier , (pointer_expression "*(undefined8 *)(param_1 + 0x18)" * (cast_expression "(undefined8 *)(param_1 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) , number_literal ))) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (if_statement "if (*(long *)(param_1 + 0x18) != 0) {\n    bVar1 = (byte)(*pcVar5 - 1U) < 0x7e;\n  }" if (parenthesized_expression "(*(long *)(param_1 + 0x18) != 0)" ( (binary_expression "*(long *)(param_1 + 0x18) != 0" (pointer_expression "*(long *)(param_1 + 0x18)" * (cast_expression "(long *)(param_1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    bVar1 = (byte)(*pcVar5 - 1U) < 0x7e;\n  }" { (expression_statement "bVar1 = (byte)(*pcVar5 - 1U) < 0x7e;" (assignment_expression "bVar1 = (byte)(*pcVar5 - 1U) < 0x7e" identifier = (binary_expression "(byte)(*pcVar5 - 1U) < 0x7e" (call_expression "(byte)(*pcVar5 - 1U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(*pcVar5 - 1U)" ( (binary_expression "*pcVar5 - 1U" (pointer_expression "*pcVar5" * identifier) - number_literal) ))) < number_literal)) ;) })) (expression_statement "*(bool *)(param_1 + 0x20) = bVar1;" (assignment_expression "*(bool *)(param_1 + 0x20) = bVar1" (pointer_expression "*(bool *)(param_1 + 0x20)" * (cast_expression "(bool *)(param_1 + 0x20)" ( (type_descriptor "bool *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(code **)(*plVar4 + 0x28) == (code *)PTR_FUN_0043db70) {\n                    \n    FUN_0030f640(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b);\n  }\n  else {\n                    \n    (**(code **)(*plVar4 + 0x28))(&local_50,plVar4);\n  }" if (parenthesized_expression "(*(code **)(*plVar4 + 0x28) == (code *)PTR_FUN_0043db70)" ( (binary_expression "*(code **)(*plVar4 + 0x28) == (code *)PTR_FUN_0043db70" (pointer_expression "*(code **)(*plVar4 + 0x28)" * (cast_expression "(code **)(*plVar4 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x28)" ( (binary_expression "*plVar4 + 0x28" (pointer_expression "*plVar4" * identifier) + number_literal) )))) == (cast_expression "(code *)PTR_FUN_0043db70" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n                    \n    FUN_0030f640(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b);\n  }" { (expression_statement "FUN_0030f640(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b);" (call_expression "FUN_0030f640(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b)" identifier (argument_list "(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b)" ( (pointer_expression "&local_50" & identifier) , (pointer_expression "*(undefined8 *)(plVar4[2] + 0x28)" * (cast_expression "(undefined8 *)(plVar4[2] + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4[2] + 0x28)" ( (binary_expression "plVar4[2] + 0x28" (subscript_expression "plVar4[2]" identifier [ number_literal ]) + number_literal) )))) , (pointer_expression "&local_5b" & identifier) ))) ;) }) (else_clause "else {\n                    \n    (**(code **)(*plVar4 + 0x28))(&local_50,plVar4);\n  }" else (compound_statement "{\n                    \n    (**(code **)(*plVar4 + 0x28))(&local_50,plVar4);\n  }" { (expression_statement "(**(code **)(*plVar4 + 0x28))(&local_50,plVar4);" (call_expression "(**(code **)(*plVar4 + 0x28))(&local_50,plVar4)" (parenthesized_expression "(**(code **)(*plVar4 + 0x28))" ( (pointer_expression "**(code **)(*plVar4 + 0x28)" * (pointer_expression "*(code **)(*plVar4 + 0x28)" * (cast_expression "(code **)(*plVar4 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x28)" ( (binary_expression "*plVar4 + 0x28" (pointer_expression "*plVar4" * identifier) + number_literal) ))))) )) (argument_list "(&local_50,plVar4)" ( (pointer_expression "&local_50" & identifier) , identifier ))) ;) }))) (expression_statement "*(undefined8 *)(param_1 + 0x30) = *(undefined8 *)(local_50 + -0x18);" (assignment_expression "*(undefined8 *)(param_1 + 0x30) = *(undefined8 *)(local_50 + -0x18)" (pointer_expression "*(undefined8 *)(param_1 + 0x30)" * (cast_expression "(undefined8 *)(param_1 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(local_50 + -0x18)" * (cast_expression "(undefined8 *)(local_50 + -0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + -0x18)" ( (binary_expression "local_50 + -0x18" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = thunk_FUN_002d94a0();" (assignment_expression "uVar6 = thunk_FUN_002d94a0()" identifier = (call_expression "thunk_FUN_002d94a0()" identifier (argument_list "()" ( )))) ;) (expression_statement "FUN_0030cdb0(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0);" (call_expression "FUN_0030cdb0(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0)" identifier (argument_list "(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0)" ( (pointer_expression "&local_50" & identifier) , identifier , (pointer_expression "*(undefined8 *)(param_1 + 0x30)" * (cast_expression "(undefined8 *)(param_1 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) , number_literal ))) ;) (if_statement "if (*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dfe8) {\n                    \n    FUN_0030f640(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a);\n  }\n  else {\n                    \n    (**(code **)(*plVar4 + 0x30))(&local_48,plVar4);\n  }" if (parenthesized_expression "(*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dfe8)" ( (binary_expression "*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dfe8" (pointer_expression "*(code **)(*plVar4 + 0x30)" * (cast_expression "(code **)(*plVar4 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x30)" ( (binary_expression "*plVar4 + 0x30" (pointer_expression "*plVar4" * identifier) + number_literal) )))) == (cast_expression "(code *)PTR_FUN_0043dfe8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n                    \n    FUN_0030f640(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a);\n  }" { (expression_statement "FUN_0030f640(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a);" (call_expression "FUN_0030f640(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a)" identifier (argument_list "(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a)" ( (pointer_expression "&local_48" & identifier) , (pointer_expression "*(undefined8 *)(plVar4[2] + 0x38)" * (cast_expression "(undefined8 *)(plVar4[2] + 0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4[2] + 0x38)" ( (binary_expression "plVar4[2] + 0x38" (subscript_expression "plVar4[2]" identifier [ number_literal ]) + number_literal) )))) , (pointer_expression "&local_5a" & identifier) ))) ;) }) (else_clause "else {\n                    \n    (**(code **)(*plVar4 + 0x30))(&local_48,plVar4);\n  }" else (compound_statement "{\n                    \n    (**(code **)(*plVar4 + 0x30))(&local_48,plVar4);\n  }" { (expression_statement "(**(code **)(*plVar4 + 0x30))(&local_48,plVar4);" (call_expression "(**(code **)(*plVar4 + 0x30))(&local_48,plVar4)" (parenthesized_expression "(**(code **)(*plVar4 + 0x30))" ( (pointer_expression "**(code **)(*plVar4 + 0x30)" * (pointer_expression "*(code **)(*plVar4 + 0x30)" * (cast_expression "(code **)(*plVar4 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x30)" ( (binary_expression "*plVar4 + 0x30" (pointer_expression "*plVar4" * identifier) + number_literal) ))))) )) (argument_list "(&local_48,plVar4)" ( (pointer_expression "&local_48" & identifier) , identifier ))) ;) }))) (expression_statement "*(undefined8 *)(param_1 + 0x40) = *(undefined8 *)(local_48 + -0x18);" (assignment_expression "*(undefined8 *)(param_1 + 0x40) = *(undefined8 *)(local_48 + -0x18)" (pointer_expression "*(undefined8 *)(param_1 + 0x40)" * (cast_expression "(undefined8 *)(param_1 + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(local_48 + -0x18)" * (cast_expression "(undefined8 *)(local_48 + -0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_48 + -0x18)" ( (binary_expression "local_48 + -0x18" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = thunk_FUN_002d94a0();" (assignment_expression "uVar7 = thunk_FUN_002d94a0()" identifier = (call_expression "thunk_FUN_002d94a0()" identifier (argument_list "()" ( )))) ;) (expression_statement "FUN_0030cdb0(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0);" (call_expression "FUN_0030cdb0(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0)" identifier (argument_list "(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0)" ( (pointer_expression "&local_48" & identifier) , identifier , (pointer_expression "*(undefined8 *)(param_1 + 0x40)" * (cast_expression "(undefined8 *)(param_1 + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) , number_literal ))) ;) (if_statement "if (*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043daf8) {\n                    \n    FUN_0030f640(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59);\n  }\n  else {\n                    \n    (**(code **)(*plVar4 + 0x38))(local_40,plVar4);\n  }" if (parenthesized_expression "(*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043daf8)" ( (binary_expression "*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043daf8" (pointer_expression "*(code **)(*plVar4 + 0x38)" * (cast_expression "(code **)(*plVar4 + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x38)" ( (binary_expression "*plVar4 + 0x38" (pointer_expression "*plVar4" * identifier) + number_literal) )))) == (cast_expression "(code *)PTR_FUN_0043daf8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n                    \n    FUN_0030f640(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59);\n  }" { (expression_statement "FUN_0030f640(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59);" (call_expression "FUN_0030f640(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59)" identifier (argument_list "(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59)" ( identifier , (pointer_expression "*(undefined8 *)(plVar4[2] + 0x48)" * (cast_expression "(undefined8 *)(plVar4[2] + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4[2] + 0x48)" ( (binary_expression "plVar4[2] + 0x48" (subscript_expression "plVar4[2]" identifier [ number_literal ]) + number_literal) )))) , (pointer_expression "&local_59" & identifier) ))) ;) }) (else_clause "else {\n                    \n    (**(code **)(*plVar4 + 0x38))(local_40,plVar4);\n  }" else (compound_statement "{\n                    \n    (**(code **)(*plVar4 + 0x38))(local_40,plVar4);\n  }" { (expression_statement "(**(code **)(*plVar4 + 0x38))(local_40,plVar4);" (call_expression "(**(code **)(*plVar4 + 0x38))(local_40,plVar4)" (parenthesized_expression "(**(code **)(*plVar4 + 0x38))" ( (pointer_expression "**(code **)(*plVar4 + 0x38)" * (pointer_expression "*(code **)(*plVar4 + 0x38)" * (cast_expression "(code **)(*plVar4 + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x38)" ( (binary_expression "*plVar4 + 0x38" (pointer_expression "*plVar4" * identifier) + number_literal) ))))) )) (argument_list "(local_40,plVar4)" ( identifier , identifier ))) ;) }))) (expression_statement "local_70 = local_40;" (assignment_expression "local_70 = local_40" identifier = identifier) ;) (expression_statement "*(undefined8 *)(param_1 + 0x50) = *(undefined8 *)(local_40[0] + -0x18);" (assignment_expression "*(undefined8 *)(param_1 + 0x50) = *(undefined8 *)(local_40[0] + -0x18)" (pointer_expression "*(undefined8 *)(param_1 + 0x50)" * (cast_expression "(undefined8 *)(param_1 + 0x50)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(local_40[0] + -0x18)" * (cast_expression "(undefined8 *)(local_40[0] + -0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40[0] + -0x18)" ( (binary_expression "local_40[0] + -0x18" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "uVar8 = thunk_FUN_002d94a0();" (assignment_expression "uVar8 = thunk_FUN_002d94a0()" identifier = (call_expression "thunk_FUN_002d94a0()" identifier (argument_list "()" ( )))) ;) (expression_statement "FUN_0030cdb0(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0);" (call_expression "FUN_0030cdb0(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0)" identifier (argument_list "(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0)" ( identifier , identifier , (pointer_expression "*(undefined8 *)(param_1 + 0x50)" * (cast_expression "(undefined8 *)(param_1 + 0x50)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) , number_literal ))) ;) (if_statement "if (*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043da60) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x5c);\n  }\n  else {\n                    \n    uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4);\n  }" if (parenthesized_expression "(*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043da60)" ( (binary_expression "*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043da60" (pointer_expression "*(code **)(*plVar4 + 0x48)" * (cast_expression "(code **)(*plVar4 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x48)" ( (binary_expression "*plVar4 + 0x48" (pointer_expression "*plVar4" * identifier) + number_literal) )))) == (cast_expression "(code *)PTR_FUN_0043da60" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x5c);\n  }" { (expression_statement "uVar3 = *(undefined4 *)(plVar4[2] + 0x5c);" (assignment_expression "uVar3 = *(undefined4 *)(plVar4[2] + 0x5c)" identifier = (pointer_expression "*(undefined4 *)(plVar4[2] + 0x5c)" * (cast_expression "(undefined4 *)(plVar4[2] + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4[2] + 0x5c)" ( (binary_expression "plVar4[2] + 0x5c" (subscript_expression "plVar4[2]" identifier [ number_literal ]) + number_literal) ))))) ;) }) (else_clause "else {\n                    \n    uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4);\n  }" else (compound_statement "{\n                    \n    uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4);\n  }" { (expression_statement "uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4);" (assignment_expression "uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4)" identifier = (call_expression "(**(code **)(*plVar4 + 0x48))(plVar4)" (parenthesized_expression "(**(code **)(*plVar4 + 0x48))" ( (pointer_expression "**(code **)(*plVar4 + 0x48)" * (pointer_expression "*(code **)(*plVar4 + 0x48)" * (cast_expression "(code **)(*plVar4 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x48)" ( (binary_expression "*plVar4 + 0x48" (pointer_expression "*plVar4" * identifier) + number_literal) ))))) )) (argument_list "(plVar4)" ( identifier )))) ;) }))) (expression_statement "*(undefined4 *)(param_1 + 0x5c) = uVar3;" (assignment_expression "*(undefined4 *)(param_1 + 0x5c) = uVar3" (pointer_expression "*(undefined4 *)(param_1 + 0x5c)" * (cast_expression "(undefined4 *)(param_1 + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(code **)(*plVar4 + 0x50) == (code *)PTR_FUN_0043dd00) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x60);\n  }\n  else {\n                    \n    uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4);\n  }" if (parenthesized_expression "(*(code **)(*plVar4 + 0x50) == (code *)PTR_FUN_0043dd00)" ( (binary_expression "*(code **)(*plVar4 + 0x50) == (code *)PTR_FUN_0043dd00" (pointer_expression "*(code **)(*plVar4 + 0x50)" * (cast_expression "(code **)(*plVar4 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x50)" ( (binary_expression "*plVar4 + 0x50" (pointer_expression "*plVar4" * identifier) + number_literal) )))) == (cast_expression "(code *)PTR_FUN_0043dd00" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x60);\n  }" { (expression_statement "uVar3 = *(undefined4 *)(plVar4[2] + 0x60);" (assignment_expression "uVar3 = *(undefined4 *)(plVar4[2] + 0x60)" identifier = (pointer_expression "*(undefined4 *)(plVar4[2] + 0x60)" * (cast_expression "(undefined4 *)(plVar4[2] + 0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4[2] + 0x60)" ( (binary_expression "plVar4[2] + 0x60" (subscript_expression "plVar4[2]" identifier [ number_literal ]) + number_literal) ))))) ;) }) (else_clause "else {\n                    \n    uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4);\n  }" else (compound_statement "{\n                    \n    uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4);\n  }" { (expression_statement "uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4);" (assignment_expression "uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4)" identifier = (call_expression "(**(code **)(*plVar4 + 0x50))(plVar4)" (parenthesized_expression "(**(code **)(*plVar4 + 0x50))" ( (pointer_expression "**(code **)(*plVar4 + 0x50)" * (pointer_expression "*(code **)(*plVar4 + 0x50)" * (cast_expression "(code **)(*plVar4 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar4 + 0x50)" ( (binary_expression "*plVar4 + 0x50" (pointer_expression "*plVar4" * identifier) + number_literal) ))))) )) (argument_list "(plVar4)" ( identifier )))) ;) }))) (expression_statement "*(undefined4 *)(param_1 + 0x60) = uVar3;" (assignment_expression "*(undefined4 *)(param_1 + 0x60) = uVar3" (pointer_expression "*(undefined4 *)(param_1 + 0x60)" * (cast_expression "(undefined4 *)(param_1 + 0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar9 = FUN_002ec670(param_2);" (assignment_expression "uVar9 = FUN_002ec670(param_2)" identifier = (call_expression "FUN_002ec670(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "FUN_002ea750(uVar9,PTR_DAT_0043e720,PTR_DAT_0043e720 + 0xb,param_1 + 100);" (call_expression "FUN_002ea750(uVar9,PTR_DAT_0043e720,PTR_DAT_0043e720 + 0xb,param_1 + 100)" identifier (argument_list "(uVar9,PTR_DAT_0043e720,PTR_DAT_0043e720 + 0xb,param_1 + 100)" ( identifier , identifier , (binary_expression "PTR_DAT_0043e720 + 0xb" identifier + number_literal) , (binary_expression "param_1 + 100" identifier + number_literal) ))) ;) (expression_statement "*(char **)(param_1 + 0x10) = pcVar5;" (assignment_expression "*(char **)(param_1 + 0x10) = pcVar5" (pointer_expression "*(char **)(param_1 + 0x10)" * (cast_expression "(char **)(param_1 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)(param_1 + 0x28) = uVar6;" (assignment_expression "*(undefined8 *)(param_1 + 0x28) = uVar6" (pointer_expression "*(undefined8 *)(param_1 + 0x28)" * (cast_expression "(undefined8 *)(param_1 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)(param_1 + 0x38) = uVar7;" (assignment_expression "*(undefined8 *)(param_1 + 0x38) = uVar7" (pointer_expression "*(undefined8 *)(param_1 + 0x38)" * (cast_expression "(undefined8 *)(param_1 + 0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)(param_1 + 0x48) = uVar8;" (assignment_expression "*(undefined8 *)(param_1 + 0x48) = uVar8" (pointer_expression "*(undefined8 *)(param_1 + 0x48)" * (cast_expression "(undefined8 *)(param_1 + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + 0x6f) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x6f) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x6f)" * (cast_expression "(undefined1 *)(param_1 + 0x6f)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6f)" ( (binary_expression "param_1 + 0x6f" identifier + number_literal) )))) = number_literal) ;) (if_statement "if ((undefined8 *)(local_40[0] + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_40[0] + -0x18),&local_59);\n  }" if (parenthesized_expression "((undefined8 *)(local_40[0] + -0x18) != &DAT_0044a540)" ( (binary_expression "(undefined8 *)(local_40[0] + -0x18) != &DAT_0044a540" (cast_expression "(undefined8 *)(local_40[0] + -0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40[0] + -0x18)" ( (binary_expression "local_40[0] + -0x18" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal) ))) != (pointer_expression "&DAT_0044a540" & identifier)) )) (compound_statement "{\n    FUN_002ea270((undefined8 *)(local_40[0] + -0x18),&local_59);\n  }" { (expression_statement "FUN_002ea270((undefined8 *)(local_40[0] + -0x18),&local_59);" (call_expression "FUN_002ea270((undefined8 *)(local_40[0] + -0x18),&local_59)" identifier (argument_list "((undefined8 *)(local_40[0] + -0x18),&local_59)" ( (cast_expression "(undefined8 *)(local_40[0] + -0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40[0] + -0x18)" ( (binary_expression "local_40[0] + -0x18" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal) ))) , (pointer_expression "&local_59" & identifier) ))) ;) })) (if_statement "if ((undefined8 *)(local_48 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_48 + -0x18),&local_59);\n  }" if (parenthesized_expression "((undefined8 *)(local_48 + -0x18) != &DAT_0044a540)" ( (binary_expression "(undefined8 *)(local_48 + -0x18) != &DAT_0044a540" (cast_expression "(undefined8 *)(local_48 + -0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_48 + -0x18)" ( (binary_expression "local_48 + -0x18" identifier + number_literal) ))) != (pointer_expression "&DAT_0044a540" & identifier)) )) (compound_statement "{\n    FUN_002ea270((undefined8 *)(local_48 + -0x18),&local_59);\n  }" { (expression_statement "FUN_002ea270((undefined8 *)(local_48 + -0x18),&local_59);" (call_expression "FUN_002ea270((undefined8 *)(local_48 + -0x18),&local_59)" identifier (argument_list "((undefined8 *)(local_48 + -0x18),&local_59)" ( (cast_expression "(undefined8 *)(local_48 + -0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_48 + -0x18)" ( (binary_expression "local_48 + -0x18" identifier + number_literal) ))) , (pointer_expression "&local_59" & identifier) ))) ;) })) (if_statement "if ((undefined8 *)(local_50 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_50 + -0x18),&local_59);\n  }" if (parenthesized_expression "((undefined8 *)(local_50 + -0x18) != &DAT_0044a540)" ( (binary_expression "(undefined8 *)(local_50 + -0x18) != &DAT_0044a540" (cast_expression "(undefined8 *)(local_50 + -0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + -0x18)" ( (binary_expression "local_50 + -0x18" identifier + number_literal) ))) != (pointer_expression "&DAT_0044a540" & identifier)) )) (compound_statement "{\n    FUN_002ea270((undefined8 *)(local_50 + -0x18),&local_59);\n  }" { (expression_statement "FUN_002ea270((undefined8 *)(local_50 + -0x18),&local_59);" (call_expression "FUN_002ea270((undefined8 *)(local_50 + -0x18),&local_59)" identifier (argument_list "((undefined8 *)(local_50 + -0x18),&local_59)" ( (cast_expression "(undefined8 *)(local_50 + -0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + -0x18)" ( (binary_expression "local_50 + -0x18" identifier + number_literal) ))) , (pointer_expression "&local_59" & identifier) ))) ;) })) (if_statement "if ((undefined8 *)(local_58 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_58 + -0x18),&local_59);\n  }" if (parenthesized_expression "((undefined8 *)(local_58 + -0x18) != &DAT_0044a540)" ( (binary_expression "(undefined8 *)(local_58 + -0x18) != &DAT_0044a540" (cast_expression "(undefined8 *)(local_58 + -0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_58 + -0x18)" ( (binary_expression "local_58 + -0x18" identifier + number_literal) ))) != (pointer_expression "&DAT_0044a540" & identifier)) )) (compound_statement "{\n    FUN_002ea270((undefined8 *)(local_58 + -0x18),&local_59);\n  }" { (expression_statement "FUN_002ea270((undefined8 *)(local_58 + -0x18),&local_59);" (call_expression "FUN_002ea270((undefined8 *)(local_58 + -0x18),&local_59)" identifier (argument_list "((undefined8 *)(local_58 + -0x18),&local_59)" ( (cast_expression "(undefined8 *)(local_58 + -0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_58 + -0x18)" ( (binary_expression "local_58 + -0x18" identifier + number_literal) ))) , (pointer_expression "&local_59" & identifier) ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( 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) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) , IDENT ))) ;) }) (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 ))) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT ))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * IDENT) - LIT) ))) < LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) , (pointer_expression & IDENT) ))) ;) }) (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 ))) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT ))) ;) (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) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) , (pointer_expression & IDENT) ))) ;) }) (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 ))) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT ))) ;) (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) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) , (pointer_expression & IDENT) ))) ;) }) (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 ( IDENT , IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT ))) ;) (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) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))) != (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))) , (pointer_expression & IDENT) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) != (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) , (pointer_expression & IDENT) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) != (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) , (pointer_expression & IDENT) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) != (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) , (pointer_expression & IDENT) ))) ;) })) (return_statement return ;) })))
(function_definition "void FUN_002ed890(long param_1,undefined8 param_2)\n\n{\n  bool bVar1;\n  undefined1 uVar2;\n  undefined4 uVar3;\n  long *plVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  undefined8 uVar8;\n  undefined8 uVar9;\n  long *local_70;\n  undefined1 local_5b;\n  undefined1 local_5a;\n  undefined1 local_59;\n  long local_58;\n  long local_50;\n  long local_48;\n  long local_40 [2];\n  \n  plVar4 = (long *)FUN_002ed840(param_2);\n  if (*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043db38) {\n    uVar2 = *(undefined1 *)(plVar4[2] + 0x21);\n  }\n  else {\n    uVar2 = (**(code **)(*plVar4 + 0x10))(plVar4);\n  }\n  *(undefined1 *)(param_1 + 0x21) = uVar2;\n  if (*(code **)(*plVar4 + 0x18) == (code *)PTR_FUN_0043dc00) {\n    uVar2 = *(undefined1 *)(plVar4[2] + 0x22);\n  }\n  else {\n    uVar2 = (**(code **)(*plVar4 + 0x18))(plVar4);\n  }\n  *(undefined1 *)(param_1 + 0x22) = uVar2;\n  if (*(code **)(*plVar4 + 0x40) == (code *)PTR_FUN_0043dbb0) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x58);\n  }\n  else {\n    uVar3 = (**(code **)(*plVar4 + 0x40))(plVar4);\n  }\n  *(undefined4 *)(param_1 + 0x58) = uVar3;\n  if (*(code **)(*plVar4 + 0x20) == (code *)PTR_FUN_0043df18) {\n                    \n    FUN_0030f640(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40);\n  }\n  else {\n                    \n    (**(code **)(*plVar4 + 0x20))(&local_58,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(local_58 + -0x18);\n                    \n  pcVar5 = (char *)thunk_FUN_002d94a0();\n                    \n  FUN_0030cdb0(&local_58,pcVar5,*(undefined8 *)(param_1 + 0x18),0);\n  bVar1 = false;\n  if (*(long *)(param_1 + 0x18) != 0) {\n    bVar1 = (byte)(*pcVar5 - 1U) < 0x7e;\n  }\n  *(bool *)(param_1 + 0x20) = bVar1;\n  if (*(code **)(*plVar4 + 0x28) == (code *)PTR_FUN_0043db70) {\n                    \n    FUN_0030f640(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b);\n  }\n  else {\n                    \n    (**(code **)(*plVar4 + 0x28))(&local_50,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x30) = *(undefined8 *)(local_50 + -0x18);\n                    \n  uVar6 = thunk_FUN_002d94a0();\n                    \n  FUN_0030cdb0(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0);\n  if (*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dfe8) {\n                    \n    FUN_0030f640(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a);\n  }\n  else {\n                    \n    (**(code **)(*plVar4 + 0x30))(&local_48,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x40) = *(undefined8 *)(local_48 + -0x18);\n                    \n  uVar7 = thunk_FUN_002d94a0();\n                    \n  FUN_0030cdb0(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0);\n  if (*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043daf8) {\n                    \n    FUN_0030f640(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59);\n  }\n  else {\n                    \n    (**(code **)(*plVar4 + 0x38))(local_40,plVar4);\n  }\n  local_70 = local_40;\n  *(undefined8 *)(param_1 + 0x50) = *(undefined8 *)(local_40[0] + -0x18);\n                    \n  uVar8 = thunk_FUN_002d94a0();\n                    \n  FUN_0030cdb0(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0);\n  if (*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043da60) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x5c);\n  }\n  else {\n                    \n    uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4);\n  }\n  *(undefined4 *)(param_1 + 0x5c) = uVar3;\n  if (*(code **)(*plVar4 + 0x50) == (code *)PTR_FUN_0043dd00) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x60);\n  }\n  else {\n                    \n    uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4);\n  }\n  *(undefined4 *)(param_1 + 0x60) = uVar3;\n  uVar9 = FUN_002ec670(param_2);\n  FUN_002ea750(uVar9,PTR_DAT_0043e720,PTR_DAT_0043e720 + 0xb,param_1 + 100);\n  *(char **)(param_1 + 0x10) = pcVar5;\n  *(undefined8 *)(param_1 + 0x28) = uVar6;\n  *(undefined8 *)(param_1 + 0x38) = uVar7;\n  *(undefined8 *)(param_1 + 0x48) = uVar8;\n  *(undefined1 *)(param_1 + 0x6f) = 1;\n  if ((undefined8 *)(local_40[0] + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_40[0] + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_48 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_48 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_50 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_50 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_58 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_58 + -0x18),&local_59);\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_002ed890(long param_1,undefined8 param_2)" (identifier "FUN_002ed890") (parameter_list "(long param_1,undefined8 param_2)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) () ")"))) (compound_statement "{\n  bool bVar1;\n  undefined1 uVar2;\n  undefined4 uVar3;\n  long *plVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  undefined8 uVar8;\n  undefined8 uVar9;\n  long *local_70;\n  undefined1 local_5b;\n  undefined1 local_5a;\n  undefined1 local_59;\n  long local_58;\n  long local_50;\n  long local_48;\n  long local_40 [2];\n  \n  plVar4 = (long *)FUN_002ed840(param_2);\n  if (*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043db38) {\n    uVar2 = *(undefined1 *)(plVar4[2] + 0x21);\n  }\n  else {\n    uVar2 = (**(code **)(*plVar4 + 0x10))(plVar4);\n  }\n  *(undefined1 *)(param_1 + 0x21) = uVar2;\n  if (*(code **)(*plVar4 + 0x18) == (code *)PTR_FUN_0043dc00) {\n    uVar2 = *(undefined1 *)(plVar4[2] + 0x22);\n  }\n  else {\n    uVar2 = (**(code **)(*plVar4 + 0x18))(plVar4);\n  }\n  *(undefined1 *)(param_1 + 0x22) = uVar2;\n  if (*(code **)(*plVar4 + 0x40) == (code *)PTR_FUN_0043dbb0) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x58);\n  }\n  else {\n    uVar3 = (**(code **)(*plVar4 + 0x40))(plVar4);\n  }\n  *(undefined4 *)(param_1 + 0x58) = uVar3;\n  if (*(code **)(*plVar4 + 0x20) == (code *)PTR_FUN_0043df18) {\n                    \n    FUN_0030f640(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40);\n  }\n  else {\n                    \n    (**(code **)(*plVar4 + 0x20))(&local_58,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(local_58 + -0x18);\n                    \n  pcVar5 = (char *)thunk_FUN_002d94a0();\n                    \n  FUN_0030cdb0(&local_58,pcVar5,*(undefined8 *)(param_1 + 0x18),0);\n  bVar1 = false;\n  if (*(long *)(param_1 + 0x18) != 0) {\n    bVar1 = (byte)(*pcVar5 - 1U) < 0x7e;\n  }\n  *(bool *)(param_1 + 0x20) = bVar1;\n  if (*(code **)(*plVar4 + 0x28) == (code *)PTR_FUN_0043db70) {\n                    \n    FUN_0030f640(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b);\n  }\n  else {\n                    \n    (**(code **)(*plVar4 + 0x28))(&local_50,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x30) = *(undefined8 *)(local_50 + -0x18);\n                    \n  uVar6 = thunk_FUN_002d94a0();\n                    \n  FUN_0030cdb0(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0);\n  if (*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dfe8) {\n                    \n    FUN_0030f640(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a);\n  }\n  else {\n                    \n    (**(code **)(*plVar4 + 0x30))(&local_48,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x40) = *(undefined8 *)(local_48 + -0x18);\n                    \n  uVar7 = thunk_FUN_002d94a0();\n                    \n  FUN_0030cdb0(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0);\n  if (*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043daf8) {\n                    \n    FUN_0030f640(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59);\n  }\n  else {\n                    \n    (**(code **)(*plVar4 + 0x38))(local_40,plVar4);\n  }\n  local_70 = local_40;\n  *(undefined8 *)(param_1 + 0x50) = *(undefined8 *)(local_40[0] + -0x18);\n                    \n  uVar8 = thunk_FUN_002d94a0();\n                    \n  FUN_0030cdb0(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0);\n  if (*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043da60) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x5c);\n  }\n  else {\n                    \n    uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4);\n  }\n  *(undefined4 *)(param_1 + 0x5c) = uVar3;\n  if (*(code **)(*plVar4 + 0x50) == (code *)PTR_FUN_0043dd00) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x60);\n  }\n  else {\n                    \n    uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4);\n  }\n  *(undefined4 *)(param_1 + 0x60) = uVar3;\n  uVar9 = FUN_002ec670(param_2);\n  FUN_002ea750(uVar9,PTR_DAT_0043e720,PTR_DAT_0043e720 + 0xb,param_1 + 100);\n  *(char **)(param_1 + 0x10) = pcVar5;\n  *(undefined8 *)(param_1 + 0x28) = uVar6;\n  *(undefined8 *)(param_1 + 0x38) = uVar7;\n  *(undefined8 *)(param_1 + 0x48) = uVar8;\n  *(undefined1 *)(param_1 + 0x6f) = 1;\n  if ((undefined8 *)(local_40[0] + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_40[0] + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_48 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_48 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_50 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_50 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_58 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_58 + -0x18),&local_59);\n  }\n  return;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "undefined1 uVar2;" (type_identifier "undefined1") (identifier "uVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "long *plVar4;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar4" (* "*") (identifier "plVar4")) (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "undefined8 uVar6;" (type_identifier "undefined8") (identifier "uVar6") (; ";")) (declaration "undefined8 uVar7;" (type_identifier "undefined8") (identifier "uVar7") (; ";")) (declaration "undefined8 uVar8;" (type_identifier "undefined8") (identifier "uVar8") (; ";")) (declaration "undefined8 uVar9;" (type_identifier "undefined8") (identifier "uVar9") (; ";")) (declaration "long *local_70;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*local_70" (* "*") (identifier "local_70")) (; ";")) (declaration "undefined1 local_5b;" (type_identifier "undefined1") (identifier "local_5b") (; ";")) (declaration "undefined1 local_5a;" (type_identifier "undefined1") (identifier "local_5a") (; ";")) (declaration "undefined1 local_59;" (type_identifier "undefined1") (identifier "local_59") (; ";")) (declaration "long local_58;" (sized_type_specifier "long" (long "long")) (identifier "local_58") (; ";")) (declaration "long local_50;" (sized_type_specifier "long" (long "long")) (identifier "local_50") (; ";")) (declaration "long local_48;" (sized_type_specifier "long" (long "long")) (identifier "local_48") (; ";")) (declaration "long local_40 [2];" (sized_type_specifier "long" (long "long")) (array_declarator "local_40 [2]" (identifier "local_40") ([ "[") (number_literal "2") (] "]")) (; ";")) (expression_statement "plVar4 = (long *)FUN_002ed840(param_2);" (assignment_expression "plVar4 = (long *)FUN_002ed840(param_2)" (identifier "plVar4") (= "=") (cast_expression "(long *)FUN_002ed840(param_2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002ed840(param_2)" (identifier "FUN_002ed840") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))))) (; ";")) (if_statement "if (*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043db38) {\n    uVar2 = *(undefined1 *)(plVar4[2] + 0x21);\n  }\n  else {\n    uVar2 = (**(code **)(*plVar4 + 0x10))(plVar4);\n  }" (if "if") (parenthesized_expression "(*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043db38)" (( "(") (binary_expression "*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043db38" (pointer_expression "*(code **)(*plVar4 + 0x10)" (* "*") (cast_expression "(code **)(*plVar4 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar4 + 0x10)" (( "(") (binary_expression "*plVar4 + 0x10" (pointer_expression "*plVar4" (* "*") (identifier "plVar4")) (+ "+") (number_literal "0x10")) () ")")))) (== "==") (cast_expression "(code *)PTR_FUN_0043db38" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_0043db38"))) () ")")) (compound_statement "{\n    uVar2 = *(undefined1 *)(plVar4[2] + 0x21);\n  }" ({ "{") (expression_statement "uVar2 = *(undefined1 *)(plVar4[2] + 0x21);" (assignment_expression "uVar2 = *(undefined1 *)(plVar4[2] + 0x21)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined1 *)(plVar4[2] + 0x21)" (* "*") (cast_expression "(undefined1 *)(plVar4[2] + 0x21)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar4[2] + 0x21)" (( "(") (binary_expression "plVar4[2] + 0x21" (subscript_expression "plVar4[2]" (identifier "plVar4") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "0x21")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    uVar2 = (**(code **)(*plVar4 + 0x10))(plVar4);\n  }" (else "else") (compound_statement "{\n    uVar2 = (**(code **)(*plVar4 + 0x10))(plVar4);\n  }" ({ "{") (expression_statement "uVar2 = (**(code **)(*plVar4 + 0x10))(plVar4);" (assignment_expression "uVar2 = (**(code **)(*plVar4 + 0x10))(plVar4)" (identifier "uVar2") (= "=") (call_expression "(**(code **)(*plVar4 + 0x10))(plVar4)" (parenthesized_expression "(**(code **)(*plVar4 + 0x10))" (( "(") (pointer_expression "**(code **)(*plVar4 + 0x10)" (* "*") (pointer_expression "*(code **)(*plVar4 + 0x10)" (* "*") (cast_expression "(code **)(*plVar4 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar4 + 0x10)" (( "(") (binary_expression "*plVar4 + 0x10" (pointer_expression "*plVar4" (* "*") (identifier "plVar4")) (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "(plVar4)" (( "(") (identifier "plVar4") () ")")))) (; ";")) (} "}")))) (expression_statement "*(undefined1 *)(param_1 + 0x21) = uVar2;" (assignment_expression "*(undefined1 *)(param_1 + 0x21) = uVar2" (pointer_expression "*(undefined1 *)(param_1 + 0x21)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x21)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x21)" (( "(") (binary_expression "param_1 + 0x21" (identifier "param_1") (+ "+") (number_literal "0x21")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (if_statement "if (*(code **)(*plVar4 + 0x18) == (code *)PTR_FUN_0043dc00) {\n    uVar2 = *(undefined1 *)(plVar4[2] + 0x22);\n  }\n  else {\n    uVar2 = (**(code **)(*plVar4 + 0x18))(plVar4);\n  }" (if "if") (parenthesized_expression "(*(code **)(*plVar4 + 0x18) == (code *)PTR_FUN_0043dc00)" (( "(") (binary_expression "*(code **)(*plVar4 + 0x18) == (code *)PTR_FUN_0043dc00" (pointer_expression "*(code **)(*plVar4 + 0x18)" (* "*") (cast_expression "(code **)(*plVar4 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar4 + 0x18)" (( "(") (binary_expression "*plVar4 + 0x18" (pointer_expression "*plVar4" (* "*") (identifier "plVar4")) (+ "+") (number_literal "0x18")) () ")")))) (== "==") (cast_expression "(code *)PTR_FUN_0043dc00" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_0043dc00"))) () ")")) (compound_statement "{\n    uVar2 = *(undefined1 *)(plVar4[2] + 0x22);\n  }" ({ "{") (expression_statement "uVar2 = *(undefined1 *)(plVar4[2] + 0x22);" (assignment_expression "uVar2 = *(undefined1 *)(plVar4[2] + 0x22)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined1 *)(plVar4[2] + 0x22)" (* "*") (cast_expression "(undefined1 *)(plVar4[2] + 0x22)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar4[2] + 0x22)" (( "(") (binary_expression "plVar4[2] + 0x22" (subscript_expression "plVar4[2]" (identifier "plVar4") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "0x22")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    uVar2 = (**(code **)(*plVar4 + 0x18))(plVar4);\n  }" (else "else") (compound_statement "{\n    uVar2 = (**(code **)(*plVar4 + 0x18))(plVar4);\n  }" ({ "{") (expression_statement "uVar2 = (**(code **)(*plVar4 + 0x18))(plVar4);" (assignment_expression "uVar2 = (**(code **)(*plVar4 + 0x18))(plVar4)" (identifier "uVar2") (= "=") (call_expression "(**(code **)(*plVar4 + 0x18))(plVar4)" (parenthesized_expression "(**(code **)(*plVar4 + 0x18))" (( "(") (pointer_expression "**(code **)(*plVar4 + 0x18)" (* "*") (pointer_expression "*(code **)(*plVar4 + 0x18)" (* "*") (cast_expression "(code **)(*plVar4 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar4 + 0x18)" (( "(") (binary_expression "*plVar4 + 0x18" (pointer_expression "*plVar4" (* "*") (identifier "plVar4")) (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (argument_list "(plVar4)" (( "(") (identifier "plVar4") () ")")))) (; ";")) (} "}")))) (expression_statement "*(undefined1 *)(param_1 + 0x22) = uVar2;" (assignment_expression "*(undefined1 *)(param_1 + 0x22) = uVar2" (pointer_expression "*(undefined1 *)(param_1 + 0x22)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x22)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x22)" (( "(") (binary_expression "param_1 + 0x22" (identifier "param_1") (+ "+") (number_literal "0x22")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (if_statement "if (*(code **)(*plVar4 + 0x40) == (code *)PTR_FUN_0043dbb0) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x58);\n  }\n  else {\n    uVar3 = (**(code **)(*plVar4 + 0x40))(plVar4);\n  }" (if "if") (parenthesized_expression "(*(code **)(*plVar4 + 0x40) == (code *)PTR_FUN_0043dbb0)" (( "(") (binary_expression "*(code **)(*plVar4 + 0x40) == (code *)PTR_FUN_0043dbb0" (pointer_expression "*(code **)(*plVar4 + 0x40)" (* "*") (cast_expression "(code **)(*plVar4 + 0x40)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar4 + 0x40)" (( "(") (binary_expression "*plVar4 + 0x40" (pointer_expression "*plVar4" (* "*") (identifier "plVar4")) (+ "+") (number_literal "0x40")) () ")")))) (== "==") (cast_expression "(code *)PTR_FUN_0043dbb0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_0043dbb0"))) () ")")) (compound_statement "{\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x58);\n  }" ({ "{") (expression_statement "uVar3 = *(undefined4 *)(plVar4[2] + 0x58);" (assignment_expression "uVar3 = *(undefined4 *)(plVar4[2] + 0x58)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined4 *)(plVar4[2] + 0x58)" (* "*") (cast_expression "(undefined4 *)(plVar4[2] + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar4[2] + 0x58)" (( "(") (binary_expression "plVar4[2] + 0x58" (subscript_expression "plVar4[2]" (identifier "plVar4") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    uVar3 = (**(code **)(*plVar4 + 0x40))(plVar4);\n  }" (else "else") (compound_statement "{\n    uVar3 = (**(code **)(*plVar4 + 0x40))(plVar4);\n  }" ({ "{") (expression_statement "uVar3 = (**(code **)(*plVar4 + 0x40))(plVar4);" (assignment_expression "uVar3 = (**(code **)(*plVar4 + 0x40))(plVar4)" (identifier "uVar3") (= "=") (call_expression "(**(code **)(*plVar4 + 0x40))(plVar4)" (parenthesized_expression "(**(code **)(*plVar4 + 0x40))" (( "(") (pointer_expression "**(code **)(*plVar4 + 0x40)" (* "*") (pointer_expression "*(code **)(*plVar4 + 0x40)" (* "*") (cast_expression "(code **)(*plVar4 + 0x40)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar4 + 0x40)" (( "(") (binary_expression "*plVar4 + 0x40" (pointer_expression "*plVar4" (* "*") (identifier "plVar4")) (+ "+") (number_literal "0x40")) () ")"))))) () ")")) (argument_list "(plVar4)" (( "(") (identifier "plVar4") () ")")))) (; ";")) (} "}")))) (expression_statement "*(undefined4 *)(param_1 + 0x58) = uVar3;" (assignment_expression "*(undefined4 *)(param_1 + 0x58) = uVar3" (pointer_expression "*(undefined4 *)(param_1 + 0x58)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x58)" (( "(") (binary_expression "param_1 + 0x58" (identifier "param_1") (+ "+") (number_literal "0x58")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (if_statement "if (*(code **)(*plVar4 + 0x20) == (code *)PTR_FUN_0043df18) {\n                    \n    FUN_0030f640(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40);\n  }\n  else {\n                    \n    (**(code **)(*plVar4 + 0x20))(&local_58,plVar4);\n  }" (if "if") (parenthesized_expression "(*(code **)(*plVar4 + 0x20) == (code *)PTR_FUN_0043df18)" (( "(") (binary_expression "*(code **)(*plVar4 + 0x20) == (code *)PTR_FUN_0043df18" (pointer_expression "*(code **)(*plVar4 + 0x20)" (* "*") (cast_expression "(code **)(*plVar4 + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar4 + 0x20)" (( "(") (binary_expression "*plVar4 + 0x20" (pointer_expression "*plVar4" (* "*") (identifier "plVar4")) (+ "+") (number_literal "0x20")) () ")")))) (== "==") (cast_expression "(code *)PTR_FUN_0043df18" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_0043df18"))) () ")")) (compound_statement "{\n                    \n    FUN_0030f640(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40);\n  }" ({ "{") (expression_statement "FUN_0030f640(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40);" (call_expression "FUN_0030f640(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40)" (identifier "FUN_0030f640") (argument_list "(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (pointer_expression "*(undefined8 *)(plVar4[2] + 0x10)" (* "*") (cast_expression "(undefined8 *)(plVar4[2] + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar4[2] + 0x10)" (( "(") (binary_expression "plVar4[2] + 0x10" (subscript_expression "plVar4[2]" (identifier "plVar4") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "0x10")) () ")")))) (, ",") (identifier "local_40") () ")"))) (; ";")) (} "}")) (else_clause "else {\n                    \n    (**(code **)(*plVar4 + 0x20))(&local_58,plVar4);\n  }" (else "else") (compound_statement "{\n                    \n    (**(code **)(*plVar4 + 0x20))(&local_58,plVar4);\n  }" ({ "{") (expression_statement "(**(code **)(*plVar4 + 0x20))(&local_58,plVar4);" (call_expression "(**(code **)(*plVar4 + 0x20))(&local_58,plVar4)" (parenthesized_expression "(**(code **)(*plVar4 + 0x20))" (( "(") (pointer_expression "**(code **)(*plVar4 + 0x20)" (* "*") (pointer_expression "*(code **)(*plVar4 + 0x20)" (* "*") (cast_expression "(code **)(*plVar4 + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar4 + 0x20)" (( "(") (binary_expression "*plVar4 + 0x20" (pointer_expression "*plVar4" (* "*") (identifier "plVar4")) (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (argument_list "(&local_58,plVar4)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (identifier "plVar4") () ")"))) (; ";")) (} "}")))) (expression_statement "*(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(local_58 + -0x18);" (assignment_expression "*(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(local_58 + -0x18)" (pointer_expression "*(undefined8 *)(param_1 + 0x18)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (pointer_expression "*(undefined8 *)(local_58 + -0x18)" (* "*") (cast_expression "(undefined8 *)(local_58 + -0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_58 + -0x18)" (( "(") (binary_expression "local_58 + -0x18" (identifier "local_58") (+ "+") (number_literal "-0x18")) () ")"))))) (; ";")) (expression_statement "pcVar5 = (char *)thunk_FUN_002d94a0();" (assignment_expression "pcVar5 = (char *)thunk_FUN_002d94a0()" (identifier "pcVar5") (= "=") (cast_expression "(char *)thunk_FUN_002d94a0()" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "thunk_FUN_002d94a0()" (identifier "thunk_FUN_002d94a0") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "FUN_0030cdb0(&local_58,pcVar5,*(undefined8 *)(param_1 + 0x18),0);" (call_expression "FUN_0030cdb0(&local_58,pcVar5,*(undefined8 *)(param_1 + 0x18),0)" (identifier "FUN_0030cdb0") (argument_list "(&local_58,pcVar5,*(undefined8 *)(param_1 + 0x18),0)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (identifier "pcVar5") (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x18)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" (identifier "bVar1") (= "=") (false "false")) (; ";")) (if_statement "if (*(long *)(param_1 + 0x18) != 0) {\n    bVar1 = (byte)(*pcVar5 - 1U) < 0x7e;\n  }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 0x18) != 0)" (( "(") (binary_expression "*(long *)(param_1 + 0x18) != 0" (pointer_expression "*(long *)(param_1 + 0x18)" (* "*") (cast_expression "(long *)(param_1 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    bVar1 = (byte)(*pcVar5 - 1U) < 0x7e;\n  }" ({ "{") (expression_statement "bVar1 = (byte)(*pcVar5 - 1U) < 0x7e;" (assignment_expression "bVar1 = (byte)(*pcVar5 - 1U) < 0x7e" (identifier "bVar1") (= "=") (binary_expression "(byte)(*pcVar5 - 1U) < 0x7e" (call_expression "(byte)(*pcVar5 - 1U)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(*pcVar5 - 1U)" (( "(") (binary_expression "*pcVar5 - 1U" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (- "-") (number_literal "1U")) () ")"))) (< "<") (number_literal "0x7e"))) (; ";")) (} "}"))) (expression_statement "*(bool *)(param_1 + 0x20) = bVar1;" (assignment_expression "*(bool *)(param_1 + 0x20) = bVar1" (pointer_expression "*(bool *)(param_1 + 0x20)" (* "*") (cast_expression "(bool *)(param_1 + 0x20)" (( "(") (type_descriptor "bool *" (primitive_type "bool") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (identifier "bVar1")) (; ";")) (if_statement "if (*(code **)(*plVar4 + 0x28) == (code *)PTR_FUN_0043db70) {\n                    \n    FUN_0030f640(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b);\n  }\n  else {\n                    \n    (**(code **)(*plVar4 + 0x28))(&local_50,plVar4);\n  }" (if "if") (parenthesized_expression "(*(code **)(*plVar4 + 0x28) == (code *)PTR_FUN_0043db70)" (( "(") (binary_expression "*(code **)(*plVar4 + 0x28) == (code *)PTR_FUN_0043db70" (pointer_expression "*(code **)(*plVar4 + 0x28)" (* "*") (cast_expression "(code **)(*plVar4 + 0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar4 + 0x28)" (( "(") (binary_expression "*plVar4 + 0x28" (pointer_expression "*plVar4" (* "*") (identifier "plVar4")) (+ "+") (number_literal "0x28")) () ")")))) (== "==") (cast_expression "(code *)PTR_FUN_0043db70" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_0043db70"))) () ")")) (compound_statement "{\n                    \n    FUN_0030f640(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b);\n  }" ({ "{") (expression_statement "FUN_0030f640(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b);" (call_expression "FUN_0030f640(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b)" (identifier "FUN_0030f640") (argument_list "(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b)" (( "(") (pointer_expression "&local_50" (& "&") (identifier "local_50")) (, ",") (pointer_expression "*(undefined8 *)(plVar4[2] + 0x28)" (* "*") (cast_expression "(undefined8 *)(plVar4[2] + 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar4[2] + 0x28)" (( "(") (binary_expression "plVar4[2] + 0x28" (subscript_expression "plVar4[2]" (identifier "plVar4") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "0x28")) () ")")))) (, ",") (pointer_expression "&local_5b" (& "&") (identifier "local_5b")) () ")"))) (; ";")) (} "}")) (else_clause "else {\n                    \n    (**(code **)(*plVar4 + 0x28))(&local_50,plVar4);\n  }" (else "else") (compound_statement "{\n                    \n    (**(code **)(*plVar4 + 0x28))(&local_50,plVar4);\n  }" ({ "{") (expression_statement "(**(code **)(*plVar4 + 0x28))(&local_50,plVar4);" (call_expression "(**(code **)(*plVar4 + 0x28))(&local_50,plVar4)" (parenthesized_expression "(**(code **)(*plVar4 + 0x28))" (( "(") (pointer_expression "**(code **)(*plVar4 + 0x28)" (* "*") (pointer_expression "*(code **)(*plVar4 + 0x28)" (* "*") (cast_expression "(code **)(*plVar4 + 0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar4 + 0x28)" (( "(") (binary_expression "*plVar4 + 0x28" (pointer_expression "*plVar4" (* "*") (identifier "plVar4")) (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (argument_list "(&local_50,plVar4)" (( "(") (pointer_expression "&local_50" (& "&") (identifier "local_50")) (, ",") (identifier "plVar4") () ")"))) (; ";")) (} "}")))) (expression_statement "*(undefined8 *)(param_1 + 0x30) = *(undefined8 *)(local_50 + -0x18);" (assignment_expression "*(undefined8 *)(param_1 + 0x30) = *(undefined8 *)(local_50 + -0x18)" (pointer_expression "*(undefined8 *)(param_1 + 0x30)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x30)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (pointer_expression "*(undefined8 *)(local_50 + -0x18)" (* "*") (cast_expression "(undefined8 *)(local_50 + -0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50 + -0x18)" (( "(") (binary_expression "local_50 + -0x18" (identifier "local_50") (+ "+") (number_literal "-0x18")) () ")"))))) (; ";")) (expression_statement "uVar6 = thunk_FUN_002d94a0();" (assignment_expression "uVar6 = thunk_FUN_002d94a0()" (identifier "uVar6") (= "=") (call_expression "thunk_FUN_002d94a0()" (identifier "thunk_FUN_002d94a0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "FUN_0030cdb0(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0);" (call_expression "FUN_0030cdb0(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0)" (identifier "FUN_0030cdb0") (argument_list "(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0)" (( "(") (pointer_expression "&local_50" (& "&") (identifier "local_50")) (, ",") (identifier "uVar6") (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x30)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x30)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) (, ",") (number_literal "0") () ")"))) (; ";")) (if_statement "if (*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dfe8) {\n                    \n    FUN_0030f640(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a);\n  }\n  else {\n                    \n    (**(code **)(*plVar4 + 0x30))(&local_48,plVar4);\n  }" (if "if") (parenthesized_expression "(*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dfe8)" (( "(") (binary_expression "*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dfe8" (pointer_expression "*(code **)(*plVar4 + 0x30)" (* "*") (cast_expression "(code **)(*plVar4 + 0x30)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar4 + 0x30)" (( "(") (binary_expression "*plVar4 + 0x30" (pointer_expression "*plVar4" (* "*") (identifier "plVar4")) (+ "+") (number_literal "0x30")) () ")")))) (== "==") (cast_expression "(code *)PTR_FUN_0043dfe8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_0043dfe8"))) () ")")) (compound_statement "{\n                    \n    FUN_0030f640(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a);\n  }" ({ "{") (expression_statement "FUN_0030f640(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a);" (call_expression "FUN_0030f640(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a)" (identifier "FUN_0030f640") (argument_list "(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a)" (( "(") (pointer_expression "&local_48" (& "&") (identifier "local_48")) (, ",") (pointer_expression "*(undefined8 *)(plVar4[2] + 0x38)" (* "*") (cast_expression "(undefined8 *)(plVar4[2] + 0x38)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar4[2] + 0x38)" (( "(") (binary_expression "plVar4[2] + 0x38" (subscript_expression "plVar4[2]" (identifier "plVar4") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "0x38")) () ")")))) (, ",") (pointer_expression "&local_5a" (& "&") (identifier "local_5a")) () ")"))) (; ";")) (} "}")) (else_clause "else {\n                    \n    (**(code **)(*plVar4 + 0x30))(&local_48,plVar4);\n  }" (else "else") (compound_statement "{\n                    \n    (**(code **)(*plVar4 + 0x30))(&local_48,plVar4);\n  }" ({ "{") (expression_statement "(**(code **)(*plVar4 + 0x30))(&local_48,plVar4);" (call_expression "(**(code **)(*plVar4 + 0x30))(&local_48,plVar4)" (parenthesized_expression "(**(code **)(*plVar4 + 0x30))" (( "(") (pointer_expression "**(code **)(*plVar4 + 0x30)" (* "*") (pointer_expression "*(code **)(*plVar4 + 0x30)" (* "*") (cast_expression "(code **)(*plVar4 + 0x30)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar4 + 0x30)" (( "(") (binary_expression "*plVar4 + 0x30" (pointer_expression "*plVar4" (* "*") (identifier "plVar4")) (+ "+") (number_literal "0x30")) () ")"))))) () ")")) (argument_list "(&local_48,plVar4)" (( "(") (pointer_expression "&local_48" (& "&") (identifier "local_48")) (, ",") (identifier "plVar4") () ")"))) (; ";")) (} "}")))) (expression_statement "*(undefined8 *)(param_1 + 0x40) = *(undefined8 *)(local_48 + -0x18);" (assignment_expression "*(undefined8 *)(param_1 + 0x40) = *(undefined8 *)(local_48 + -0x18)" (pointer_expression "*(undefined8 *)(param_1 + 0x40)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x40)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (pointer_expression "*(undefined8 *)(local_48 + -0x18)" (* "*") (cast_expression "(undefined8 *)(local_48 + -0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_48 + -0x18)" (( "(") (binary_expression "local_48 + -0x18" (identifier "local_48") (+ "+") (number_literal "-0x18")) () ")"))))) (; ";")) (expression_statement "uVar7 = thunk_FUN_002d94a0();" (assignment_expression "uVar7 = thunk_FUN_002d94a0()" (identifier "uVar7") (= "=") (call_expression "thunk_FUN_002d94a0()" (identifier "thunk_FUN_002d94a0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "FUN_0030cdb0(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0);" (call_expression "FUN_0030cdb0(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0)" (identifier "FUN_0030cdb0") (argument_list "(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0)" (( "(") (pointer_expression "&local_48" (& "&") (identifier "local_48")) (, ",") (identifier "uVar7") (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x40)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x40)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (, ",") (number_literal "0") () ")"))) (; ";")) (if_statement "if (*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043daf8) {\n                    \n    FUN_0030f640(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59);\n  }\n  else {\n                    \n    (**(code **)(*plVar4 + 0x38))(local_40,plVar4);\n  }" (if "if") (parenthesized_expression "(*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043daf8)" (( "(") (binary_expression "*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043daf8" (pointer_expression "*(code **)(*plVar4 + 0x38)" (* "*") (cast_expression "(code **)(*plVar4 + 0x38)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar4 + 0x38)" (( "(") (binary_expression "*plVar4 + 0x38" (pointer_expression "*plVar4" (* "*") (identifier "plVar4")) (+ "+") (number_literal "0x38")) () ")")))) (== "==") (cast_expression "(code *)PTR_FUN_0043daf8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_0043daf8"))) () ")")) (compound_statement "{\n                    \n    FUN_0030f640(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59);\n  }" ({ "{") (expression_statement "FUN_0030f640(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59);" (call_expression "FUN_0030f640(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59)" (identifier "FUN_0030f640") (argument_list "(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59)" (( "(") (identifier "local_40") (, ",") (pointer_expression "*(undefined8 *)(plVar4[2] + 0x48)" (* "*") (cast_expression "(undefined8 *)(plVar4[2] + 0x48)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar4[2] + 0x48)" (( "(") (binary_expression "plVar4[2] + 0x48" (subscript_expression "plVar4[2]" (identifier "plVar4") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "0x48")) () ")")))) (, ",") (pointer_expression "&local_59" (& "&") (identifier "local_59")) () ")"))) (; ";")) (} "}")) (else_clause "else {\n                    \n    (**(code **)(*plVar4 + 0x38))(local_40,plVar4);\n  }" (else "else") (compound_statement "{\n                    \n    (**(code **)(*plVar4 + 0x38))(local_40,plVar4);\n  }" ({ "{") (expression_statement "(**(code **)(*plVar4 + 0x38))(local_40,plVar4);" (call_expression "(**(code **)(*plVar4 + 0x38))(local_40,plVar4)" (parenthesized_expression "(**(code **)(*plVar4 + 0x38))" (( "(") (pointer_expression "**(code **)(*plVar4 + 0x38)" (* "*") (pointer_expression "*(code **)(*plVar4 + 0x38)" (* "*") (cast_expression "(code **)(*plVar4 + 0x38)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar4 + 0x38)" (( "(") (binary_expression "*plVar4 + 0x38" (pointer_expression "*plVar4" (* "*") (identifier "plVar4")) (+ "+") (number_literal "0x38")) () ")"))))) () ")")) (argument_list "(local_40,plVar4)" (( "(") (identifier "local_40") (, ",") (identifier "plVar4") () ")"))) (; ";")) (} "}")))) (expression_statement "local_70 = local_40;" (assignment_expression "local_70 = local_40" (identifier "local_70") (= "=") (identifier "local_40")) (; ";")) (expression_statement "*(undefined8 *)(param_1 + 0x50) = *(undefined8 *)(local_40[0] + -0x18);" (assignment_expression "*(undefined8 *)(param_1 + 0x50) = *(undefined8 *)(local_40[0] + -0x18)" (pointer_expression "*(undefined8 *)(param_1 + 0x50)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x50)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")")))) (= "=") (pointer_expression "*(undefined8 *)(local_40[0] + -0x18)" (* "*") (cast_expression "(undefined8 *)(local_40[0] + -0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40[0] + -0x18)" (( "(") (binary_expression "local_40[0] + -0x18" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "-0x18")) () ")"))))) (; ";")) (expression_statement "uVar8 = thunk_FUN_002d94a0();" (assignment_expression "uVar8 = thunk_FUN_002d94a0()" (identifier "uVar8") (= "=") (call_expression "thunk_FUN_002d94a0()" (identifier "thunk_FUN_002d94a0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "FUN_0030cdb0(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0);" (call_expression "FUN_0030cdb0(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0)" (identifier "FUN_0030cdb0") (argument_list "(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0)" (( "(") (identifier "local_70") (, ",") (identifier "uVar8") (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x50)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x50)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")")))) (, ",") (number_literal "0") () ")"))) (; ";")) (if_statement "if (*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043da60) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x5c);\n  }\n  else {\n                    \n    uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4);\n  }" (if "if") (parenthesized_expression "(*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043da60)" (( "(") (binary_expression "*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043da60" (pointer_expression "*(code **)(*plVar4 + 0x48)" (* "*") (cast_expression "(code **)(*plVar4 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar4 + 0x48)" (( "(") (binary_expression "*plVar4 + 0x48" (pointer_expression "*plVar4" (* "*") (identifier "plVar4")) (+ "+") (number_literal "0x48")) () ")")))) (== "==") (cast_expression "(code *)PTR_FUN_0043da60" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_0043da60"))) () ")")) (compound_statement "{\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x5c);\n  }" ({ "{") (expression_statement "uVar3 = *(undefined4 *)(plVar4[2] + 0x5c);" (assignment_expression "uVar3 = *(undefined4 *)(plVar4[2] + 0x5c)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined4 *)(plVar4[2] + 0x5c)" (* "*") (cast_expression "(undefined4 *)(plVar4[2] + 0x5c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar4[2] + 0x5c)" (( "(") (binary_expression "plVar4[2] + 0x5c" (subscript_expression "plVar4[2]" (identifier "plVar4") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "0x5c")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n                    \n    uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4);\n  }" (else "else") (compound_statement "{\n                    \n    uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4);\n  }" ({ "{") (expression_statement "uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4);" (assignment_expression "uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4)" (identifier "uVar3") (= "=") (call_expression "(**(code **)(*plVar4 + 0x48))(plVar4)" (parenthesized_expression "(**(code **)(*plVar4 + 0x48))" (( "(") (pointer_expression "**(code **)(*plVar4 + 0x48)" (* "*") (pointer_expression "*(code **)(*plVar4 + 0x48)" (* "*") (cast_expression "(code **)(*plVar4 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar4 + 0x48)" (( "(") (binary_expression "*plVar4 + 0x48" (pointer_expression "*plVar4" (* "*") (identifier "plVar4")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "(plVar4)" (( "(") (identifier "plVar4") () ")")))) (; ";")) (} "}")))) (expression_statement "*(undefined4 *)(param_1 + 0x5c) = uVar3;" (assignment_expression "*(undefined4 *)(param_1 + 0x5c) = uVar3" (pointer_expression "*(undefined4 *)(param_1 + 0x5c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x5c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x5c)" (( "(") (binary_expression "param_1 + 0x5c" (identifier "param_1") (+ "+") (number_literal "0x5c")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (if_statement "if (*(code **)(*plVar4 + 0x50) == (code *)PTR_FUN_0043dd00) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x60);\n  }\n  else {\n                    \n    uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4);\n  }" (if "if") (parenthesized_expression "(*(code **)(*plVar4 + 0x50) == (code *)PTR_FUN_0043dd00)" (( "(") (binary_expression "*(code **)(*plVar4 + 0x50) == (code *)PTR_FUN_0043dd00" (pointer_expression "*(code **)(*plVar4 + 0x50)" (* "*") (cast_expression "(code **)(*plVar4 + 0x50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar4 + 0x50)" (( "(") (binary_expression "*plVar4 + 0x50" (pointer_expression "*plVar4" (* "*") (identifier "plVar4")) (+ "+") (number_literal "0x50")) () ")")))) (== "==") (cast_expression "(code *)PTR_FUN_0043dd00" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_0043dd00"))) () ")")) (compound_statement "{\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x60);\n  }" ({ "{") (expression_statement "uVar3 = *(undefined4 *)(plVar4[2] + 0x60);" (assignment_expression "uVar3 = *(undefined4 *)(plVar4[2] + 0x60)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined4 *)(plVar4[2] + 0x60)" (* "*") (cast_expression "(undefined4 *)(plVar4[2] + 0x60)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar4[2] + 0x60)" (( "(") (binary_expression "plVar4[2] + 0x60" (subscript_expression "plVar4[2]" (identifier "plVar4") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "0x60")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n                    \n    uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4);\n  }" (else "else") (compound_statement "{\n                    \n    uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4);\n  }" ({ "{") (expression_statement "uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4);" (assignment_expression "uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4)" (identifier "uVar3") (= "=") (call_expression "(**(code **)(*plVar4 + 0x50))(plVar4)" (parenthesized_expression "(**(code **)(*plVar4 + 0x50))" (( "(") (pointer_expression "**(code **)(*plVar4 + 0x50)" (* "*") (pointer_expression "*(code **)(*plVar4 + 0x50)" (* "*") (cast_expression "(code **)(*plVar4 + 0x50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar4 + 0x50)" (( "(") (binary_expression "*plVar4 + 0x50" (pointer_expression "*plVar4" (* "*") (identifier "plVar4")) (+ "+") (number_literal "0x50")) () ")"))))) () ")")) (argument_list "(plVar4)" (( "(") (identifier "plVar4") () ")")))) (; ";")) (} "}")))) (expression_statement "*(undefined4 *)(param_1 + 0x60) = uVar3;" (assignment_expression "*(undefined4 *)(param_1 + 0x60) = uVar3" (pointer_expression "*(undefined4 *)(param_1 + 0x60)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x60)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "uVar9 = FUN_002ec670(param_2);" (assignment_expression "uVar9 = FUN_002ec670(param_2)" (identifier "uVar9") (= "=") (call_expression "FUN_002ec670(param_2)" (identifier "FUN_002ec670") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "FUN_002ea750(uVar9,PTR_DAT_0043e720,PTR_DAT_0043e720 + 0xb,param_1 + 100);" (call_expression "FUN_002ea750(uVar9,PTR_DAT_0043e720,PTR_DAT_0043e720 + 0xb,param_1 + 100)" (identifier "FUN_002ea750") (argument_list "(uVar9,PTR_DAT_0043e720,PTR_DAT_0043e720 + 0xb,param_1 + 100)" (( "(") (identifier "uVar9") (, ",") (identifier "PTR_DAT_0043e720") (, ",") (binary_expression "PTR_DAT_0043e720 + 0xb" (identifier "PTR_DAT_0043e720") (+ "+") (number_literal "0xb")) (, ",") (binary_expression "param_1 + 100" (identifier "param_1") (+ "+") (number_literal "100")) () ")"))) (; ";")) (expression_statement "*(char **)(param_1 + 0x10) = pcVar5;" (assignment_expression "*(char **)(param_1 + 0x10) = pcVar5" (pointer_expression "*(char **)(param_1 + 0x10)" (* "*") (cast_expression "(char **)(param_1 + 0x10)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "pcVar5")) (; ";")) (expression_statement "*(undefined8 *)(param_1 + 0x28) = uVar6;" (assignment_expression "*(undefined8 *)(param_1 + 0x28) = uVar6" (pointer_expression "*(undefined8 *)(param_1 + 0x28)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "*(undefined8 *)(param_1 + 0x38) = uVar7;" (assignment_expression "*(undefined8 *)(param_1 + 0x38) = uVar7" (pointer_expression "*(undefined8 *)(param_1 + 0x38)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x38)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "*(undefined8 *)(param_1 + 0x48) = uVar8;" (assignment_expression "*(undefined8 *)(param_1 + 0x48) = uVar8" (pointer_expression "*(undefined8 *)(param_1 + 0x48)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x48)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0x6f) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x6f) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x6f)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x6f)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x6f)" (( "(") (binary_expression "param_1 + 0x6f" (identifier "param_1") (+ "+") (number_literal "0x6f")) () ")")))) (= "=") (number_literal "1")) (; ";")) (if_statement "if ((undefined8 *)(local_40[0] + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_40[0] + -0x18),&local_59);\n  }" (if "if") (parenthesized_expression "((undefined8 *)(local_40[0] + -0x18) != &DAT_0044a540)" (( "(") (binary_expression "(undefined8 *)(local_40[0] + -0x18) != &DAT_0044a540" (cast_expression "(undefined8 *)(local_40[0] + -0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40[0] + -0x18)" (( "(") (binary_expression "local_40[0] + -0x18" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "-0x18")) () ")"))) (!= "!=") (pointer_expression "&DAT_0044a540" (& "&") (identifier "DAT_0044a540"))) () ")")) (compound_statement "{\n    FUN_002ea270((undefined8 *)(local_40[0] + -0x18),&local_59);\n  }" ({ "{") (expression_statement "FUN_002ea270((undefined8 *)(local_40[0] + -0x18),&local_59);" (call_expression "FUN_002ea270((undefined8 *)(local_40[0] + -0x18),&local_59)" (identifier "FUN_002ea270") (argument_list "((undefined8 *)(local_40[0] + -0x18),&local_59)" (( "(") (cast_expression "(undefined8 *)(local_40[0] + -0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40[0] + -0x18)" (( "(") (binary_expression "local_40[0] + -0x18" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "-0x18")) () ")"))) (, ",") (pointer_expression "&local_59" (& "&") (identifier "local_59")) () ")"))) (; ";")) (} "}"))) (if_statement "if ((undefined8 *)(local_48 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_48 + -0x18),&local_59);\n  }" (if "if") (parenthesized_expression "((undefined8 *)(local_48 + -0x18) != &DAT_0044a540)" (( "(") (binary_expression "(undefined8 *)(local_48 + -0x18) != &DAT_0044a540" (cast_expression "(undefined8 *)(local_48 + -0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_48 + -0x18)" (( "(") (binary_expression "local_48 + -0x18" (identifier "local_48") (+ "+") (number_literal "-0x18")) () ")"))) (!= "!=") (pointer_expression "&DAT_0044a540" (& "&") (identifier "DAT_0044a540"))) () ")")) (compound_statement "{\n    FUN_002ea270((undefined8 *)(local_48 + -0x18),&local_59);\n  }" ({ "{") (expression_statement "FUN_002ea270((undefined8 *)(local_48 + -0x18),&local_59);" (call_expression "FUN_002ea270((undefined8 *)(local_48 + -0x18),&local_59)" (identifier "FUN_002ea270") (argument_list "((undefined8 *)(local_48 + -0x18),&local_59)" (( "(") (cast_expression "(undefined8 *)(local_48 + -0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_48 + -0x18)" (( "(") (binary_expression "local_48 + -0x18" (identifier "local_48") (+ "+") (number_literal "-0x18")) () ")"))) (, ",") (pointer_expression "&local_59" (& "&") (identifier "local_59")) () ")"))) (; ";")) (} "}"))) (if_statement "if ((undefined8 *)(local_50 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_50 + -0x18),&local_59);\n  }" (if "if") (parenthesized_expression "((undefined8 *)(local_50 + -0x18) != &DAT_0044a540)" (( "(") (binary_expression "(undefined8 *)(local_50 + -0x18) != &DAT_0044a540" (cast_expression "(undefined8 *)(local_50 + -0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50 + -0x18)" (( "(") (binary_expression "local_50 + -0x18" (identifier "local_50") (+ "+") (number_literal "-0x18")) () ")"))) (!= "!=") (pointer_expression "&DAT_0044a540" (& "&") (identifier "DAT_0044a540"))) () ")")) (compound_statement "{\n    FUN_002ea270((undefined8 *)(local_50 + -0x18),&local_59);\n  }" ({ "{") (expression_statement "FUN_002ea270((undefined8 *)(local_50 + -0x18),&local_59);" (call_expression "FUN_002ea270((undefined8 *)(local_50 + -0x18),&local_59)" (identifier "FUN_002ea270") (argument_list "((undefined8 *)(local_50 + -0x18),&local_59)" (( "(") (cast_expression "(undefined8 *)(local_50 + -0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50 + -0x18)" (( "(") (binary_expression "local_50 + -0x18" (identifier "local_50") (+ "+") (number_literal "-0x18")) () ")"))) (, ",") (pointer_expression "&local_59" (& "&") (identifier "local_59")) () ")"))) (; ";")) (} "}"))) (if_statement "if ((undefined8 *)(local_58 + -0x18) != &DAT_0044a540) {\n    FUN_002ea270((undefined8 *)(local_58 + -0x18),&local_59);\n  }" (if "if") (parenthesized_expression "((undefined8 *)(local_58 + -0x18) != &DAT_0044a540)" (( "(") (binary_expression "(undefined8 *)(local_58 + -0x18) != &DAT_0044a540" (cast_expression "(undefined8 *)(local_58 + -0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_58 + -0x18)" (( "(") (binary_expression "local_58 + -0x18" (identifier "local_58") (+ "+") (number_literal "-0x18")) () ")"))) (!= "!=") (pointer_expression "&DAT_0044a540" (& "&") (identifier "DAT_0044a540"))) () ")")) (compound_statement "{\n    FUN_002ea270((undefined8 *)(local_58 + -0x18),&local_59);\n  }" ({ "{") (expression_statement "FUN_002ea270((undefined8 *)(local_58 + -0x18),&local_59);" (call_expression "FUN_002ea270((undefined8 *)(local_58 + -0x18),&local_59)" (identifier "FUN_002ea270") (argument_list "((undefined8 *)(local_58 + -0x18),&local_59)" (( "(") (cast_expression "(undefined8 *)(local_58 + -0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_58 + -0x18)" (( "(") (binary_expression "local_58 + -0x18" (identifier "local_58") (+ "+") (number_literal "-0x18")) () ")"))) (, ",") (pointer_expression "&local_59" (& "&") (identifier "local_59")) () ")"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* std::__moneypunct_cache<char, false>::_M_cache(std::locale const&) */

void __thiscall
var_5::var_1<char,false>::_M_cache(var_1<char,false> *var_7,locale *param_1)

{
  type_7 uVar1;
  var_1<var_2,false> var_3;
  type_1 uVar3;
  type_2 *var_6;
  char *pcVar5;
  char *pcVar6;
  char *pcVar7;
  char *pcVar8;
  type_3 *this_00;
  type_4 *local_70;
  type_5 local_5b;
  type_5 local_5a;
  type_5 local_59;
  long var_8;
  long var_11;
  long var_12;
  long local_40 [2];
  
  var_6 = var_4<var_5::type_2<var_2,false>>(param_1);
  if (*(type_6 **)(*(long *)var_6 + 0x10) == (type_6 *)PTR_do_decimal_point_0043db38) {
    var_3 = *(var_1<var_2,false> *)(*(long *)(var_6 + 0x10) + 0x21);
  }
  else {
    var_3 = (var_1<var_2,false>)(**(type_6 **)(*(long *)var_6 + 0x10))(var_6);
  }
  var_7[0x21] = var_3;
  if (*(type_6 **)(*(long *)var_6 + 0x18) == (type_6 *)PTR_do_thousands_sep_0043dc00) {
    var_3 = *(var_1<var_2,false> *)(*(long *)(var_6 + 0x10) + 0x22);
  }
  else {
    var_3 = (var_1<var_2,false>)(**(type_6 **)(*(long *)var_6 + 0x18))(var_6);
  }
  var_7[0x22] = var_3;
  if (*(type_6 **)(*(long *)var_6 + 0x40) == (type_6 *)PTR_do_frac_digits_0043dbb0) {
    uVar3 = *(type_1 *)(*(long *)(var_6 + 0x10) + 0x58);
  }
  else {
    uVar3 = (**(type_6 **)(*(long *)var_6 + 0x40))(var_6);
  }
  *(type_1 *)(var_7 + 0x58) = uVar3;
  if (*(type_6 **)(*(long *)var_6 + 0x20) == (type_6 *)PTR_do_grouping_0043df18) {
                    /* try { // try from 002ed938 to 002ed93c has its CatchHandler @ 002edd7a */
    std::string::type_4((type_4 *)&var_8,*(char **)(*(long *)(var_6 + 0x10) + 0x10),
                        (type_5 *)local_40);
  }
  else {
                    /* try { // try from 002edb73 to 002edb74 has its CatchHandler @ 002edd7a */
    (**(type_6 **)(*(long *)var_6 + 0x20))(&var_8,var_6);
  }
  uVar1 = *(type_7 *)(var_8 + -0x18);
  *(type_7 *)(var_7 + 0x18) = uVar1;
                    /* try { // try from 002ed94a to 002ed94e has its CatchHandler @ 002edd6f */
  pcVar5 = (char *)var_9(uVar1);
                    /* try { // try from 002ed95e to 002ed962 has its CatchHandler @ 002edd76 */
  std::string::var_10((type_4 *)&var_8,pcVar5,*(type_7 *)(var_7 + 0x18),0);
  var_3 = (var_1<var_2,false>)0x0;
  if (*(long *)(var_7 + 0x18) != 0) {
    var_3 = (var_1<var_2,false>)((byte)(*pcVar5 - 1U) < 0x7e);
  }
  var_7[0x20] = var_3;
  if (*(type_6 **)(*(long *)var_6 + 0x28) == (type_6 *)PTR_do_curr_symbol_0043db70) {
                    /* try { // try from 002ed99d to 002ed9a1 has its CatchHandler @ 002edc63 */
    std::string::type_4((type_4 *)&var_11,*(char **)(*(long *)(var_6 + 0x10) + 0x28),&local_5b);
  }
  else {
                    /* try { // try from 002edbcb to 002edbcc has its CatchHandler @ 002edc5f */
    (**(type_6 **)(*(long *)var_6 + 0x28))(&var_11,var_6);
  }
  uVar1 = *(type_7 *)(var_11 + -0x18);
  *(type_7 *)(var_7 + 0x30) = uVar1;
                    /* try { // try from 002ed9af to 002ed9b3 has its CatchHandler @ 002edd0f */
  pcVar6 = (char *)var_9(uVar1);
                    /* try { // try from 002ed9c3 to 002ed9c7 has its CatchHandler @ 002edd0b */
  std::string::var_10((type_4 *)&var_11,pcVar6,*(type_7 *)(var_7 + 0x30),0);
  if (*(type_6 **)(*(long *)var_6 + 0x30) == (type_6 *)PTR_do_positive_sign_0043dfe8) {
                    /* try { // try from 002ed9f2 to 002ed9f6 has its CatchHandler @ 002edc61 */
    std::string::type_4((type_4 *)&var_12,*(char **)(*(long *)(var_6 + 0x10) + 0x38),&local_5a);
  }
  else {
                    /* try { // try from 002edbe3 to 002edbe4 has its CatchHandler @ 002eddcf */
    (**(type_6 **)(*(long *)var_6 + 0x30))(&var_12,var_6);
  }
  uVar1 = *(type_7 *)(var_12 + -0x18);
  *(type_7 *)(var_7 + 0x40) = uVar1;
                    /* try { // try from 002eda04 to 002eda08 has its CatchHandler @ 002edd11 */
  pcVar7 = (char *)var_9(uVar1);
                    /* try { // try from 002eda18 to 002eda1c has its CatchHandler @ 002edd0d */
  std::string::var_10((type_4 *)&var_12,pcVar7,*(type_7 *)(var_7 + 0x40),0);
  if (*(type_6 **)(*(long *)var_6 + 0x38) == (type_6 *)PTR_do_negative_sign_0043daf8) {
                    /* try { // try from 002eda4c to 002eda50 has its CatchHandler @ 002edd87 */
    std::string::type_4((type_4 *)local_40,*(char **)(*(long *)(var_6 + 0x10) + 0x48),&local_59);
  }
  else {
                    /* try { // try from 002edc00 to 002edc01 has its CatchHandler @ 002edd78 */
    (**(type_6 **)(*(long *)var_6 + 0x38))(local_40,var_6);
  }
  local_70 = (type_4 *)local_40;
  uVar1 = *(type_7 *)(local_40[0] + -0x18);
  *(type_7 *)(var_7 + 0x50) = uVar1;
                    /* try { // try from 002eda5e to 002eda62 has its CatchHandler @ 002eddb2 */
  pcVar8 = (char *)var_9(uVar1);
                    /* try { // try from 002eda74 to 002edad9 has its CatchHandler @ 002edd71 */
  std::string::var_10(local_70,pcVar8,*(type_7 *)(var_7 + 0x50),0);
  if (*(type_6 **)(*(long *)var_6 + 0x48) == (type_6 *)PTR_do_pos_format_0043da60) {
    uVar3 = *(type_1 *)(*(long *)(var_6 + 0x10) + 0x5c);
  }
  else {
                    /* try { // try from 002edc13 to 002edc14 has its CatchHandler @ 002edd71 */
    uVar3 = (**(type_6 **)(*(long *)var_6 + 0x48))(var_6);
  }
  *(type_1 *)(var_7 + 0x5c) = uVar3;
  if (*(type_6 **)(*(long *)var_6 + 0x50) == (type_6 *)PTR_do_neg_format_0043dd00) {
    uVar3 = *(type_1 *)(*(long *)(var_6 + 0x10) + 0x60);
  }
  else {
                    /* try { // try from 002edbb3 to 002edbb4 has its CatchHandler @ 002edd71 */
    uVar3 = (**(type_6 **)(*(long *)var_6 + 0x50))(var_6);
  }
  *(type_1 *)(var_7 + 0x60) = uVar3;
  this_00 = var_4<var_5::type_3<var_2>>(param_1);
  type_3<var_2>::widen((type_3<var_2> *)this_00,money_base::_S_atoms,money_base::_S_atoms + 0xb,
                     (char *)(var_7 + 100));
  *(char **)(var_7 + 0x10) = pcVar5;
  *(char **)(var_7 + 0x28) = pcVar6;
  *(char **)(var_7 + 0x38) = pcVar7;
  *(char **)(var_7 + 0x48) = pcVar8;
  var_7[0x6f] = (var_1<var_2,false>)0x1;
  if ((type_5 *)(local_40[0] + -0x18) != (type_5 *)&var_5::type_4::_Rep::_S_empty_rep_storage) {
    var_5::type_4::_Rep::_M_dispose((type_5 *)(local_40[0] + -0x18));
  }
  if ((type_5 *)(var_12 + -0x18) != (type_5 *)&var_5::type_4::_Rep::_S_empty_rep_storage) {
    std::string::_Rep::_M_dispose((type_5 *)(var_12 + -0x18));
  }
  if ((type_5 *)(var_11 + -0x18) != (type_5 *)&var_5::type_4::_Rep::_S_empty_rep_storage) {
    var_5::type_4::_Rep::_M_dispose((type_5 *)(var_11 + -0x18));
  }
  if ((type_5 *)(var_8 + -0x18) != (type_5 *)&var_5::type_4::_Rep::_S_empty_rep_storage) {
    std::string::_Rep::_M_dispose((type_5 *)(var_8 + -0x18));
  }
  return;
}


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

void MASKED(long param_1,undefined8 param_2)

{
  bool bVar1;
  undefined1 uVar2;
  undefined4 uVar3;
  long *plVar4;
  char *pcVar5;
  undefined8 uVar6;
  undefined8 uVar7;
  undefined8 uVar8;
  undefined8 uVar9;
  long *local_70;
  undefined1 local_5b;
  undefined1 local_5a;
  undefined1 local_59;
  long local_58;
  long local_50;
  long local_48;
  long local_40 [2];
  
  plVar4 = (long *)FUN_002ed840(param_2);
  if (*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043db38) {
    uVar2 = *(undefined1 *)(plVar4[2] + 0x21);
  }
  else {
    uVar2 = (**(code **)(*plVar4 + 0x10))(plVar4);
  }
  *(undefined1 *)(param_1 + 0x21) = uVar2;
  if (*(code **)(*plVar4 + 0x18) == (code *)PTR_FUN_0043dc00) {
    uVar2 = *(undefined1 *)(plVar4[2] + 0x22);
  }
  else {
    uVar2 = (**(code **)(*plVar4 + 0x18))(plVar4);
  }
  *(undefined1 *)(param_1 + 0x22) = uVar2;
  if (*(code **)(*plVar4 + 0x40) == (code *)PTR_FUN_0043dbb0) {
    uVar3 = *(undefined4 *)(plVar4[2] + 0x58);
  }
  else {
    uVar3 = (**(code **)(*plVar4 + 0x40))(plVar4);
  }
  *(undefined4 *)(param_1 + 0x58) = uVar3;
  if (*(code **)(*plVar4 + 0x20) == (code *)PTR_FUN_0043df18) {
                    /* try { // try from 002ed938 to 002ed93c has its CatchHandler @ 002edd7a */
    FUN_0030f640(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40);
  }
  else {
                    /* try { // try from 002edb73 to 002edb74 has its CatchHandler @ 002edd7a */
    (**(code **)(*plVar4 + 0x20))(&local_58,plVar4);
  }
  *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(local_58 + -0x18);
                    /* try { // try from 002ed94a to 002ed94e has its CatchHandler @ 002edd6f */
  pcVar5 = (char *)thunk_FUN_002d94a0();
                    /* try { // try from 002ed95e to 002ed962 has its CatchHandler @ 002edd76 */
  FUN_0030cdb0(&local_58,pcVar5,*(undefined8 *)(param_1 + 0x18),0);
  bVar1 = false;
  if (*(long *)(param_1 + 0x18) != 0) {
    bVar1 = (byte)(*pcVar5 - 1U) < 0x7e;
  }
  *(bool *)(param_1 + 0x20) = bVar1;
  if (*(code **)(*plVar4 + 0x28) == (code *)PTR_FUN_0043db70) {
                    /* try { // try from 002ed99d to 002ed9a1 has its CatchHandler @ 002edc63 */
    FUN_0030f640(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b);
  }
  else {
                    /* try { // try from 002edbcb to 002edbcc has its CatchHandler @ 002edc5f */
    (**(code **)(*plVar4 + 0x28))(&local_50,plVar4);
  }
  *(undefined8 *)(param_1 + 0x30) = *(undefined8 *)(local_50 + -0x18);
                    /* try { // try from 002ed9af to 002ed9b3 has its CatchHandler @ 002edd0f */
  uVar6 = thunk_FUN_002d94a0();
                    /* try { // try from 002ed9c3 to 002ed9c7 has its CatchHandler @ 002edd0b */
  FUN_0030cdb0(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0);
  if (*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dfe8) {
                    /* try { // try from 002ed9f2 to 002ed9f6 has its CatchHandler @ 002edc61 */
    FUN_0030f640(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a);
  }
  else {
                    /* try { // try from 002edbe3 to 002edbe4 has its CatchHandler @ 002eddcf */
    (**(code **)(*plVar4 + 0x30))(&local_48,plVar4);
  }
  *(undefined8 *)(param_1 + 0x40) = *(undefined8 *)(local_48 + -0x18);
                    /* try { // try from 002eda04 to 002eda08 has its CatchHandler @ 002edd11 */
  uVar7 = thunk_FUN_002d94a0();
                    /* try { // try from 002eda18 to 002eda1c has its CatchHandler @ 002edd0d */
  FUN_0030cdb0(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0);
  if (*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043daf8) {
                    /* try { // try from 002eda4c to 002eda50 has its CatchHandler @ 002edd87 */
    FUN_0030f640(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59);
  }
  else {
                    /* try { // try from 002edc00 to 002edc01 has its CatchHandler @ 002edd78 */
    (**(code **)(*plVar4 + 0x38))(local_40,plVar4);
  }
  local_70 = local_40;
  *(undefined8 *)(param_1 + 0x50) = *(undefined8 *)(local_40[0] + -0x18);
                    /* try { // try from 002eda5e to 002eda62 has its CatchHandler @ 002eddb2 */
  uVar8 = thunk_FUN_002d94a0();
                    /* try { // try from 002eda74 to 002edad9 has its CatchHandler @ 002edd71 */
  FUN_0030cdb0(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0);
  if (*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043da60) {
    uVar3 = *(undefined4 *)(plVar4[2] + 0x5c);
  }
  else {
                    /* try { // try from 002edc13 to 002edc14 has its CatchHandler @ 002edd71 */
    uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4);
  }
  *(undefined4 *)(param_1 + 0x5c) = uVar3;
  if (*(code **)(*plVar4 + 0x50) == (code *)PTR_FUN_0043dd00) {
    uVar3 = *(undefined4 *)(plVar4[2] + 0x60);
  }
  else {
                    /* try { // try from 002edbb3 to 002edbb4 has its CatchHandler @ 002edd71 */
    uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4);
  }
  *(undefined4 *)(param_1 + 0x60) = uVar3;
  uVar9 = FUN_002ec670(param_2);
  FUN_002ea750(uVar9,PTR_DAT_0043e720,PTR_DAT_0043e720 + 0xb,param_1 + 100);
  *(char **)(param_1 + 0x10) = pcVar5;
  *(undefined8 *)(param_1 + 0x28) = uVar6;
  *(undefined8 *)(param_1 + 0x38) = uVar7;
  *(undefined8 *)(param_1 + 0x48) = uVar8;
  *(undefined1 *)(param_1 + 0x6f) = 1;
  if ((undefined8 *)(local_40[0] + -0x18) != &DAT_0044a540) {
    FUN_002ea270((undefined8 *)(local_40[0] + -0x18),&local_59);
  }
  if ((undefined8 *)(local_48 + -0x18) != &DAT_0044a540) {
    FUN_002ea270((undefined8 *)(local_48 + -0x18),&local_59);
  }
  if ((undefined8 *)(local_50 + -0x18) != &DAT_0044a540) {
    FUN_002ea270((undefined8 *)(local_50 + -0x18),&local_59);
  }
  if ((undefined8 *)(local_58 + -0x18) != &DAT_0044a540) {
    FUN_002ea270((undefined8 *)(local_58 + -0x18),&local_59);
  }
  return;
}

