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

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

{
  ulong uVar1;
  __moneypunct_cache<char,true> _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,true>>(param_1);
  if (*(code **)(*(long *)pmVar4 + 0x10) == (code *)PTR_do_decimal_point_0043df60) {
    _Var2 = *(__moneypunct_cache<char,true> *)(*(long *)(pmVar4 + 0x10) + 0x21);
  }
  else {
    _Var2 = (__moneypunct_cache<char,true>)(**(code **)(*(long *)pmVar4 + 0x10))(pmVar4);
  }
  this[0x21] = _Var2;
  if (*(code **)(*(long *)pmVar4 + 0x18) == (code *)PTR_do_thousands_sep_0043dcd0) {
    _Var2 = *(__moneypunct_cache<char,true> *)(*(long *)(pmVar4 + 0x10) + 0x22);
  }
  else {
    _Var2 = (__moneypunct_cache<char,true>)(**(code **)(*(long *)pmVar4 + 0x18))(pmVar4);
  }
  this[0x22] = _Var2;
  if (*(code **)(*(long *)pmVar4 + 0x40) == (code *)PTR_do_frac_digits_0043db58) {
    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_0043dd88) {
                    /* try { // try from 002ed388 to 002ed38c has its CatchHandler @ 002ed7ca */
    std::string::string((string *)&local_58,*(char **)(*(long *)(pmVar4 + 0x10) + 0x10),
                        (allocator *)local_40);
  }
  else {
                    /* try { // try from 002ed5c3 to 002ed5c4 has its CatchHandler @ 002ed7ca */
    (**(code **)(*(long *)pmVar4 + 0x20))(&local_58,pmVar4);
  }
  uVar1 = *(ulong *)(local_58 + -0x18);
  *(ulong *)(this + 0x18) = uVar1;
                    /* try { // try from 002ed39a to 002ed39e has its CatchHandler @ 002ed7bf */
  pcVar5 = (char *)operator_new__(uVar1);
                    /* try { // try from 002ed3ae to 002ed3b2 has its CatchHandler @ 002ed7c6 */
  std::string::copy((string *)&local_58,pcVar5,*(ulong *)(this + 0x18),0);
  _Var2 = (__moneypunct_cache<char,true>)0x0;
  if (*(long *)(this + 0x18) != 0) {
    _Var2 = (__moneypunct_cache<char,true>)((byte)(*pcVar5 - 1U) < 0x7e);
  }
  this[0x20] = _Var2;
  if (*(code **)(*(long *)pmVar4 + 0x28) == (code *)PTR_do_curr_symbol_0043df40) {
                    /* try { // try from 002ed3ed to 002ed3f1 has its CatchHandler @ 002ed6b3 */
    std::string::string((string *)&local_50,*(char **)(*(long *)(pmVar4 + 0x10) + 0x28),&local_5b);
  }
  else {
                    /* try { // try from 002ed61b to 002ed61c has its CatchHandler @ 002ed6af */
    (**(code **)(*(long *)pmVar4 + 0x28))(&local_50,pmVar4);
  }
  uVar1 = *(ulong *)(local_50 + -0x18);
  *(ulong *)(this + 0x30) = uVar1;
                    /* try { // try from 002ed3ff to 002ed403 has its CatchHandler @ 002ed75f */
  pcVar6 = (char *)operator_new__(uVar1);
                    /* try { // try from 002ed413 to 002ed417 has its CatchHandler @ 002ed75b */
  std::string::copy((string *)&local_50,pcVar6,*(ulong *)(this + 0x30),0);
  if (*(code **)(*(long *)pmVar4 + 0x30) == (code *)PTR_do_positive_sign_0043dec0) {
                    /* try { // try from 002ed442 to 002ed446 has its CatchHandler @ 002ed6b1 */
    std::string::string((string *)&local_48,*(char **)(*(long *)(pmVar4 + 0x10) + 0x38),&local_5a);
  }
  else {
                    /* try { // try from 002ed633 to 002ed634 has its CatchHandler @ 002ed81f */
    (**(code **)(*(long *)pmVar4 + 0x30))(&local_48,pmVar4);
  }
  uVar1 = *(ulong *)(local_48 + -0x18);
  *(ulong *)(this + 0x40) = uVar1;
                    /* try { // try from 002ed454 to 002ed458 has its CatchHandler @ 002ed761 */
  pcVar7 = (char *)operator_new__(uVar1);
                    /* try { // try from 002ed468 to 002ed46c has its CatchHandler @ 002ed75d */
  std::string::copy((string *)&local_48,pcVar7,*(ulong *)(this + 0x40),0);
  if (*(code **)(*(long *)pmVar4 + 0x38) == (code *)PTR_do_negative_sign_0043db08) {
                    /* try { // try from 002ed49c to 002ed4a0 has its CatchHandler @ 002ed7d7 */
    std::string::string((string *)local_40,*(char **)(*(long *)(pmVar4 + 0x10) + 0x48),&local_59);
  }
  else {
                    /* try { // try from 002ed650 to 002ed651 has its CatchHandler @ 002ed7c8 */
    (**(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 002ed4ae to 002ed4b2 has its CatchHandler @ 002ed802 */
  pcVar8 = (char *)operator_new__(uVar1);
                    /* try { // try from 002ed4c4 to 002ed529 has its CatchHandler @ 002ed7c1 */
  std::string::copy(local_70,pcVar8,*(ulong *)(this + 0x50),0);
  if (*(code **)(*(long *)pmVar4 + 0x48) == (code *)PTR_do_pos_format_0043dd68) {
    uVar3 = *(undefined4 *)(*(long *)(pmVar4 + 0x10) + 0x5c);
  }
  else {
                    /* try { // try from 002ed663 to 002ed664 has its CatchHandler @ 002ed7c1 */
    uVar3 = (**(code **)(*(long *)pmVar4 + 0x48))(pmVar4);
  }
  *(undefined4 *)(this + 0x5c) = uVar3;
  if (*(code **)(*(long *)pmVar4 + 0x50) == (code *)PTR_do_neg_format_0043dcc0) {
    uVar3 = *(undefined4 *)(*(long *)(pmVar4 + 0x10) + 0x60);
  }
  else {
                    /* try { // try from 002ed603 to 002ed604 has its CatchHandler @ 002ed7c1 */
    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,true>)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_002ed2e0(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_002ed290(param_2);
  if (*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043df60) {
    uVar2 = *(undefined1 *)(plVar4[2] + 0x21);
  }
  else {
    uVar2 = (**(code **)(*plVar4 + 0x10))(plVar4);
  }
  *(undefined1 *)(param_1 + 0x21) = uVar2;
  if (*(code **)(*plVar4 + 0x18) == (code *)PTR_FUN_0043dcd0) {
    uVar2 = *(undefined1 *)(plVar4[2] + 0x22);
  }
  else {
    uVar2 = (**(code **)(*plVar4 + 0x18))(plVar4);
  }
  *(undefined1 *)(param_1 + 0x22) = uVar2;
  if (*(code **)(*plVar4 + 0x40) == (code *)PTR_FUN_0043db58) {
    uVar3 = *(undefined4 *)(plVar4[2] + 0x58);
  }
  else {
    uVar3 = (**(code **)(*plVar4 + 0x40))(plVar4);
  }
  *(undefined4 *)(param_1 + 0x58) = uVar3;
  if (*(code **)(*plVar4 + 0x20) == (code *)PTR_FUN_0043dd88) {
                    /* try { // try from 002ed388 to 002ed38c has its CatchHandler @ 002ed7ca */
    FUN_0030f630(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40);
  }
  else {
                    /* try { // try from 002ed5c3 to 002ed5c4 has its CatchHandler @ 002ed7ca */
    (**(code **)(*plVar4 + 0x20))(&local_58,plVar4);
  }
  *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(local_58 + -0x18);
                    /* try { // try from 002ed39a to 002ed39e has its CatchHandler @ 002ed7bf */
  pcVar5 = (char *)thunk_FUN_002d9490();
                    /* try { // try from 002ed3ae to 002ed3b2 has its CatchHandler @ 002ed7c6 */
  FUN_0030cda0(&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_0043df40) {
                    /* try { // try from 002ed3ed to 002ed3f1 has its CatchHandler @ 002ed6b3 */
    FUN_0030f630(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b);
  }
  else {
                    /* try { // try from 002ed61b to 002ed61c has its CatchHandler @ 002ed6af */
    (**(code **)(*plVar4 + 0x28))(&local_50,plVar4);
  }
  *(undefined8 *)(param_1 + 0x30) = *(undefined8 *)(local_50 + -0x18);
                    /* try { // try from 002ed3ff to 002ed403 has its CatchHandler @ 002ed75f */
  uVar6 = thunk_FUN_002d9490();
                    /* try { // try from 002ed413 to 002ed417 has its CatchHandler @ 002ed75b */
  FUN_0030cda0(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0);
  if (*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dec0) {
                    /* try { // try from 002ed442 to 002ed446 has its CatchHandler @ 002ed6b1 */
    FUN_0030f630(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a);
  }
  else {
                    /* try { // try from 002ed633 to 002ed634 has its CatchHandler @ 002ed81f */
    (**(code **)(*plVar4 + 0x30))(&local_48,plVar4);
  }
  *(undefined8 *)(param_1 + 0x40) = *(undefined8 *)(local_48 + -0x18);
                    /* try { // try from 002ed454 to 002ed458 has its CatchHandler @ 002ed761 */
  uVar7 = thunk_FUN_002d9490();
                    /* try { // try from 002ed468 to 002ed46c has its CatchHandler @ 002ed75d */
  FUN_0030cda0(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0);
  if (*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043db08) {
                    /* try { // try from 002ed49c to 002ed4a0 has its CatchHandler @ 002ed7d7 */
    FUN_0030f630(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59);
  }
  else {
                    /* try { // try from 002ed650 to 002ed651 has its CatchHandler @ 002ed7c8 */
    (**(code **)(*plVar4 + 0x38))(local_40,plVar4);
  }
  local_70 = local_40;
  *(undefined8 *)(param_1 + 0x50) = *(undefined8 *)(local_40[0] + -0x18);
                    /* try { // try from 002ed4ae to 002ed4b2 has its CatchHandler @ 002ed802 */
  uVar8 = thunk_FUN_002d9490();
                    /* try { // try from 002ed4c4 to 002ed529 has its CatchHandler @ 002ed7c1 */
  FUN_0030cda0(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0);
  if (*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043dd68) {
    uVar3 = *(undefined4 *)(plVar4[2] + 0x5c);
  }
  else {
                    /* try { // try from 002ed663 to 002ed664 has its CatchHandler @ 002ed7c1 */
    uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4);
  }
  *(undefined4 *)(param_1 + 0x5c) = uVar3;
  if (*(code **)(*plVar4 + 0x50) == (code *)PTR_FUN_0043dcc0) {
    uVar3 = *(undefined4 *)(plVar4[2] + 0x60);
  }
  else {
                    /* try { // try from 002ed603 to 002ed604 has its CatchHandler @ 002ed7c1 */
    uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4);
  }
  *(undefined4 *)(param_1 + 0x60) = uVar3;
  uVar9 = FUN_002ec660(param_2);
  FUN_002ea740(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_002ea260((undefined8 *)(local_40[0] + -0x18),&local_59);
  }
  if ((undefined8 *)(local_48 + -0x18) != &DAT_0044a540) {
    FUN_002ea260((undefined8 *)(local_48 + -0x18),&local_59);
  }
  if ((undefined8 *)(local_50 + -0x18) != &DAT_0044a540) {
    FUN_002ea260((undefined8 *)(local_50 + -0x18),&local_59);
  }
  if ((undefined8 *)(local_58 + -0x18) != &DAT_0044a540) {
    FUN_002ea260((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 0x002ed290
MOV RBP,RAX
MOV RAX,qword ptr [RAX]
MOV RAX,qword ptr [RAX + 0x10]
CMP RAX,qword ptr [0x0043df60]
JNZ 0x002ed5f0
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 [0x0043dcd0]
JNZ 0x002ed5e0
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 [0x0043db58]
JNZ 0x002ed5d0
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 [0x0043dd88]
JNZ 0x002ed5b8
MOV RAX,qword ptr [RBP + 0x10]
LEA R13,[RSP + 0x20]
LEA RDX,[RSP + 0x38]
MOV RDI,R13
MOV RSI,qword ptr [RAX + 0x10]
CALL 0x0030f630
MOV RAX,qword ptr [RSP + 0x20]
MOV RDI,qword ptr [RAX + -0x18]
MOV qword ptr [RBX + 0x18],RDI
CALL 0x002d9430
MOV RDX,qword ptr [RBX + 0x18]
XOR ECX,ECX
MOV RSI,RAX
MOV RDI,R13
MOV R12,RAX
CALL 0x0030cda0
XOR EAX,EAX
CMP qword ptr [RBX + 0x18],0x0
JNZ 0x002ed5a0
MOV byte ptr [RBX + 0x20],AL
MOV RAX,qword ptr [RBP]
MOV RAX,qword ptr [RAX + 0x28]
CMP RAX,qword ptr [0x0043df40]
JNZ 0x002ed610
MOV RAX,qword ptr [RBP + 0x10]
LEA R13,[RSP + 0x28]
LEA RDX,[RSP + 0x1d]
MOV RDI,R13
MOV RSI,qword ptr [RAX + 0x28]
CALL 0x0030f630
MOV RAX,qword ptr [RSP + 0x28]
MOV RDI,qword ptr [RAX + -0x18]
MOV qword ptr [RBX + 0x30],RDI
CALL 0x002d9430
MOV RDX,qword ptr [RBX + 0x30]
XOR ECX,ECX
MOV RSI,RAX
MOV RDI,R13
MOV R15,RAX
CALL 0x0030cda0
MOV RAX,qword ptr [RBP]
MOV RAX,qword ptr [RAX + 0x30]
CMP RAX,qword ptr [0x0043dec0]
JNZ 0x002ed628
MOV RAX,qword ptr [RBP + 0x10]
LEA R13,[RSP + 0x30]
LEA RDX,[RSP + 0x1e]
MOV RDI,R13
MOV RSI,qword ptr [RAX + 0x38]
CALL 0x0030f630
MOV RAX,qword ptr [RSP + 0x30]
MOV RDI,qword ptr [RAX + -0x18]
MOV qword ptr [RBX + 0x40],RDI
CALL 0x002d9430
MOV RDX,qword ptr [RBX + 0x40]
XOR ECX,ECX
MOV RSI,RAX
MOV RDI,R13
MOV R14,RAX
CALL 0x0030cda0
MOV RAX,qword ptr [RBP]
MOV RAX,qword ptr [RAX + 0x38]
CMP RAX,qword ptr [0x0043db08]
JNZ 0x002ed640
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 0x0030f630
MOV RAX,qword ptr [RSP + 0x38]
MOV RDI,qword ptr [RAX + -0x18]
MOV qword ptr [RBX + 0x50],RDI
CALL 0x002d9430
MOV RDX,qword ptr [RBX + 0x50]
MOV RDI,qword ptr [RSP + 0x8]
XOR ECX,ECX
MOV RSI,RAX
MOV R13,RAX
CALL 0x0030cda0
MOV RAX,qword ptr [RBP]
MOV RAX,qword ptr [RAX + 0x48]
CMP RAX,qword ptr [0x0043dd68]
JNZ 0x002ed660
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 [0x0043dcc0]
JNZ 0x002ed600
MOV RAX,qword ptr [RBP + 0x10]
MOV EAX,dword ptr [RAX + 0x60]
MOV dword ptr [RBX + 0x60],EAX
MOV RDI,qword ptr [RSP]
CALL 0x002ec660
LEA RDX,[0x43e720]
LEA RCX,[RBX + 0x64]
MOV RDI,RAX
MOV RSI,qword ptr [RDX]
LEA RDX,[RSI + 0xb]
CALL 0x002ea740
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 0x002ed690
MOV RAX,qword ptr [RSP + 0x30]
LEA RDI,[RAX + -0x18]
CMP RDI,RBX
JNZ 0x002ed6a0
MOV RAX,qword ptr [RSP + 0x28]
LEA RDI,[RAX + -0x18]
CMP RDI,RBX
JNZ 0x002ed670
MOV RAX,qword ptr [RSP + 0x20]
LEA RDI,[RAX + -0x18]
CMP RDI,RBX
JNZ 0x002ed680
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 0x002ed3c0
LEA R13,[RSP + 0x20]
MOV RSI,RBP
MOV RDI,R13
CALL RAX
JMP 0x002ed38d
MOV RDI,RBP
CALL RAX
JMP 0x002ed35b
MOV RDI,RBP
CALL RAX
JMP 0x002ed33c
MOV RDI,RBP
CALL RAX
JMP 0x002ed31c
MOV RDI,RBP
CALL RAX
JMP 0x002ed504
LEA R13,[RSP + 0x28]
MOV RSI,RBP
MOV RDI,R13
CALL RAX
JMP 0x002ed3f2
LEA R13,[RSP + 0x30]
MOV RSI,RBP
MOV RDI,R13
CALL RAX
JMP 0x002ed447
LEA RCX,[RSP + 0x38]
MOV RSI,RBP
MOV qword ptr [RSP + 0x8],RCX
MOV RDI,RCX
CALL RAX
JMP 0x002ed4a1
MOV RDI,RBP
CALL RAX
JMP 0x002ed4e5
LEA RSI,[RSP + 0x1f]
CALL 0x002ea260
JMP 0x002ed57b
LEA RSI,[RSP + 0x1f]
CALL 0x002ea260
JMP 0x002ed58d
LEA RSI,[RSP + 0x1f]
CALL 0x002ea260
JMP 0x002ed557
LEA RSI,[RSP + 0x1f]
CALL 0x002ea260
JMP 0x002ed569
(translation_unit "void FUN_002ed2e0(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_002ed290(param_2);\n  if (*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043df60) {\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_0043dcd0) {\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_0043db58) {\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_0043dd88) {\n                    /* try { // try from 002ed388 to 002ed38c has its CatchHandler @ 002ed7ca */\n    FUN_0030f630(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40);\n  }\n  else {\n                    /* try { // try from 002ed5c3 to 002ed5c4 has its CatchHandler @ 002ed7ca */\n    (**(code **)(*plVar4 + 0x20))(&local_58,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(local_58 + -0x18);\n                    /* try { // try from 002ed39a to 002ed39e has its CatchHandler @ 002ed7bf */\n  pcVar5 = (char *)thunk_FUN_002d9490();\n                    /* try { // try from 002ed3ae to 002ed3b2 has its CatchHandler @ 002ed7c6 */\n  FUN_0030cda0(&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_0043df40) {\n                    /* try { // try from 002ed3ed to 002ed3f1 has its CatchHandler @ 002ed6b3 */\n    FUN_0030f630(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b);\n  }\n  else {\n                    /* try { // try from 002ed61b to 002ed61c has its CatchHandler @ 002ed6af */\n    (**(code **)(*plVar4 + 0x28))(&local_50,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x30) = *(undefined8 *)(local_50 + -0x18);\n                    /* try { // try from 002ed3ff to 002ed403 has its CatchHandler @ 002ed75f */\n  uVar6 = thunk_FUN_002d9490();\n                    /* try { // try from 002ed413 to 002ed417 has its CatchHandler @ 002ed75b */\n  FUN_0030cda0(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0);\n  if (*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dec0) {\n                    /* try { // try from 002ed442 to 002ed446 has its CatchHandler @ 002ed6b1 */\n    FUN_0030f630(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a);\n  }\n  else {\n                    /* try { // try from 002ed633 to 002ed634 has its CatchHandler @ 002ed81f */\n    (**(code **)(*plVar4 + 0x30))(&local_48,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x40) = *(undefined8 *)(local_48 + -0x18);\n                    /* try { // try from 002ed454 to 002ed458 has its CatchHandler @ 002ed761 */\n  uVar7 = thunk_FUN_002d9490();\n                    /* try { // try from 002ed468 to 002ed46c has its CatchHandler @ 002ed75d */\n  FUN_0030cda0(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0);\n  if (*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043db08) {\n                    /* try { // try from 002ed49c to 002ed4a0 has its CatchHandler @ 002ed7d7 */\n    FUN_0030f630(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59);\n  }\n  else {\n                    /* try { // try from 002ed650 to 002ed651 has its CatchHandler @ 002ed7c8 */\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 002ed4ae to 002ed4b2 has its CatchHandler @ 002ed802 */\n  uVar8 = thunk_FUN_002d9490();\n                    /* try { // try from 002ed4c4 to 002ed529 has its CatchHandler @ 002ed7c1 */\n  FUN_0030cda0(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0);\n  if (*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043dd68) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x5c);\n  }\n  else {\n                    /* try { // try from 002ed663 to 002ed664 has its CatchHandler @ 002ed7c1 */\n    uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4);\n  }\n  *(undefined4 *)(param_1 + 0x5c) = uVar3;\n  if (*(code **)(*plVar4 + 0x50) == (code *)PTR_FUN_0043dcc0) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x60);\n  }\n  else {\n                    /* try { // try from 002ed603 to 002ed604 has its CatchHandler @ 002ed7c1 */\n    uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4);\n  }\n  *(undefined4 *)(param_1 + 0x60) = uVar3;\n  uVar9 = FUN_002ec660(param_2);\n  FUN_002ea740(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_002ea260((undefined8 *)(local_40[0] + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_48 + -0x18) != &DAT_0044a540) {\n    FUN_002ea260((undefined8 *)(local_48 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_50 + -0x18) != &DAT_0044a540) {\n    FUN_002ea260((undefined8 *)(local_50 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_58 + -0x18) != &DAT_0044a540) {\n    FUN_002ea260((undefined8 *)(local_58 + -0x18),&local_59);\n  }\n  return;\n}\n\n" (function_definition "void FUN_002ed2e0(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_002ed290(param_2);\n  if (*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043df60) {\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_0043dcd0) {\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_0043db58) {\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_0043dd88) {\n                    /* try { // try from 002ed388 to 002ed38c has its CatchHandler @ 002ed7ca */\n    FUN_0030f630(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40);\n  }\n  else {\n                    /* try { // try from 002ed5c3 to 002ed5c4 has its CatchHandler @ 002ed7ca */\n    (**(code **)(*plVar4 + 0x20))(&local_58,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(local_58 + -0x18);\n                    /* try { // try from 002ed39a to 002ed39e has its CatchHandler @ 002ed7bf */\n  pcVar5 = (char *)thunk_FUN_002d9490();\n                    /* try { // try from 002ed3ae to 002ed3b2 has its CatchHandler @ 002ed7c6 */\n  FUN_0030cda0(&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_0043df40) {\n                    /* try { // try from 002ed3ed to 002ed3f1 has its CatchHandler @ 002ed6b3 */\n    FUN_0030f630(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b);\n  }\n  else {\n                    /* try { // try from 002ed61b to 002ed61c has its CatchHandler @ 002ed6af */\n    (**(code **)(*plVar4 + 0x28))(&local_50,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x30) = *(undefined8 *)(local_50 + -0x18);\n                    /* try { // try from 002ed3ff to 002ed403 has its CatchHandler @ 002ed75f */\n  uVar6 = thunk_FUN_002d9490();\n                    /* try { // try from 002ed413 to 002ed417 has its CatchHandler @ 002ed75b */\n  FUN_0030cda0(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0);\n  if (*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dec0) {\n                    /* try { // try from 002ed442 to 002ed446 has its CatchHandler @ 002ed6b1 */\n    FUN_0030f630(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a);\n  }\n  else {\n                    /* try { // try from 002ed633 to 002ed634 has its CatchHandler @ 002ed81f */\n    (**(code **)(*plVar4 + 0x30))(&local_48,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x40) = *(undefined8 *)(local_48 + -0x18);\n                    /* try { // try from 002ed454 to 002ed458 has its CatchHandler @ 002ed761 */\n  uVar7 = thunk_FUN_002d9490();\n                    /* try { // try from 002ed468 to 002ed46c has its CatchHandler @ 002ed75d */\n  FUN_0030cda0(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0);\n  if (*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043db08) {\n                    /* try { // try from 002ed49c to 002ed4a0 has its CatchHandler @ 002ed7d7 */\n    FUN_0030f630(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59);\n  }\n  else {\n                    /* try { // try from 002ed650 to 002ed651 has its CatchHandler @ 002ed7c8 */\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 002ed4ae to 002ed4b2 has its CatchHandler @ 002ed802 */\n  uVar8 = thunk_FUN_002d9490();\n                    /* try { // try from 002ed4c4 to 002ed529 has its CatchHandler @ 002ed7c1 */\n  FUN_0030cda0(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0);\n  if (*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043dd68) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x5c);\n  }\n  else {\n                    /* try { // try from 002ed663 to 002ed664 has its CatchHandler @ 002ed7c1 */\n    uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4);\n  }\n  *(undefined4 *)(param_1 + 0x5c) = uVar3;\n  if (*(code **)(*plVar4 + 0x50) == (code *)PTR_FUN_0043dcc0) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x60);\n  }\n  else {\n                    /* try { // try from 002ed603 to 002ed604 has its CatchHandler @ 002ed7c1 */\n    uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4);\n  }\n  *(undefined4 *)(param_1 + 0x60) = uVar3;\n  uVar9 = FUN_002ec660(param_2);\n  FUN_002ea740(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_002ea260((undefined8 *)(local_40[0] + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_48 + -0x18) != &DAT_0044a540) {\n    FUN_002ea260((undefined8 *)(local_48 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_50 + -0x18) != &DAT_0044a540) {\n    FUN_002ea260((undefined8 *)(local_50 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_58 + -0x18) != &DAT_0044a540) {\n    FUN_002ea260((undefined8 *)(local_58 + -0x18),&local_59);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_002ed2e0(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_002ed290(param_2);\n  if (*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043df60) {\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_0043dcd0) {\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_0043db58) {\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_0043dd88) {\n                    /* try { // try from 002ed388 to 002ed38c has its CatchHandler @ 002ed7ca */\n    FUN_0030f630(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40);\n  }\n  else {\n                    /* try { // try from 002ed5c3 to 002ed5c4 has its CatchHandler @ 002ed7ca */\n    (**(code **)(*plVar4 + 0x20))(&local_58,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(local_58 + -0x18);\n                    /* try { // try from 002ed39a to 002ed39e has its CatchHandler @ 002ed7bf */\n  pcVar5 = (char *)thunk_FUN_002d9490();\n                    /* try { // try from 002ed3ae to 002ed3b2 has its CatchHandler @ 002ed7c6 */\n  FUN_0030cda0(&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_0043df40) {\n                    /* try { // try from 002ed3ed to 002ed3f1 has its CatchHandler @ 002ed6b3 */\n    FUN_0030f630(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b);\n  }\n  else {\n                    /* try { // try from 002ed61b to 002ed61c has its CatchHandler @ 002ed6af */\n    (**(code **)(*plVar4 + 0x28))(&local_50,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x30) = *(undefined8 *)(local_50 + -0x18);\n                    /* try { // try from 002ed3ff to 002ed403 has its CatchHandler @ 002ed75f */\n  uVar6 = thunk_FUN_002d9490();\n                    /* try { // try from 002ed413 to 002ed417 has its CatchHandler @ 002ed75b */\n  FUN_0030cda0(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0);\n  if (*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dec0) {\n                    /* try { // try from 002ed442 to 002ed446 has its CatchHandler @ 002ed6b1 */\n    FUN_0030f630(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a);\n  }\n  else {\n                    /* try { // try from 002ed633 to 002ed634 has its CatchHandler @ 002ed81f */\n    (**(code **)(*plVar4 + 0x30))(&local_48,plVar4);\n  }\n  *(undefined8 *)(param_1 + 0x40) = *(undefined8 *)(local_48 + -0x18);\n                    /* try { // try from 002ed454 to 002ed458 has its CatchHandler @ 002ed761 */\n  uVar7 = thunk_FUN_002d9490();\n                    /* try { // try from 002ed468 to 002ed46c has its CatchHandler @ 002ed75d */\n  FUN_0030cda0(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0);\n  if (*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043db08) {\n                    /* try { // try from 002ed49c to 002ed4a0 has its CatchHandler @ 002ed7d7 */\n    FUN_0030f630(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59);\n  }\n  else {\n                    /* try { // try from 002ed650 to 002ed651 has its CatchHandler @ 002ed7c8 */\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 002ed4ae to 002ed4b2 has its CatchHandler @ 002ed802 */\n  uVar8 = thunk_FUN_002d9490();\n                    /* try { // try from 002ed4c4 to 002ed529 has its CatchHandler @ 002ed7c1 */\n  FUN_0030cda0(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0);\n  if (*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043dd68) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x5c);\n  }\n  else {\n                    /* try { // try from 002ed663 to 002ed664 has its CatchHandler @ 002ed7c1 */\n    uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4);\n  }\n  *(undefined4 *)(param_1 + 0x5c) = uVar3;\n  if (*(code **)(*plVar4 + 0x50) == (code *)PTR_FUN_0043dcc0) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x60);\n  }\n  else {\n                    /* try { // try from 002ed603 to 002ed604 has its CatchHandler @ 002ed7c1 */\n    uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4);\n  }\n  *(undefined4 *)(param_1 + 0x60) = uVar3;\n  uVar9 = FUN_002ec660(param_2);\n  FUN_002ea740(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_002ea260((undefined8 *)(local_40[0] + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_48 + -0x18) != &DAT_0044a540) {\n    FUN_002ea260((undefined8 *)(local_48 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_50 + -0x18) != &DAT_0044a540) {\n    FUN_002ea260((undefined8 *)(local_50 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_58 + -0x18) != &DAT_0044a540) {\n    FUN_002ea260((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_002ed290(param_2);" (assignment_expression "plVar4 = (long *)FUN_002ed290(param_2)" identifier = (cast_expression "(long *)FUN_002ed290(param_2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002ed290(param_2)" identifier (argument_list "(param_2)" ( identifier ))))) ;) (if_statement "if (*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043df60) {\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_0043df60)" ( (binary_expression "*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043df60" (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_0043df60" ( (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_0043dcd0) {\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_0043dcd0)" ( (binary_expression "*(code **)(*plVar4 + 0x18) == (code *)PTR_FUN_0043dcd0" (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_0043dcd0" ( (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_0043db58) {\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_0043db58)" ( (binary_expression "*(code **)(*plVar4 + 0x40) == (code *)PTR_FUN_0043db58" (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_0043db58" ( (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_0043dd88) {\n                    /* try { // try from 002ed388 to 002ed38c has its CatchHandler @ 002ed7ca */\n    FUN_0030f630(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40);\n  }\n  else {\n                    /* try { // try from 002ed5c3 to 002ed5c4 has its CatchHandler @ 002ed7ca */\n    (**(code **)(*plVar4 + 0x20))(&local_58,plVar4);\n  }" if (parenthesized_expression "(*(code **)(*plVar4 + 0x20) == (code *)PTR_FUN_0043dd88)" ( (binary_expression "*(code **)(*plVar4 + 0x20) == (code *)PTR_FUN_0043dd88" (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_0043dd88" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n                    /* try { // try from 002ed388 to 002ed38c has its CatchHandler @ 002ed7ca */\n    FUN_0030f630(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40);\n  }" { comment (expression_statement "FUN_0030f630(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40);" (call_expression "FUN_0030f630(&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 002ed5c3 to 002ed5c4 has its CatchHandler @ 002ed7ca */\n    (**(code **)(*plVar4 + 0x20))(&local_58,plVar4);\n  }" else (compound_statement "{\n                    /* try { // try from 002ed5c3 to 002ed5c4 has its CatchHandler @ 002ed7ca */\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_002d9490();" (assignment_expression "pcVar5 = (char *)thunk_FUN_002d9490()" identifier = (cast_expression "(char *)thunk_FUN_002d9490()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "thunk_FUN_002d9490()" identifier (argument_list "()" ( ))))) ;) comment (expression_statement "FUN_0030cda0(&local_58,pcVar5,*(undefined8 *)(param_1 + 0x18),0);" (call_expression "FUN_0030cda0(&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_0043df40) {\n                    /* try { // try from 002ed3ed to 002ed3f1 has its CatchHandler @ 002ed6b3 */\n    FUN_0030f630(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b);\n  }\n  else {\n                    /* try { // try from 002ed61b to 002ed61c has its CatchHandler @ 002ed6af */\n    (**(code **)(*plVar4 + 0x28))(&local_50,plVar4);\n  }" if (parenthesized_expression "(*(code **)(*plVar4 + 0x28) == (code *)PTR_FUN_0043df40)" ( (binary_expression "*(code **)(*plVar4 + 0x28) == (code *)PTR_FUN_0043df40" (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_0043df40" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n                    /* try { // try from 002ed3ed to 002ed3f1 has its CatchHandler @ 002ed6b3 */\n    FUN_0030f630(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b);\n  }" { comment (expression_statement "FUN_0030f630(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b);" (call_expression "FUN_0030f630(&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 002ed61b to 002ed61c has its CatchHandler @ 002ed6af */\n    (**(code **)(*plVar4 + 0x28))(&local_50,plVar4);\n  }" else (compound_statement "{\n                    /* try { // try from 002ed61b to 002ed61c has its CatchHandler @ 002ed6af */\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_002d9490();" (assignment_expression "uVar6 = thunk_FUN_002d9490()" identifier = (call_expression "thunk_FUN_002d9490()" identifier (argument_list "()" ( )))) ;) comment (expression_statement "FUN_0030cda0(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0);" (call_expression "FUN_0030cda0(&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_0043dec0) {\n                    /* try { // try from 002ed442 to 002ed446 has its CatchHandler @ 002ed6b1 */\n    FUN_0030f630(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a);\n  }\n  else {\n                    /* try { // try from 002ed633 to 002ed634 has its CatchHandler @ 002ed81f */\n    (**(code **)(*plVar4 + 0x30))(&local_48,plVar4);\n  }" if (parenthesized_expression "(*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dec0)" ( (binary_expression "*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dec0" (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_0043dec0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n                    /* try { // try from 002ed442 to 002ed446 has its CatchHandler @ 002ed6b1 */\n    FUN_0030f630(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a);\n  }" { comment (expression_statement "FUN_0030f630(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a);" (call_expression "FUN_0030f630(&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 002ed633 to 002ed634 has its CatchHandler @ 002ed81f */\n    (**(code **)(*plVar4 + 0x30))(&local_48,plVar4);\n  }" else (compound_statement "{\n                    /* try { // try from 002ed633 to 002ed634 has its CatchHandler @ 002ed81f */\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_002d9490();" (assignment_expression "uVar7 = thunk_FUN_002d9490()" identifier = (call_expression "thunk_FUN_002d9490()" identifier (argument_list "()" ( )))) ;) comment (expression_statement "FUN_0030cda0(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0);" (call_expression "FUN_0030cda0(&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_0043db08) {\n                    /* try { // try from 002ed49c to 002ed4a0 has its CatchHandler @ 002ed7d7 */\n    FUN_0030f630(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59);\n  }\n  else {\n                    /* try { // try from 002ed650 to 002ed651 has its CatchHandler @ 002ed7c8 */\n    (**(code **)(*plVar4 + 0x38))(local_40,plVar4);\n  }" if (parenthesized_expression "(*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043db08)" ( (binary_expression "*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043db08" (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_0043db08" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n                    /* try { // try from 002ed49c to 002ed4a0 has its CatchHandler @ 002ed7d7 */\n    FUN_0030f630(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59);\n  }" { comment (expression_statement "FUN_0030f630(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59);" (call_expression "FUN_0030f630(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 002ed650 to 002ed651 has its CatchHandler @ 002ed7c8 */\n    (**(code **)(*plVar4 + 0x38))(local_40,plVar4);\n  }" else (compound_statement "{\n                    /* try { // try from 002ed650 to 002ed651 has its CatchHandler @ 002ed7c8 */\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_002d9490();" (assignment_expression "uVar8 = thunk_FUN_002d9490()" identifier = (call_expression "thunk_FUN_002d9490()" identifier (argument_list "()" ( )))) ;) comment (expression_statement "FUN_0030cda0(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0);" (call_expression "FUN_0030cda0(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_0043dd68) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x5c);\n  }\n  else {\n                    /* try { // try from 002ed663 to 002ed664 has its CatchHandler @ 002ed7c1 */\n    uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4);\n  }" if (parenthesized_expression "(*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043dd68)" ( (binary_expression "*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043dd68" (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_0043dd68" ( (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 002ed663 to 002ed664 has its CatchHandler @ 002ed7c1 */\n    uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4);\n  }" else (compound_statement "{\n                    /* try { // try from 002ed663 to 002ed664 has its CatchHandler @ 002ed7c1 */\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_0043dcc0) {\n    uVar3 = *(undefined4 *)(plVar4[2] + 0x60);\n  }\n  else {\n                    /* try { // try from 002ed603 to 002ed604 has its CatchHandler @ 002ed7c1 */\n    uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4);\n  }" if (parenthesized_expression "(*(code **)(*plVar4 + 0x50) == (code *)PTR_FUN_0043dcc0)" ( (binary_expression "*(code **)(*plVar4 + 0x50) == (code *)PTR_FUN_0043dcc0" (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_0043dcc0" ( (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 002ed603 to 002ed604 has its CatchHandler @ 002ed7c1 */\n    uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4);\n  }" else (compound_statement "{\n                    /* try { // try from 002ed603 to 002ed604 has its CatchHandler @ 002ed7c1 */\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_002ec660(param_2);" (assignment_expression "uVar9 = FUN_002ec660(param_2)" identifier = (call_expression "FUN_002ec660(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "FUN_002ea740(uVar9,PTR_DAT_0043e720,PTR_DAT_0043e720 + 0xb,param_1 + 100);" (call_expression "FUN_002ea740(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_002ea260((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_002ea260((undefined8 *)(local_40[0] + -0x18),&local_59);\n  }" { (expression_statement "FUN_002ea260((undefined8 *)(local_40[0] + -0x18),&local_59);" (call_expression "FUN_002ea260((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_002ea260((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_002ea260((undefined8 *)(local_48 + -0x18),&local_59);\n  }" { (expression_statement "FUN_002ea260((undefined8 *)(local_48 + -0x18),&local_59);" (call_expression "FUN_002ea260((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_002ea260((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_002ea260((undefined8 *)(local_50 + -0x18),&local_59);\n  }" { (expression_statement "FUN_002ea260((undefined8 *)(local_50 + -0x18),&local_59);" (call_expression "FUN_002ea260((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_002ea260((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_002ea260((undefined8 *)(local_58 + -0x18),&local_59);\n  }" { (expression_statement "FUN_002ea260((undefined8 *)(local_58 + -0x18),&local_59);" (call_expression "FUN_002ea260((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, true>::_M_cache(std::locale const&) */\n\nvoid __thiscall\nstd::__moneypunct_cache<char,true>::_M_cache(__moneypunct_cache<char,true> *this,locale *param_1)\n\n{\n  ulong uVar1;\n  __moneypunct_cache<char,true> _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,true>>(param_1);\n  if (*(code **)(*(long *)pmVar4 + 0x10) == (code *)PTR_do_decimal_point_0043df60) {\n    _Var2 = *(__moneypunct_cache<char,true> *)(*(long *)(pmVar4 + 0x10) + 0x21);\n  }\n  else {\n    _Var2 = (__moneypunct_cache<char,true>)(**(code **)(*(long *)pmVar4 + 0x10))(pmVar4);\n  }\n  this[0x21] = _Var2;\n  if (*(code **)(*(long *)pmVar4 + 0x18) == (code *)PTR_do_thousands_sep_0043dcd0) {\n    _Var2 = *(__moneypunct_cache<char,true> *)(*(long *)(pmVar4 + 0x10) + 0x22);\n  }\n  else {\n    _Var2 = (__moneypunct_cache<char,true>)(**(code **)(*(long *)pmVar4 + 0x18))(pmVar4);\n  }\n  this[0x22] = _Var2;\n  if (*(code **)(*(long *)pmVar4 + 0x40) == (code *)PTR_do_frac_digits_0043db58) {\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_0043dd88) {\n                    /* try { // try from 002ed388 to 002ed38c has its CatchHandler @ 002ed7ca */\n    std::string::string((string *)&local_58,*(char **)(*(long *)(pmVar4 + 0x10) + 0x10),\n                        (allocator *)local_40);\n  }\n  else {\n                    /* try { // try from 002ed5c3 to 002ed5c4 has its CatchHandler @ 002ed7ca */\n    (**(code **)(*(long *)pmVar4 + 0x20))(&local_58,pmVar4);\n  }\n  uVar1 = *(ulong *)(local_58 + -0x18);\n  *(ulong *)(this + 0x18) = uVar1;\n                    /* try { // try from 002ed39a to 002ed39e has its CatchHandler @ 002ed7bf */\n  pcVar5 = (char *)operator_new__(uVar1);\n                    /* try { // try from 002ed3ae to 002ed3b2 has its CatchHandler @ 002ed7c6 */\n  std::string::copy((string *)&local_58,pcVar5,*(ulong *)(this + 0x18),0);\n  _Var2 = (__moneypunct_cache<char,true>)0x0;\n  if (*(long *)(this + 0x18) != 0) {\n    _Var2 = (__moneypunct_cache<char,true>)((byte)(*pcVar5 - 1U) < 0x7e);\n  }\n  this[0x20] = _Var2;\n  if (*(code **)(*(long *)pmVar4 + 0x28) == (code *)PTR_do_curr_symbol_0043df40) {\n                    /* try { // try from 002ed3ed to 002ed3f1 has its CatchHandler @ 002ed6b3 */\n    std::string::string((string *)&local_50,*(char **)(*(long *)(pmVar4 + 0x10) + 0x28),&local_5b);\n  }\n  else {\n                    /* try { // try from 002ed61b to 002ed61c has its CatchHandler @ 002ed6af */\n    (**(code **)(*(long *)pmVar4 + 0x28))(&local_50,pmVar4);\n  }\n  uVar1 = *(ulong *)(local_50 + -0x18);\n  *(ulong *)(this + 0x30) = uVar1;\n                    /* try { // try from 002ed3ff to 002ed403 has its CatchHandler @ 002ed75f */\n  pcVar6 = (char *)operator_new__(uVar1);\n                    /* try { // try from 002ed413 to 002ed417 has its CatchHandler @ 002ed75b */\n  std::string::copy((string *)&local_50,pcVar6,*(ulong *)(this + 0x30),0);\n  if (*(code **)(*(long *)pmVar4 + 0x30) == (code *)PTR_do_positive_sign_0043dec0) {\n                    /* try { // try from 002ed442 to 002ed446 has its CatchHandler @ 002ed6b1 */\n    std::string::string((string *)&local_48,*(char **)(*(long *)(pmVar4 + 0x10) + 0x38),&local_5a);\n  }\n  else {\n                    /* try { // try from 002ed633 to 002ed634 has its CatchHandler @ 002ed81f */\n    (**(code **)(*(long *)pmVar4 + 0x30))(&local_48,pmVar4);\n  }\n  uVar1 = *(ulong *)(local_48 + -0x18);\n  *(ulong *)(this + 0x40) = uVar1;\n                    /* try { // try from 002ed454 to 002ed458 has its CatchHandler @ 002ed761 */\n  pcVar7 = (char *)operator_new__(uVar1);\n                    /* try { // try from 002ed468 to 002ed46c has its CatchHandler @ 002ed75d */\n  std::string::copy((string *)&local_48,pcVar7,*(ulong *)(this + 0x40),0);\n  if (*(code **)(*(long *)pmVar4 + 0x38) == (code *)PTR_do_negative_sign_0043db08) {\n                    /* try { // try from 002ed49c to 002ed4a0 has its CatchHandler @ 002ed7d7 */\n    std::string::string((string *)local_40,*(char **)(*(long *)(pmVar4 + 0x10) + 0x48),&local_59);\n  }\n  else {\n                    /* try { // try from 002ed650 to 002ed651 has its CatchHandler @ 002ed7c8 */\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 002ed4ae to 002ed4b2 has its CatchHandler @ 002ed802 */\n  pcVar8 = (char *)operator_new__(uVar1);\n                    /* try { // try from 002ed4c4 to 002ed529 has its CatchHandler @ 002ed7c1 */\n  std::string::copy(local_70,pcVar8,*(ulong *)(this + 0x50),0);\n  if (*(code **)(*(long *)pmVar4 + 0x48) == (code *)PTR_do_pos_format_0043dd68) {\n    uVar3 = *(undefined4 *)(*(long *)(pmVar4 + 0x10) + 0x5c);\n  }\n  else {\n                    /* try { // try from 002ed663 to 002ed664 has its CatchHandler @ 002ed7c1 */\n    uVar3 = (**(code **)(*(long *)pmVar4 + 0x48))(pmVar4);\n  }\n  *(undefined4 *)(this + 0x5c) = uVar3;\n  if (*(code **)(*(long *)pmVar4 + 0x50) == (code *)PTR_do_neg_format_0043dcc0) {\n    uVar3 = *(undefined4 *)(*(long *)(pmVar4 + 0x10) + 0x60);\n  }\n  else {\n                    /* try { // try from 002ed603 to 002ed604 has its CatchHandler @ 002ed7c1 */\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,true>)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,true>::_M_cache(__moneypunct_cache<char,true> *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 "true>::_M_cache(__moneypunct_cache<char,true> *this,locale *param_1)\n\n{\n  ulong" identifier > : : (function_declarator "_M_cache(__moneypunct_cache<char,true> *this,locale *param_1)" identifier (parameter_list "(__moneypunct_cache<char,true> *this,locale *param_1)" ( (parameter_declaration "__moneypunct_cache" type_identifier) (ERROR "<char" < primitive_type) , (parameter_declaration "true> *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,true> _Var2;" (update_expression "__moneypunct_cache<char,true> _Var2" (binary_expression "__moneypunct_cache<char,true> _Var2" (binary_expression "__moneypunct_cache<char" identifier < identifier) (ERROR ",true" , true) > 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,true>>(param_1);" (update_expression "pmVar4 = use_facet<std::moneypunct<char,true>>(param_1)" (binary_expression "pmVar4 = use_facet<std::moneypunct<char,true>>(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 ",true" , true) >> (parenthesized_expression "(param_1)" ( identifier ))) --) ;) (if_statement "if (*(code **)(*(long *)pmVar4 + 0x10) == (code *)PTR_do_decimal_point_0043df60) {\n    _Var2 = *(__moneypunct_cache<char,true> *)(*(long *)(pmVar4 + 0x10) + 0x21);\n  }\n  else {\n    _Var2 = (__moneypunct_cache<char,true>)(**(code **)(*(long *)pmVar4 + 0x10))(pmVar4);\n  }" if (parenthesized_expression "(*(code **)(*(long *)pmVar4 + 0x10) == (code *)PTR_do_decimal_point_0043df60)" ( (binary_expression "*(code **)(*(long *)pmVar4 + 0x10) == (code *)PTR_do_decimal_point_0043df60" (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_0043df60" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    _Var2 = *(__moneypunct_cache<char,true> *)(*(long *)(pmVar4 + 0x10) + 0x21);\n  }" { (expression_statement "_Var2 = *(__moneypunct_cache<char,true> *)(*(long *)(pmVar4 + 0x10) + 0x21);" (assignment_expression "_Var2 = *(__moneypunct_cache<char,true> *)(*(long *)(pmVar4 + 0x10) + 0x21)" identifier = (pointer_expression "*(__moneypunct_cache<char,true> *)(*(long *)(pmVar4 + 0x10) + 0x21)" * (call_expression "(__moneypunct_cache<char,true> *)(*(long *)(pmVar4 + 0x10) + 0x21)" (parenthesized_expression "(__moneypunct_cache<char,true> *)" ( (comma_expression "__moneypunct_cache<char,true> *" (binary_expression "__moneypunct_cache<char" identifier < identifier) , (binary_expression "true> *" true > (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,true>)(**(code **)(*(long *)pmVar4 + 0x10))(pmVar4);\n  }" else (compound_statement "{\n    _Var2 = (__moneypunct_cache<char,true>)(**(code **)(*(long *)pmVar4 + 0x10))(pmVar4);\n  }" { (expression_statement "_Var2 = (__moneypunct_cache<char,true>)(**(code **)(*(long *)pmVar4 + 0x10))(pmVar4);" (assignment_expression "_Var2 = (__moneypunct_cache<char,true>)(**(code **)(*(long *)pmVar4 + 0x10))(pmVar4)" identifier = (call_expression "(__moneypunct_cache<char,true>)(**(code **)(*(long *)pmVar4 + 0x10))(pmVar4)" (call_expression "(__moneypunct_cache<char,true>)(**(code **)(*(long *)pmVar4 + 0x10))" (parenthesized_expression "(__moneypunct_cache<char,true>)" ( (comma_expression "__moneypunct_cache<char,true" (binary_expression "__moneypunct_cache<char" identifier < identifier) , true) (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_0043dcd0) {\n    _Var2 = *(__moneypunct_cache<char,true> *)(*(long *)(pmVar4 + 0x10) + 0x22);\n  }\n  else {\n    _Var2 = (__moneypunct_cache<char,true>)(**(code **)(*(long *)pmVar4 + 0x18))(pmVar4);\n  }" if (parenthesized_expression "(*(code **)(*(long *)pmVar4 + 0x18) == (code *)PTR_do_thousands_sep_0043dcd0)" ( (binary_expression "*(code **)(*(long *)pmVar4 + 0x18) == (code *)PTR_do_thousands_sep_0043dcd0" (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_0043dcd0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    _Var2 = *(__moneypunct_cache<char,true> *)(*(long *)(pmVar4 + 0x10) + 0x22);\n  }" { (expression_statement "_Var2 = *(__moneypunct_cache<char,true> *)(*(long *)(pmVar4 + 0x10) + 0x22);" (assignment_expression "_Var2 = *(__moneypunct_cache<char,true> *)(*(long *)(pmVar4 + 0x10) + 0x22)" identifier = (pointer_expression "*(__moneypunct_cache<char,true> *)(*(long *)(pmVar4 + 0x10) + 0x22)" * (call_expression "(__moneypunct_cache<char,true> *)(*(long *)(pmVar4 + 0x10) + 0x22)" (parenthesized_expression "(__moneypunct_cache<char,true> *)" ( (comma_expression "__moneypunct_cache<char,true> *" (binary_expression "__moneypunct_cache<char" identifier < identifier) , (binary_expression "true> *" true > (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,true>)(**(code **)(*(long *)pmVar4 + 0x18))(pmVar4);\n  }" else (compound_statement "{\n    _Var2 = (__moneypunct_cache<char,true>)(**(code **)(*(long *)pmVar4 + 0x18))(pmVar4);\n  }" { (expression_statement "_Var2 = (__moneypunct_cache<char,true>)(**(code **)(*(long *)pmVar4 + 0x18))(pmVar4);" (assignment_expression "_Var2 = (__moneypunct_cache<char,true>)(**(code **)(*(long *)pmVar4 + 0x18))(pmVar4)" identifier = (call_expression "(__moneypunct_cache<char,true>)(**(code **)(*(long *)pmVar4 + 0x18))(pmVar4)" (call_expression "(__moneypunct_cache<char,true>)(**(code **)(*(long *)pmVar4 + 0x18))" (parenthesized_expression "(__moneypunct_cache<char,true>)" ( (comma_expression "__moneypunct_cache<char,true" (binary_expression "__moneypunct_cache<char" identifier < identifier) , true) (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_0043db58) {\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_0043db58)" ( (binary_expression "*(code **)(*(long *)pmVar4 + 0x40) == (code *)PTR_do_frac_digits_0043db58" (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_0043db58" ( (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_0043dd88) {\n                    /* try { // try from 002ed388 to 002ed38c has its CatchHandler @ 002ed7ca */\n    std::string::string((string *)&local_58,*(char **)(*(long *)(pmVar4 + 0x10) + 0x10),\n                        (allocator *)local_40);\n  }\n  else {\n                    /* try { // try from 002ed5c3 to 002ed5c4 has its CatchHandler @ 002ed7ca */\n    (**(code **)(*(long *)pmVar4 + 0x20))(&local_58,pmVar4);\n  }" if (parenthesized_expression "(*(code **)(*(long *)pmVar4 + 0x20) == (code *)PTR_do_grouping_0043dd88)" ( (binary_expression "*(code **)(*(long *)pmVar4 + 0x20) == (code *)PTR_do_grouping_0043dd88" (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_0043dd88" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n                    /* try { // try from 002ed388 to 002ed38c has its CatchHandler @ 002ed7ca */\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 002ed5c3 to 002ed5c4 has its CatchHandler @ 002ed7ca */\n    (**(code **)(*(long *)pmVar4 + 0x20))(&local_58,pmVar4);\n  }" else (compound_statement "{\n                    /* try { // try from 002ed5c3 to 002ed5c4 has its CatchHandler @ 002ed7ca */\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,true>)0x0;" (assignment_expression "_Var2 = (__moneypunct_cache<char,true>)0x0" identifier = (parenthesized_expression "(__moneypunct_cache<char,true>)0x0" ( (comma_expression "__moneypunct_cache<char,true>)0x0" (binary_expression "__moneypunct_cache<char" identifier < identifier) , (binary_expression "true>)0x0" true > (ERROR ")" )) number_literal)) ))) ;) (if_statement "if (*(long *)(this + 0x18) != 0) {\n    _Var2 = (__moneypunct_cache<char,true>)((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,true>)((byte)(*pcVar5 - 1U) < 0x7e);\n  }" { (expression_statement "_Var2 = (__moneypunct_cache<char,true>)((byte)(*pcVar5 - 1U) < 0x7e);" (assignment_expression "_Var2 = (__moneypunct_cache<char,true>)((byte)(*pcVar5 - 1U) < 0x7e)" identifier = (call_expression "(__moneypunct_cache<char,true>)((byte)(*pcVar5 - 1U) < 0x7e)" (parenthesized_expression "(__moneypunct_cache<char,true>)" ( (comma_expression "__moneypunct_cache<char,true" (binary_expression "__moneypunct_cache<char" identifier < identifier) , true) (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_0043df40) {\n                    /* try { // try from 002ed3ed to 002ed3f1 has its CatchHandler @ 002ed6b3 */\n    std::string::string((string *)&local_50,*(char **)(*(long *)(pmVar4 + 0x10) + 0x28),&local_5b);\n  }\n  else {\n                    /* try { // try from 002ed61b to 002ed61c has its CatchHandler @ 002ed6af */\n    (**(code **)(*(long *)pmVar4 + 0x28))(&local_50,pmVar4);\n  }" if (parenthesized_expression "(*(code **)(*(long *)pmVar4 + 0x28) == (code *)PTR_do_curr_symbol_0043df40)" ( (binary_expression "*(code **)(*(long *)pmVar4 + 0x28) == (code *)PTR_do_curr_symbol_0043df40" (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_0043df40" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n                    /* try { // try from 002ed3ed to 002ed3f1 has its CatchHandler @ 002ed6b3 */\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 002ed61b to 002ed61c has its CatchHandler @ 002ed6af */\n    (**(code **)(*(long *)pmVar4 + 0x28))(&local_50,pmVar4);\n  }" else (compound_statement "{\n                    /* try { // try from 002ed61b to 002ed61c has its CatchHandler @ 002ed6af */\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_0043dec0) {\n                    /* try { // try from 002ed442 to 002ed446 has its CatchHandler @ 002ed6b1 */\n    std::string::string((string *)&local_48,*(char **)(*(long *)(pmVar4 + 0x10) + 0x38),&local_5a);\n  }\n  else {\n                    /* try { // try from 002ed633 to 002ed634 has its CatchHandler @ 002ed81f */\n    (**(code **)(*(long *)pmVar4 + 0x30))(&local_48,pmVar4);\n  }" if (parenthesized_expression "(*(code **)(*(long *)pmVar4 + 0x30) == (code *)PTR_do_positive_sign_0043dec0)" ( (binary_expression "*(code **)(*(long *)pmVar4 + 0x30) == (code *)PTR_do_positive_sign_0043dec0" (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_0043dec0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n                    /* try { // try from 002ed442 to 002ed446 has its CatchHandler @ 002ed6b1 */\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 002ed633 to 002ed634 has its CatchHandler @ 002ed81f */\n    (**(code **)(*(long *)pmVar4 + 0x30))(&local_48,pmVar4);\n  }" else (compound_statement "{\n                    /* try { // try from 002ed633 to 002ed634 has its CatchHandler @ 002ed81f */\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_0043db08) {\n                    /* try { // try from 002ed49c to 002ed4a0 has its CatchHandler @ 002ed7d7 */\n    std::string::string((string *)local_40,*(char **)(*(long *)(pmVar4 + 0x10) + 0x48),&local_59);\n  }\n  else {\n                    /* try { // try from 002ed650 to 002ed651 has its CatchHandler @ 002ed7c8 */\n    (**(code **)(*(long *)pmVar4 + 0x38))(local_40,pmVar4);\n  }" if (parenthesized_expression "(*(code **)(*(long *)pmVar4 + 0x38) == (code *)PTR_do_negative_sign_0043db08)" ( (binary_expression "*(code **)(*(long *)pmVar4 + 0x38) == (code *)PTR_do_negative_sign_0043db08" (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_0043db08" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n                    /* try { // try from 002ed49c to 002ed4a0 has its CatchHandler @ 002ed7d7 */\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 002ed650 to 002ed651 has its CatchHandler @ 002ed7c8 */\n    (**(code **)(*(long *)pmVar4 + 0x38))(local_40,pmVar4);\n  }" else (compound_statement "{\n                    /* try { // try from 002ed650 to 002ed651 has its CatchHandler @ 002ed7c8 */\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_0043dd68) {\n    uVar3 = *(undefined4 *)(*(long *)(pmVar4 + 0x10) + 0x5c);\n  }\n  else {\n                    /* try { // try from 002ed663 to 002ed664 has its CatchHandler @ 002ed7c1 */\n    uVar3 = (**(code **)(*(long *)pmVar4 + 0x48))(pmVar4);\n  }" if (parenthesized_expression "(*(code **)(*(long *)pmVar4 + 0x48) == (code *)PTR_do_pos_format_0043dd68)" ( (binary_expression "*(code **)(*(long *)pmVar4 + 0x48) == (code *)PTR_do_pos_format_0043dd68" (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_0043dd68" ( (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 002ed663 to 002ed664 has its CatchHandler @ 002ed7c1 */\n    uVar3 = (**(code **)(*(long *)pmVar4 + 0x48))(pmVar4);\n  }" else (compound_statement "{\n                    /* try { // try from 002ed663 to 002ed664 has its CatchHandler @ 002ed7c1 */\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_0043dcc0) {\n    uVar3 = *(undefined4 *)(*(long *)(pmVar4 + 0x10) + 0x60);\n  }\n  else {\n                    /* try { // try from 002ed603 to 002ed604 has its CatchHandler @ 002ed7c1 */\n    uVar3 = (**(code **)(*(long *)pmVar4 + 0x50))(pmVar4);\n  }" if (parenthesized_expression "(*(code **)(*(long *)pmVar4 + 0x50) == (code *)PTR_do_neg_format_0043dcc0)" ( (binary_expression "*(code **)(*(long *)pmVar4 + 0x50) == (code *)PTR_do_neg_format_0043dcc0" (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_0043dcc0" ( (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 002ed603 to 002ed604 has its CatchHandler @ 002ed7c1 */\n    uVar3 = (**(code **)(*(long *)pmVar4 + 0x50))(pmVar4);\n  }" else (compound_statement "{\n                    /* try { // try from 002ed603 to 002ed604 has its CatchHandler @ 002ed7c1 */\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,true>)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,true>)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,true>)0x1" (binary_expression "__moneypunct_cache<char" identifier < identifier) , (binary_expression "true>)0x1" true > (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_002ed2e0(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_002ed290(param_2);\n  if (*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043df60) {\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_0043dcd0) {\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_0043db58) {\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_0043dd88) {\n                    \n    FUN_0030f630(&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_002d9490();\n                    \n  FUN_0030cda0(&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_0043df40) {\n                    \n    FUN_0030f630(&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_002d9490();\n                    \n  FUN_0030cda0(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0);\n  if (*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dec0) {\n                    \n    FUN_0030f630(&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_002d9490();\n                    \n  FUN_0030cda0(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0);\n  if (*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043db08) {\n                    \n    FUN_0030f630(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_002d9490();\n                    \n  FUN_0030cda0(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0);\n  if (*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043dd68) {\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_0043dcc0) {\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_002ec660(param_2);\n  FUN_002ea740(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_002ea260((undefined8 *)(local_40[0] + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_48 + -0x18) != &DAT_0044a540) {\n    FUN_002ea260((undefined8 *)(local_48 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_50 + -0x18) != &DAT_0044a540) {\n    FUN_002ea260((undefined8 *)(local_50 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_58 + -0x18) != &DAT_0044a540) {\n    FUN_002ea260((undefined8 *)(local_58 + -0x18),&local_59);\n  }\n  return;\n}\n\n" (function_definition "void FUN_002ed2e0(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_002ed290(param_2);\n  if (*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043df60) {\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_0043dcd0) {\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_0043db58) {\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_0043dd88) {\n                    \n    FUN_0030f630(&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_002d9490();\n                    \n  FUN_0030cda0(&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_0043df40) {\n                    \n    FUN_0030f630(&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_002d9490();\n                    \n  FUN_0030cda0(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0);\n  if (*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dec0) {\n                    \n    FUN_0030f630(&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_002d9490();\n                    \n  FUN_0030cda0(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0);\n  if (*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043db08) {\n                    \n    FUN_0030f630(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_002d9490();\n                    \n  FUN_0030cda0(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0);\n  if (*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043dd68) {\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_0043dcc0) {\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_002ec660(param_2);\n  FUN_002ea740(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_002ea260((undefined8 *)(local_40[0] + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_48 + -0x18) != &DAT_0044a540) {\n    FUN_002ea260((undefined8 *)(local_48 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_50 + -0x18) != &DAT_0044a540) {\n    FUN_002ea260((undefined8 *)(local_50 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_58 + -0x18) != &DAT_0044a540) {\n    FUN_002ea260((undefined8 *)(local_58 + -0x18),&local_59);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_002ed2e0(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_002ed290(param_2);\n  if (*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043df60) {\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_0043dcd0) {\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_0043db58) {\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_0043dd88) {\n                    \n    FUN_0030f630(&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_002d9490();\n                    \n  FUN_0030cda0(&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_0043df40) {\n                    \n    FUN_0030f630(&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_002d9490();\n                    \n  FUN_0030cda0(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0);\n  if (*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dec0) {\n                    \n    FUN_0030f630(&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_002d9490();\n                    \n  FUN_0030cda0(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0);\n  if (*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043db08) {\n                    \n    FUN_0030f630(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_002d9490();\n                    \n  FUN_0030cda0(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0);\n  if (*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043dd68) {\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_0043dcc0) {\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_002ec660(param_2);\n  FUN_002ea740(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_002ea260((undefined8 *)(local_40[0] + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_48 + -0x18) != &DAT_0044a540) {\n    FUN_002ea260((undefined8 *)(local_48 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_50 + -0x18) != &DAT_0044a540) {\n    FUN_002ea260((undefined8 *)(local_50 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_58 + -0x18) != &DAT_0044a540) {\n    FUN_002ea260((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_002ed290(param_2);" (assignment_expression "plVar4 = (long *)FUN_002ed290(param_2)" identifier = (cast_expression "(long *)FUN_002ed290(param_2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002ed290(param_2)" identifier (argument_list "(param_2)" ( identifier ))))) ;) (if_statement "if (*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043df60) {\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_0043df60)" ( (binary_expression "*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043df60" (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_0043df60" ( (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_0043dcd0) {\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_0043dcd0)" ( (binary_expression "*(code **)(*plVar4 + 0x18) == (code *)PTR_FUN_0043dcd0" (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_0043dcd0" ( (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_0043db58) {\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_0043db58)" ( (binary_expression "*(code **)(*plVar4 + 0x40) == (code *)PTR_FUN_0043db58" (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_0043db58" ( (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_0043dd88) {\n                    \n    FUN_0030f630(&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_0043dd88)" ( (binary_expression "*(code **)(*plVar4 + 0x20) == (code *)PTR_FUN_0043dd88" (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_0043dd88" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n                    \n    FUN_0030f630(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40);\n  }" { (expression_statement "FUN_0030f630(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40);" (call_expression "FUN_0030f630(&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_002d9490();" (assignment_expression "pcVar5 = (char *)thunk_FUN_002d9490()" identifier = (cast_expression "(char *)thunk_FUN_002d9490()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "thunk_FUN_002d9490()" identifier (argument_list "()" ( ))))) ;) (expression_statement "FUN_0030cda0(&local_58,pcVar5,*(undefined8 *)(param_1 + 0x18),0);" (call_expression "FUN_0030cda0(&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_0043df40) {\n                    \n    FUN_0030f630(&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_0043df40)" ( (binary_expression "*(code **)(*plVar4 + 0x28) == (code *)PTR_FUN_0043df40" (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_0043df40" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n                    \n    FUN_0030f630(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b);\n  }" { (expression_statement "FUN_0030f630(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b);" (call_expression "FUN_0030f630(&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_002d9490();" (assignment_expression "uVar6 = thunk_FUN_002d9490()" identifier = (call_expression "thunk_FUN_002d9490()" identifier (argument_list "()" ( )))) ;) (expression_statement "FUN_0030cda0(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0);" (call_expression "FUN_0030cda0(&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_0043dec0) {\n                    \n    FUN_0030f630(&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_0043dec0)" ( (binary_expression "*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dec0" (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_0043dec0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n                    \n    FUN_0030f630(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a);\n  }" { (expression_statement "FUN_0030f630(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a);" (call_expression "FUN_0030f630(&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_002d9490();" (assignment_expression "uVar7 = thunk_FUN_002d9490()" identifier = (call_expression "thunk_FUN_002d9490()" identifier (argument_list "()" ( )))) ;) (expression_statement "FUN_0030cda0(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0);" (call_expression "FUN_0030cda0(&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_0043db08) {\n                    \n    FUN_0030f630(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_0043db08)" ( (binary_expression "*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043db08" (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_0043db08" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n                    \n    FUN_0030f630(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59);\n  }" { (expression_statement "FUN_0030f630(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59);" (call_expression "FUN_0030f630(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_002d9490();" (assignment_expression "uVar8 = thunk_FUN_002d9490()" identifier = (call_expression "thunk_FUN_002d9490()" identifier (argument_list "()" ( )))) ;) (expression_statement "FUN_0030cda0(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0);" (call_expression "FUN_0030cda0(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_0043dd68) {\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_0043dd68)" ( (binary_expression "*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043dd68" (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_0043dd68" ( (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_0043dcc0) {\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_0043dcc0)" ( (binary_expression "*(code **)(*plVar4 + 0x50) == (code *)PTR_FUN_0043dcc0" (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_0043dcc0" ( (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_002ec660(param_2);" (assignment_expression "uVar9 = FUN_002ec660(param_2)" identifier = (call_expression "FUN_002ec660(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "FUN_002ea740(uVar9,PTR_DAT_0043e720,PTR_DAT_0043e720 + 0xb,param_1 + 100);" (call_expression "FUN_002ea740(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_002ea260((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_002ea260((undefined8 *)(local_40[0] + -0x18),&local_59);\n  }" { (expression_statement "FUN_002ea260((undefined8 *)(local_40[0] + -0x18),&local_59);" (call_expression "FUN_002ea260((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_002ea260((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_002ea260((undefined8 *)(local_48 + -0x18),&local_59);\n  }" { (expression_statement "FUN_002ea260((undefined8 *)(local_48 + -0x18),&local_59);" (call_expression "FUN_002ea260((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_002ea260((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_002ea260((undefined8 *)(local_50 + -0x18),&local_59);\n  }" { (expression_statement "FUN_002ea260((undefined8 *)(local_50 + -0x18),&local_59);" (call_expression "FUN_002ea260((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_002ea260((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_002ea260((undefined8 *)(local_58 + -0x18),&local_59);\n  }" { (expression_statement "FUN_002ea260((undefined8 *)(local_58 + -0x18),&local_59);" (call_expression "FUN_002ea260((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_002ed2e0(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_002ed290(param_2);\n  if (*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043df60) {\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_0043dcd0) {\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_0043db58) {\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_0043dd88) {\n                    \n    FUN_0030f630(&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_002d9490();\n                    \n  FUN_0030cda0(&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_0043df40) {\n                    \n    FUN_0030f630(&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_002d9490();\n                    \n  FUN_0030cda0(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0);\n  if (*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dec0) {\n                    \n    FUN_0030f630(&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_002d9490();\n                    \n  FUN_0030cda0(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0);\n  if (*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043db08) {\n                    \n    FUN_0030f630(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_002d9490();\n                    \n  FUN_0030cda0(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0);\n  if (*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043dd68) {\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_0043dcc0) {\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_002ec660(param_2);\n  FUN_002ea740(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_002ea260((undefined8 *)(local_40[0] + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_48 + -0x18) != &DAT_0044a540) {\n    FUN_002ea260((undefined8 *)(local_48 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_50 + -0x18) != &DAT_0044a540) {\n    FUN_002ea260((undefined8 *)(local_50 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_58 + -0x18) != &DAT_0044a540) {\n    FUN_002ea260((undefined8 *)(local_58 + -0x18),&local_59);\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_002ed2e0(long param_1,undefined8 param_2)" (identifier "FUN_002ed2e0") (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_002ed290(param_2);\n  if (*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043df60) {\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_0043dcd0) {\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_0043db58) {\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_0043dd88) {\n                    \n    FUN_0030f630(&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_002d9490();\n                    \n  FUN_0030cda0(&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_0043df40) {\n                    \n    FUN_0030f630(&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_002d9490();\n                    \n  FUN_0030cda0(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0);\n  if (*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dec0) {\n                    \n    FUN_0030f630(&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_002d9490();\n                    \n  FUN_0030cda0(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0);\n  if (*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043db08) {\n                    \n    FUN_0030f630(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_002d9490();\n                    \n  FUN_0030cda0(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0);\n  if (*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043dd68) {\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_0043dcc0) {\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_002ec660(param_2);\n  FUN_002ea740(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_002ea260((undefined8 *)(local_40[0] + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_48 + -0x18) != &DAT_0044a540) {\n    FUN_002ea260((undefined8 *)(local_48 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_50 + -0x18) != &DAT_0044a540) {\n    FUN_002ea260((undefined8 *)(local_50 + -0x18),&local_59);\n  }\n  if ((undefined8 *)(local_58 + -0x18) != &DAT_0044a540) {\n    FUN_002ea260((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_002ed290(param_2);" (assignment_expression "plVar4 = (long *)FUN_002ed290(param_2)" (identifier "plVar4") (= "=") (cast_expression "(long *)FUN_002ed290(param_2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002ed290(param_2)" (identifier "FUN_002ed290") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))))) (; ";")) (if_statement "if (*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043df60) {\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_0043df60)" (( "(") (binary_expression "*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043df60" (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_0043df60" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_0043df60"))) () ")")) (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_0043dcd0) {\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_0043dcd0)" (( "(") (binary_expression "*(code **)(*plVar4 + 0x18) == (code *)PTR_FUN_0043dcd0" (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_0043dcd0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_0043dcd0"))) () ")")) (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_0043db58) {\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_0043db58)" (( "(") (binary_expression "*(code **)(*plVar4 + 0x40) == (code *)PTR_FUN_0043db58" (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_0043db58" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_0043db58"))) () ")")) (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_0043dd88) {\n                    \n    FUN_0030f630(&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_0043dd88)" (( "(") (binary_expression "*(code **)(*plVar4 + 0x20) == (code *)PTR_FUN_0043dd88" (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_0043dd88" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_0043dd88"))) () ")")) (compound_statement "{\n                    \n    FUN_0030f630(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40);\n  }" ({ "{") (expression_statement "FUN_0030f630(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40);" (call_expression "FUN_0030f630(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40)" (identifier "FUN_0030f630") (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_002d9490();" (assignment_expression "pcVar5 = (char *)thunk_FUN_002d9490()" (identifier "pcVar5") (= "=") (cast_expression "(char *)thunk_FUN_002d9490()" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "thunk_FUN_002d9490()" (identifier "thunk_FUN_002d9490") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "FUN_0030cda0(&local_58,pcVar5,*(undefined8 *)(param_1 + 0x18),0);" (call_expression "FUN_0030cda0(&local_58,pcVar5,*(undefined8 *)(param_1 + 0x18),0)" (identifier "FUN_0030cda0") (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_0043df40) {\n                    \n    FUN_0030f630(&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_0043df40)" (( "(") (binary_expression "*(code **)(*plVar4 + 0x28) == (code *)PTR_FUN_0043df40" (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_0043df40" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_0043df40"))) () ")")) (compound_statement "{\n                    \n    FUN_0030f630(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b);\n  }" ({ "{") (expression_statement "FUN_0030f630(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b);" (call_expression "FUN_0030f630(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b)" (identifier "FUN_0030f630") (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_002d9490();" (assignment_expression "uVar6 = thunk_FUN_002d9490()" (identifier "uVar6") (= "=") (call_expression "thunk_FUN_002d9490()" (identifier "thunk_FUN_002d9490") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "FUN_0030cda0(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0);" (call_expression "FUN_0030cda0(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0)" (identifier "FUN_0030cda0") (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_0043dec0) {\n                    \n    FUN_0030f630(&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_0043dec0)" (( "(") (binary_expression "*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dec0" (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_0043dec0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_0043dec0"))) () ")")) (compound_statement "{\n                    \n    FUN_0030f630(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a);\n  }" ({ "{") (expression_statement "FUN_0030f630(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a);" (call_expression "FUN_0030f630(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a)" (identifier "FUN_0030f630") (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_002d9490();" (assignment_expression "uVar7 = thunk_FUN_002d9490()" (identifier "uVar7") (= "=") (call_expression "thunk_FUN_002d9490()" (identifier "thunk_FUN_002d9490") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "FUN_0030cda0(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0);" (call_expression "FUN_0030cda0(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0)" (identifier "FUN_0030cda0") (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_0043db08) {\n                    \n    FUN_0030f630(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_0043db08)" (( "(") (binary_expression "*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043db08" (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_0043db08" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_0043db08"))) () ")")) (compound_statement "{\n                    \n    FUN_0030f630(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59);\n  }" ({ "{") (expression_statement "FUN_0030f630(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59);" (call_expression "FUN_0030f630(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59)" (identifier "FUN_0030f630") (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_002d9490();" (assignment_expression "uVar8 = thunk_FUN_002d9490()" (identifier "uVar8") (= "=") (call_expression "thunk_FUN_002d9490()" (identifier "thunk_FUN_002d9490") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "FUN_0030cda0(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0);" (call_expression "FUN_0030cda0(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0)" (identifier "FUN_0030cda0") (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_0043dd68) {\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_0043dd68)" (( "(") (binary_expression "*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043dd68" (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_0043dd68" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_0043dd68"))) () ")")) (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_0043dcc0) {\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_0043dcc0)" (( "(") (binary_expression "*(code **)(*plVar4 + 0x50) == (code *)PTR_FUN_0043dcc0" (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_0043dcc0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_0043dcc0"))) () ")")) (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_002ec660(param_2);" (assignment_expression "uVar9 = FUN_002ec660(param_2)" (identifier "uVar9") (= "=") (call_expression "FUN_002ec660(param_2)" (identifier "FUN_002ec660") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "FUN_002ea740(uVar9,PTR_DAT_0043e720,PTR_DAT_0043e720 + 0xb,param_1 + 100);" (call_expression "FUN_002ea740(uVar9,PTR_DAT_0043e720,PTR_DAT_0043e720 + 0xb,param_1 + 100)" (identifier "FUN_002ea740") (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_002ea260((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_002ea260((undefined8 *)(local_40[0] + -0x18),&local_59);\n  }" ({ "{") (expression_statement "FUN_002ea260((undefined8 *)(local_40[0] + -0x18),&local_59);" (call_expression "FUN_002ea260((undefined8 *)(local_40[0] + -0x18),&local_59)" (identifier "FUN_002ea260") (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_002ea260((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_002ea260((undefined8 *)(local_48 + -0x18),&local_59);\n  }" ({ "{") (expression_statement "FUN_002ea260((undefined8 *)(local_48 + -0x18),&local_59);" (call_expression "FUN_002ea260((undefined8 *)(local_48 + -0x18),&local_59)" (identifier "FUN_002ea260") (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_002ea260((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_002ea260((undefined8 *)(local_50 + -0x18),&local_59);\n  }" ({ "{") (expression_statement "FUN_002ea260((undefined8 *)(local_50 + -0x18),&local_59);" (call_expression "FUN_002ea260((undefined8 *)(local_50 + -0x18),&local_59)" (identifier "FUN_002ea260") (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_002ea260((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_002ea260((undefined8 *)(local_58 + -0x18),&local_59);\n  }" ({ "{") (expression_statement "FUN_002ea260((undefined8 *)(local_58 + -0x18),&local_59);" (call_expression "FUN_002ea260((undefined8 *)(local_58 + -0x18),&local_59)" (identifier "FUN_002ea260") (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, true>::_M_cache(std::locale const&) */

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

{
  type_7 uVar1;
  var_1<var_2,true> 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,true>>(param_1);
  if (*(type_6 **)(*(long *)var_6 + 0x10) == (type_6 *)PTR_do_decimal_point_0043df60) {
    var_3 = *(var_1<var_2,true> *)(*(long *)(var_6 + 0x10) + 0x21);
  }
  else {
    var_3 = (var_1<var_2,true>)(**(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_0043dcd0) {
    var_3 = *(var_1<var_2,true> *)(*(long *)(var_6 + 0x10) + 0x22);
  }
  else {
    var_3 = (var_1<var_2,true>)(**(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_0043db58) {
    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_0043dd88) {
                    /* try { // try from 002ed388 to 002ed38c has its CatchHandler @ 002ed7ca */
    std::string::type_4((type_4 *)&var_8,*(char **)(*(long *)(var_6 + 0x10) + 0x10),
                        (type_5 *)local_40);
  }
  else {
                    /* try { // try from 002ed5c3 to 002ed5c4 has its CatchHandler @ 002ed7ca */
    (**(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 002ed39a to 002ed39e has its CatchHandler @ 002ed7bf */
  pcVar5 = (char *)var_9(uVar1);
                    /* try { // try from 002ed3ae to 002ed3b2 has its CatchHandler @ 002ed7c6 */
  std::string::var_10((type_4 *)&var_8,pcVar5,*(type_7 *)(var_7 + 0x18),0);
  var_3 = (var_1<var_2,true>)0x0;
  if (*(long *)(var_7 + 0x18) != 0) {
    var_3 = (var_1<var_2,true>)((byte)(*pcVar5 - 1U) < 0x7e);
  }
  var_7[0x20] = var_3;
  if (*(type_6 **)(*(long *)var_6 + 0x28) == (type_6 *)PTR_do_curr_symbol_0043df40) {
                    /* try { // try from 002ed3ed to 002ed3f1 has its CatchHandler @ 002ed6b3 */
    std::string::type_4((type_4 *)&var_11,*(char **)(*(long *)(var_6 + 0x10) + 0x28),&local_5b);
  }
  else {
                    /* try { // try from 002ed61b to 002ed61c has its CatchHandler @ 002ed6af */
    (**(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 002ed3ff to 002ed403 has its CatchHandler @ 002ed75f */
  pcVar6 = (char *)var_9(uVar1);
                    /* try { // try from 002ed413 to 002ed417 has its CatchHandler @ 002ed75b */
  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_0043dec0) {
                    /* try { // try from 002ed442 to 002ed446 has its CatchHandler @ 002ed6b1 */
    std::string::type_4((type_4 *)&var_12,*(char **)(*(long *)(var_6 + 0x10) + 0x38),&local_5a);
  }
  else {
                    /* try { // try from 002ed633 to 002ed634 has its CatchHandler @ 002ed81f */
    (**(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 002ed454 to 002ed458 has its CatchHandler @ 002ed761 */
  pcVar7 = (char *)var_9(uVar1);
                    /* try { // try from 002ed468 to 002ed46c has its CatchHandler @ 002ed75d */
  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_0043db08) {
                    /* try { // try from 002ed49c to 002ed4a0 has its CatchHandler @ 002ed7d7 */
    std::string::type_4((type_4 *)local_40,*(char **)(*(long *)(var_6 + 0x10) + 0x48),&local_59);
  }
  else {
                    /* try { // try from 002ed650 to 002ed651 has its CatchHandler @ 002ed7c8 */
    (**(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 002ed4ae to 002ed4b2 has its CatchHandler @ 002ed802 */
  pcVar8 = (char *)var_9(uVar1);
                    /* try { // try from 002ed4c4 to 002ed529 has its CatchHandler @ 002ed7c1 */
  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_0043dd68) {
    uVar3 = *(type_1 *)(*(long *)(var_6 + 0x10) + 0x5c);
  }
  else {
                    /* try { // try from 002ed663 to 002ed664 has its CatchHandler @ 002ed7c1 */
    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_0043dcc0) {
    uVar3 = *(type_1 *)(*(long *)(var_6 + 0x10) + 0x60);
  }
  else {
                    /* try { // try from 002ed603 to 002ed604 has its CatchHandler @ 002ed7c1 */
    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,true>)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_002ed290(param_2);
  if (*(code **)(*plVar4 + 0x10) == (code *)PTR_FUN_0043df60) {
    uVar2 = *(undefined1 *)(plVar4[2] + 0x21);
  }
  else {
    uVar2 = (**(code **)(*plVar4 + 0x10))(plVar4);
  }
  *(undefined1 *)(param_1 + 0x21) = uVar2;
  if (*(code **)(*plVar4 + 0x18) == (code *)PTR_FUN_0043dcd0) {
    uVar2 = *(undefined1 *)(plVar4[2] + 0x22);
  }
  else {
    uVar2 = (**(code **)(*plVar4 + 0x18))(plVar4);
  }
  *(undefined1 *)(param_1 + 0x22) = uVar2;
  if (*(code **)(*plVar4 + 0x40) == (code *)PTR_FUN_0043db58) {
    uVar3 = *(undefined4 *)(plVar4[2] + 0x58);
  }
  else {
    uVar3 = (**(code **)(*plVar4 + 0x40))(plVar4);
  }
  *(undefined4 *)(param_1 + 0x58) = uVar3;
  if (*(code **)(*plVar4 + 0x20) == (code *)PTR_FUN_0043dd88) {
                    /* try { // try from 002ed388 to 002ed38c has its CatchHandler @ 002ed7ca */
    FUN_0030f630(&local_58,*(undefined8 *)(plVar4[2] + 0x10),local_40);
  }
  else {
                    /* try { // try from 002ed5c3 to 002ed5c4 has its CatchHandler @ 002ed7ca */
    (**(code **)(*plVar4 + 0x20))(&local_58,plVar4);
  }
  *(undefined8 *)(param_1 + 0x18) = *(undefined8 *)(local_58 + -0x18);
                    /* try { // try from 002ed39a to 002ed39e has its CatchHandler @ 002ed7bf */
  pcVar5 = (char *)thunk_FUN_002d9490();
                    /* try { // try from 002ed3ae to 002ed3b2 has its CatchHandler @ 002ed7c6 */
  FUN_0030cda0(&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_0043df40) {
                    /* try { // try from 002ed3ed to 002ed3f1 has its CatchHandler @ 002ed6b3 */
    FUN_0030f630(&local_50,*(undefined8 *)(plVar4[2] + 0x28),&local_5b);
  }
  else {
                    /* try { // try from 002ed61b to 002ed61c has its CatchHandler @ 002ed6af */
    (**(code **)(*plVar4 + 0x28))(&local_50,plVar4);
  }
  *(undefined8 *)(param_1 + 0x30) = *(undefined8 *)(local_50 + -0x18);
                    /* try { // try from 002ed3ff to 002ed403 has its CatchHandler @ 002ed75f */
  uVar6 = thunk_FUN_002d9490();
                    /* try { // try from 002ed413 to 002ed417 has its CatchHandler @ 002ed75b */
  FUN_0030cda0(&local_50,uVar6,*(undefined8 *)(param_1 + 0x30),0);
  if (*(code **)(*plVar4 + 0x30) == (code *)PTR_FUN_0043dec0) {
                    /* try { // try from 002ed442 to 002ed446 has its CatchHandler @ 002ed6b1 */
    FUN_0030f630(&local_48,*(undefined8 *)(plVar4[2] + 0x38),&local_5a);
  }
  else {
                    /* try { // try from 002ed633 to 002ed634 has its CatchHandler @ 002ed81f */
    (**(code **)(*plVar4 + 0x30))(&local_48,plVar4);
  }
  *(undefined8 *)(param_1 + 0x40) = *(undefined8 *)(local_48 + -0x18);
                    /* try { // try from 002ed454 to 002ed458 has its CatchHandler @ 002ed761 */
  uVar7 = thunk_FUN_002d9490();
                    /* try { // try from 002ed468 to 002ed46c has its CatchHandler @ 002ed75d */
  FUN_0030cda0(&local_48,uVar7,*(undefined8 *)(param_1 + 0x40),0);
  if (*(code **)(*plVar4 + 0x38) == (code *)PTR_FUN_0043db08) {
                    /* try { // try from 002ed49c to 002ed4a0 has its CatchHandler @ 002ed7d7 */
    FUN_0030f630(local_40,*(undefined8 *)(plVar4[2] + 0x48),&local_59);
  }
  else {
                    /* try { // try from 002ed650 to 002ed651 has its CatchHandler @ 002ed7c8 */
    (**(code **)(*plVar4 + 0x38))(local_40,plVar4);
  }
  local_70 = local_40;
  *(undefined8 *)(param_1 + 0x50) = *(undefined8 *)(local_40[0] + -0x18);
                    /* try { // try from 002ed4ae to 002ed4b2 has its CatchHandler @ 002ed802 */
  uVar8 = thunk_FUN_002d9490();
                    /* try { // try from 002ed4c4 to 002ed529 has its CatchHandler @ 002ed7c1 */
  FUN_0030cda0(local_70,uVar8,*(undefined8 *)(param_1 + 0x50),0);
  if (*(code **)(*plVar4 + 0x48) == (code *)PTR_FUN_0043dd68) {
    uVar3 = *(undefined4 *)(plVar4[2] + 0x5c);
  }
  else {
                    /* try { // try from 002ed663 to 002ed664 has its CatchHandler @ 002ed7c1 */
    uVar3 = (**(code **)(*plVar4 + 0x48))(plVar4);
  }
  *(undefined4 *)(param_1 + 0x5c) = uVar3;
  if (*(code **)(*plVar4 + 0x50) == (code *)PTR_FUN_0043dcc0) {
    uVar3 = *(undefined4 *)(plVar4[2] + 0x60);
  }
  else {
                    /* try { // try from 002ed603 to 002ed604 has its CatchHandler @ 002ed7c1 */
    uVar3 = (**(code **)(*plVar4 + 0x50))(plVar4);
  }
  *(undefined4 *)(param_1 + 0x60) = uVar3;
  uVar9 = FUN_002ec660(param_2);
  FUN_002ea740(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_002ea260((undefined8 *)(local_40[0] + -0x18),&local_59);
  }
  if ((undefined8 *)(local_48 + -0x18) != &DAT_0044a540) {
    FUN_002ea260((undefined8 *)(local_48 + -0x18),&local_59);
  }
  if ((undefined8 *)(local_50 + -0x18) != &DAT_0044a540) {
    FUN_002ea260((undefined8 *)(local_50 + -0x18),&local_59);
  }
  if ((undefined8 *)(local_58 + -0x18) != &DAT_0044a540) {
    FUN_002ea260((undefined8 *)(local_58 + -0x18),&local_59);
  }
  return;
}

