
/* void std::__facet_shims::__moneypunct_fill_cache<char, false>(std::integral_constant<bool, true>,
   std::locale::facet const*, std::__moneypunct_cache<char, false>*) */

void std::__facet_shims::__moneypunct_fill_cache<char,false>(long *param_1,long param_2)

{
  ulong uVar1;
  undefined1 uVar2;
  undefined4 uVar3;
  char *pcVar4;
  undefined1 *local_48;
  ulong local_40;
  undefined1 local_38 [16];
  
  uVar2 = (**(code **)(*param_1 + 0x10))();
  *(undefined1 *)(param_2 + 0x21) = uVar2;
  uVar2 = (**(code **)(*param_1 + 0x18))(param_1);
  *(undefined1 *)(param_2 + 0x22) = uVar2;
  uVar3 = (**(code **)(*param_1 + 0x40))(param_1);
  *(undefined8 *)(param_2 + 0x10) = 0;
  *(undefined4 *)(param_2 + 0x58) = uVar3;
  *(undefined8 *)(param_2 + 0x28) = 0;
  *(undefined8 *)(param_2 + 0x38) = 0;
  *(undefined8 *)(param_2 + 0x48) = 0;
  *(undefined1 *)(param_2 + 0x6f) = 1;
  (**(code **)(*param_1 + 0x20))(&local_48,param_1);
  uVar1 = local_40;
                    /* try { // try from 00312112 to 00312129 has its CatchHandler @ 0031225a */
  pcVar4 = (char *)operator_new__(local_40 + 1);
  std::string::copy((string *)&local_48,pcVar4,uVar1,0);
  pcVar4[uVar1] = '\0';
  *(char **)(param_2 + 0x10) = pcVar4;
  *(ulong *)(param_2 + 0x18) = uVar1;
  if (local_48 != local_38) {
    operator_delete(local_48);
  }
  (**(code **)(*param_1 + 0x28))(&local_48,param_1);
  uVar1 = local_40;
                    /* try { // try from 00312160 to 00312177 has its CatchHandler @ 00312263 */
  pcVar4 = (char *)operator_new__(local_40 + 1);
  std::string::copy((string *)&local_48,pcVar4,uVar1,0);
  pcVar4[uVar1] = '\0';
  *(char **)(param_2 + 0x28) = pcVar4;
  *(ulong *)(param_2 + 0x30) = uVar1;
  if (local_48 != local_38) {
    operator_delete(local_48);
  }
  (**(code **)(*param_1 + 0x30))(&local_48,param_1);
  uVar1 = local_40;
                    /* try { // try from 003121ae to 003121c5 has its CatchHandler @ 00312261 */
  pcVar4 = (char *)operator_new__(local_40 + 1);
  std::string::copy((string *)&local_48,pcVar4,uVar1,0);
  pcVar4[uVar1] = '\0';
  *(char **)(param_2 + 0x38) = pcVar4;
  *(ulong *)(param_2 + 0x40) = uVar1;
  if (local_48 != local_38) {
    operator_delete(local_48);
  }
  (**(code **)(*param_1 + 0x38))(&local_48,param_1);
                    /* try { // try from 003121fc to 00312213 has its CatchHandler @ 0031225f */
  pcVar4 = (char *)operator_new__(local_40 + 1);
  std::string::copy((string *)&local_48,pcVar4,local_40,0);
  pcVar4[local_40] = '\0';
  *(char **)(param_2 + 0x48) = pcVar4;
  *(ulong *)(param_2 + 0x50) = local_40;
  if (local_48 != local_38) {
    operator_delete(local_48);
  }
  uVar3 = (**(code **)(*param_1 + 0x48))(param_1);
  *(undefined4 *)(param_2 + 0x5c) = uVar3;
  uVar3 = (**(code **)(*param_1 + 0x50))(param_1);
  *(undefined4 *)(param_2 + 0x60) = uVar3;
  return;
}



void FUN_003120a0(long *param_1,long param_2)

{
  undefined1 uVar1;
  undefined4 uVar2;
  long lVar3;
  long lVar4;
  undefined1 *local_48;
  long local_40;
  undefined1 local_38 [16];
  
  uVar1 = (**(code **)(*param_1 + 0x10))();
  *(undefined1 *)(param_2 + 0x21) = uVar1;
  uVar1 = (**(code **)(*param_1 + 0x18))(param_1);
  *(undefined1 *)(param_2 + 0x22) = uVar1;
  uVar2 = (**(code **)(*param_1 + 0x40))(param_1);
  *(undefined8 *)(param_2 + 0x10) = 0;
  *(undefined4 *)(param_2 + 0x58) = uVar2;
  *(undefined8 *)(param_2 + 0x28) = 0;
  *(undefined8 *)(param_2 + 0x38) = 0;
  *(undefined8 *)(param_2 + 0x48) = 0;
  *(undefined1 *)(param_2 + 0x6f) = 1;
  (**(code **)(*param_1 + 0x20))(&local_48,param_1);
  lVar4 = local_40;
                    /* try { // try from 00312112 to 00312129 has its CatchHandler @ 0031225a */
  lVar3 = thunk_FUN_002d9490(local_40 + 1);
  FUN_002e3100(&local_48,lVar3,lVar4,0);
  *(undefined1 *)(lVar3 + lVar4) = 0;
  *(long *)(param_2 + 0x10) = lVar3;
  *(long *)(param_2 + 0x18) = lVar4;
  if (local_48 != local_38) {
    FUN_002dac60();
  }
  (**(code **)(*param_1 + 0x28))(&local_48,param_1);
  lVar4 = local_40;
                    /* try { // try from 00312160 to 00312177 has its CatchHandler @ 00312263 */
  lVar3 = thunk_FUN_002d9490(local_40 + 1);
  FUN_002e3100(&local_48,lVar3,lVar4,0);
  *(undefined1 *)(lVar3 + lVar4) = 0;
  *(long *)(param_2 + 0x28) = lVar3;
  *(long *)(param_2 + 0x30) = lVar4;
  if (local_48 != local_38) {
    FUN_002dac60();
  }
  (**(code **)(*param_1 + 0x30))(&local_48,param_1);
  lVar4 = local_40;
                    /* try { // try from 003121ae to 003121c5 has its CatchHandler @ 00312261 */
  lVar3 = thunk_FUN_002d9490(local_40 + 1);
  FUN_002e3100(&local_48,lVar3,lVar4,0);
  *(undefined1 *)(lVar3 + lVar4) = 0;
  *(long *)(param_2 + 0x38) = lVar3;
  *(long *)(param_2 + 0x40) = lVar4;
  if (local_48 != local_38) {
    FUN_002dac60();
  }
  (**(code **)(*param_1 + 0x38))(&local_48,param_1);
                    /* try { // try from 003121fc to 00312213 has its CatchHandler @ 0031225f */
  lVar4 = thunk_FUN_002d9490(local_40 + 1);
  FUN_002e3100(&local_48,lVar4,local_40,0);
  *(undefined1 *)(lVar4 + local_40) = 0;
  *(long *)(param_2 + 0x48) = lVar4;
  *(long *)(param_2 + 0x50) = local_40;
  if (local_48 != local_38) {
    FUN_002dac60();
  }
  uVar2 = (**(code **)(*param_1 + 0x48))(param_1);
  *(undefined4 *)(param_2 + 0x5c) = uVar2;
  uVar2 = (**(code **)(*param_1 + 0x50))(param_1);
  *(undefined4 *)(param_2 + 0x60) = uVar2;
  return;
}


PUSH R14
PUSH R13
PUSH R12
PUSH RBP
MOV RBP,RDI
PUSH RBX
MOV RBX,RSI
SUB RSP,0x20
MOV RAX,qword ptr [RDI]
MOV R12,RSP
CALL qword ptr [RAX + 0x10]
MOV RDI,RBP
MOV byte ptr [RBX + 0x21],AL
MOV RAX,qword ptr [RBP]
CALL qword ptr [RAX + 0x18]
MOV RDI,RBP
MOV byte ptr [RBX + 0x22],AL
MOV RAX,qword ptr [RBP]
CALL qword ptr [RAX + 0x40]
MOV qword ptr [RBX + 0x10],0x0
MOV RDI,R12
MOV RSI,RBP
MOV dword ptr [RBX + 0x58],EAX
MOV qword ptr [RBX + 0x28],0x0
MOV qword ptr [RBX + 0x38],0x0
MOV qword ptr [RBX + 0x48],0x0
MOV byte ptr [RBX + 0x6f],0x1
MOV RAX,qword ptr [RBP]
CALL qword ptr [RAX + 0x20]
MOV R13,qword ptr [RSP + 0x8]
LEA RDI,[R13 + 0x1]
CALL 0x002d9430
XOR ECX,ECX
MOV RDX,R13
MOV RSI,RAX
MOV RDI,R12
MOV R14,RAX
CALL 0x002e3100
MOV RDI,qword ptr [RSP]
LEA RAX,[R12 + 0x10]
MOV byte ptr [R14 + R13*0x1],0x0
MOV qword ptr [RBX + 0x10],R14
MOV qword ptr [RBX + 0x18],R13
CMP RDI,RAX
JZ 0x0031214a
CALL 0x002dac60
MOV RAX,qword ptr [RBP]
MOV RDI,R12
MOV RSI,RBP
CALL qword ptr [RAX + 0x28]
MOV R13,qword ptr [RSP + 0x8]
LEA RDI,[R13 + 0x1]
CALL 0x002d9430
XOR ECX,ECX
MOV RDX,R13
MOV RSI,RAX
MOV RDI,R12
MOV R14,RAX
CALL 0x002e3100
MOV RDI,qword ptr [RSP]
LEA RAX,[R12 + 0x10]
MOV byte ptr [R14 + R13*0x1],0x0
MOV qword ptr [RBX + 0x28],R14
MOV qword ptr [RBX + 0x30],R13
CMP RDI,RAX
JZ 0x00312198
CALL 0x002dac60
MOV RAX,qword ptr [RBP]
MOV RDI,R12
MOV RSI,RBP
CALL qword ptr [RAX + 0x30]
MOV R13,qword ptr [RSP + 0x8]
LEA RDI,[R13 + 0x1]
CALL 0x002d9430
XOR ECX,ECX
MOV RDX,R13
MOV RSI,RAX
MOV RDI,R12
MOV R14,RAX
CALL 0x002e3100
MOV RDI,qword ptr [RSP]
LEA RAX,[R12 + 0x10]
MOV byte ptr [R14 + R13*0x1],0x0
MOV qword ptr [RBX + 0x38],R14
MOV qword ptr [RBX + 0x40],R13
CMP RDI,RAX
JZ 0x003121e6
CALL 0x002dac60
MOV RAX,qword ptr [RBP]
MOV RDI,R12
MOV RSI,RBP
CALL qword ptr [RAX + 0x38]
MOV R13,qword ptr [RSP + 0x8]
LEA RDI,[R13 + 0x1]
CALL 0x002d9430
XOR ECX,ECX
MOV RDX,R13
MOV RSI,RAX
MOV RDI,R12
MOV R14,RAX
CALL 0x002e3100
MOV RDI,qword ptr [RSP]
ADD R12,0x10
MOV byte ptr [R14 + R13*0x1],0x0
MOV qword ptr [RBX + 0x48],R14
MOV qword ptr [RBX + 0x50],R13
CMP RDI,R12
JZ 0x00312233
CALL 0x002dac60
MOV RAX,qword ptr [RBP]
MOV RDI,RBP
CALL qword ptr [RAX + 0x48]
MOV RDI,RBP
MOV dword ptr [RBX + 0x5c],EAX
MOV RAX,qword ptr [RBP]
CALL qword ptr [RAX + 0x50]
MOV dword ptr [RBX + 0x60],EAX
ADD RSP,0x20
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
(translation_unit "void FUN_003120a0(long *param_1,long param_2)\n\n{\n  undefined1 uVar1;\n  undefined4 uVar2;\n  long lVar3;\n  long lVar4;\n  undefined1 *local_48;\n  long local_40;\n  undefined1 local_38 [16];\n  \n  uVar1 = (**(code **)(*param_1 + 0x10))();\n  *(undefined1 *)(param_2 + 0x21) = uVar1;\n  uVar1 = (**(code **)(*param_1 + 0x18))(param_1);\n  *(undefined1 *)(param_2 + 0x22) = uVar1;\n  uVar2 = (**(code **)(*param_1 + 0x40))(param_1);\n  *(undefined8 *)(param_2 + 0x10) = 0;\n  *(undefined4 *)(param_2 + 0x58) = uVar2;\n  *(undefined8 *)(param_2 + 0x28) = 0;\n  *(undefined8 *)(param_2 + 0x38) = 0;\n  *(undefined8 *)(param_2 + 0x48) = 0;\n  *(undefined1 *)(param_2 + 0x6f) = 1;\n  (**(code **)(*param_1 + 0x20))(&local_48,param_1);\n  lVar4 = local_40;\n                    /* try { // try from 00312112 to 00312129 has its CatchHandler @ 0031225a */\n  lVar3 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar3,lVar4,0);\n  *(undefined1 *)(lVar3 + lVar4) = 0;\n  *(long *)(param_2 + 0x10) = lVar3;\n  *(long *)(param_2 + 0x18) = lVar4;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  (**(code **)(*param_1 + 0x28))(&local_48,param_1);\n  lVar4 = local_40;\n                    /* try { // try from 00312160 to 00312177 has its CatchHandler @ 00312263 */\n  lVar3 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar3,lVar4,0);\n  *(undefined1 *)(lVar3 + lVar4) = 0;\n  *(long *)(param_2 + 0x28) = lVar3;\n  *(long *)(param_2 + 0x30) = lVar4;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  (**(code **)(*param_1 + 0x30))(&local_48,param_1);\n  lVar4 = local_40;\n                    /* try { // try from 003121ae to 003121c5 has its CatchHandler @ 00312261 */\n  lVar3 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar3,lVar4,0);\n  *(undefined1 *)(lVar3 + lVar4) = 0;\n  *(long *)(param_2 + 0x38) = lVar3;\n  *(long *)(param_2 + 0x40) = lVar4;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  (**(code **)(*param_1 + 0x38))(&local_48,param_1);\n                    /* try { // try from 003121fc to 00312213 has its CatchHandler @ 0031225f */\n  lVar4 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar4,local_40,0);\n  *(undefined1 *)(lVar4 + local_40) = 0;\n  *(long *)(param_2 + 0x48) = lVar4;\n  *(long *)(param_2 + 0x50) = local_40;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  uVar2 = (**(code **)(*param_1 + 0x48))(param_1);\n  *(undefined4 *)(param_2 + 0x5c) = uVar2;\n  uVar2 = (**(code **)(*param_1 + 0x50))(param_1);\n  *(undefined4 *)(param_2 + 0x60) = uVar2;\n  return;\n}\n\n" (function_definition "void FUN_003120a0(long *param_1,long param_2)\n\n{\n  undefined1 uVar1;\n  undefined4 uVar2;\n  long lVar3;\n  long lVar4;\n  undefined1 *local_48;\n  long local_40;\n  undefined1 local_38 [16];\n  \n  uVar1 = (**(code **)(*param_1 + 0x10))();\n  *(undefined1 *)(param_2 + 0x21) = uVar1;\n  uVar1 = (**(code **)(*param_1 + 0x18))(param_1);\n  *(undefined1 *)(param_2 + 0x22) = uVar1;\n  uVar2 = (**(code **)(*param_1 + 0x40))(param_1);\n  *(undefined8 *)(param_2 + 0x10) = 0;\n  *(undefined4 *)(param_2 + 0x58) = uVar2;\n  *(undefined8 *)(param_2 + 0x28) = 0;\n  *(undefined8 *)(param_2 + 0x38) = 0;\n  *(undefined8 *)(param_2 + 0x48) = 0;\n  *(undefined1 *)(param_2 + 0x6f) = 1;\n  (**(code **)(*param_1 + 0x20))(&local_48,param_1);\n  lVar4 = local_40;\n                    /* try { // try from 00312112 to 00312129 has its CatchHandler @ 0031225a */\n  lVar3 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar3,lVar4,0);\n  *(undefined1 *)(lVar3 + lVar4) = 0;\n  *(long *)(param_2 + 0x10) = lVar3;\n  *(long *)(param_2 + 0x18) = lVar4;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  (**(code **)(*param_1 + 0x28))(&local_48,param_1);\n  lVar4 = local_40;\n                    /* try { // try from 00312160 to 00312177 has its CatchHandler @ 00312263 */\n  lVar3 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar3,lVar4,0);\n  *(undefined1 *)(lVar3 + lVar4) = 0;\n  *(long *)(param_2 + 0x28) = lVar3;\n  *(long *)(param_2 + 0x30) = lVar4;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  (**(code **)(*param_1 + 0x30))(&local_48,param_1);\n  lVar4 = local_40;\n                    /* try { // try from 003121ae to 003121c5 has its CatchHandler @ 00312261 */\n  lVar3 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar3,lVar4,0);\n  *(undefined1 *)(lVar3 + lVar4) = 0;\n  *(long *)(param_2 + 0x38) = lVar3;\n  *(long *)(param_2 + 0x40) = lVar4;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  (**(code **)(*param_1 + 0x38))(&local_48,param_1);\n                    /* try { // try from 003121fc to 00312213 has its CatchHandler @ 0031225f */\n  lVar4 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar4,local_40,0);\n  *(undefined1 *)(lVar4 + local_40) = 0;\n  *(long *)(param_2 + 0x48) = lVar4;\n  *(long *)(param_2 + 0x50) = local_40;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  uVar2 = (**(code **)(*param_1 + 0x48))(param_1);\n  *(undefined4 *)(param_2 + 0x5c) = uVar2;\n  uVar2 = (**(code **)(*param_1 + 0x50))(param_1);\n  *(undefined4 *)(param_2 + 0x60) = uVar2;\n  return;\n}" primitive_type (function_declarator "FUN_003120a0(long *param_1,long param_2)" identifier (parameter_list "(long *param_1,long param_2)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  undefined1 uVar1;\n  undefined4 uVar2;\n  long lVar3;\n  long lVar4;\n  undefined1 *local_48;\n  long local_40;\n  undefined1 local_38 [16];\n  \n  uVar1 = (**(code **)(*param_1 + 0x10))();\n  *(undefined1 *)(param_2 + 0x21) = uVar1;\n  uVar1 = (**(code **)(*param_1 + 0x18))(param_1);\n  *(undefined1 *)(param_2 + 0x22) = uVar1;\n  uVar2 = (**(code **)(*param_1 + 0x40))(param_1);\n  *(undefined8 *)(param_2 + 0x10) = 0;\n  *(undefined4 *)(param_2 + 0x58) = uVar2;\n  *(undefined8 *)(param_2 + 0x28) = 0;\n  *(undefined8 *)(param_2 + 0x38) = 0;\n  *(undefined8 *)(param_2 + 0x48) = 0;\n  *(undefined1 *)(param_2 + 0x6f) = 1;\n  (**(code **)(*param_1 + 0x20))(&local_48,param_1);\n  lVar4 = local_40;\n                    /* try { // try from 00312112 to 00312129 has its CatchHandler @ 0031225a */\n  lVar3 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar3,lVar4,0);\n  *(undefined1 *)(lVar3 + lVar4) = 0;\n  *(long *)(param_2 + 0x10) = lVar3;\n  *(long *)(param_2 + 0x18) = lVar4;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  (**(code **)(*param_1 + 0x28))(&local_48,param_1);\n  lVar4 = local_40;\n                    /* try { // try from 00312160 to 00312177 has its CatchHandler @ 00312263 */\n  lVar3 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar3,lVar4,0);\n  *(undefined1 *)(lVar3 + lVar4) = 0;\n  *(long *)(param_2 + 0x28) = lVar3;\n  *(long *)(param_2 + 0x30) = lVar4;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  (**(code **)(*param_1 + 0x30))(&local_48,param_1);\n  lVar4 = local_40;\n                    /* try { // try from 003121ae to 003121c5 has its CatchHandler @ 00312261 */\n  lVar3 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar3,lVar4,0);\n  *(undefined1 *)(lVar3 + lVar4) = 0;\n  *(long *)(param_2 + 0x38) = lVar3;\n  *(long *)(param_2 + 0x40) = lVar4;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  (**(code **)(*param_1 + 0x38))(&local_48,param_1);\n                    /* try { // try from 003121fc to 00312213 has its CatchHandler @ 0031225f */\n  lVar4 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar4,local_40,0);\n  *(undefined1 *)(lVar4 + local_40) = 0;\n  *(long *)(param_2 + 0x48) = lVar4;\n  *(long *)(param_2 + 0x50) = local_40;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  uVar2 = (**(code **)(*param_1 + 0x48))(param_1);\n  *(undefined4 *)(param_2 + 0x5c) = uVar2;\n  uVar2 = (**(code **)(*param_1 + 0x50))(param_1);\n  *(undefined4 *)(param_2 + 0x60) = uVar2;\n  return;\n}" { (declaration "undefined1 uVar1;" type_identifier identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 local_38 [16];" type_identifier (array_declarator "local_38 [16]" identifier [ number_literal ]) ;) (expression_statement "uVar1 = (**(code **)(*param_1 + 0x10))();" (assignment_expression "uVar1 = (**(code **)(*param_1 + 0x10))()" identifier = (call_expression "(**(code **)(*param_1 + 0x10))()" (parenthesized_expression "(**(code **)(*param_1 + 0x10))" ( (pointer_expression "**(code **)(*param_1 + 0x10)" * (pointer_expression "*(code **)(*param_1 + 0x10)" * (cast_expression "(code **)(*param_1 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x10)" ( (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "*(undefined1 *)(param_2 + 0x21) = uVar1;" (assignment_expression "*(undefined1 *)(param_2 + 0x21) = uVar1" (pointer_expression "*(undefined1 *)(param_2 + 0x21)" * (cast_expression "(undefined1 *)(param_2 + 0x21)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x21)" ( (binary_expression "param_2 + 0x21" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar1 = (**(code **)(*param_1 + 0x18))(param_1);" (assignment_expression "uVar1 = (**(code **)(*param_1 + 0x18))(param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0x18))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x18))" ( (pointer_expression "**(code **)(*param_1 + 0x18)" * (pointer_expression "*(code **)(*param_1 + 0x18)" * (cast_expression "(code **)(*param_1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined1 *)(param_2 + 0x22) = uVar1;" (assignment_expression "*(undefined1 *)(param_2 + 0x22) = uVar1" (pointer_expression "*(undefined1 *)(param_2 + 0x22)" * (cast_expression "(undefined1 *)(param_2 + 0x22)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x22)" ( (binary_expression "param_2 + 0x22" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar2 = (**(code **)(*param_1 + 0x40))(param_1);" (assignment_expression "uVar2 = (**(code **)(*param_1 + 0x40))(param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0x40))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x40))" ( (pointer_expression "**(code **)(*param_1 + 0x40)" * (pointer_expression "*(code **)(*param_1 + 0x40)" * (cast_expression "(code **)(*param_1 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x40)" ( (binary_expression "*param_1 + 0x40" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined8 *)(param_2 + 0x10) = 0;" (assignment_expression "*(undefined8 *)(param_2 + 0x10) = 0" (pointer_expression "*(undefined8 *)(param_2 + 0x10)" * (cast_expression "(undefined8 *)(param_2 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_2 + 0x58) = uVar2;" (assignment_expression "*(undefined4 *)(param_2 + 0x58) = uVar2" (pointer_expression "*(undefined4 *)(param_2 + 0x58)" * (cast_expression "(undefined4 *)(param_2 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x58)" ( (binary_expression "param_2 + 0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)(param_2 + 0x28) = 0;" (assignment_expression "*(undefined8 *)(param_2 + 0x28) = 0" (pointer_expression "*(undefined8 *)(param_2 + 0x28)" * (cast_expression "(undefined8 *)(param_2 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(param_2 + 0x38) = 0;" (assignment_expression "*(undefined8 *)(param_2 + 0x38) = 0" (pointer_expression "*(undefined8 *)(param_2 + 0x38)" * (cast_expression "(undefined8 *)(param_2 + 0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(param_2 + 0x48) = 0;" (assignment_expression "*(undefined8 *)(param_2 + 0x48) = 0" (pointer_expression "*(undefined8 *)(param_2 + 0x48)" * (cast_expression "(undefined8 *)(param_2 + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x48)" ( (binary_expression "param_2 + 0x48" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(param_2 + 0x6f) = 1;" (assignment_expression "*(undefined1 *)(param_2 + 0x6f) = 1" (pointer_expression "*(undefined1 *)(param_2 + 0x6f)" * (cast_expression "(undefined1 *)(param_2 + 0x6f)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x6f)" ( (binary_expression "param_2 + 0x6f" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(**(code **)(*param_1 + 0x20))(&local_48,param_1);" (call_expression "(**(code **)(*param_1 + 0x20))(&local_48,param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x20))" ( (pointer_expression "**(code **)(*param_1 + 0x20)" * (pointer_expression "*(code **)(*param_1 + 0x20)" * (cast_expression "(code **)(*param_1 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x20)" ( (binary_expression "*param_1 + 0x20" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(&local_48,param_1)" ( (pointer_expression "&local_48" & identifier) , identifier ))) ;) (expression_statement "lVar4 = local_40;" (assignment_expression "lVar4 = local_40" identifier = identifier) ;) comment (expression_statement "lVar3 = thunk_FUN_002d9490(local_40 + 1);" (assignment_expression "lVar3 = thunk_FUN_002d9490(local_40 + 1)" identifier = (call_expression "thunk_FUN_002d9490(local_40 + 1)" identifier (argument_list "(local_40 + 1)" ( (binary_expression "local_40 + 1" identifier + number_literal) )))) ;) (expression_statement "FUN_002e3100(&local_48,lVar3,lVar4,0);" (call_expression "FUN_002e3100(&local_48,lVar3,lVar4,0)" identifier (argument_list "(&local_48,lVar3,lVar4,0)" ( (pointer_expression "&local_48" & identifier) , identifier , identifier , number_literal ))) ;) (expression_statement "*(undefined1 *)(lVar3 + lVar4) = 0;" (assignment_expression "*(undefined1 *)(lVar3 + lVar4) = 0" (pointer_expression "*(undefined1 *)(lVar3 + lVar4)" * (cast_expression "(undefined1 *)(lVar3 + lVar4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + lVar4)" ( (binary_expression "lVar3 + lVar4" identifier + identifier) )))) = number_literal) ;) (expression_statement "*(long *)(param_2 + 0x10) = lVar3;" (assignment_expression "*(long *)(param_2 + 0x10) = lVar3" (pointer_expression "*(long *)(param_2 + 0x10)" * (cast_expression "(long *)(param_2 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(long *)(param_2 + 0x18) = lVar4;" (assignment_expression "*(long *)(param_2 + 0x18) = lVar4" (pointer_expression "*(long *)(param_2 + 0x18)" * (cast_expression "(long *)(param_2 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_48 != local_38) {\n    FUN_002dac60();\n  }" if (parenthesized_expression "(local_48 != local_38)" ( (binary_expression "local_48 != local_38" identifier != identifier) )) (compound_statement "{\n    FUN_002dac60();\n  }" { (expression_statement "FUN_002dac60();" (call_expression "FUN_002dac60()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "(**(code **)(*param_1 + 0x28))(&local_48,param_1);" (call_expression "(**(code **)(*param_1 + 0x28))(&local_48,param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x28))" ( (pointer_expression "**(code **)(*param_1 + 0x28)" * (pointer_expression "*(code **)(*param_1 + 0x28)" * (cast_expression "(code **)(*param_1 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x28)" ( (binary_expression "*param_1 + 0x28" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(&local_48,param_1)" ( (pointer_expression "&local_48" & identifier) , identifier ))) ;) (expression_statement "lVar4 = local_40;" (assignment_expression "lVar4 = local_40" identifier = identifier) ;) comment (expression_statement "lVar3 = thunk_FUN_002d9490(local_40 + 1);" (assignment_expression "lVar3 = thunk_FUN_002d9490(local_40 + 1)" identifier = (call_expression "thunk_FUN_002d9490(local_40 + 1)" identifier (argument_list "(local_40 + 1)" ( (binary_expression "local_40 + 1" identifier + number_literal) )))) ;) (expression_statement "FUN_002e3100(&local_48,lVar3,lVar4,0);" (call_expression "FUN_002e3100(&local_48,lVar3,lVar4,0)" identifier (argument_list "(&local_48,lVar3,lVar4,0)" ( (pointer_expression "&local_48" & identifier) , identifier , identifier , number_literal ))) ;) (expression_statement "*(undefined1 *)(lVar3 + lVar4) = 0;" (assignment_expression "*(undefined1 *)(lVar3 + lVar4) = 0" (pointer_expression "*(undefined1 *)(lVar3 + lVar4)" * (cast_expression "(undefined1 *)(lVar3 + lVar4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + lVar4)" ( (binary_expression "lVar3 + lVar4" identifier + identifier) )))) = number_literal) ;) (expression_statement "*(long *)(param_2 + 0x28) = lVar3;" (assignment_expression "*(long *)(param_2 + 0x28) = lVar3" (pointer_expression "*(long *)(param_2 + 0x28)" * (cast_expression "(long *)(param_2 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(long *)(param_2 + 0x30) = lVar4;" (assignment_expression "*(long *)(param_2 + 0x30) = lVar4" (pointer_expression "*(long *)(param_2 + 0x30)" * (cast_expression "(long *)(param_2 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_48 != local_38) {\n    FUN_002dac60();\n  }" if (parenthesized_expression "(local_48 != local_38)" ( (binary_expression "local_48 != local_38" identifier != identifier) )) (compound_statement "{\n    FUN_002dac60();\n  }" { (expression_statement "FUN_002dac60();" (call_expression "FUN_002dac60()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "(**(code **)(*param_1 + 0x30))(&local_48,param_1);" (call_expression "(**(code **)(*param_1 + 0x30))(&local_48,param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x30))" ( (pointer_expression "**(code **)(*param_1 + 0x30)" * (pointer_expression "*(code **)(*param_1 + 0x30)" * (cast_expression "(code **)(*param_1 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x30)" ( (binary_expression "*param_1 + 0x30" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(&local_48,param_1)" ( (pointer_expression "&local_48" & identifier) , identifier ))) ;) (expression_statement "lVar4 = local_40;" (assignment_expression "lVar4 = local_40" identifier = identifier) ;) comment (expression_statement "lVar3 = thunk_FUN_002d9490(local_40 + 1);" (assignment_expression "lVar3 = thunk_FUN_002d9490(local_40 + 1)" identifier = (call_expression "thunk_FUN_002d9490(local_40 + 1)" identifier (argument_list "(local_40 + 1)" ( (binary_expression "local_40 + 1" identifier + number_literal) )))) ;) (expression_statement "FUN_002e3100(&local_48,lVar3,lVar4,0);" (call_expression "FUN_002e3100(&local_48,lVar3,lVar4,0)" identifier (argument_list "(&local_48,lVar3,lVar4,0)" ( (pointer_expression "&local_48" & identifier) , identifier , identifier , number_literal ))) ;) (expression_statement "*(undefined1 *)(lVar3 + lVar4) = 0;" (assignment_expression "*(undefined1 *)(lVar3 + lVar4) = 0" (pointer_expression "*(undefined1 *)(lVar3 + lVar4)" * (cast_expression "(undefined1 *)(lVar3 + lVar4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + lVar4)" ( (binary_expression "lVar3 + lVar4" identifier + identifier) )))) = number_literal) ;) (expression_statement "*(long *)(param_2 + 0x38) = lVar3;" (assignment_expression "*(long *)(param_2 + 0x38) = lVar3" (pointer_expression "*(long *)(param_2 + 0x38)" * (cast_expression "(long *)(param_2 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(long *)(param_2 + 0x40) = lVar4;" (assignment_expression "*(long *)(param_2 + 0x40) = lVar4" (pointer_expression "*(long *)(param_2 + 0x40)" * (cast_expression "(long *)(param_2 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x40)" ( (binary_expression "param_2 + 0x40" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_48 != local_38) {\n    FUN_002dac60();\n  }" if (parenthesized_expression "(local_48 != local_38)" ( (binary_expression "local_48 != local_38" identifier != identifier) )) (compound_statement "{\n    FUN_002dac60();\n  }" { (expression_statement "FUN_002dac60();" (call_expression "FUN_002dac60()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "(**(code **)(*param_1 + 0x38))(&local_48,param_1);" (call_expression "(**(code **)(*param_1 + 0x38))(&local_48,param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x38))" ( (pointer_expression "**(code **)(*param_1 + 0x38)" * (pointer_expression "*(code **)(*param_1 + 0x38)" * (cast_expression "(code **)(*param_1 + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x38)" ( (binary_expression "*param_1 + 0x38" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(&local_48,param_1)" ( (pointer_expression "&local_48" & identifier) , identifier ))) ;) comment (expression_statement "lVar4 = thunk_FUN_002d9490(local_40 + 1);" (assignment_expression "lVar4 = thunk_FUN_002d9490(local_40 + 1)" identifier = (call_expression "thunk_FUN_002d9490(local_40 + 1)" identifier (argument_list "(local_40 + 1)" ( (binary_expression "local_40 + 1" identifier + number_literal) )))) ;) (expression_statement "FUN_002e3100(&local_48,lVar4,local_40,0);" (call_expression "FUN_002e3100(&local_48,lVar4,local_40,0)" identifier (argument_list "(&local_48,lVar4,local_40,0)" ( (pointer_expression "&local_48" & identifier) , identifier , identifier , number_literal ))) ;) (expression_statement "*(undefined1 *)(lVar4 + local_40) = 0;" (assignment_expression "*(undefined1 *)(lVar4 + local_40) = 0" (pointer_expression "*(undefined1 *)(lVar4 + local_40)" * (cast_expression "(undefined1 *)(lVar4 + local_40)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + local_40)" ( (binary_expression "lVar4 + local_40" identifier + identifier) )))) = number_literal) ;) (expression_statement "*(long *)(param_2 + 0x48) = lVar4;" (assignment_expression "*(long *)(param_2 + 0x48) = lVar4" (pointer_expression "*(long *)(param_2 + 0x48)" * (cast_expression "(long *)(param_2 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x48)" ( (binary_expression "param_2 + 0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(long *)(param_2 + 0x50) = local_40;" (assignment_expression "*(long *)(param_2 + 0x50) = local_40" (pointer_expression "*(long *)(param_2 + 0x50)" * (cast_expression "(long *)(param_2 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x50)" ( (binary_expression "param_2 + 0x50" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_48 != local_38) {\n    FUN_002dac60();\n  }" if (parenthesized_expression "(local_48 != local_38)" ( (binary_expression "local_48 != local_38" identifier != identifier) )) (compound_statement "{\n    FUN_002dac60();\n  }" { (expression_statement "FUN_002dac60();" (call_expression "FUN_002dac60()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar2 = (**(code **)(*param_1 + 0x48))(param_1);" (assignment_expression "uVar2 = (**(code **)(*param_1 + 0x48))(param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0x48))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x48))" ( (pointer_expression "**(code **)(*param_1 + 0x48)" * (pointer_expression "*(code **)(*param_1 + 0x48)" * (cast_expression "(code **)(*param_1 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x48)" ( (binary_expression "*param_1 + 0x48" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined4 *)(param_2 + 0x5c) = uVar2;" (assignment_expression "*(undefined4 *)(param_2 + 0x5c) = uVar2" (pointer_expression "*(undefined4 *)(param_2 + 0x5c)" * (cast_expression "(undefined4 *)(param_2 + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x5c)" ( (binary_expression "param_2 + 0x5c" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar2 = (**(code **)(*param_1 + 0x50))(param_1);" (assignment_expression "uVar2 = (**(code **)(*param_1 + 0x50))(param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0x50))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x50))" ( (pointer_expression "**(code **)(*param_1 + 0x50)" * (pointer_expression "*(code **)(*param_1 + 0x50)" * (cast_expression "(code **)(*param_1 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x50)" ( (binary_expression "*param_1 + 0x50" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined4 *)(param_2 + 0x60) = uVar2;" (assignment_expression "*(undefined4 *)(param_2 + 0x60) = uVar2" (pointer_expression "*(undefined4 *)(param_2 + 0x60)" * (cast_expression "(undefined4 *)(param_2 + 0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x60)" ( (binary_expression "param_2 + 0x60" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "/* void std::__facet_shims::__moneypunct_fill_cache<char, false>(std::integral_constant<bool, true>,\n   std::locale::facet const*, std::__moneypunct_cache<char, false>*) */\n\nvoid std::__facet_shims::__moneypunct_fill_cache<char,false>(long *param_1,long param_2)\n\n{\n  ulong uVar1;\n  undefined1 uVar2;\n  undefined4 uVar3;\n  char *pcVar4;\n  undefined1 *local_48;\n  ulong local_40;\n  undefined1 local_38 [16];\n  \n  uVar2 = (**(code **)(*param_1 + 0x10))();\n  *(undefined1 *)(param_2 + 0x21) = uVar2;\n  uVar2 = (**(code **)(*param_1 + 0x18))(param_1);\n  *(undefined1 *)(param_2 + 0x22) = uVar2;\n  uVar3 = (**(code **)(*param_1 + 0x40))(param_1);\n  *(undefined8 *)(param_2 + 0x10) = 0;\n  *(undefined4 *)(param_2 + 0x58) = uVar3;\n  *(undefined8 *)(param_2 + 0x28) = 0;\n  *(undefined8 *)(param_2 + 0x38) = 0;\n  *(undefined8 *)(param_2 + 0x48) = 0;\n  *(undefined1 *)(param_2 + 0x6f) = 1;\n  (**(code **)(*param_1 + 0x20))(&local_48,param_1);\n  uVar1 = local_40;\n                    /* try { // try from 00312112 to 00312129 has its CatchHandler @ 0031225a */\n  pcVar4 = (char *)operator_new__(local_40 + 1);\n  std::string::copy((string *)&local_48,pcVar4,uVar1,0);\n  pcVar4[uVar1] = '\0';\n  *(char **)(param_2 + 0x10) = pcVar4;\n  *(ulong *)(param_2 + 0x18) = uVar1;\n  if (local_48 != local_38) {\n    operator_delete(local_48);\n  }\n  (**(code **)(*param_1 + 0x28))(&local_48,param_1);\n  uVar1 = local_40;\n                    /* try { // try from 00312160 to 00312177 has its CatchHandler @ 00312263 */\n  pcVar4 = (char *)operator_new__(local_40 + 1);\n  std::string::copy((string *)&local_48,pcVar4,uVar1,0);\n  pcVar4[uVar1] = '\0';\n  *(char **)(param_2 + 0x28) = pcVar4;\n  *(ulong *)(param_2 + 0x30) = uVar1;\n  if (local_48 != local_38) {\n    operator_delete(local_48);\n  }\n  (**(code **)(*param_1 + 0x30))(&local_48,param_1);\n  uVar1 = local_40;\n                    /* try { // try from 003121ae to 003121c5 has its CatchHandler @ 00312261 */\n  pcVar4 = (char *)operator_new__(local_40 + 1);\n  std::string::copy((string *)&local_48,pcVar4,uVar1,0);\n  pcVar4[uVar1] = '\0';\n  *(char **)(param_2 + 0x38) = pcVar4;\n  *(ulong *)(param_2 + 0x40) = uVar1;\n  if (local_48 != local_38) {\n    operator_delete(local_48);\n  }\n  (**(code **)(*param_1 + 0x38))(&local_48,param_1);\n                    /* try { // try from 003121fc to 00312213 has its CatchHandler @ 0031225f */\n  pcVar4 = (char *)operator_new__(local_40 + 1);\n  std::string::copy((string *)&local_48,pcVar4,local_40,0);\n  pcVar4[local_40] = '\0';\n  *(char **)(param_2 + 0x48) = pcVar4;\n  *(ulong *)(param_2 + 0x50) = local_40;\n  if (local_48 != local_38) {\n    operator_delete(local_48);\n  }\n  uVar3 = (**(code **)(*param_1 + 0x48))(param_1);\n  *(undefined4 *)(param_2 + 0x5c) = uVar3;\n  uVar3 = (**(code **)(*param_1 + 0x50))(param_1);\n  *(undefined4 *)(param_2 + 0x60) = uVar3;\n  return;\n}\n\n" comment (declaration "void std::__facet_shims::__moneypunct_fill_cache<char,false>(long *param_1,long param_2)\n\n{\n  ulong uVar1;" primitive_type (ERROR "std::__facet_shims::" identifier : : identifier : :) identifier (ERROR "<char" < primitive_type) , (ERROR "false>(long" identifier > ( long) (pointer_declarator "*param_1" * identifier) , (ERROR "long param_2)\n\n{\n  ulong" identifier identifier ) { identifier) identifier ;) (declaration "undefined1 uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "undefined1 *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "ulong local_40;" type_identifier identifier ;) (declaration "undefined1 local_38 [16];" type_identifier (array_declarator "local_38 [16]" identifier [ number_literal ]) ;) (expression_statement "uVar2 = (**(code **)(*param_1 + 0x10))();" (assignment_expression "uVar2 = (**(code **)(*param_1 + 0x10))()" identifier = (call_expression "(**(code **)(*param_1 + 0x10))()" (parenthesized_expression "(**(code **)(*param_1 + 0x10))" ( (pointer_expression "**(code **)(*param_1 + 0x10)" * (pointer_expression "*(code **)(*param_1 + 0x10)" * (cast_expression "(code **)(*param_1 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x10)" ( (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "*(undefined1 *)(param_2 + 0x21) = uVar2;" (assignment_expression "*(undefined1 *)(param_2 + 0x21) = uVar2" (pointer_expression "*(undefined1 *)(param_2 + 0x21)" * (cast_expression "(undefined1 *)(param_2 + 0x21)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x21)" ( (binary_expression "param_2 + 0x21" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar2 = (**(code **)(*param_1 + 0x18))(param_1);" (assignment_expression "uVar2 = (**(code **)(*param_1 + 0x18))(param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0x18))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x18))" ( (pointer_expression "**(code **)(*param_1 + 0x18)" * (pointer_expression "*(code **)(*param_1 + 0x18)" * (cast_expression "(code **)(*param_1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined1 *)(param_2 + 0x22) = uVar2;" (assignment_expression "*(undefined1 *)(param_2 + 0x22) = uVar2" (pointer_expression "*(undefined1 *)(param_2 + 0x22)" * (cast_expression "(undefined1 *)(param_2 + 0x22)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x22)" ( (binary_expression "param_2 + 0x22" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = (**(code **)(*param_1 + 0x40))(param_1);" (assignment_expression "uVar3 = (**(code **)(*param_1 + 0x40))(param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0x40))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x40))" ( (pointer_expression "**(code **)(*param_1 + 0x40)" * (pointer_expression "*(code **)(*param_1 + 0x40)" * (cast_expression "(code **)(*param_1 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x40)" ( (binary_expression "*param_1 + 0x40" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined8 *)(param_2 + 0x10) = 0;" (assignment_expression "*(undefined8 *)(param_2 + 0x10) = 0" (pointer_expression "*(undefined8 *)(param_2 + 0x10)" * (cast_expression "(undefined8 *)(param_2 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_2 + 0x58) = uVar3;" (assignment_expression "*(undefined4 *)(param_2 + 0x58) = uVar3" (pointer_expression "*(undefined4 *)(param_2 + 0x58)" * (cast_expression "(undefined4 *)(param_2 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x58)" ( (binary_expression "param_2 + 0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)(param_2 + 0x28) = 0;" (assignment_expression "*(undefined8 *)(param_2 + 0x28) = 0" (pointer_expression "*(undefined8 *)(param_2 + 0x28)" * (cast_expression "(undefined8 *)(param_2 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(param_2 + 0x38) = 0;" (assignment_expression "*(undefined8 *)(param_2 + 0x38) = 0" (pointer_expression "*(undefined8 *)(param_2 + 0x38)" * (cast_expression "(undefined8 *)(param_2 + 0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(param_2 + 0x48) = 0;" (assignment_expression "*(undefined8 *)(param_2 + 0x48) = 0" (pointer_expression "*(undefined8 *)(param_2 + 0x48)" * (cast_expression "(undefined8 *)(param_2 + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x48)" ( (binary_expression "param_2 + 0x48" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(param_2 + 0x6f) = 1;" (assignment_expression "*(undefined1 *)(param_2 + 0x6f) = 1" (pointer_expression "*(undefined1 *)(param_2 + 0x6f)" * (cast_expression "(undefined1 *)(param_2 + 0x6f)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x6f)" ( (binary_expression "param_2 + 0x6f" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(**(code **)(*param_1 + 0x20))(&local_48,param_1);" (call_expression "(**(code **)(*param_1 + 0x20))(&local_48,param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x20))" ( (pointer_expression "**(code **)(*param_1 + 0x20)" * (pointer_expression "*(code **)(*param_1 + 0x20)" * (cast_expression "(code **)(*param_1 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x20)" ( (binary_expression "*param_1 + 0x20" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(&local_48,param_1)" ( (pointer_expression "&local_48" & identifier) , identifier ))) ;) (expression_statement "uVar1 = local_40;" (assignment_expression "uVar1 = local_40" identifier = identifier) ;) comment (expression_statement "pcVar4 = (char *)operator_new__(local_40 + 1);" (assignment_expression "pcVar4 = (char *)operator_new__(local_40 + 1)" identifier = (cast_expression "(char *)operator_new__(local_40 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new__(local_40 + 1)" identifier (argument_list "(local_40 + 1)" ( (binary_expression "local_40 + 1" identifier + number_literal) ))))) ;) (labeled_statement "std::string::copy((string *)&local_48,pcVar4,uVar1,0);" statement_identifier : (ERROR ":" :) (labeled_statement "string::copy((string *)&local_48,pcVar4,uVar1,0);" statement_identifier : (ERROR ":" :) (expression_statement "copy((string *)&local_48,pcVar4,uVar1,0);" (call_expression "copy((string *)&local_48,pcVar4,uVar1,0)" identifier (argument_list "((string *)&local_48,pcVar4,uVar1,0)" ( (cast_expression "(string *)&local_48" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_48" & identifier)) , identifier , identifier , number_literal ))) ;))) (expression_statement "pcVar4[uVar1] = '\0';" (assignment_expression "pcVar4[uVar1] = '\0'" (subscript_expression "pcVar4[uVar1]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(char **)(param_2 + 0x10) = pcVar4;" (assignment_expression "*(char **)(param_2 + 0x10) = pcVar4" (pointer_expression "*(char **)(param_2 + 0x10)" * (cast_expression "(char **)(param_2 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(ulong *)(param_2 + 0x18) = uVar1;" (assignment_expression "*(ulong *)(param_2 + 0x18) = uVar1" (pointer_expression "*(ulong *)(param_2 + 0x18)" * (cast_expression "(ulong *)(param_2 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_48 != local_38) {\n    operator_delete(local_48);\n  }" if (parenthesized_expression "(local_48 != local_38)" ( (binary_expression "local_48 != local_38" identifier != identifier) )) (compound_statement "{\n    operator_delete(local_48);\n  }" { (expression_statement "operator_delete(local_48);" (call_expression "operator_delete(local_48)" identifier (argument_list "(local_48)" ( identifier ))) ;) })) (expression_statement "(**(code **)(*param_1 + 0x28))(&local_48,param_1);" (call_expression "(**(code **)(*param_1 + 0x28))(&local_48,param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x28))" ( (pointer_expression "**(code **)(*param_1 + 0x28)" * (pointer_expression "*(code **)(*param_1 + 0x28)" * (cast_expression "(code **)(*param_1 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x28)" ( (binary_expression "*param_1 + 0x28" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(&local_48,param_1)" ( (pointer_expression "&local_48" & identifier) , identifier ))) ;) (expression_statement "uVar1 = local_40;" (assignment_expression "uVar1 = local_40" identifier = identifier) ;) comment (expression_statement "pcVar4 = (char *)operator_new__(local_40 + 1);" (assignment_expression "pcVar4 = (char *)operator_new__(local_40 + 1)" identifier = (cast_expression "(char *)operator_new__(local_40 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new__(local_40 + 1)" identifier (argument_list "(local_40 + 1)" ( (binary_expression "local_40 + 1" identifier + number_literal) ))))) ;) (labeled_statement "std::string::copy((string *)&local_48,pcVar4,uVar1,0);" statement_identifier : (ERROR ":" :) (labeled_statement "string::copy((string *)&local_48,pcVar4,uVar1,0);" statement_identifier : (ERROR ":" :) (expression_statement "copy((string *)&local_48,pcVar4,uVar1,0);" (call_expression "copy((string *)&local_48,pcVar4,uVar1,0)" identifier (argument_list "((string *)&local_48,pcVar4,uVar1,0)" ( (cast_expression "(string *)&local_48" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_48" & identifier)) , identifier , identifier , number_literal ))) ;))) (expression_statement "pcVar4[uVar1] = '\0';" (assignment_expression "pcVar4[uVar1] = '\0'" (subscript_expression "pcVar4[uVar1]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(char **)(param_2 + 0x28) = pcVar4;" (assignment_expression "*(char **)(param_2 + 0x28) = pcVar4" (pointer_expression "*(char **)(param_2 + 0x28)" * (cast_expression "(char **)(param_2 + 0x28)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(ulong *)(param_2 + 0x30) = uVar1;" (assignment_expression "*(ulong *)(param_2 + 0x30) = uVar1" (pointer_expression "*(ulong *)(param_2 + 0x30)" * (cast_expression "(ulong *)(param_2 + 0x30)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_48 != local_38) {\n    operator_delete(local_48);\n  }" if (parenthesized_expression "(local_48 != local_38)" ( (binary_expression "local_48 != local_38" identifier != identifier) )) (compound_statement "{\n    operator_delete(local_48);\n  }" { (expression_statement "operator_delete(local_48);" (call_expression "operator_delete(local_48)" identifier (argument_list "(local_48)" ( identifier ))) ;) })) (expression_statement "(**(code **)(*param_1 + 0x30))(&local_48,param_1);" (call_expression "(**(code **)(*param_1 + 0x30))(&local_48,param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x30))" ( (pointer_expression "**(code **)(*param_1 + 0x30)" * (pointer_expression "*(code **)(*param_1 + 0x30)" * (cast_expression "(code **)(*param_1 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x30)" ( (binary_expression "*param_1 + 0x30" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(&local_48,param_1)" ( (pointer_expression "&local_48" & identifier) , identifier ))) ;) (expression_statement "uVar1 = local_40;" (assignment_expression "uVar1 = local_40" identifier = identifier) ;) comment (expression_statement "pcVar4 = (char *)operator_new__(local_40 + 1);" (assignment_expression "pcVar4 = (char *)operator_new__(local_40 + 1)" identifier = (cast_expression "(char *)operator_new__(local_40 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new__(local_40 + 1)" identifier (argument_list "(local_40 + 1)" ( (binary_expression "local_40 + 1" identifier + number_literal) ))))) ;) (labeled_statement "std::string::copy((string *)&local_48,pcVar4,uVar1,0);" statement_identifier : (ERROR ":" :) (labeled_statement "string::copy((string *)&local_48,pcVar4,uVar1,0);" statement_identifier : (ERROR ":" :) (expression_statement "copy((string *)&local_48,pcVar4,uVar1,0);" (call_expression "copy((string *)&local_48,pcVar4,uVar1,0)" identifier (argument_list "((string *)&local_48,pcVar4,uVar1,0)" ( (cast_expression "(string *)&local_48" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_48" & identifier)) , identifier , identifier , number_literal ))) ;))) (expression_statement "pcVar4[uVar1] = '\0';" (assignment_expression "pcVar4[uVar1] = '\0'" (subscript_expression "pcVar4[uVar1]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(char **)(param_2 + 0x38) = pcVar4;" (assignment_expression "*(char **)(param_2 + 0x38) = pcVar4" (pointer_expression "*(char **)(param_2 + 0x38)" * (cast_expression "(char **)(param_2 + 0x38)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(ulong *)(param_2 + 0x40) = uVar1;" (assignment_expression "*(ulong *)(param_2 + 0x40) = uVar1" (pointer_expression "*(ulong *)(param_2 + 0x40)" * (cast_expression "(ulong *)(param_2 + 0x40)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x40)" ( (binary_expression "param_2 + 0x40" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_48 != local_38) {\n    operator_delete(local_48);\n  }" if (parenthesized_expression "(local_48 != local_38)" ( (binary_expression "local_48 != local_38" identifier != identifier) )) (compound_statement "{\n    operator_delete(local_48);\n  }" { (expression_statement "operator_delete(local_48);" (call_expression "operator_delete(local_48)" identifier (argument_list "(local_48)" ( identifier ))) ;) })) (expression_statement "(**(code **)(*param_1 + 0x38))(&local_48,param_1);" (call_expression "(**(code **)(*param_1 + 0x38))(&local_48,param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x38))" ( (pointer_expression "**(code **)(*param_1 + 0x38)" * (pointer_expression "*(code **)(*param_1 + 0x38)" * (cast_expression "(code **)(*param_1 + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x38)" ( (binary_expression "*param_1 + 0x38" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(&local_48,param_1)" ( (pointer_expression "&local_48" & identifier) , identifier ))) ;) comment (expression_statement "pcVar4 = (char *)operator_new__(local_40 + 1);" (assignment_expression "pcVar4 = (char *)operator_new__(local_40 + 1)" identifier = (cast_expression "(char *)operator_new__(local_40 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new__(local_40 + 1)" identifier (argument_list "(local_40 + 1)" ( (binary_expression "local_40 + 1" identifier + number_literal) ))))) ;) (labeled_statement "std::string::copy((string *)&local_48,pcVar4,local_40,0);" statement_identifier : (ERROR ":" :) (labeled_statement "string::copy((string *)&local_48,pcVar4,local_40,0);" statement_identifier : (ERROR ":" :) (expression_statement "copy((string *)&local_48,pcVar4,local_40,0);" (call_expression "copy((string *)&local_48,pcVar4,local_40,0)" identifier (argument_list "((string *)&local_48,pcVar4,local_40,0)" ( (cast_expression "(string *)&local_48" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_48" & identifier)) , identifier , identifier , number_literal ))) ;))) (expression_statement "pcVar4[local_40] = '\0';" (assignment_expression "pcVar4[local_40] = '\0'" (subscript_expression "pcVar4[local_40]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(char **)(param_2 + 0x48) = pcVar4;" (assignment_expression "*(char **)(param_2 + 0x48) = pcVar4" (pointer_expression "*(char **)(param_2 + 0x48)" * (cast_expression "(char **)(param_2 + 0x48)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x48)" ( (binary_expression "param_2 + 0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(ulong *)(param_2 + 0x50) = local_40;" (assignment_expression "*(ulong *)(param_2 + 0x50) = local_40" (pointer_expression "*(ulong *)(param_2 + 0x50)" * (cast_expression "(ulong *)(param_2 + 0x50)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x50)" ( (binary_expression "param_2 + 0x50" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_48 != local_38) {\n    operator_delete(local_48);\n  }" if (parenthesized_expression "(local_48 != local_38)" ( (binary_expression "local_48 != local_38" identifier != identifier) )) (compound_statement "{\n    operator_delete(local_48);\n  }" { (expression_statement "operator_delete(local_48);" (call_expression "operator_delete(local_48)" identifier (argument_list "(local_48)" ( identifier ))) ;) })) (expression_statement "uVar3 = (**(code **)(*param_1 + 0x48))(param_1);" (assignment_expression "uVar3 = (**(code **)(*param_1 + 0x48))(param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0x48))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x48))" ( (pointer_expression "**(code **)(*param_1 + 0x48)" * (pointer_expression "*(code **)(*param_1 + 0x48)" * (cast_expression "(code **)(*param_1 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x48)" ( (binary_expression "*param_1 + 0x48" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined4 *)(param_2 + 0x5c) = uVar3;" (assignment_expression "*(undefined4 *)(param_2 + 0x5c) = uVar3" (pointer_expression "*(undefined4 *)(param_2 + 0x5c)" * (cast_expression "(undefined4 *)(param_2 + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x5c)" ( (binary_expression "param_2 + 0x5c" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = (**(code **)(*param_1 + 0x50))(param_1);" (assignment_expression "uVar3 = (**(code **)(*param_1 + 0x50))(param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0x50))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x50))" ( (pointer_expression "**(code **)(*param_1 + 0x50)" * (pointer_expression "*(code **)(*param_1 + 0x50)" * (cast_expression "(code **)(*param_1 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x50)" ( (binary_expression "*param_1 + 0x50" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined4 *)(param_2 + 0x60) = uVar3;" (assignment_expression "*(undefined4 *)(param_2 + 0x60) = uVar3" (pointer_expression "*(undefined4 *)(param_2 + 0x60)" * (cast_expression "(undefined4 *)(param_2 + 0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x60)" ( (binary_expression "param_2 + 0x60" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_003120a0(long *param_1,long param_2)\n\n{\n  undefined1 uVar1;\n  undefined4 uVar2;\n  long lVar3;\n  long lVar4;\n  undefined1 *local_48;\n  long local_40;\n  undefined1 local_38 [16];\n  \n  uVar1 = (**(code **)(*param_1 + 0x10))();\n  *(undefined1 *)(param_2 + 0x21) = uVar1;\n  uVar1 = (**(code **)(*param_1 + 0x18))(param_1);\n  *(undefined1 *)(param_2 + 0x22) = uVar1;\n  uVar2 = (**(code **)(*param_1 + 0x40))(param_1);\n  *(undefined8 *)(param_2 + 0x10) = 0;\n  *(undefined4 *)(param_2 + 0x58) = uVar2;\n  *(undefined8 *)(param_2 + 0x28) = 0;\n  *(undefined8 *)(param_2 + 0x38) = 0;\n  *(undefined8 *)(param_2 + 0x48) = 0;\n  *(undefined1 *)(param_2 + 0x6f) = 1;\n  (**(code **)(*param_1 + 0x20))(&local_48,param_1);\n  lVar4 = local_40;\n                    \n  lVar3 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar3,lVar4,0);\n  *(undefined1 *)(lVar3 + lVar4) = 0;\n  *(long *)(param_2 + 0x10) = lVar3;\n  *(long *)(param_2 + 0x18) = lVar4;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  (**(code **)(*param_1 + 0x28))(&local_48,param_1);\n  lVar4 = local_40;\n                    \n  lVar3 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar3,lVar4,0);\n  *(undefined1 *)(lVar3 + lVar4) = 0;\n  *(long *)(param_2 + 0x28) = lVar3;\n  *(long *)(param_2 + 0x30) = lVar4;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  (**(code **)(*param_1 + 0x30))(&local_48,param_1);\n  lVar4 = local_40;\n                    \n  lVar3 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar3,lVar4,0);\n  *(undefined1 *)(lVar3 + lVar4) = 0;\n  *(long *)(param_2 + 0x38) = lVar3;\n  *(long *)(param_2 + 0x40) = lVar4;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  (**(code **)(*param_1 + 0x38))(&local_48,param_1);\n                    \n  lVar4 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar4,local_40,0);\n  *(undefined1 *)(lVar4 + local_40) = 0;\n  *(long *)(param_2 + 0x48) = lVar4;\n  *(long *)(param_2 + 0x50) = local_40;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  uVar2 = (**(code **)(*param_1 + 0x48))(param_1);\n  *(undefined4 *)(param_2 + 0x5c) = uVar2;\n  uVar2 = (**(code **)(*param_1 + 0x50))(param_1);\n  *(undefined4 *)(param_2 + 0x60) = uVar2;\n  return;\n}\n\n" (function_definition "void FUN_003120a0(long *param_1,long param_2)\n\n{\n  undefined1 uVar1;\n  undefined4 uVar2;\n  long lVar3;\n  long lVar4;\n  undefined1 *local_48;\n  long local_40;\n  undefined1 local_38 [16];\n  \n  uVar1 = (**(code **)(*param_1 + 0x10))();\n  *(undefined1 *)(param_2 + 0x21) = uVar1;\n  uVar1 = (**(code **)(*param_1 + 0x18))(param_1);\n  *(undefined1 *)(param_2 + 0x22) = uVar1;\n  uVar2 = (**(code **)(*param_1 + 0x40))(param_1);\n  *(undefined8 *)(param_2 + 0x10) = 0;\n  *(undefined4 *)(param_2 + 0x58) = uVar2;\n  *(undefined8 *)(param_2 + 0x28) = 0;\n  *(undefined8 *)(param_2 + 0x38) = 0;\n  *(undefined8 *)(param_2 + 0x48) = 0;\n  *(undefined1 *)(param_2 + 0x6f) = 1;\n  (**(code **)(*param_1 + 0x20))(&local_48,param_1);\n  lVar4 = local_40;\n                    \n  lVar3 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar3,lVar4,0);\n  *(undefined1 *)(lVar3 + lVar4) = 0;\n  *(long *)(param_2 + 0x10) = lVar3;\n  *(long *)(param_2 + 0x18) = lVar4;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  (**(code **)(*param_1 + 0x28))(&local_48,param_1);\n  lVar4 = local_40;\n                    \n  lVar3 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar3,lVar4,0);\n  *(undefined1 *)(lVar3 + lVar4) = 0;\n  *(long *)(param_2 + 0x28) = lVar3;\n  *(long *)(param_2 + 0x30) = lVar4;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  (**(code **)(*param_1 + 0x30))(&local_48,param_1);\n  lVar4 = local_40;\n                    \n  lVar3 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar3,lVar4,0);\n  *(undefined1 *)(lVar3 + lVar4) = 0;\n  *(long *)(param_2 + 0x38) = lVar3;\n  *(long *)(param_2 + 0x40) = lVar4;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  (**(code **)(*param_1 + 0x38))(&local_48,param_1);\n                    \n  lVar4 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar4,local_40,0);\n  *(undefined1 *)(lVar4 + local_40) = 0;\n  *(long *)(param_2 + 0x48) = lVar4;\n  *(long *)(param_2 + 0x50) = local_40;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  uVar2 = (**(code **)(*param_1 + 0x48))(param_1);\n  *(undefined4 *)(param_2 + 0x5c) = uVar2;\n  uVar2 = (**(code **)(*param_1 + 0x50))(param_1);\n  *(undefined4 *)(param_2 + 0x60) = uVar2;\n  return;\n}" primitive_type (function_declarator "FUN_003120a0(long *param_1,long param_2)" identifier (parameter_list "(long *param_1,long param_2)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  undefined1 uVar1;\n  undefined4 uVar2;\n  long lVar3;\n  long lVar4;\n  undefined1 *local_48;\n  long local_40;\n  undefined1 local_38 [16];\n  \n  uVar1 = (**(code **)(*param_1 + 0x10))();\n  *(undefined1 *)(param_2 + 0x21) = uVar1;\n  uVar1 = (**(code **)(*param_1 + 0x18))(param_1);\n  *(undefined1 *)(param_2 + 0x22) = uVar1;\n  uVar2 = (**(code **)(*param_1 + 0x40))(param_1);\n  *(undefined8 *)(param_2 + 0x10) = 0;\n  *(undefined4 *)(param_2 + 0x58) = uVar2;\n  *(undefined8 *)(param_2 + 0x28) = 0;\n  *(undefined8 *)(param_2 + 0x38) = 0;\n  *(undefined8 *)(param_2 + 0x48) = 0;\n  *(undefined1 *)(param_2 + 0x6f) = 1;\n  (**(code **)(*param_1 + 0x20))(&local_48,param_1);\n  lVar4 = local_40;\n                    \n  lVar3 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar3,lVar4,0);\n  *(undefined1 *)(lVar3 + lVar4) = 0;\n  *(long *)(param_2 + 0x10) = lVar3;\n  *(long *)(param_2 + 0x18) = lVar4;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  (**(code **)(*param_1 + 0x28))(&local_48,param_1);\n  lVar4 = local_40;\n                    \n  lVar3 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar3,lVar4,0);\n  *(undefined1 *)(lVar3 + lVar4) = 0;\n  *(long *)(param_2 + 0x28) = lVar3;\n  *(long *)(param_2 + 0x30) = lVar4;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  (**(code **)(*param_1 + 0x30))(&local_48,param_1);\n  lVar4 = local_40;\n                    \n  lVar3 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar3,lVar4,0);\n  *(undefined1 *)(lVar3 + lVar4) = 0;\n  *(long *)(param_2 + 0x38) = lVar3;\n  *(long *)(param_2 + 0x40) = lVar4;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  (**(code **)(*param_1 + 0x38))(&local_48,param_1);\n                    \n  lVar4 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar4,local_40,0);\n  *(undefined1 *)(lVar4 + local_40) = 0;\n  *(long *)(param_2 + 0x48) = lVar4;\n  *(long *)(param_2 + 0x50) = local_40;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  uVar2 = (**(code **)(*param_1 + 0x48))(param_1);\n  *(undefined4 *)(param_2 + 0x5c) = uVar2;\n  uVar2 = (**(code **)(*param_1 + 0x50))(param_1);\n  *(undefined4 *)(param_2 + 0x60) = uVar2;\n  return;\n}" { (declaration "undefined1 uVar1;" type_identifier identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 local_38 [16];" type_identifier (array_declarator "local_38 [16]" identifier [ number_literal ]) ;) (expression_statement "uVar1 = (**(code **)(*param_1 + 0x10))();" (assignment_expression "uVar1 = (**(code **)(*param_1 + 0x10))()" identifier = (call_expression "(**(code **)(*param_1 + 0x10))()" (parenthesized_expression "(**(code **)(*param_1 + 0x10))" ( (pointer_expression "**(code **)(*param_1 + 0x10)" * (pointer_expression "*(code **)(*param_1 + 0x10)" * (cast_expression "(code **)(*param_1 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x10)" ( (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "*(undefined1 *)(param_2 + 0x21) = uVar1;" (assignment_expression "*(undefined1 *)(param_2 + 0x21) = uVar1" (pointer_expression "*(undefined1 *)(param_2 + 0x21)" * (cast_expression "(undefined1 *)(param_2 + 0x21)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x21)" ( (binary_expression "param_2 + 0x21" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar1 = (**(code **)(*param_1 + 0x18))(param_1);" (assignment_expression "uVar1 = (**(code **)(*param_1 + 0x18))(param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0x18))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x18))" ( (pointer_expression "**(code **)(*param_1 + 0x18)" * (pointer_expression "*(code **)(*param_1 + 0x18)" * (cast_expression "(code **)(*param_1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined1 *)(param_2 + 0x22) = uVar1;" (assignment_expression "*(undefined1 *)(param_2 + 0x22) = uVar1" (pointer_expression "*(undefined1 *)(param_2 + 0x22)" * (cast_expression "(undefined1 *)(param_2 + 0x22)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x22)" ( (binary_expression "param_2 + 0x22" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar2 = (**(code **)(*param_1 + 0x40))(param_1);" (assignment_expression "uVar2 = (**(code **)(*param_1 + 0x40))(param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0x40))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x40))" ( (pointer_expression "**(code **)(*param_1 + 0x40)" * (pointer_expression "*(code **)(*param_1 + 0x40)" * (cast_expression "(code **)(*param_1 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x40)" ( (binary_expression "*param_1 + 0x40" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined8 *)(param_2 + 0x10) = 0;" (assignment_expression "*(undefined8 *)(param_2 + 0x10) = 0" (pointer_expression "*(undefined8 *)(param_2 + 0x10)" * (cast_expression "(undefined8 *)(param_2 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_2 + 0x58) = uVar2;" (assignment_expression "*(undefined4 *)(param_2 + 0x58) = uVar2" (pointer_expression "*(undefined4 *)(param_2 + 0x58)" * (cast_expression "(undefined4 *)(param_2 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x58)" ( (binary_expression "param_2 + 0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)(param_2 + 0x28) = 0;" (assignment_expression "*(undefined8 *)(param_2 + 0x28) = 0" (pointer_expression "*(undefined8 *)(param_2 + 0x28)" * (cast_expression "(undefined8 *)(param_2 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(param_2 + 0x38) = 0;" (assignment_expression "*(undefined8 *)(param_2 + 0x38) = 0" (pointer_expression "*(undefined8 *)(param_2 + 0x38)" * (cast_expression "(undefined8 *)(param_2 + 0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(param_2 + 0x48) = 0;" (assignment_expression "*(undefined8 *)(param_2 + 0x48) = 0" (pointer_expression "*(undefined8 *)(param_2 + 0x48)" * (cast_expression "(undefined8 *)(param_2 + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x48)" ( (binary_expression "param_2 + 0x48" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(param_2 + 0x6f) = 1;" (assignment_expression "*(undefined1 *)(param_2 + 0x6f) = 1" (pointer_expression "*(undefined1 *)(param_2 + 0x6f)" * (cast_expression "(undefined1 *)(param_2 + 0x6f)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x6f)" ( (binary_expression "param_2 + 0x6f" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(**(code **)(*param_1 + 0x20))(&local_48,param_1);" (call_expression "(**(code **)(*param_1 + 0x20))(&local_48,param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x20))" ( (pointer_expression "**(code **)(*param_1 + 0x20)" * (pointer_expression "*(code **)(*param_1 + 0x20)" * (cast_expression "(code **)(*param_1 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x20)" ( (binary_expression "*param_1 + 0x20" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(&local_48,param_1)" ( (pointer_expression "&local_48" & identifier) , identifier ))) ;) (expression_statement "lVar4 = local_40;" (assignment_expression "lVar4 = local_40" identifier = identifier) ;) (expression_statement "lVar3 = thunk_FUN_002d9490(local_40 + 1);" (assignment_expression "lVar3 = thunk_FUN_002d9490(local_40 + 1)" identifier = (call_expression "thunk_FUN_002d9490(local_40 + 1)" identifier (argument_list "(local_40 + 1)" ( (binary_expression "local_40 + 1" identifier + number_literal) )))) ;) (expression_statement "FUN_002e3100(&local_48,lVar3,lVar4,0);" (call_expression "FUN_002e3100(&local_48,lVar3,lVar4,0)" identifier (argument_list "(&local_48,lVar3,lVar4,0)" ( (pointer_expression "&local_48" & identifier) , identifier , identifier , number_literal ))) ;) (expression_statement "*(undefined1 *)(lVar3 + lVar4) = 0;" (assignment_expression "*(undefined1 *)(lVar3 + lVar4) = 0" (pointer_expression "*(undefined1 *)(lVar3 + lVar4)" * (cast_expression "(undefined1 *)(lVar3 + lVar4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + lVar4)" ( (binary_expression "lVar3 + lVar4" identifier + identifier) )))) = number_literal) ;) (expression_statement "*(long *)(param_2 + 0x10) = lVar3;" (assignment_expression "*(long *)(param_2 + 0x10) = lVar3" (pointer_expression "*(long *)(param_2 + 0x10)" * (cast_expression "(long *)(param_2 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(long *)(param_2 + 0x18) = lVar4;" (assignment_expression "*(long *)(param_2 + 0x18) = lVar4" (pointer_expression "*(long *)(param_2 + 0x18)" * (cast_expression "(long *)(param_2 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_48 != local_38) {\n    FUN_002dac60();\n  }" if (parenthesized_expression "(local_48 != local_38)" ( (binary_expression "local_48 != local_38" identifier != identifier) )) (compound_statement "{\n    FUN_002dac60();\n  }" { (expression_statement "FUN_002dac60();" (call_expression "FUN_002dac60()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "(**(code **)(*param_1 + 0x28))(&local_48,param_1);" (call_expression "(**(code **)(*param_1 + 0x28))(&local_48,param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x28))" ( (pointer_expression "**(code **)(*param_1 + 0x28)" * (pointer_expression "*(code **)(*param_1 + 0x28)" * (cast_expression "(code **)(*param_1 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x28)" ( (binary_expression "*param_1 + 0x28" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(&local_48,param_1)" ( (pointer_expression "&local_48" & identifier) , identifier ))) ;) (expression_statement "lVar4 = local_40;" (assignment_expression "lVar4 = local_40" identifier = identifier) ;) (expression_statement "lVar3 = thunk_FUN_002d9490(local_40 + 1);" (assignment_expression "lVar3 = thunk_FUN_002d9490(local_40 + 1)" identifier = (call_expression "thunk_FUN_002d9490(local_40 + 1)" identifier (argument_list "(local_40 + 1)" ( (binary_expression "local_40 + 1" identifier + number_literal) )))) ;) (expression_statement "FUN_002e3100(&local_48,lVar3,lVar4,0);" (call_expression "FUN_002e3100(&local_48,lVar3,lVar4,0)" identifier (argument_list "(&local_48,lVar3,lVar4,0)" ( (pointer_expression "&local_48" & identifier) , identifier , identifier , number_literal ))) ;) (expression_statement "*(undefined1 *)(lVar3 + lVar4) = 0;" (assignment_expression "*(undefined1 *)(lVar3 + lVar4) = 0" (pointer_expression "*(undefined1 *)(lVar3 + lVar4)" * (cast_expression "(undefined1 *)(lVar3 + lVar4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + lVar4)" ( (binary_expression "lVar3 + lVar4" identifier + identifier) )))) = number_literal) ;) (expression_statement "*(long *)(param_2 + 0x28) = lVar3;" (assignment_expression "*(long *)(param_2 + 0x28) = lVar3" (pointer_expression "*(long *)(param_2 + 0x28)" * (cast_expression "(long *)(param_2 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(long *)(param_2 + 0x30) = lVar4;" (assignment_expression "*(long *)(param_2 + 0x30) = lVar4" (pointer_expression "*(long *)(param_2 + 0x30)" * (cast_expression "(long *)(param_2 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_48 != local_38) {\n    FUN_002dac60();\n  }" if (parenthesized_expression "(local_48 != local_38)" ( (binary_expression "local_48 != local_38" identifier != identifier) )) (compound_statement "{\n    FUN_002dac60();\n  }" { (expression_statement "FUN_002dac60();" (call_expression "FUN_002dac60()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "(**(code **)(*param_1 + 0x30))(&local_48,param_1);" (call_expression "(**(code **)(*param_1 + 0x30))(&local_48,param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x30))" ( (pointer_expression "**(code **)(*param_1 + 0x30)" * (pointer_expression "*(code **)(*param_1 + 0x30)" * (cast_expression "(code **)(*param_1 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x30)" ( (binary_expression "*param_1 + 0x30" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(&local_48,param_1)" ( (pointer_expression "&local_48" & identifier) , identifier ))) ;) (expression_statement "lVar4 = local_40;" (assignment_expression "lVar4 = local_40" identifier = identifier) ;) (expression_statement "lVar3 = thunk_FUN_002d9490(local_40 + 1);" (assignment_expression "lVar3 = thunk_FUN_002d9490(local_40 + 1)" identifier = (call_expression "thunk_FUN_002d9490(local_40 + 1)" identifier (argument_list "(local_40 + 1)" ( (binary_expression "local_40 + 1" identifier + number_literal) )))) ;) (expression_statement "FUN_002e3100(&local_48,lVar3,lVar4,0);" (call_expression "FUN_002e3100(&local_48,lVar3,lVar4,0)" identifier (argument_list "(&local_48,lVar3,lVar4,0)" ( (pointer_expression "&local_48" & identifier) , identifier , identifier , number_literal ))) ;) (expression_statement "*(undefined1 *)(lVar3 + lVar4) = 0;" (assignment_expression "*(undefined1 *)(lVar3 + lVar4) = 0" (pointer_expression "*(undefined1 *)(lVar3 + lVar4)" * (cast_expression "(undefined1 *)(lVar3 + lVar4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + lVar4)" ( (binary_expression "lVar3 + lVar4" identifier + identifier) )))) = number_literal) ;) (expression_statement "*(long *)(param_2 + 0x38) = lVar3;" (assignment_expression "*(long *)(param_2 + 0x38) = lVar3" (pointer_expression "*(long *)(param_2 + 0x38)" * (cast_expression "(long *)(param_2 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(long *)(param_2 + 0x40) = lVar4;" (assignment_expression "*(long *)(param_2 + 0x40) = lVar4" (pointer_expression "*(long *)(param_2 + 0x40)" * (cast_expression "(long *)(param_2 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x40)" ( (binary_expression "param_2 + 0x40" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_48 != local_38) {\n    FUN_002dac60();\n  }" if (parenthesized_expression "(local_48 != local_38)" ( (binary_expression "local_48 != local_38" identifier != identifier) )) (compound_statement "{\n    FUN_002dac60();\n  }" { (expression_statement "FUN_002dac60();" (call_expression "FUN_002dac60()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "(**(code **)(*param_1 + 0x38))(&local_48,param_1);" (call_expression "(**(code **)(*param_1 + 0x38))(&local_48,param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x38))" ( (pointer_expression "**(code **)(*param_1 + 0x38)" * (pointer_expression "*(code **)(*param_1 + 0x38)" * (cast_expression "(code **)(*param_1 + 0x38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x38)" ( (binary_expression "*param_1 + 0x38" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(&local_48,param_1)" ( (pointer_expression "&local_48" & identifier) , identifier ))) ;) (expression_statement "lVar4 = thunk_FUN_002d9490(local_40 + 1);" (assignment_expression "lVar4 = thunk_FUN_002d9490(local_40 + 1)" identifier = (call_expression "thunk_FUN_002d9490(local_40 + 1)" identifier (argument_list "(local_40 + 1)" ( (binary_expression "local_40 + 1" identifier + number_literal) )))) ;) (expression_statement "FUN_002e3100(&local_48,lVar4,local_40,0);" (call_expression "FUN_002e3100(&local_48,lVar4,local_40,0)" identifier (argument_list "(&local_48,lVar4,local_40,0)" ( (pointer_expression "&local_48" & identifier) , identifier , identifier , number_literal ))) ;) (expression_statement "*(undefined1 *)(lVar4 + local_40) = 0;" (assignment_expression "*(undefined1 *)(lVar4 + local_40) = 0" (pointer_expression "*(undefined1 *)(lVar4 + local_40)" * (cast_expression "(undefined1 *)(lVar4 + local_40)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + local_40)" ( (binary_expression "lVar4 + local_40" identifier + identifier) )))) = number_literal) ;) (expression_statement "*(long *)(param_2 + 0x48) = lVar4;" (assignment_expression "*(long *)(param_2 + 0x48) = lVar4" (pointer_expression "*(long *)(param_2 + 0x48)" * (cast_expression "(long *)(param_2 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x48)" ( (binary_expression "param_2 + 0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(long *)(param_2 + 0x50) = local_40;" (assignment_expression "*(long *)(param_2 + 0x50) = local_40" (pointer_expression "*(long *)(param_2 + 0x50)" * (cast_expression "(long *)(param_2 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x50)" ( (binary_expression "param_2 + 0x50" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_48 != local_38) {\n    FUN_002dac60();\n  }" if (parenthesized_expression "(local_48 != local_38)" ( (binary_expression "local_48 != local_38" identifier != identifier) )) (compound_statement "{\n    FUN_002dac60();\n  }" { (expression_statement "FUN_002dac60();" (call_expression "FUN_002dac60()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar2 = (**(code **)(*param_1 + 0x48))(param_1);" (assignment_expression "uVar2 = (**(code **)(*param_1 + 0x48))(param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0x48))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x48))" ( (pointer_expression "**(code **)(*param_1 + 0x48)" * (pointer_expression "*(code **)(*param_1 + 0x48)" * (cast_expression "(code **)(*param_1 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x48)" ( (binary_expression "*param_1 + 0x48" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined4 *)(param_2 + 0x5c) = uVar2;" (assignment_expression "*(undefined4 *)(param_2 + 0x5c) = uVar2" (pointer_expression "*(undefined4 *)(param_2 + 0x5c)" * (cast_expression "(undefined4 *)(param_2 + 0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x5c)" ( (binary_expression "param_2 + 0x5c" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar2 = (**(code **)(*param_1 + 0x50))(param_1);" (assignment_expression "uVar2 = (**(code **)(*param_1 + 0x50))(param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0x50))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x50))" ( (pointer_expression "**(code **)(*param_1 + 0x50)" * (pointer_expression "*(code **)(*param_1 + 0x50)" * (cast_expression "(code **)(*param_1 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x50)" ( (binary_expression "*param_1 + 0x50" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined4 *)(param_2 + 0x60) = uVar2;" (assignment_expression "*(undefined4 *)(param_2 + 0x60) = uVar2" (pointer_expression "*(undefined4 *)(param_2 + 0x60)" * (cast_expression "(undefined4 *)(param_2 + 0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x60)" ( (binary_expression "param_2 + 0x60" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (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 ( )))) ;) (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 (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 (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) )))) = LIT) ;) (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) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression (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 IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (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 IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (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 IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (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 IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (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 (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) ;) (return_statement return ;) })))
(function_definition "void FUN_003120a0(long *param_1,long param_2)\n\n{\n  undefined1 uVar1;\n  undefined4 uVar2;\n  long lVar3;\n  long lVar4;\n  undefined1 *local_48;\n  long local_40;\n  undefined1 local_38 [16];\n  \n  uVar1 = (**(code **)(*param_1 + 0x10))();\n  *(undefined1 *)(param_2 + 0x21) = uVar1;\n  uVar1 = (**(code **)(*param_1 + 0x18))(param_1);\n  *(undefined1 *)(param_2 + 0x22) = uVar1;\n  uVar2 = (**(code **)(*param_1 + 0x40))(param_1);\n  *(undefined8 *)(param_2 + 0x10) = 0;\n  *(undefined4 *)(param_2 + 0x58) = uVar2;\n  *(undefined8 *)(param_2 + 0x28) = 0;\n  *(undefined8 *)(param_2 + 0x38) = 0;\n  *(undefined8 *)(param_2 + 0x48) = 0;\n  *(undefined1 *)(param_2 + 0x6f) = 1;\n  (**(code **)(*param_1 + 0x20))(&local_48,param_1);\n  lVar4 = local_40;\n                    \n  lVar3 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar3,lVar4,0);\n  *(undefined1 *)(lVar3 + lVar4) = 0;\n  *(long *)(param_2 + 0x10) = lVar3;\n  *(long *)(param_2 + 0x18) = lVar4;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  (**(code **)(*param_1 + 0x28))(&local_48,param_1);\n  lVar4 = local_40;\n                    \n  lVar3 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar3,lVar4,0);\n  *(undefined1 *)(lVar3 + lVar4) = 0;\n  *(long *)(param_2 + 0x28) = lVar3;\n  *(long *)(param_2 + 0x30) = lVar4;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  (**(code **)(*param_1 + 0x30))(&local_48,param_1);\n  lVar4 = local_40;\n                    \n  lVar3 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar3,lVar4,0);\n  *(undefined1 *)(lVar3 + lVar4) = 0;\n  *(long *)(param_2 + 0x38) = lVar3;\n  *(long *)(param_2 + 0x40) = lVar4;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  (**(code **)(*param_1 + 0x38))(&local_48,param_1);\n                    \n  lVar4 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar4,local_40,0);\n  *(undefined1 *)(lVar4 + local_40) = 0;\n  *(long *)(param_2 + 0x48) = lVar4;\n  *(long *)(param_2 + 0x50) = local_40;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  uVar2 = (**(code **)(*param_1 + 0x48))(param_1);\n  *(undefined4 *)(param_2 + 0x5c) = uVar2;\n  uVar2 = (**(code **)(*param_1 + 0x50))(param_1);\n  *(undefined4 *)(param_2 + 0x60) = uVar2;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_003120a0(long *param_1,long param_2)" (identifier "FUN_003120a0") (parameter_list "(long *param_1,long param_2)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) () ")"))) (compound_statement "{\n  undefined1 uVar1;\n  undefined4 uVar2;\n  long lVar3;\n  long lVar4;\n  undefined1 *local_48;\n  long local_40;\n  undefined1 local_38 [16];\n  \n  uVar1 = (**(code **)(*param_1 + 0x10))();\n  *(undefined1 *)(param_2 + 0x21) = uVar1;\n  uVar1 = (**(code **)(*param_1 + 0x18))(param_1);\n  *(undefined1 *)(param_2 + 0x22) = uVar1;\n  uVar2 = (**(code **)(*param_1 + 0x40))(param_1);\n  *(undefined8 *)(param_2 + 0x10) = 0;\n  *(undefined4 *)(param_2 + 0x58) = uVar2;\n  *(undefined8 *)(param_2 + 0x28) = 0;\n  *(undefined8 *)(param_2 + 0x38) = 0;\n  *(undefined8 *)(param_2 + 0x48) = 0;\n  *(undefined1 *)(param_2 + 0x6f) = 1;\n  (**(code **)(*param_1 + 0x20))(&local_48,param_1);\n  lVar4 = local_40;\n                    \n  lVar3 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar3,lVar4,0);\n  *(undefined1 *)(lVar3 + lVar4) = 0;\n  *(long *)(param_2 + 0x10) = lVar3;\n  *(long *)(param_2 + 0x18) = lVar4;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  (**(code **)(*param_1 + 0x28))(&local_48,param_1);\n  lVar4 = local_40;\n                    \n  lVar3 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar3,lVar4,0);\n  *(undefined1 *)(lVar3 + lVar4) = 0;\n  *(long *)(param_2 + 0x28) = lVar3;\n  *(long *)(param_2 + 0x30) = lVar4;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  (**(code **)(*param_1 + 0x30))(&local_48,param_1);\n  lVar4 = local_40;\n                    \n  lVar3 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar3,lVar4,0);\n  *(undefined1 *)(lVar3 + lVar4) = 0;\n  *(long *)(param_2 + 0x38) = lVar3;\n  *(long *)(param_2 + 0x40) = lVar4;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  (**(code **)(*param_1 + 0x38))(&local_48,param_1);\n                    \n  lVar4 = thunk_FUN_002d9490(local_40 + 1);\n  FUN_002e3100(&local_48,lVar4,local_40,0);\n  *(undefined1 *)(lVar4 + local_40) = 0;\n  *(long *)(param_2 + 0x48) = lVar4;\n  *(long *)(param_2 + 0x50) = local_40;\n  if (local_48 != local_38) {\n    FUN_002dac60();\n  }\n  uVar2 = (**(code **)(*param_1 + 0x48))(param_1);\n  *(undefined4 *)(param_2 + 0x5c) = uVar2;\n  uVar2 = (**(code **)(*param_1 + 0x50))(param_1);\n  *(undefined4 *)(param_2 + 0x60) = uVar2;\n  return;\n}" ({ "{") (declaration "undefined1 uVar1;" (type_identifier "undefined1") (identifier "uVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "undefined1 *local_48;" (type_identifier "undefined1") (pointer_declarator "*local_48" (* "*") (identifier "local_48")) (; ";")) (declaration "long local_40;" (sized_type_specifier "long" (long "long")) (identifier "local_40") (; ";")) (declaration "undefined1 local_38 [16];" (type_identifier "undefined1") (array_declarator "local_38 [16]" (identifier "local_38") ([ "[") (number_literal "16") (] "]")) (; ";")) (expression_statement "uVar1 = (**(code **)(*param_1 + 0x10))();" (assignment_expression "uVar1 = (**(code **)(*param_1 + 0x10))()" (identifier "uVar1") (= "=") (call_expression "(**(code **)(*param_1 + 0x10))()" (parenthesized_expression "(**(code **)(*param_1 + 0x10))" (( "(") (pointer_expression "**(code **)(*param_1 + 0x10)" (* "*") (pointer_expression "*(code **)(*param_1 + 0x10)" (* "*") (cast_expression "(code **)(*param_1 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x10)" (( "(") (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(undefined1 *)(param_2 + 0x21) = uVar1;" (assignment_expression "*(undefined1 *)(param_2 + 0x21) = uVar1" (pointer_expression "*(undefined1 *)(param_2 + 0x21)" (* "*") (cast_expression "(undefined1 *)(param_2 + 0x21)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x21)" (( "(") (binary_expression "param_2 + 0x21" (identifier "param_2") (+ "+") (number_literal "0x21")) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar1 = (**(code **)(*param_1 + 0x18))(param_1);" (assignment_expression "uVar1 = (**(code **)(*param_1 + 0x18))(param_1)" (identifier "uVar1") (= "=") (call_expression "(**(code **)(*param_1 + 0x18))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x18))" (( "(") (pointer_expression "**(code **)(*param_1 + 0x18)" (* "*") (pointer_expression "*(code **)(*param_1 + 0x18)" (* "*") (cast_expression "(code **)(*param_1 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x18)" (( "(") (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "*(undefined1 *)(param_2 + 0x22) = uVar1;" (assignment_expression "*(undefined1 *)(param_2 + 0x22) = uVar1" (pointer_expression "*(undefined1 *)(param_2 + 0x22)" (* "*") (cast_expression "(undefined1 *)(param_2 + 0x22)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x22)" (( "(") (binary_expression "param_2 + 0x22" (identifier "param_2") (+ "+") (number_literal "0x22")) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar2 = (**(code **)(*param_1 + 0x40))(param_1);" (assignment_expression "uVar2 = (**(code **)(*param_1 + 0x40))(param_1)" (identifier "uVar2") (= "=") (call_expression "(**(code **)(*param_1 + 0x40))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x40))" (( "(") (pointer_expression "**(code **)(*param_1 + 0x40)" (* "*") (pointer_expression "*(code **)(*param_1 + 0x40)" (* "*") (cast_expression "(code **)(*param_1 + 0x40)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x40)" (( "(") (binary_expression "*param_1 + 0x40" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x40")) () ")"))))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "*(undefined8 *)(param_2 + 0x10) = 0;" (assignment_expression "*(undefined8 *)(param_2 + 0x10) = 0" (pointer_expression "*(undefined8 *)(param_2 + 0x10)" (* "*") (cast_expression "(undefined8 *)(param_2 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x10)" (( "(") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_2 + 0x58) = uVar2;" (assignment_expression "*(undefined4 *)(param_2 + 0x58) = uVar2" (pointer_expression "*(undefined4 *)(param_2 + 0x58)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x58)" (( "(") (binary_expression "param_2 + 0x58" (identifier "param_2") (+ "+") (number_literal "0x58")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "*(undefined8 *)(param_2 + 0x28) = 0;" (assignment_expression "*(undefined8 *)(param_2 + 0x28) = 0" (pointer_expression "*(undefined8 *)(param_2 + 0x28)" (* "*") (cast_expression "(undefined8 *)(param_2 + 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x28)" (( "(") (binary_expression "param_2 + 0x28" (identifier "param_2") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined8 *)(param_2 + 0x38) = 0;" (assignment_expression "*(undefined8 *)(param_2 + 0x38) = 0" (pointer_expression "*(undefined8 *)(param_2 + 0x38)" (* "*") (cast_expression "(undefined8 *)(param_2 + 0x38)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x38)" (( "(") (binary_expression "param_2 + 0x38" (identifier "param_2") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined8 *)(param_2 + 0x48) = 0;" (assignment_expression "*(undefined8 *)(param_2 + 0x48) = 0" (pointer_expression "*(undefined8 *)(param_2 + 0x48)" (* "*") (cast_expression "(undefined8 *)(param_2 + 0x48)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x48)" (( "(") (binary_expression "param_2 + 0x48" (identifier "param_2") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(param_2 + 0x6f) = 1;" (assignment_expression "*(undefined1 *)(param_2 + 0x6f) = 1" (pointer_expression "*(undefined1 *)(param_2 + 0x6f)" (* "*") (cast_expression "(undefined1 *)(param_2 + 0x6f)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x6f)" (( "(") (binary_expression "param_2 + 0x6f" (identifier "param_2") (+ "+") (number_literal "0x6f")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "(**(code **)(*param_1 + 0x20))(&local_48,param_1);" (call_expression "(**(code **)(*param_1 + 0x20))(&local_48,param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x20))" (( "(") (pointer_expression "**(code **)(*param_1 + 0x20)" (* "*") (pointer_expression "*(code **)(*param_1 + 0x20)" (* "*") (cast_expression "(code **)(*param_1 + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x20)" (( "(") (binary_expression "*param_1 + 0x20" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (argument_list "(&local_48,param_1)" (( "(") (pointer_expression "&local_48" (& "&") (identifier "local_48")) (, ",") (identifier "param_1") () ")"))) (; ";")) (expression_statement "lVar4 = local_40;" (assignment_expression "lVar4 = local_40" (identifier "lVar4") (= "=") (identifier "local_40")) (; ";")) (expression_statement "lVar3 = thunk_FUN_002d9490(local_40 + 1);" (assignment_expression "lVar3 = thunk_FUN_002d9490(local_40 + 1)" (identifier "lVar3") (= "=") (call_expression "thunk_FUN_002d9490(local_40 + 1)" (identifier "thunk_FUN_002d9490") (argument_list "(local_40 + 1)" (( "(") (binary_expression "local_40 + 1" (identifier "local_40") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "FUN_002e3100(&local_48,lVar3,lVar4,0);" (call_expression "FUN_002e3100(&local_48,lVar3,lVar4,0)" (identifier "FUN_002e3100") (argument_list "(&local_48,lVar3,lVar4,0)" (( "(") (pointer_expression "&local_48" (& "&") (identifier "local_48")) (, ",") (identifier "lVar3") (, ",") (identifier "lVar4") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "*(undefined1 *)(lVar3 + lVar4) = 0;" (assignment_expression "*(undefined1 *)(lVar3 + lVar4) = 0" (pointer_expression "*(undefined1 *)(lVar3 + lVar4)" (* "*") (cast_expression "(undefined1 *)(lVar3 + lVar4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + lVar4)" (( "(") (binary_expression "lVar3 + lVar4" (identifier "lVar3") (+ "+") (identifier "lVar4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(long *)(param_2 + 0x10) = lVar3;" (assignment_expression "*(long *)(param_2 + 0x10) = lVar3" (pointer_expression "*(long *)(param_2 + 0x10)" (* "*") (cast_expression "(long *)(param_2 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x10)" (( "(") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "lVar3")) (; ";")) (expression_statement "*(long *)(param_2 + 0x18) = lVar4;" (assignment_expression "*(long *)(param_2 + 0x18) = lVar4" (pointer_expression "*(long *)(param_2 + 0x18)" (* "*") (cast_expression "(long *)(param_2 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "lVar4")) (; ";")) (if_statement "if (local_48 != local_38) {\n    FUN_002dac60();\n  }" (if "if") (parenthesized_expression "(local_48 != local_38)" (( "(") (binary_expression "local_48 != local_38" (identifier "local_48") (!= "!=") (identifier "local_38")) () ")")) (compound_statement "{\n    FUN_002dac60();\n  }" ({ "{") (expression_statement "FUN_002dac60();" (call_expression "FUN_002dac60()" (identifier "FUN_002dac60") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "(**(code **)(*param_1 + 0x28))(&local_48,param_1);" (call_expression "(**(code **)(*param_1 + 0x28))(&local_48,param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x28))" (( "(") (pointer_expression "**(code **)(*param_1 + 0x28)" (* "*") (pointer_expression "*(code **)(*param_1 + 0x28)" (* "*") (cast_expression "(code **)(*param_1 + 0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x28)" (( "(") (binary_expression "*param_1 + 0x28" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (argument_list "(&local_48,param_1)" (( "(") (pointer_expression "&local_48" (& "&") (identifier "local_48")) (, ",") (identifier "param_1") () ")"))) (; ";")) (expression_statement "lVar4 = local_40;" (assignment_expression "lVar4 = local_40" (identifier "lVar4") (= "=") (identifier "local_40")) (; ";")) (expression_statement "lVar3 = thunk_FUN_002d9490(local_40 + 1);" (assignment_expression "lVar3 = thunk_FUN_002d9490(local_40 + 1)" (identifier "lVar3") (= "=") (call_expression "thunk_FUN_002d9490(local_40 + 1)" (identifier "thunk_FUN_002d9490") (argument_list "(local_40 + 1)" (( "(") (binary_expression "local_40 + 1" (identifier "local_40") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "FUN_002e3100(&local_48,lVar3,lVar4,0);" (call_expression "FUN_002e3100(&local_48,lVar3,lVar4,0)" (identifier "FUN_002e3100") (argument_list "(&local_48,lVar3,lVar4,0)" (( "(") (pointer_expression "&local_48" (& "&") (identifier "local_48")) (, ",") (identifier "lVar3") (, ",") (identifier "lVar4") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "*(undefined1 *)(lVar3 + lVar4) = 0;" (assignment_expression "*(undefined1 *)(lVar3 + lVar4) = 0" (pointer_expression "*(undefined1 *)(lVar3 + lVar4)" (* "*") (cast_expression "(undefined1 *)(lVar3 + lVar4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + lVar4)" (( "(") (binary_expression "lVar3 + lVar4" (identifier "lVar3") (+ "+") (identifier "lVar4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(long *)(param_2 + 0x28) = lVar3;" (assignment_expression "*(long *)(param_2 + 0x28) = lVar3" (pointer_expression "*(long *)(param_2 + 0x28)" (* "*") (cast_expression "(long *)(param_2 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x28)" (( "(") (binary_expression "param_2 + 0x28" (identifier "param_2") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (identifier "lVar3")) (; ";")) (expression_statement "*(long *)(param_2 + 0x30) = lVar4;" (assignment_expression "*(long *)(param_2 + 0x30) = lVar4" (pointer_expression "*(long *)(param_2 + 0x30)" (* "*") (cast_expression "(long *)(param_2 + 0x30)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x30)" (( "(") (binary_expression "param_2 + 0x30" (identifier "param_2") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (identifier "lVar4")) (; ";")) (if_statement "if (local_48 != local_38) {\n    FUN_002dac60();\n  }" (if "if") (parenthesized_expression "(local_48 != local_38)" (( "(") (binary_expression "local_48 != local_38" (identifier "local_48") (!= "!=") (identifier "local_38")) () ")")) (compound_statement "{\n    FUN_002dac60();\n  }" ({ "{") (expression_statement "FUN_002dac60();" (call_expression "FUN_002dac60()" (identifier "FUN_002dac60") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "(**(code **)(*param_1 + 0x30))(&local_48,param_1);" (call_expression "(**(code **)(*param_1 + 0x30))(&local_48,param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x30))" (( "(") (pointer_expression "**(code **)(*param_1 + 0x30)" (* "*") (pointer_expression "*(code **)(*param_1 + 0x30)" (* "*") (cast_expression "(code **)(*param_1 + 0x30)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x30)" (( "(") (binary_expression "*param_1 + 0x30" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x30")) () ")"))))) () ")")) (argument_list "(&local_48,param_1)" (( "(") (pointer_expression "&local_48" (& "&") (identifier "local_48")) (, ",") (identifier "param_1") () ")"))) (; ";")) (expression_statement "lVar4 = local_40;" (assignment_expression "lVar4 = local_40" (identifier "lVar4") (= "=") (identifier "local_40")) (; ";")) (expression_statement "lVar3 = thunk_FUN_002d9490(local_40 + 1);" (assignment_expression "lVar3 = thunk_FUN_002d9490(local_40 + 1)" (identifier "lVar3") (= "=") (call_expression "thunk_FUN_002d9490(local_40 + 1)" (identifier "thunk_FUN_002d9490") (argument_list "(local_40 + 1)" (( "(") (binary_expression "local_40 + 1" (identifier "local_40") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "FUN_002e3100(&local_48,lVar3,lVar4,0);" (call_expression "FUN_002e3100(&local_48,lVar3,lVar4,0)" (identifier "FUN_002e3100") (argument_list "(&local_48,lVar3,lVar4,0)" (( "(") (pointer_expression "&local_48" (& "&") (identifier "local_48")) (, ",") (identifier "lVar3") (, ",") (identifier "lVar4") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "*(undefined1 *)(lVar3 + lVar4) = 0;" (assignment_expression "*(undefined1 *)(lVar3 + lVar4) = 0" (pointer_expression "*(undefined1 *)(lVar3 + lVar4)" (* "*") (cast_expression "(undefined1 *)(lVar3 + lVar4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + lVar4)" (( "(") (binary_expression "lVar3 + lVar4" (identifier "lVar3") (+ "+") (identifier "lVar4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(long *)(param_2 + 0x38) = lVar3;" (assignment_expression "*(long *)(param_2 + 0x38) = lVar3" (pointer_expression "*(long *)(param_2 + 0x38)" (* "*") (cast_expression "(long *)(param_2 + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x38)" (( "(") (binary_expression "param_2 + 0x38" (identifier "param_2") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (identifier "lVar3")) (; ";")) (expression_statement "*(long *)(param_2 + 0x40) = lVar4;" (assignment_expression "*(long *)(param_2 + 0x40) = lVar4" (pointer_expression "*(long *)(param_2 + 0x40)" (* "*") (cast_expression "(long *)(param_2 + 0x40)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x40)" (( "(") (binary_expression "param_2 + 0x40" (identifier "param_2") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (identifier "lVar4")) (; ";")) (if_statement "if (local_48 != local_38) {\n    FUN_002dac60();\n  }" (if "if") (parenthesized_expression "(local_48 != local_38)" (( "(") (binary_expression "local_48 != local_38" (identifier "local_48") (!= "!=") (identifier "local_38")) () ")")) (compound_statement "{\n    FUN_002dac60();\n  }" ({ "{") (expression_statement "FUN_002dac60();" (call_expression "FUN_002dac60()" (identifier "FUN_002dac60") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "(**(code **)(*param_1 + 0x38))(&local_48,param_1);" (call_expression "(**(code **)(*param_1 + 0x38))(&local_48,param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x38))" (( "(") (pointer_expression "**(code **)(*param_1 + 0x38)" (* "*") (pointer_expression "*(code **)(*param_1 + 0x38)" (* "*") (cast_expression "(code **)(*param_1 + 0x38)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x38)" (( "(") (binary_expression "*param_1 + 0x38" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x38")) () ")"))))) () ")")) (argument_list "(&local_48,param_1)" (( "(") (pointer_expression "&local_48" (& "&") (identifier "local_48")) (, ",") (identifier "param_1") () ")"))) (; ";")) (expression_statement "lVar4 = thunk_FUN_002d9490(local_40 + 1);" (assignment_expression "lVar4 = thunk_FUN_002d9490(local_40 + 1)" (identifier "lVar4") (= "=") (call_expression "thunk_FUN_002d9490(local_40 + 1)" (identifier "thunk_FUN_002d9490") (argument_list "(local_40 + 1)" (( "(") (binary_expression "local_40 + 1" (identifier "local_40") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "FUN_002e3100(&local_48,lVar4,local_40,0);" (call_expression "FUN_002e3100(&local_48,lVar4,local_40,0)" (identifier "FUN_002e3100") (argument_list "(&local_48,lVar4,local_40,0)" (( "(") (pointer_expression "&local_48" (& "&") (identifier "local_48")) (, ",") (identifier "lVar4") (, ",") (identifier "local_40") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "*(undefined1 *)(lVar4 + local_40) = 0;" (assignment_expression "*(undefined1 *)(lVar4 + local_40) = 0" (pointer_expression "*(undefined1 *)(lVar4 + local_40)" (* "*") (cast_expression "(undefined1 *)(lVar4 + local_40)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + local_40)" (( "(") (binary_expression "lVar4 + local_40" (identifier "lVar4") (+ "+") (identifier "local_40")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(long *)(param_2 + 0x48) = lVar4;" (assignment_expression "*(long *)(param_2 + 0x48) = lVar4" (pointer_expression "*(long *)(param_2 + 0x48)" (* "*") (cast_expression "(long *)(param_2 + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x48)" (( "(") (binary_expression "param_2 + 0x48" (identifier "param_2") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (identifier "lVar4")) (; ";")) (expression_statement "*(long *)(param_2 + 0x50) = local_40;" (assignment_expression "*(long *)(param_2 + 0x50) = local_40" (pointer_expression "*(long *)(param_2 + 0x50)" (* "*") (cast_expression "(long *)(param_2 + 0x50)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x50)" (( "(") (binary_expression "param_2 + 0x50" (identifier "param_2") (+ "+") (number_literal "0x50")) () ")")))) (= "=") (identifier "local_40")) (; ";")) (if_statement "if (local_48 != local_38) {\n    FUN_002dac60();\n  }" (if "if") (parenthesized_expression "(local_48 != local_38)" (( "(") (binary_expression "local_48 != local_38" (identifier "local_48") (!= "!=") (identifier "local_38")) () ")")) (compound_statement "{\n    FUN_002dac60();\n  }" ({ "{") (expression_statement "FUN_002dac60();" (call_expression "FUN_002dac60()" (identifier "FUN_002dac60") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar2 = (**(code **)(*param_1 + 0x48))(param_1);" (assignment_expression "uVar2 = (**(code **)(*param_1 + 0x48))(param_1)" (identifier "uVar2") (= "=") (call_expression "(**(code **)(*param_1 + 0x48))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x48))" (( "(") (pointer_expression "**(code **)(*param_1 + 0x48)" (* "*") (pointer_expression "*(code **)(*param_1 + 0x48)" (* "*") (cast_expression "(code **)(*param_1 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x48)" (( "(") (binary_expression "*param_1 + 0x48" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(param_2 + 0x5c) = uVar2;" (assignment_expression "*(undefined4 *)(param_2 + 0x5c) = uVar2" (pointer_expression "*(undefined4 *)(param_2 + 0x5c)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x5c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x5c)" (( "(") (binary_expression "param_2 + 0x5c" (identifier "param_2") (+ "+") (number_literal "0x5c")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "uVar2 = (**(code **)(*param_1 + 0x50))(param_1);" (assignment_expression "uVar2 = (**(code **)(*param_1 + 0x50))(param_1)" (identifier "uVar2") (= "=") (call_expression "(**(code **)(*param_1 + 0x50))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x50))" (( "(") (pointer_expression "**(code **)(*param_1 + 0x50)" (* "*") (pointer_expression "*(code **)(*param_1 + 0x50)" (* "*") (cast_expression "(code **)(*param_1 + 0x50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x50)" (( "(") (binary_expression "*param_1 + 0x50" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x50")) () ")"))))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(param_2 + 0x60) = uVar2;" (assignment_expression "*(undefined4 *)(param_2 + 0x60) = uVar2" (pointer_expression "*(undefined4 *)(param_2 + 0x60)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x60)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x60)" (( "(") (binary_expression "param_2 + 0x60" (identifier "param_2") (+ "+") (number_literal "0x60")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* void std::__facet_shims::__moneypunct_fill_cache<char, false>(std::integral_constant<bool, true>,
   std::locale::facet const*, std::__moneypunct_cache<char, false>*) */

void std::__facet_shims::__moneypunct_fill_cache<char,false>(long *param_1,long var_1)

{
  type_3 uVar1;
  type_1 uVar2;
  type_2 uVar3;
  char *pcVar4;
  type_1 *var_5;
  type_3 var_3;
  type_1 var_6 [16];
  
  uVar2 = (**(type_4 **)(*param_1 + 0x10))();
  *(type_1 *)(var_1 + 0x21) = uVar2;
  uVar2 = (**(type_4 **)(*param_1 + 0x18))(param_1);
  *(type_1 *)(var_1 + 0x22) = uVar2;
  uVar3 = (**(type_4 **)(*param_1 + 0x40))(param_1);
  *(type_5 *)(var_1 + 0x10) = 0;
  *(type_2 *)(var_1 + 0x58) = uVar3;
  *(type_5 *)(var_1 + 0x28) = 0;
  *(type_5 *)(var_1 + 0x38) = 0;
  *(type_5 *)(var_1 + 0x48) = 0;
  *(type_1 *)(var_1 + 0x6f) = 1;
  (**(type_4 **)(*param_1 + 0x20))(&var_5,param_1);
  uVar1 = var_3;
                    /* try { // try from 00312112 to 00312129 has its CatchHandler @ 0031225a */
  pcVar4 = (char *)var_2(var_3 + 1);
  std::string::var_4((type_6 *)&var_5,pcVar4,uVar1,0);
  pcVar4[uVar1] = '\0';
  *(char **)(var_1 + 0x10) = pcVar4;
  *(type_3 *)(var_1 + 0x18) = uVar1;
  if (var_5 != var_6) {
    var_7(var_5);
  }
  (**(type_4 **)(*param_1 + 0x28))(&var_5,param_1);
  uVar1 = var_3;
                    /* try { // try from 00312160 to 00312177 has its CatchHandler @ 00312263 */
  pcVar4 = (char *)var_2(var_3 + 1);
  std::string::var_4((type_6 *)&var_5,pcVar4,uVar1,0);
  pcVar4[uVar1] = '\0';
  *(char **)(var_1 + 0x28) = pcVar4;
  *(type_3 *)(var_1 + 0x30) = uVar1;
  if (var_5 != var_6) {
    var_7(var_5);
  }
  (**(type_4 **)(*param_1 + 0x30))(&var_5,param_1);
  uVar1 = var_3;
                    /* try { // try from 003121ae to 003121c5 has its CatchHandler @ 00312261 */
  pcVar4 = (char *)var_2(var_3 + 1);
  std::string::var_4((type_6 *)&var_5,pcVar4,uVar1,0);
  pcVar4[uVar1] = '\0';
  *(char **)(var_1 + 0x38) = pcVar4;
  *(type_3 *)(var_1 + 0x40) = uVar1;
  if (var_5 != var_6) {
    var_7(var_5);
  }
  (**(type_4 **)(*param_1 + 0x38))(&var_5,param_1);
                    /* try { // try from 003121fc to 00312213 has its CatchHandler @ 0031225f */
  pcVar4 = (char *)var_2(var_3 + 1);
  std::string::var_4((type_6 *)&var_5,pcVar4,var_3,0);
  pcVar4[var_3] = '\0';
  *(char **)(var_1 + 0x48) = pcVar4;
  *(type_3 *)(var_1 + 0x50) = var_3;
  if (var_5 != var_6) {
    var_7(var_5);
  }
  uVar3 = (**(type_4 **)(*param_1 + 0x48))(param_1);
  *(type_2 *)(var_1 + 0x5c) = uVar3;
  uVar3 = (**(type_4 **)(*param_1 + 0x50))(param_1);
  *(type_2 *)(var_1 + 0x60) = uVar3;
  return;
}


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

void MASKED(long *param_1,long param_2)

{
  undefined1 uVar1;
  undefined4 uVar2;
  long lVar3;
  long lVar4;
  undefined1 *local_48;
  long local_40;
  undefined1 local_38 [16];
  
  uVar1 = (**(code **)(*param_1 + 0x10))();
  *(undefined1 *)(param_2 + 0x21) = uVar1;
  uVar1 = (**(code **)(*param_1 + 0x18))(param_1);
  *(undefined1 *)(param_2 + 0x22) = uVar1;
  uVar2 = (**(code **)(*param_1 + 0x40))(param_1);
  *(undefined8 *)(param_2 + 0x10) = 0;
  *(undefined4 *)(param_2 + 0x58) = uVar2;
  *(undefined8 *)(param_2 + 0x28) = 0;
  *(undefined8 *)(param_2 + 0x38) = 0;
  *(undefined8 *)(param_2 + 0x48) = 0;
  *(undefined1 *)(param_2 + 0x6f) = 1;
  (**(code **)(*param_1 + 0x20))(&local_48,param_1);
  lVar4 = local_40;
                    /* try { // try from 00312112 to 00312129 has its CatchHandler @ 0031225a */
  lVar3 = thunk_FUN_002d9490(local_40 + 1);
  FUN_002e3100(&local_48,lVar3,lVar4,0);
  *(undefined1 *)(lVar3 + lVar4) = 0;
  *(long *)(param_2 + 0x10) = lVar3;
  *(long *)(param_2 + 0x18) = lVar4;
  if (local_48 != local_38) {
    FUN_002dac60();
  }
  (**(code **)(*param_1 + 0x28))(&local_48,param_1);
  lVar4 = local_40;
                    /* try { // try from 00312160 to 00312177 has its CatchHandler @ 00312263 */
  lVar3 = thunk_FUN_002d9490(local_40 + 1);
  FUN_002e3100(&local_48,lVar3,lVar4,0);
  *(undefined1 *)(lVar3 + lVar4) = 0;
  *(long *)(param_2 + 0x28) = lVar3;
  *(long *)(param_2 + 0x30) = lVar4;
  if (local_48 != local_38) {
    FUN_002dac60();
  }
  (**(code **)(*param_1 + 0x30))(&local_48,param_1);
  lVar4 = local_40;
                    /* try { // try from 003121ae to 003121c5 has its CatchHandler @ 00312261 */
  lVar3 = thunk_FUN_002d9490(local_40 + 1);
  FUN_002e3100(&local_48,lVar3,lVar4,0);
  *(undefined1 *)(lVar3 + lVar4) = 0;
  *(long *)(param_2 + 0x38) = lVar3;
  *(long *)(param_2 + 0x40) = lVar4;
  if (local_48 != local_38) {
    FUN_002dac60();
  }
  (**(code **)(*param_1 + 0x38))(&local_48,param_1);
                    /* try { // try from 003121fc to 00312213 has its CatchHandler @ 0031225f */
  lVar4 = thunk_FUN_002d9490(local_40 + 1);
  FUN_002e3100(&local_48,lVar4,local_40,0);
  *(undefined1 *)(lVar4 + local_40) = 0;
  *(long *)(param_2 + 0x48) = lVar4;
  *(long *)(param_2 + 0x50) = local_40;
  if (local_48 != local_38) {
    FUN_002dac60();
  }
  uVar2 = (**(code **)(*param_1 + 0x48))(param_1);
  *(undefined4 *)(param_2 + 0x5c) = uVar2;
  uVar2 = (**(code **)(*param_1 + 0x50))(param_1);
  *(undefined4 *)(param_2 + 0x60) = uVar2;
  return;
}

