
/* WARNING: Removing unreachable block (ram,0x002f8bd1) */
/* WARNING: Removing unreachable block (ram,0x002f850c) */
/* WARNING: Removing unreachable block (ram,0x002f8520) */
/* WARNING: Removing unreachable block (ram,0x002f8525) */
/* WARNING: Removing unreachable block (ram,0x002f8e60) */
/* WARNING: Removing unreachable block (ram,0x002f8e6f) */
/* WARNING: Removing unreachable block (ram,0x002f84b8) */
/* WARNING: Removing unreachable block (ram,0x002f84c2) */
/* WARNING: Removing unreachable block (ram,0x002f8b70) */
/* WARNING: Removing unreachable block (ram,0x002f8533) */
/* WARNING: Removing unreachable block (ram,0x002f853c) */
/* WARNING: Removing unreachable block (ram,0x002f84d8) */
/* WARNING: Removing unreachable block (ram,0x002f84e0) */
/* WARNING: Removing unreachable block (ram,0x002f8484) */
/* WARNING: Removing unreachable block (ram,0x002f848f) */
/* WARNING: Removing unreachable block (ram,0x002f8a80) */
/* WARNING: Removing unreachable block (ram,0x002f8493) */
/* WARNING: Removing unreachable block (ram,0x002f84ec) */
/* WARNING: Removing unreachable block (ram,0x002f8501) */
/* WARNING: Removing unreachable block (ram,0x002f8b80) */
/* WARNING: Removing unreachable block (ram,0x002f8b8b) */
/* WARNING: Removing unreachable block (ram,0x002f8e0f) */
/* WARNING: Removing unreachable block (ram,0x002f8e2d) */
/* WARNING: Removing unreachable block (ram,0x002f8cb8) */
/* WARNING: Removing unreachable block (ram,0x002f89eb) */
/* WARNING: Removing unreachable block (ram,0x002f89fd) */
/* WARNING: Removing unreachable block (ram,0x002f8cc2) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */
/* std::istreambuf_iterator<char, std::char_traits<char> > std::money_get<char,
   std::istreambuf_iterator<char, std::char_traits<char> >
   >::_M_extract<true>(std::istreambuf_iterator<char, std::char_traits<char> >,
   std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&,
   std::string&) const */

undefined1  [16]
std::money_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::_M_extract<true>
          (undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
          undefined8 param_5,long param_6,uint *param_7,string *param_8)

{
  byte bVar1;
  long lVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  char cVar5;
  long lVar6;
  ulong uVar7;
  undefined1 auVar8 [16];
  undefined8 *local_c0;
  undefined8 local_78;
  undefined8 local_70;
  undefined8 local_68;
  undefined8 local_60;
  __use_cache<std::__moneypunct_cache<char,true>> local_4e [2];
  undefined4 local_4c;
  undefined1 *local_48;
  undefined1 *local_40 [2];
  
  local_78 = param_4;
  local_70 = param_5;
  local_68 = param_2;
  local_60 = param_3;
  use_facet<std::ctype<char>>((locale *)(param_6 + 0xd0));
  lVar6 = __use_cache<std::__moneypunct_cache<char,true>>::operator()
                    (local_4e,(locale *)(param_6 + 0xd0));
  local_48 = &DAT_0044a558;
  if (*(char *)(lVar6 + 0x20) != '\0') {
                    /* try { // try from 002f83ad to 002f83b1 has its CatchHandler @ 002f8ef5 */
    std::string::reserve((string *)&local_48,0x20);
  }
  local_40[0] = &DAT_0044a558;
                    /* try { // try from 002f83da to 002f8e65 has its CatchHandler @ 002f8ef0 */
  std::string::reserve((string *)local_40,0x20);
  local_4c = *(undefined4 *)(lVar6 + 0x60);
  lVar2 = 0;
  bVar1 = (byte)local_4c;
  while( true ) {
    if (bVar1 < 5) {
                    /* WARNING: Could not recover jumptable at 0x002f845a. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      auVar8 = (*(code *)(&DAT_003913fc +
                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar2) * 4)))()
      ;
      return auVar8;
    }
    if (3 < (int)lVar2 + 1) break;
    bVar1 = *(byte *)((long)&local_4c + lVar2 + 1);
    lVar2 = lVar2 + 1;
  }
  if ((1 < *(ulong *)(local_40[0] + -0x18)) &&
     (uVar7 = std::string::find_first_not_of((string *)local_40,'0',0), uVar7 != 0)) {
    if (uVar7 == 0xffffffffffffffff) {
      uVar7 = *(long *)(local_40[0] + -0x18) - 1;
    }
    std::string::erase((string *)local_40,0,uVar7);
  }
  if (*(long *)(local_48 + -0x18) != 0) {
    std::string::push_back((string *)&local_48,'\0');
    cVar5 = __verify_grouping(*(char **)(lVar6 + 0x10),*(ulong *)(lVar6 + 0x18),(string *)&local_48)
    ;
    if (cVar5 == '\0') {
      *param_7 = *param_7 | 4;
    }
  }
  std::string::swap(param_8,(string *)local_40);
  local_c0 = &local_78;
  cVar5 = istreambuf_iterator<char,std::char_traits<char>>::equal
                    ((istreambuf_iterator<char,std::char_traits<char>> *)&local_68,
                     (istreambuf_iterator *)local_c0);
  uVar4 = local_60;
  uVar3 = local_68;
  if (cVar5 != '\0') {
    *param_7 = *param_7 | 2;
  }
  if ((allocator *)(local_40[0] + -0x18) != (allocator *)PTR__S_empty_rep_storage_0043dc38) {
    std::string::_Rep::_M_dispose((allocator *)(local_40[0] + -0x18));
  }
  if ((allocator *)(local_48 + -0x18) != (allocator *)PTR__S_empty_rep_storage_0043dc38) {
    std::string::_Rep::_M_dispose((allocator *)(local_48 + -0x18));
  }
  auVar8._8_8_ = uVar4;
  auVar8._0_8_ = uVar3;
  return auVar8;
}



/* WARNING: Removing unreachable block (ram,0x002f8bd1) */
/* WARNING: Removing unreachable block (ram,0x002f850c) */
/* WARNING: Removing unreachable block (ram,0x002f8520) */
/* WARNING: Removing unreachable block (ram,0x002f8525) */
/* WARNING: Removing unreachable block (ram,0x002f8e60) */
/* WARNING: Removing unreachable block (ram,0x002f8e6f) */
/* WARNING: Removing unreachable block (ram,0x002f84b8) */
/* WARNING: Removing unreachable block (ram,0x002f84c2) */
/* WARNING: Removing unreachable block (ram,0x002f8b70) */
/* WARNING: Removing unreachable block (ram,0x002f8533) */
/* WARNING: Removing unreachable block (ram,0x002f853c) */
/* WARNING: Removing unreachable block (ram,0x002f84d8) */
/* WARNING: Removing unreachable block (ram,0x002f84e0) */
/* WARNING: Removing unreachable block (ram,0x002f8484) */
/* WARNING: Removing unreachable block (ram,0x002f848f) */
/* WARNING: Removing unreachable block (ram,0x002f8a80) */
/* WARNING: Removing unreachable block (ram,0x002f8493) */
/* WARNING: Removing unreachable block (ram,0x002f84ec) */
/* WARNING: Removing unreachable block (ram,0x002f8501) */
/* WARNING: Removing unreachable block (ram,0x002f8b80) */
/* WARNING: Removing unreachable block (ram,0x002f8b8b) */
/* WARNING: Removing unreachable block (ram,0x002f8e0f) */
/* WARNING: Removing unreachable block (ram,0x002f8e2d) */
/* WARNING: Removing unreachable block (ram,0x002f8cb8) */
/* WARNING: Removing unreachable block (ram,0x002f89eb) */
/* WARNING: Removing unreachable block (ram,0x002f89fd) */
/* WARNING: Removing unreachable block (ram,0x002f8cc2) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

undefined1  [16]
FUN_002f8310(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
            undefined8 param_5,long param_6,uint *param_7,undefined8 param_8)

{
  byte bVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  char cVar4;
  long lVar5;
  long lVar6;
  undefined1 auVar7 [16];
  undefined8 *local_c0;
  undefined8 local_78;
  undefined8 local_70;
  undefined8 local_68;
  undefined8 local_60;
  undefined1 local_4e;
  undefined1 local_4d;
  undefined4 local_4c;
  undefined1 *local_48;
  undefined1 *local_40 [2];
  
  local_78 = param_4;
  local_70 = param_5;
  local_68 = param_2;
  local_60 = param_3;
  FUN_002ec670(param_6 + 0xd0);
  lVar5 = FUN_002efb20(&local_4e,param_6 + 0xd0);
  local_48 = &DAT_0044a558;
  if (*(char *)(lVar5 + 0x20) != '\0') {
                    /* try { // try from 002f83ad to 002f83b1 has its CatchHandler @ 002f8ef5 */
    FUN_0030e7a0(&local_48,0x20);
  }
  local_40[0] = &DAT_0044a558;
                    /* try { // try from 002f83da to 002f8e65 has its CatchHandler @ 002f8ef0 */
  FUN_0030e7a0(local_40,0x20);
  local_4c = *(undefined4 *)(lVar5 + 0x60);
  lVar6 = 0;
  bVar1 = (byte)local_4c;
  while( true ) {
    if (bVar1 < 5) {
                    /* WARNING: Could not recover jumptable at 0x002f845a. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      auVar7 = (*(code *)(&DAT_003913fc +
                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)))()
      ;
      return auVar7;
    }
    if (3 < (int)lVar6 + 1) break;
    bVar1 = *(byte *)((long)&local_4c + lVar6 + 1);
    lVar6 = lVar6 + 1;
  }
  if ((1 < *(ulong *)(local_40[0] + -0x18)) && (lVar6 = FUN_0030d360(local_40,0x30,0), lVar6 != 0))
  {
    if (lVar6 == -1) {
      lVar6 = *(long *)(local_40[0] + -0x18) + -1;
    }
    FUN_0030dfe0(local_40,0,lVar6);
  }
  if (*(long *)(local_48 + -0x18) != 0) {
    FUN_0030ec80(&local_48,0);
    cVar4 = FUN_00323270(*(undefined8 *)(lVar5 + 0x10),*(undefined8 *)(lVar5 + 0x18),&local_48);
    if (cVar4 == '\0') {
      *param_7 = *param_7 | 4;
    }
  }
  FUN_0030ce20(param_8,local_40);
  local_c0 = &local_78;
  cVar4 = FUN_002f12b0(&local_68,local_c0);
  uVar3 = local_60;
  uVar2 = local_68;
  if (cVar4 != '\0') {
    *param_7 = *param_7 | 2;
  }
  if (local_40[0] + -0x18 != PTR_DAT_0043dc38) {
    FUN_002ea270(local_40[0] + -0x18,&local_4d);
  }
  if (local_48 + -0x18 != PTR_DAT_0043dc38) {
    FUN_002ea270(local_48 + -0x18,&local_4d);
  }
  auVar7._8_8_ = uVar3;
  auVar7._0_8_ = uVar2;
  return auVar7;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
LEA RBX,[R9 + 0xd0]
MOV RDI,RBX
SUB RSP,0xb8
MOV qword ptr [RSP + 0x80],RSI
MOV qword ptr [RSP + 0x88],RDX
MOV qword ptr [RSP + 0x70],RCX
MOV qword ptr [RSP + 0x78],R8
MOV qword ptr [RSP + 0x68],R9
CALL 0x002ec670
LEA RDI,[RSP + 0x9a]
MOV RSI,RBX
MOV qword ptr [RSP + 0x40],RAX
CALL 0x002efb20
MOV byte ptr [RSP + 0x66],0x0
MOV R13,RAX
ADD RAX,0x64
CMP qword ptr [R13 + 0x40],0x0
MOV qword ptr [RSP + 0x20],RAX
JZ 0x002f8386
CMP qword ptr [R13 + 0x50],0x0
SETNZ byte ptr [RSP + 0x66]
LEA RAX,[0x44a540]
ADD RAX,0x18
CMP byte ptr [R13 + 0x20],0x0
MOV qword ptr [RSP + 0xa0],RAX
JZ 0x002f83b2
LEA RDI,[RSP + 0xa0]
MOV ESI,0x20
CALL 0x0030e7a0
LEA RAX,[0x44a540]
MOV ESI,0x20
ADD RAX,0x18
MOV qword ptr [RSP + 0xa8],RAX
LEA RAX,[RSP + 0xa8]
MOV RDI,RAX
MOV qword ptr [RSP + 0x38],RAX
CALL 0x0030e7a0
LEA RAX,[R13 + 0x65]
XOR R14D,R14D
XOR R15D,R15D
MOV byte ptr [RSP + 0x65],0x0
MOV qword ptr [RSP],RAX
MOV EAX,dword ptr [R13 + 0x60]
MOV dword ptr [RSP + 0x60],0x0
MOV dword ptr [RSP + 0x9c],EAX
LEA RAX,[RSP + 0x9c]
MOV qword ptr [RSP + 0x50],RAX
LEA RAX,[RSP + 0x70]
MOV qword ptr [RSP + 0x18],RAX
LEA RAX,[RSP + 0xa0]
MOV qword ptr [RSP + 0x48],RAX
MOV RAX,qword ptr [RSP + 0x50]
MOV qword ptr [RSP + 0x30],0x0
CMP byte ptr [RAX + R14*0x1],0x4
MOV byte ptr [RSP + 0x67],0x0
JA 0x002f88a7
MOVZX EAX,byte ptr [RAX + R14*0x1]
LEA RCX,[0x3913fc]
MOVSXD RAX,dword ptr [RCX + RAX*0x4]
ADD RAX,RCX
JMP RAX
CMP qword ptr [RSP + 0x30],0x1
SETA AL
AND EAX,R12D
TEST AL,AL
JZ 0x002f8da0
CMP byte ptr [RSP + 0x67],0x0
JNZ 0x002f8a80
MOV R12,qword ptr [R13 + 0x38]
LEA RAX,[RSP + 0x70]
MOV EBX,0x1
LEA RBP,[RSP + 0x80]
MOV R14D,0xffffffff
MOV qword ptr [RSP + 0x28],RAX
JMP 0x002f84ec
CMP byte ptr [R12 + RBX*0x1],AL
JNZ 0x002f89fd
MOV RDI,qword ptr [RSP + 0x80]
MOV RAX,qword ptr [RDI + 0x10]
CMP RAX,qword ptr [RDI + 0x18]
JNC 0x002f8b70
ADD RAX,0x1
MOV qword ptr [RDI + 0x10],RAX
MOV dword ptr [RSP + 0x88],R14D
ADD RBX,0x1
MOV RSI,qword ptr [RSP + 0x28]
MOV RDI,RBP
CALL 0x002f12b0
CMP AL,0x1
JZ 0x002f8b80
CMP RBX,qword ptr [RSP + 0x30]
JNC 0x002f8b80
MOV RDI,qword ptr [RSP + 0x80]
MOV EAX,dword ptr [RSP + 0x88]
TEST RDI,RDI
JZ 0x002f84b8
CMP EAX,-0x1
JNZ 0x002f84b8
MOV RAX,qword ptr [RDI + 0x10]
CMP RAX,qword ptr [RDI + 0x18]
JNC 0x002f8e60
MOVZX ECX,byte ptr [R12 + RBX*0x1]
CMP byte ptr [RAX],CL
JZ 0x002f84d8
JMP 0x002f89fd
LEA EAX,[R14 + 0x1]
CMP EAX,0x3
JG 0x002f8470
TEST BL,BL
JNZ 0x002f8470
MOV RAX,qword ptr [RSP + 0x50]
ADD R14,0x1
CMP byte ptr [RAX + R14*0x1],0x4
JBE 0x002f8447
XOR EBX,EBX
NOP dword ptr [RAX]
MOV R12D,0x1
JMP 0x002f887e
LEA RAX,[RSP + 0x70]
LEA RBP,[RSP + 0x80]
MOV qword ptr [RSP + 0x28],RAX
MOV RAX,qword ptr [RSP + 0xf0]
OR dword ptr [RAX],0x4
MOV RSI,qword ptr [RSP + 0x28]
MOV RDI,RBP
CALL 0x002f12b0
TEST AL,AL
JZ 0x002f8a24
MOV RAX,qword ptr [RSP + 0xf0]
OR dword ptr [RAX],0x2
MOV RCX,qword ptr [RSP + 0xa8]
MOV RAX,qword ptr [RSP + 0x80]
MOV RDX,qword ptr [RSP + 0x88]
LEA RDI,[RCX + -0x18]
CMP RDI,qword ptr [0x0043dc38]
JNZ 0x002f8ea4
MOV RCX,qword ptr [RSP + 0xa0]
LEA RDI,[RCX + -0x18]
CMP RDI,qword ptr [0x0043dc38]
JNZ 0x002f8e80
ADD RSP,0xb8
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV R12,qword ptr [R13 + 0x48]
JMP 0x002f8493
MOV RAX,qword ptr [RDI]
CALL qword ptr [RAX + 0x50]
JMP 0x002f84e0
CMP RBX,qword ptr [RSP + 0x30]
JNZ 0x002f89fd
MOV RAX,qword ptr [RSP + 0xa8]
CMP qword ptr [RAX + -0x18],0x1
JA 0x002f8cd0
CMP byte ptr [RSP + 0x67],0x0
JNZ 0x002f8e0f
MOV RAX,qword ptr [RSP + 0xa0]
CMP qword ptr [RAX + -0x18],0x0
JZ 0x002f8bf8
MOVSX EAX,byte ptr [RSP + 0x60]
MOVSX ESI,R15B
CMP byte ptr [RSP + 0x65],0x0
LEA RBX,[RSP + 0xa0]
MOV RDI,RBX
CMOVNZ ESI,EAX
CALL 0x0030ec80
MOV RSI,qword ptr [R13 + 0x18]
MOV RDI,qword ptr [R13 + 0x10]
MOV RDX,RBX
CALL 0x00323270
TEST AL,AL
JNZ 0x002f8bf8
MOV RAX,qword ptr [RSP + 0xf0]
OR dword ptr [RAX],0x4
CMP byte ptr [RSP + 0x65],0x0
JNZ 0x002f8cb8
MOV RSI,qword ptr [RSP + 0x38]
MOV RDI,qword ptr [RSP + 0xf8]
CALL 0x0030ce20
LEA RAX,[RSP + 0x70]
LEA RBP,[RSP + 0x80]
MOV qword ptr [RSP + 0x28],RAX
JMP 0x002f8a08
CMP dword ptr [R13 + 0x58],R15D
JNZ 0x002f89eb
JMP 0x002f8c03
MOV RDI,qword ptr [RSP + 0x38]
XOR EDX,EDX
MOV ESI,0x30
CALL 0x0030d360
TEST RAX,RAX
JZ 0x002f8b9e
CMP RAX,-0x1
JZ 0x002f8edb
MOV RDI,qword ptr [RSP + 0x38]
MOV RDX,RAX
XOR ESI,ESI
CALL 0x0030dfe0
JMP 0x002f8b9e
TEST R12B,R12B
JZ 0x002f89eb
MOV RAX,qword ptr [RSP + 0xa8]
CMP qword ptr [RAX + -0x18],0x1
JBE 0x002f8b9e
JMP 0x002f8cd0
MOV RBX,qword ptr [RSP + 0x38]
MOV RDI,RBX
CALL 0x0030de40
MOV RAX,qword ptr [RSP + 0xa8]
CMP byte ptr [RAX],0x30
JZ 0x002f8ba9
MOV RDI,RBX
CALL 0x0030de40
MOV R8D,0x2d
MOV ECX,0x1
XOR EDX,EDX
XOR ESI,ESI
MOV RDI,RBX
CALL 0x0030e0b0
MOV RAX,qword ptr [RSP + 0xa8]
MOV dword ptr [RAX + -0x8],0xffffffff
JMP 0x002f8ba9
MOV RAX,qword ptr [RDI]
CALL qword ptr [RAX + 0x48]
CMP EAX,-0x1
JNZ 0x002f84b8
MOV qword ptr [RSP + 0x80],0x0
JMP 0x002f84b8
LEA RSI,[RSP + 0x9b]
MOV qword ptr [RSP],RAX
MOV qword ptr [RSP + 0x8],RDX
CALL 0x002ea270
MOV RAX,qword ptr [RSP]
MOV RDX,qword ptr [RSP + 0x8]
JMP 0x002f8a66
LEA RSI,[RSP + 0x9b]
MOV qword ptr [RSP],RAX
MOV qword ptr [RSP + 0x8],RDX
CALL 0x002ea270
MOV RAX,qword ptr [RSP]
MOV RDX,qword ptr [RSP + 0x8]
JMP 0x002f8a4d
MOV RAX,qword ptr [RSP + 0xa8]
MOV RAX,qword ptr [RAX + -0x18]
SUB RAX,0x1
JMP 0x002f8cf4
(translation_unit "/* WARNING: Removing unreachable block (ram,0x002f8bd1) */\n/* WARNING: Removing unreachable block (ram,0x002f850c) */\n/* WARNING: Removing unreachable block (ram,0x002f8520) */\n/* WARNING: Removing unreachable block (ram,0x002f8525) */\n/* WARNING: Removing unreachable block (ram,0x002f8e60) */\n/* WARNING: Removing unreachable block (ram,0x002f8e6f) */\n/* WARNING: Removing unreachable block (ram,0x002f84b8) */\n/* WARNING: Removing unreachable block (ram,0x002f84c2) */\n/* WARNING: Removing unreachable block (ram,0x002f8b70) */\n/* WARNING: Removing unreachable block (ram,0x002f8533) */\n/* WARNING: Removing unreachable block (ram,0x002f853c) */\n/* WARNING: Removing unreachable block (ram,0x002f84d8) */\n/* WARNING: Removing unreachable block (ram,0x002f84e0) */\n/* WARNING: Removing unreachable block (ram,0x002f8484) */\n/* WARNING: Removing unreachable block (ram,0x002f848f) */\n/* WARNING: Removing unreachable block (ram,0x002f8a80) */\n/* WARNING: Removing unreachable block (ram,0x002f8493) */\n/* WARNING: Removing unreachable block (ram,0x002f84ec) */\n/* WARNING: Removing unreachable block (ram,0x002f8501) */\n/* WARNING: Removing unreachable block (ram,0x002f8b80) */\n/* WARNING: Removing unreachable block (ram,0x002f8b8b) */\n/* WARNING: Removing unreachable block (ram,0x002f8e0f) */\n/* WARNING: Removing unreachable block (ram,0x002f8e2d) */\n/* WARNING: Removing unreachable block (ram,0x002f8cb8) */\n/* WARNING: Removing unreachable block (ram,0x002f89eb) */\n/* WARNING: Removing unreachable block (ram,0x002f89fd) */\n/* WARNING: Removing unreachable block (ram,0x002f8cc2) */\n/* WARNING: Restarted to delay deadcode elimination for space: stack */\n\nundefined1  [16]\nFUN_002f8310(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n            undefined8 param_5,long param_6,uint *param_7,undefined8 param_8)\n\n{\n  byte bVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  char cVar4;\n  long lVar5;\n  long lVar6;\n  undefined1 auVar7 [16];\n  undefined8 *local_c0;\n  undefined8 local_78;\n  undefined8 local_70;\n  undefined8 local_68;\n  undefined8 local_60;\n  undefined1 local_4e;\n  undefined1 local_4d;\n  undefined4 local_4c;\n  undefined1 *local_48;\n  undefined1 *local_40 [2];\n  \n  local_78 = param_4;\n  local_70 = param_5;\n  local_68 = param_2;\n  local_60 = param_3;\n  FUN_002ec670(param_6 + 0xd0);\n  lVar5 = FUN_002efb20(&local_4e,param_6 + 0xd0);\n  local_48 = &DAT_0044a558;\n  if (*(char *)(lVar5 + 0x20) != '\0') {\n                    /* try { // try from 002f83ad to 002f83b1 has its CatchHandler @ 002f8ef5 */\n    FUN_0030e7a0(&local_48,0x20);\n  }\n  local_40[0] = &DAT_0044a558;\n                    /* try { // try from 002f83da to 002f8e65 has its CatchHandler @ 002f8ef0 */\n  FUN_0030e7a0(local_40,0x20);\n  local_4c = *(undefined4 *)(lVar5 + 0x60);\n  lVar6 = 0;\n  bVar1 = (byte)local_4c;\n  while( true ) {\n    if (bVar1 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x002f845a. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar7 = (*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)))()\n      ;\n      return auVar7;\n    }\n    if (3 < (int)lVar6 + 1) break;\n    bVar1 = *(byte *)((long)&local_4c + lVar6 + 1);\n    lVar6 = lVar6 + 1;\n  }\n  if ((1 < *(ulong *)(local_40[0] + -0x18)) && (lVar6 = FUN_0030d360(local_40,0x30,0), lVar6 != 0))\n  {\n    if (lVar6 == -1) {\n      lVar6 = *(long *)(local_40[0] + -0x18) + -1;\n    }\n    FUN_0030dfe0(local_40,0,lVar6);\n  }\n  if (*(long *)(local_48 + -0x18) != 0) {\n    FUN_0030ec80(&local_48,0);\n    cVar4 = FUN_00323270(*(undefined8 *)(lVar5 + 0x10),*(undefined8 *)(lVar5 + 0x18),&local_48);\n    if (cVar4 == '\0') {\n      *param_7 = *param_7 | 4;\n    }\n  }\n  FUN_0030ce20(param_8,local_40);\n  local_c0 = &local_78;\n  cVar4 = FUN_002f12b0(&local_68,local_c0);\n  uVar3 = local_60;\n  uVar2 = local_68;\n  if (cVar4 != '\0') {\n    *param_7 = *param_7 | 2;\n  }\n  if (local_40[0] + -0x18 != PTR_DAT_0043dc38) {\n    FUN_002ea270(local_40[0] + -0x18,&local_4d);\n  }\n  if (local_48 + -0x18 != PTR_DAT_0043dc38) {\n    FUN_002ea270(local_48 + -0x18,&local_4d);\n  }\n  auVar7._8_8_ = uVar3;\n  auVar7._0_8_ = uVar2;\n  return auVar7;\n}\n\n" comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (declaration "FUN_002f8310(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n            undefined8 param_5,long param_6,uint *param_7,undefined8 param_8)\n\n{\n  byte bVar1;" (macro_type_specifier "FUN_002f8310(undefined8" identifier ( (type_descriptor "undefined8" type_identifier) )) identifier , identifier (ERROR "param_2" identifier) , identifier (ERROR "param_3" identifier) , identifier (ERROR "param_4" identifier) , identifier (ERROR "param_5" identifier) , (ERROR "long" identifier) identifier , (ERROR "uint" identifier) (pointer_declarator "*param_7" * identifier) , (ERROR "undefined8 param_8)\n\n{\n  byte" identifier identifier ) { identifier) identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 auVar7 [16];" type_identifier (array_declarator "auVar7 [16]" identifier [ number_literal ]) ;) (declaration "undefined8 *local_c0;" type_identifier (pointer_declarator "*local_c0" * identifier) ;) (declaration "undefined8 local_78;" type_identifier identifier ;) (declaration "undefined8 local_70;" type_identifier identifier ;) (declaration "undefined8 local_68;" type_identifier identifier ;) (declaration "undefined8 local_60;" type_identifier identifier ;) (declaration "undefined1 local_4e;" type_identifier identifier ;) (declaration "undefined1 local_4d;" type_identifier identifier ;) (declaration "undefined4 local_4c;" type_identifier identifier ;) (declaration "undefined1 *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "undefined1 *local_40 [2];" type_identifier (pointer_declarator "*local_40 [2]" * (array_declarator "local_40 [2]" identifier [ number_literal ])) ;) (expression_statement "local_78 = param_4;" (assignment_expression "local_78 = param_4" identifier = identifier) ;) (expression_statement "local_70 = param_5;" (assignment_expression "local_70 = param_5" identifier = identifier) ;) (expression_statement "local_68 = param_2;" (assignment_expression "local_68 = param_2" identifier = identifier) ;) (expression_statement "local_60 = param_3;" (assignment_expression "local_60 = param_3" identifier = identifier) ;) (expression_statement "FUN_002ec670(param_6 + 0xd0);" (call_expression "FUN_002ec670(param_6 + 0xd0)" identifier (argument_list "(param_6 + 0xd0)" ( (binary_expression "param_6 + 0xd0" identifier + number_literal) ))) ;) (expression_statement "lVar5 = FUN_002efb20(&local_4e,param_6 + 0xd0);" (assignment_expression "lVar5 = FUN_002efb20(&local_4e,param_6 + 0xd0)" identifier = (call_expression "FUN_002efb20(&local_4e,param_6 + 0xd0)" identifier (argument_list "(&local_4e,param_6 + 0xd0)" ( (pointer_expression "&local_4e" & identifier) , (binary_expression "param_6 + 0xd0" identifier + number_literal) )))) ;) (expression_statement "local_48 = &DAT_0044a558;" (assignment_expression "local_48 = &DAT_0044a558" identifier = (pointer_expression "&DAT_0044a558" & identifier)) ;) (if_statement "if (*(char *)(lVar5 + 0x20) != '\0') {\n                    /* try { // try from 002f83ad to 002f83b1 has its CatchHandler @ 002f8ef5 */\n    FUN_0030e7a0(&local_48,0x20);\n  }" if (parenthesized_expression "(*(char *)(lVar5 + 0x20) != '\0')" ( (binary_expression "*(char *)(lVar5 + 0x20) != '\0'" (pointer_expression "*(char *)(lVar5 + 0x20)" * (cast_expression "(char *)(lVar5 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x20)" ( (binary_expression "lVar5 + 0x20" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* try { // try from 002f83ad to 002f83b1 has its CatchHandler @ 002f8ef5 */\n    FUN_0030e7a0(&local_48,0x20);\n  }" { comment (expression_statement "FUN_0030e7a0(&local_48,0x20);" (call_expression "FUN_0030e7a0(&local_48,0x20)" identifier (argument_list "(&local_48,0x20)" ( (pointer_expression "&local_48" & identifier) , number_literal ))) ;) })) (expression_statement "local_40[0] = &DAT_0044a558;" (assignment_expression "local_40[0] = &DAT_0044a558" (subscript_expression "local_40[0]" identifier [ number_literal ]) = (pointer_expression "&DAT_0044a558" & identifier)) ;) comment (expression_statement "FUN_0030e7a0(local_40,0x20);" (call_expression "FUN_0030e7a0(local_40,0x20)" identifier (argument_list "(local_40,0x20)" ( identifier , number_literal ))) ;) (expression_statement "local_4c = *(undefined4 *)(lVar5 + 0x60);" (assignment_expression "local_4c = *(undefined4 *)(lVar5 + 0x60)" identifier = (pointer_expression "*(undefined4 *)(lVar5 + 0x60)" * (cast_expression "(undefined4 *)(lVar5 + 0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x60)" ( (binary_expression "lVar5 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "lVar6 = 0;" (assignment_expression "lVar6 = 0" identifier = number_literal) ;) (expression_statement "bVar1 = (byte)local_4c;" (assignment_expression "bVar1 = (byte)local_4c" identifier = (cast_expression "(byte)local_4c" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (while_statement "while( true ) {\n    if (bVar1 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x002f845a. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar7 = (*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)))()\n      ;\n      return auVar7;\n    }\n    if (3 < (int)lVar6 + 1) break;\n    bVar1 = *(byte *)((long)&local_4c + lVar6 + 1);\n    lVar6 = lVar6 + 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (bVar1 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x002f845a. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar7 = (*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)))()\n      ;\n      return auVar7;\n    }\n    if (3 < (int)lVar6 + 1) break;\n    bVar1 = *(byte *)((long)&local_4c + lVar6 + 1);\n    lVar6 = lVar6 + 1;\n  }" { (if_statement "if (bVar1 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x002f845a. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar7 = (*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)))()\n      ;\n      return auVar7;\n    }" if (parenthesized_expression "(bVar1 < 5)" ( (binary_expression "bVar1 < 5" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x002f845a. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar7 = (*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)))()\n      ;\n      return auVar7;\n    }" { comment comment (expression_statement "auVar7 = (*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)))()\n      ;" (assignment_expression "auVar7 = (*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)))()" identifier = (call_expression "(*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)))()" (parenthesized_expression "(*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)))" ( (pointer_expression "*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4))" * (cast_expression "(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4))" ( (binary_expression "&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)" (pointer_expression "&DAT_003913fc" & identifier) + (pointer_expression "*(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)" * (cast_expression "(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)" ( (binary_expression "&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4" (pointer_expression "&DAT_003913fc" & identifier) + (binary_expression "(ulong)*(byte *)((long)&local_4c + lVar6) * 4" (binary_expression "(ulong)*(byte *)((long)&local_4c + lVar6)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(byte *)((long)&local_4c + lVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_4c + lVar6)" ( (binary_expression "(long)&local_4c + lVar6" (cast_expression "(long)&local_4c" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_4c" & identifier)) + identifier) )))) * number_literal)) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return auVar7;" return identifier ;) })) (if_statement "if (3 < (int)lVar6 + 1) break;" if (parenthesized_expression "(3 < (int)lVar6 + 1)" ( (binary_expression "3 < (int)lVar6 + 1" number_literal < (binary_expression "(int)lVar6 + 1" (cast_expression "(int)lVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) )) (break_statement "break;" break ;)) (expression_statement "bVar1 = *(byte *)((long)&local_4c + lVar6 + 1);" (assignment_expression "bVar1 = *(byte *)((long)&local_4c + lVar6 + 1)" identifier = (pointer_expression "*(byte *)((long)&local_4c + lVar6 + 1)" * (cast_expression "(byte *)((long)&local_4c + lVar6 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_4c + lVar6 + 1)" ( (binary_expression "(long)&local_4c + lVar6 + 1" (binary_expression "(long)&local_4c + lVar6" (cast_expression "(long)&local_4c" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_4c" & identifier)) + identifier) + number_literal) ))))) ;) (expression_statement "lVar6 = lVar6 + 1;" (assignment_expression "lVar6 = lVar6 + 1" identifier = (binary_expression "lVar6 + 1" identifier + number_literal)) ;) })) (if_statement "if ((1 < *(ulong *)(local_40[0] + -0x18)) && (lVar6 = FUN_0030d360(local_40,0x30,0), lVar6 != 0))\n  {\n    if (lVar6 == -1) {\n      lVar6 = *(long *)(local_40[0] + -0x18) + -1;\n    }\n    FUN_0030dfe0(local_40,0,lVar6);\n  }" if (parenthesized_expression "((1 < *(ulong *)(local_40[0] + -0x18)) && (lVar6 = FUN_0030d360(local_40,0x30,0), lVar6 != 0))" ( (binary_expression "(1 < *(ulong *)(local_40[0] + -0x18)) && (lVar6 = FUN_0030d360(local_40,0x30,0), lVar6 != 0)" (parenthesized_expression "(1 < *(ulong *)(local_40[0] + -0x18))" ( (binary_expression "1 < *(ulong *)(local_40[0] + -0x18)" number_literal < (pointer_expression "*(ulong *)(local_40[0] + -0x18)" * (cast_expression "(ulong *)(local_40[0] + -0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40[0] + -0x18)" ( (binary_expression "local_40[0] + -0x18" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal) ))))) )) && (parenthesized_expression "(lVar6 = FUN_0030d360(local_40,0x30,0), lVar6 != 0)" ( (comma_expression "lVar6 = FUN_0030d360(local_40,0x30,0), lVar6 != 0" (assignment_expression "lVar6 = FUN_0030d360(local_40,0x30,0)" identifier = (call_expression "FUN_0030d360(local_40,0x30,0)" identifier (argument_list "(local_40,0x30,0)" ( identifier , number_literal , number_literal )))) , (binary_expression "lVar6 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    if (lVar6 == -1) {\n      lVar6 = *(long *)(local_40[0] + -0x18) + -1;\n    }\n    FUN_0030dfe0(local_40,0,lVar6);\n  }" { (if_statement "if (lVar6 == -1) {\n      lVar6 = *(long *)(local_40[0] + -0x18) + -1;\n    }" if (parenthesized_expression "(lVar6 == -1)" ( (binary_expression "lVar6 == -1" identifier == number_literal) )) (compound_statement "{\n      lVar6 = *(long *)(local_40[0] + -0x18) + -1;\n    }" { (expression_statement "lVar6 = *(long *)(local_40[0] + -0x18) + -1;" (assignment_expression "lVar6 = *(long *)(local_40[0] + -0x18) + -1" identifier = (binary_expression "*(long *)(local_40[0] + -0x18) + -1" (pointer_expression "*(long *)(local_40[0] + -0x18)" * (cast_expression "(long *)(local_40[0] + -0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40[0] + -0x18)" ( (binary_expression "local_40[0] + -0x18" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal) )))) + number_literal)) ;) })) (expression_statement "FUN_0030dfe0(local_40,0,lVar6);" (call_expression "FUN_0030dfe0(local_40,0,lVar6)" identifier (argument_list "(local_40,0,lVar6)" ( identifier , number_literal , identifier ))) ;) })) (if_statement "if (*(long *)(local_48 + -0x18) != 0) {\n    FUN_0030ec80(&local_48,0);\n    cVar4 = FUN_00323270(*(undefined8 *)(lVar5 + 0x10),*(undefined8 *)(lVar5 + 0x18),&local_48);\n    if (cVar4 == '\0') {\n      *param_7 = *param_7 | 4;\n    }\n  }" if (parenthesized_expression "(*(long *)(local_48 + -0x18) != 0)" ( (binary_expression "*(long *)(local_48 + -0x18) != 0" (pointer_expression "*(long *)(local_48 + -0x18)" * (cast_expression "(long *)(local_48 + -0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_48 + -0x18)" ( (binary_expression "local_48 + -0x18" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    FUN_0030ec80(&local_48,0);\n    cVar4 = FUN_00323270(*(undefined8 *)(lVar5 + 0x10),*(undefined8 *)(lVar5 + 0x18),&local_48);\n    if (cVar4 == '\0') {\n      *param_7 = *param_7 | 4;\n    }\n  }" { (expression_statement "FUN_0030ec80(&local_48,0);" (call_expression "FUN_0030ec80(&local_48,0)" identifier (argument_list "(&local_48,0)" ( (pointer_expression "&local_48" & identifier) , number_literal ))) ;) (expression_statement "cVar4 = FUN_00323270(*(undefined8 *)(lVar5 + 0x10),*(undefined8 *)(lVar5 + 0x18),&local_48);" (assignment_expression "cVar4 = FUN_00323270(*(undefined8 *)(lVar5 + 0x10),*(undefined8 *)(lVar5 + 0x18),&local_48)" identifier = (call_expression "FUN_00323270(*(undefined8 *)(lVar5 + 0x10),*(undefined8 *)(lVar5 + 0x18),&local_48)" identifier (argument_list "(*(undefined8 *)(lVar5 + 0x10),*(undefined8 *)(lVar5 + 0x18),&local_48)" ( (pointer_expression "*(undefined8 *)(lVar5 + 0x10)" * (cast_expression "(undefined8 *)(lVar5 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x10)" ( (binary_expression "lVar5 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(lVar5 + 0x18)" * (cast_expression "(undefined8 *)(lVar5 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x18)" ( (binary_expression "lVar5 + 0x18" identifier + number_literal) )))) , (pointer_expression "&local_48" & identifier) )))) ;) (if_statement "if (cVar4 == '\0') {\n      *param_7 = *param_7 | 4;\n    }" if (parenthesized_expression "(cVar4 == '\0')" ( (binary_expression "cVar4 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *param_7 = *param_7 | 4;\n    }" { (expression_statement "*param_7 = *param_7 | 4;" (assignment_expression "*param_7 = *param_7 | 4" (pointer_expression "*param_7" * identifier) = (binary_expression "*param_7 | 4" (pointer_expression "*param_7" * identifier) | number_literal)) ;) })) })) (expression_statement "FUN_0030ce20(param_8,local_40);" (call_expression "FUN_0030ce20(param_8,local_40)" identifier (argument_list "(param_8,local_40)" ( identifier , identifier ))) ;) (expression_statement "local_c0 = &local_78;" (assignment_expression "local_c0 = &local_78" identifier = (pointer_expression "&local_78" & identifier)) ;) (expression_statement "cVar4 = FUN_002f12b0(&local_68,local_c0);" (assignment_expression "cVar4 = FUN_002f12b0(&local_68,local_c0)" identifier = (call_expression "FUN_002f12b0(&local_68,local_c0)" identifier (argument_list "(&local_68,local_c0)" ( (pointer_expression "&local_68" & identifier) , identifier )))) ;) (expression_statement "uVar3 = local_60;" (assignment_expression "uVar3 = local_60" identifier = identifier) ;) (expression_statement "uVar2 = local_68;" (assignment_expression "uVar2 = local_68" identifier = identifier) ;) (if_statement "if (cVar4 != '\0') {\n    *param_7 = *param_7 | 2;\n  }" if (parenthesized_expression "(cVar4 != '\0')" ( (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    *param_7 = *param_7 | 2;\n  }" { (expression_statement "*param_7 = *param_7 | 2;" (assignment_expression "*param_7 = *param_7 | 2" (pointer_expression "*param_7" * identifier) = (binary_expression "*param_7 | 2" (pointer_expression "*param_7" * identifier) | number_literal)) ;) })) (if_statement "if (local_40[0] + -0x18 != PTR_DAT_0043dc38) {\n    FUN_002ea270(local_40[0] + -0x18,&local_4d);\n  }" if (parenthesized_expression "(local_40[0] + -0x18 != PTR_DAT_0043dc38)" ( (binary_expression "local_40[0] + -0x18 != PTR_DAT_0043dc38" (binary_expression "local_40[0] + -0x18" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal) != identifier) )) (compound_statement "{\n    FUN_002ea270(local_40[0] + -0x18,&local_4d);\n  }" { (expression_statement "FUN_002ea270(local_40[0] + -0x18,&local_4d);" (call_expression "FUN_002ea270(local_40[0] + -0x18,&local_4d)" identifier (argument_list "(local_40[0] + -0x18,&local_4d)" ( (binary_expression "local_40[0] + -0x18" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal) , (pointer_expression "&local_4d" & identifier) ))) ;) })) (if_statement "if (local_48 + -0x18 != PTR_DAT_0043dc38) {\n    FUN_002ea270(local_48 + -0x18,&local_4d);\n  }" if (parenthesized_expression "(local_48 + -0x18 != PTR_DAT_0043dc38)" ( (binary_expression "local_48 + -0x18 != PTR_DAT_0043dc38" (binary_expression "local_48 + -0x18" identifier + number_literal) != identifier) )) (compound_statement "{\n    FUN_002ea270(local_48 + -0x18,&local_4d);\n  }" { (expression_statement "FUN_002ea270(local_48 + -0x18,&local_4d);" (call_expression "FUN_002ea270(local_48 + -0x18,&local_4d)" identifier (argument_list "(local_48 + -0x18,&local_4d)" ( (binary_expression "local_48 + -0x18" identifier + number_literal) , (pointer_expression "&local_4d" & identifier) ))) ;) })) (expression_statement "auVar7._8_8_ = uVar3;" (assignment_expression "auVar7._8_8_ = uVar3" (field_expression "auVar7._8_8_" identifier . field_identifier) = identifier) ;) (expression_statement "auVar7._0_8_ = uVar2;" (assignment_expression "auVar7._0_8_ = uVar2" (field_expression "auVar7._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar7;" return identifier ;) (ERROR "}" }))
(translation_unit "/* WARNING: Removing unreachable block (ram,0x002f8bd1) */\n/* WARNING: Removing unreachable block (ram,0x002f850c) */\n/* WARNING: Removing unreachable block (ram,0x002f8520) */\n/* WARNING: Removing unreachable block (ram,0x002f8525) */\n/* WARNING: Removing unreachable block (ram,0x002f8e60) */\n/* WARNING: Removing unreachable block (ram,0x002f8e6f) */\n/* WARNING: Removing unreachable block (ram,0x002f84b8) */\n/* WARNING: Removing unreachable block (ram,0x002f84c2) */\n/* WARNING: Removing unreachable block (ram,0x002f8b70) */\n/* WARNING: Removing unreachable block (ram,0x002f8533) */\n/* WARNING: Removing unreachable block (ram,0x002f853c) */\n/* WARNING: Removing unreachable block (ram,0x002f84d8) */\n/* WARNING: Removing unreachable block (ram,0x002f84e0) */\n/* WARNING: Removing unreachable block (ram,0x002f8484) */\n/* WARNING: Removing unreachable block (ram,0x002f848f) */\n/* WARNING: Removing unreachable block (ram,0x002f8a80) */\n/* WARNING: Removing unreachable block (ram,0x002f8493) */\n/* WARNING: Removing unreachable block (ram,0x002f84ec) */\n/* WARNING: Removing unreachable block (ram,0x002f8501) */\n/* WARNING: Removing unreachable block (ram,0x002f8b80) */\n/* WARNING: Removing unreachable block (ram,0x002f8b8b) */\n/* WARNING: Removing unreachable block (ram,0x002f8e0f) */\n/* WARNING: Removing unreachable block (ram,0x002f8e2d) */\n/* WARNING: Removing unreachable block (ram,0x002f8cb8) */\n/* WARNING: Removing unreachable block (ram,0x002f89eb) */\n/* WARNING: Removing unreachable block (ram,0x002f89fd) */\n/* WARNING: Removing unreachable block (ram,0x002f8cc2) */\n/* WARNING: Restarted to delay deadcode elimination for space: stack */\n/* std::istreambuf_iterator<char, std::char_traits<char> > std::money_get<char,\n   std::istreambuf_iterator<char, std::char_traits<char> >\n   >::_M_extract<true>(std::istreambuf_iterator<char, std::char_traits<char> >,\n   std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&,\n   std::string&) const */\n\nundefined1  [16]\nstd::money_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::_M_extract<true>\n          (undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n          undefined8 param_5,long param_6,uint *param_7,string *param_8)\n\n{\n  byte bVar1;\n  long lVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  char cVar5;\n  long lVar6;\n  ulong uVar7;\n  undefined1 auVar8 [16];\n  undefined8 *local_c0;\n  undefined8 local_78;\n  undefined8 local_70;\n  undefined8 local_68;\n  undefined8 local_60;\n  __use_cache<std::__moneypunct_cache<char,true>> local_4e [2];\n  undefined4 local_4c;\n  undefined1 *local_48;\n  undefined1 *local_40 [2];\n  \n  local_78 = param_4;\n  local_70 = param_5;\n  local_68 = param_2;\n  local_60 = param_3;\n  use_facet<std::ctype<char>>((locale *)(param_6 + 0xd0));\n  lVar6 = __use_cache<std::__moneypunct_cache<char,true>>::operator()\n                    (local_4e,(locale *)(param_6 + 0xd0));\n  local_48 = &DAT_0044a558;\n  if (*(char *)(lVar6 + 0x20) != '\0') {\n                    /* try { // try from 002f83ad to 002f83b1 has its CatchHandler @ 002f8ef5 */\n    std::string::reserve((string *)&local_48,0x20);\n  }\n  local_40[0] = &DAT_0044a558;\n                    /* try { // try from 002f83da to 002f8e65 has its CatchHandler @ 002f8ef0 */\n  std::string::reserve((string *)local_40,0x20);\n  local_4c = *(undefined4 *)(lVar6 + 0x60);\n  lVar2 = 0;\n  bVar1 = (byte)local_4c;\n  while( true ) {\n    if (bVar1 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x002f845a. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar8 = (*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar2) * 4)))()\n      ;\n      return auVar8;\n    }\n    if (3 < (int)lVar2 + 1) break;\n    bVar1 = *(byte *)((long)&local_4c + lVar2 + 1);\n    lVar2 = lVar2 + 1;\n  }\n  if ((1 < *(ulong *)(local_40[0] + -0x18)) &&\n     (uVar7 = std::string::find_first_not_of((string *)local_40,'0',0), uVar7 != 0)) {\n    if (uVar7 == 0xffffffffffffffff) {\n      uVar7 = *(long *)(local_40[0] + -0x18) - 1;\n    }\n    std::string::erase((string *)local_40,0,uVar7);\n  }\n  if (*(long *)(local_48 + -0x18) != 0) {\n    std::string::push_back((string *)&local_48,'\0');\n    cVar5 = __verify_grouping(*(char **)(lVar6 + 0x10),*(ulong *)(lVar6 + 0x18),(string *)&local_48)\n    ;\n    if (cVar5 == '\0') {\n      *param_7 = *param_7 | 4;\n    }\n  }\n  std::string::swap(param_8,(string *)local_40);\n  local_c0 = &local_78;\n  cVar5 = istreambuf_iterator<char,std::char_traits<char>>::equal\n                    ((istreambuf_iterator<char,std::char_traits<char>> *)&local_68,\n                     (istreambuf_iterator *)local_c0);\n  uVar4 = local_60;\n  uVar3 = local_68;\n  if (cVar5 != '\0') {\n    *param_7 = *param_7 | 2;\n  }\n  if ((allocator *)(local_40[0] + -0x18) != (allocator *)PTR__S_empty_rep_storage_0043dc38) {\n    std::string::_Rep::_M_dispose((allocator *)(local_40[0] + -0x18));\n  }\n  if ((allocator *)(local_48 + -0x18) != (allocator *)PTR__S_empty_rep_storage_0043dc38) {\n    std::string::_Rep::_M_dispose((allocator *)(local_48 + -0x18));\n  }\n  auVar8._8_8_ = uVar4;\n  auVar8._0_8_ = uVar3;\n  return auVar8;\n}\n\n" comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment comment (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (labeled_statement "std::money_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::_M_extract<true>\n          (undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n          undefined8 param_5,long param_6,uint *param_7,string *param_8)" statement_identifier (ERROR "::money_get<char,std::istreambuf_iterator<char,std:" : : (comma_expression "money_get<char,std" (binary_expression "money_get<char" identifier < identifier) , identifier) : : (comma_expression "istreambuf_iterator<char,std" (binary_expression "istreambuf_iterator<char" identifier < identifier) , identifier) :) : (expression_statement "char_traits<char>>>::_M_extract<true>\n          (undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n          undefined8 param_5,long param_6,uint *param_7,string *param_8)" (binary_expression "char_traits<char>>>::_M_extract<true>\n          (undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n          undefined8 param_5,long param_6,uint *param_7,string *param_8)" (binary_expression "char_traits<char>>>::_M_extract<true" (binary_expression "char_traits<char>>>::_M_extract" identifier < (binary_expression "char>>>::_M_extract" identifier >> (ERROR ">::" > : :) identifier)) < true) > (parenthesized_expression "(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n          undefined8 param_5,long param_6,uint *param_7,string *param_8)" ( (comma_expression "undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n          undefined8 param_5,long param_6,uint *param_7,string *param_8" identifier (ERROR "param_1" identifier) , (comma_expression "undefined8 param_2,undefined8 param_3,undefined8 param_4,\n          undefined8 param_5,long param_6,uint *param_7,string *param_8" identifier (ERROR "param_2" identifier) , (comma_expression "undefined8 param_3,undefined8 param_4,\n          undefined8 param_5,long param_6,uint *param_7,string *param_8" identifier (ERROR "param_3" identifier) , (comma_expression "undefined8 param_4,\n          undefined8 param_5,long param_6,uint *param_7,string *param_8" identifier (ERROR "param_4" identifier) , (comma_expression "undefined8 param_5,long param_6,uint *param_7,string *param_8" identifier (ERROR "param_5" identifier) , (ERROR "long" identifier) (comma_expression "param_6,uint *param_7,string *param_8" identifier , (comma_expression "uint *param_7,string *param_8" (binary_expression "uint *param_7" identifier * identifier) , (binary_expression "string *param_8" identifier * identifier)))))))) ))) ;)) (compound_statement "{\n  byte bVar1;\n  long lVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  char cVar5;\n  long lVar6;\n  ulong uVar7;\n  undefined1 auVar8 [16];\n  undefined8 *local_c0;\n  undefined8 local_78;\n  undefined8 local_70;\n  undefined8 local_68;\n  undefined8 local_60;\n  __use_cache<std::__moneypunct_cache<char,true>> local_4e [2];\n  undefined4 local_4c;\n  undefined1 *local_48;\n  undefined1 *local_40 [2];\n  \n  local_78 = param_4;\n  local_70 = param_5;\n  local_68 = param_2;\n  local_60 = param_3;\n  use_facet<std::ctype<char>>((locale *)(param_6 + 0xd0));\n  lVar6 = __use_cache<std::__moneypunct_cache<char,true>>::operator()\n                    (local_4e,(locale *)(param_6 + 0xd0));\n  local_48 = &DAT_0044a558;\n  if (*(char *)(lVar6 + 0x20) != '\0') {\n                    /* try { // try from 002f83ad to 002f83b1 has its CatchHandler @ 002f8ef5 */\n    std::string::reserve((string *)&local_48,0x20);\n  }\n  local_40[0] = &DAT_0044a558;\n                    /* try { // try from 002f83da to 002f8e65 has its CatchHandler @ 002f8ef0 */\n  std::string::reserve((string *)local_40,0x20);\n  local_4c = *(undefined4 *)(lVar6 + 0x60);\n  lVar2 = 0;\n  bVar1 = (byte)local_4c;\n  while( true ) {\n    if (bVar1 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x002f845a. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar8 = (*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar2) * 4)))()\n      ;\n      return auVar8;\n    }\n    if (3 < (int)lVar2 + 1) break;\n    bVar1 = *(byte *)((long)&local_4c + lVar2 + 1);\n    lVar2 = lVar2 + 1;\n  }\n  if ((1 < *(ulong *)(local_40[0] + -0x18)) &&\n     (uVar7 = std::string::find_first_not_of((string *)local_40,'0',0), uVar7 != 0)) {\n    if (uVar7 == 0xffffffffffffffff) {\n      uVar7 = *(long *)(local_40[0] + -0x18) - 1;\n    }\n    std::string::erase((string *)local_40,0,uVar7);\n  }\n  if (*(long *)(local_48 + -0x18) != 0) {\n    std::string::push_back((string *)&local_48,'\0');\n    cVar5 = __verify_grouping(*(char **)(lVar6 + 0x10),*(ulong *)(lVar6 + 0x18),(string *)&local_48)\n    ;\n    if (cVar5 == '\0') {\n      *param_7 = *param_7 | 4;\n    }\n  }\n  std::string::swap(param_8,(string *)local_40);\n  local_c0 = &local_78;\n  cVar5 = istreambuf_iterator<char,std::char_traits<char>>::equal\n                    ((istreambuf_iterator<char,std::char_traits<char>> *)&local_68,\n                     (istreambuf_iterator *)local_c0);\n  uVar4 = local_60;\n  uVar3 = local_68;\n  if (cVar5 != '\0') {\n    *param_7 = *param_7 | 2;\n  }\n  if ((allocator *)(local_40[0] + -0x18) != (allocator *)PTR__S_empty_rep_storage_0043dc38) {\n    std::string::_Rep::_M_dispose((allocator *)(local_40[0] + -0x18));\n  }\n  if ((allocator *)(local_48 + -0x18) != (allocator *)PTR__S_empty_rep_storage_0043dc38) {\n    std::string::_Rep::_M_dispose((allocator *)(local_48 + -0x18));\n  }\n  auVar8._8_8_ = uVar4;\n  auVar8._0_8_ = uVar3;\n  return auVar8;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "undefined1 auVar8 [16];" type_identifier (array_declarator "auVar8 [16]" identifier [ number_literal ]) ;) (declaration "undefined8 *local_c0;" type_identifier (pointer_declarator "*local_c0" * identifier) ;) (declaration "undefined8 local_78;" type_identifier identifier ;) (declaration "undefined8 local_70;" type_identifier identifier ;) (declaration "undefined8 local_68;" type_identifier identifier ;) (declaration "undefined8 local_60;" type_identifier identifier ;) (ERROR "__use_cache<std::" (binary_expression "__use_cache<std" identifier < identifier) : :) (expression_statement "__moneypunct_cache<char,true>> local_4e [2];" (comma_expression "__moneypunct_cache<char,true>> local_4e [2]" (binary_expression "__moneypunct_cache<char" identifier < identifier) , (binary_expression "true>> local_4e [2]" true >> (subscript_expression "local_4e [2]" identifier [ number_literal ]))) ;) (declaration "undefined4 local_4c;" type_identifier identifier ;) (declaration "undefined1 *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "undefined1 *local_40 [2];" type_identifier (pointer_declarator "*local_40 [2]" * (array_declarator "local_40 [2]" identifier [ number_literal ])) ;) (expression_statement "local_78 = param_4;" (assignment_expression "local_78 = param_4" identifier = identifier) ;) (expression_statement "local_70 = param_5;" (assignment_expression "local_70 = param_5" identifier = identifier) ;) (expression_statement "local_68 = param_2;" (assignment_expression "local_68 = param_2" identifier = identifier) ;) (expression_statement "local_60 = param_3;" (assignment_expression "local_60 = param_3" identifier = identifier) ;) (expression_statement "use_facet<std::ctype<char>>((locale *)(param_6 + 0xd0));" (binary_expression "use_facet<std::ctype<char>>((locale *)(param_6 + 0xd0))" (binary_expression "use_facet<std" identifier < identifier) (ERROR "::ctype" : : identifier) < (binary_expression "char>>((locale *)(param_6 + 0xd0))" identifier >> (parenthesized_expression "((locale *)(param_6 + 0xd0))" ( (cast_expression "(locale *)(param_6 + 0xd0)" ( (type_descriptor "locale *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + 0xd0)" ( (binary_expression "param_6 + 0xd0" identifier + number_literal) ))) )))) ;) (expression_statement "lVar6 = __use_cache<std::__moneypunct_cache<char,true>>::operator()\n                    (local_4e,(locale *)(param_6 + 0xd0));" (comma_expression "lVar6 = __use_cache<std::__moneypunct_cache<char,true>>::operator()\n                    (local_4e,(locale *)(param_6 + 0xd0))" (binary_expression "lVar6 = __use_cache<std::__moneypunct_cache<char" (assignment_expression "lVar6 = __use_cache<std" identifier = (binary_expression "__use_cache<std" identifier < identifier)) (ERROR "::__moneypunct_cache" : : identifier) < identifier) , (binary_expression "true>>::operator()\n                    (local_4e,(locale *)(param_6 + 0xd0))" true >> (ERROR "::" : :) (call_expression "operator()\n                    (local_4e,(locale *)(param_6 + 0xd0))" (call_expression "operator()" identifier (argument_list "()" ( ))) (argument_list "(local_4e,(locale *)(param_6 + 0xd0))" ( identifier , (cast_expression "(locale *)(param_6 + 0xd0)" ( (type_descriptor "locale *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + 0xd0)" ( (binary_expression "param_6 + 0xd0" identifier + number_literal) ))) ))))) ;) (expression_statement "local_48 = &DAT_0044a558;" (assignment_expression "local_48 = &DAT_0044a558" identifier = (pointer_expression "&DAT_0044a558" & identifier)) ;) (if_statement "if (*(char *)(lVar6 + 0x20) != '\0') {\n                    /* try { // try from 002f83ad to 002f83b1 has its CatchHandler @ 002f8ef5 */\n    std::string::reserve((string *)&local_48,0x20);\n  }" if (parenthesized_expression "(*(char *)(lVar6 + 0x20) != '\0')" ( (binary_expression "*(char *)(lVar6 + 0x20) != '\0'" (pointer_expression "*(char *)(lVar6 + 0x20)" * (cast_expression "(char *)(lVar6 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x20)" ( (binary_expression "lVar6 + 0x20" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* try { // try from 002f83ad to 002f83b1 has its CatchHandler @ 002f8ef5 */\n    std::string::reserve((string *)&local_48,0x20);\n  }" { comment (labeled_statement "std::string::reserve((string *)&local_48,0x20);" statement_identifier : (ERROR ":" :) (labeled_statement "string::reserve((string *)&local_48,0x20);" statement_identifier : (ERROR ":" :) (expression_statement "reserve((string *)&local_48,0x20);" (call_expression "reserve((string *)&local_48,0x20)" identifier (argument_list "((string *)&local_48,0x20)" ( (cast_expression "(string *)&local_48" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_48" & identifier)) , number_literal ))) ;))) })) (expression_statement "local_40[0] = &DAT_0044a558;" (assignment_expression "local_40[0] = &DAT_0044a558" (subscript_expression "local_40[0]" identifier [ number_literal ]) = (pointer_expression "&DAT_0044a558" & identifier)) ;) comment (labeled_statement "std::string::reserve((string *)local_40,0x20);" statement_identifier : (ERROR ":" :) (labeled_statement "string::reserve((string *)local_40,0x20);" statement_identifier : (ERROR ":" :) (expression_statement "reserve((string *)local_40,0x20);" (call_expression "reserve((string *)local_40,0x20)" identifier (argument_list "((string *)local_40,0x20)" ( (cast_expression "(string *)local_40" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal ))) ;))) (expression_statement "local_4c = *(undefined4 *)(lVar6 + 0x60);" (assignment_expression "local_4c = *(undefined4 *)(lVar6 + 0x60)" identifier = (pointer_expression "*(undefined4 *)(lVar6 + 0x60)" * (cast_expression "(undefined4 *)(lVar6 + 0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x60)" ( (binary_expression "lVar6 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "lVar2 = 0;" (assignment_expression "lVar2 = 0" identifier = number_literal) ;) (expression_statement "bVar1 = (byte)local_4c;" (assignment_expression "bVar1 = (byte)local_4c" identifier = (cast_expression "(byte)local_4c" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (while_statement "while( true ) {\n    if (bVar1 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x002f845a. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar8 = (*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar2) * 4)))()\n      ;\n      return auVar8;\n    }\n    if (3 < (int)lVar2 + 1) break;\n    bVar1 = *(byte *)((long)&local_4c + lVar2 + 1);\n    lVar2 = lVar2 + 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (bVar1 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x002f845a. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar8 = (*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar2) * 4)))()\n      ;\n      return auVar8;\n    }\n    if (3 < (int)lVar2 + 1) break;\n    bVar1 = *(byte *)((long)&local_4c + lVar2 + 1);\n    lVar2 = lVar2 + 1;\n  }" { (if_statement "if (bVar1 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x002f845a. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar8 = (*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar2) * 4)))()\n      ;\n      return auVar8;\n    }" if (parenthesized_expression "(bVar1 < 5)" ( (binary_expression "bVar1 < 5" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x002f845a. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar8 = (*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar2) * 4)))()\n      ;\n      return auVar8;\n    }" { comment comment (expression_statement "auVar8 = (*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar2) * 4)))()\n      ;" (assignment_expression "auVar8 = (*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar2) * 4)))()" identifier = (call_expression "(*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar2) * 4)))()" (parenthesized_expression "(*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar2) * 4)))" ( (pointer_expression "*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar2) * 4))" * (cast_expression "(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar2) * 4))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar2) * 4))" ( (binary_expression "&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar2) * 4)" (pointer_expression "&DAT_003913fc" & identifier) + (pointer_expression "*(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar2) * 4)" * (cast_expression "(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar2) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar2) * 4)" ( (binary_expression "&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar2) * 4" (pointer_expression "&DAT_003913fc" & identifier) + (binary_expression "(ulong)*(byte *)((long)&local_4c + lVar2) * 4" (binary_expression "(ulong)*(byte *)((long)&local_4c + lVar2)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(byte *)((long)&local_4c + lVar2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_4c + lVar2)" ( (binary_expression "(long)&local_4c + lVar2" (cast_expression "(long)&local_4c" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_4c" & identifier)) + identifier) )))) * number_literal)) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return auVar8;" return identifier ;) })) (if_statement "if (3 < (int)lVar2 + 1) break;" if (parenthesized_expression "(3 < (int)lVar2 + 1)" ( (binary_expression "3 < (int)lVar2 + 1" number_literal < (binary_expression "(int)lVar2 + 1" (cast_expression "(int)lVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) )) (break_statement "break;" break ;)) (expression_statement "bVar1 = *(byte *)((long)&local_4c + lVar2 + 1);" (assignment_expression "bVar1 = *(byte *)((long)&local_4c + lVar2 + 1)" identifier = (pointer_expression "*(byte *)((long)&local_4c + lVar2 + 1)" * (cast_expression "(byte *)((long)&local_4c + lVar2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_4c + lVar2 + 1)" ( (binary_expression "(long)&local_4c + lVar2 + 1" (binary_expression "(long)&local_4c + lVar2" (cast_expression "(long)&local_4c" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_4c" & identifier)) + identifier) + number_literal) ))))) ;) (expression_statement "lVar2 = lVar2 + 1;" (assignment_expression "lVar2 = lVar2 + 1" identifier = (binary_expression "lVar2 + 1" identifier + number_literal)) ;) })) (if_statement "if ((1 < *(ulong *)(local_40[0] + -0x18)) &&\n     (uVar7 = std::string::find_first_not_of((string *)local_40,'0',0), uVar7 != 0)) {\n    if (uVar7 == 0xffffffffffffffff) {\n      uVar7 = *(long *)(local_40[0] + -0x18) - 1;\n    }\n    std::string::erase((string *)local_40,0,uVar7);\n  }" if (parenthesized_expression "((1 < *(ulong *)(local_40[0] + -0x18)) &&\n     (uVar7 = std::string::find_first_not_of((string *)local_40,'0',0), uVar7 != 0))" ( (binary_expression "(1 < *(ulong *)(local_40[0] + -0x18)) &&\n     (uVar7 = std::string::find_first_not_of((string *)local_40,'0',0), uVar7 != 0)" (parenthesized_expression "(1 < *(ulong *)(local_40[0] + -0x18))" ( (binary_expression "1 < *(ulong *)(local_40[0] + -0x18)" number_literal < (pointer_expression "*(ulong *)(local_40[0] + -0x18)" * (cast_expression "(ulong *)(local_40[0] + -0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40[0] + -0x18)" ( (binary_expression "local_40[0] + -0x18" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal) ))))) )) && (parenthesized_expression "(uVar7 = std::string::find_first_not_of((string *)local_40,'0',0), uVar7 != 0)" ( (ERROR "uVar7 = std::string::" (assignment_expression "uVar7 = std" identifier = identifier) : : identifier : :) (comma_expression "find_first_not_of((string *)local_40,'0',0), uVar7 != 0" (call_expression "find_first_not_of((string *)local_40,'0',0)" identifier (argument_list "((string *)local_40,'0',0)" ( (cast_expression "(string *)local_40" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (char_literal "'0'" ' character ') , number_literal ))) , (binary_expression "uVar7 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    if (uVar7 == 0xffffffffffffffff) {\n      uVar7 = *(long *)(local_40[0] + -0x18) - 1;\n    }\n    std::string::erase((string *)local_40,0,uVar7);\n  }" { (if_statement "if (uVar7 == 0xffffffffffffffff) {\n      uVar7 = *(long *)(local_40[0] + -0x18) - 1;\n    }" if (parenthesized_expression "(uVar7 == 0xffffffffffffffff)" ( (binary_expression "uVar7 == 0xffffffffffffffff" identifier == number_literal) )) (compound_statement "{\n      uVar7 = *(long *)(local_40[0] + -0x18) - 1;\n    }" { (expression_statement "uVar7 = *(long *)(local_40[0] + -0x18) - 1;" (assignment_expression "uVar7 = *(long *)(local_40[0] + -0x18) - 1" identifier = (binary_expression "*(long *)(local_40[0] + -0x18) - 1" (pointer_expression "*(long *)(local_40[0] + -0x18)" * (cast_expression "(long *)(local_40[0] + -0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40[0] + -0x18)" ( (binary_expression "local_40[0] + -0x18" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal) )))) - number_literal)) ;) })) (labeled_statement "std::string::erase((string *)local_40,0,uVar7);" statement_identifier : (ERROR ":" :) (labeled_statement "string::erase((string *)local_40,0,uVar7);" statement_identifier : (ERROR ":" :) (expression_statement "erase((string *)local_40,0,uVar7);" (call_expression "erase((string *)local_40,0,uVar7)" identifier (argument_list "((string *)local_40,0,uVar7)" ( (cast_expression "(string *)local_40" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , number_literal , identifier ))) ;))) })) (if_statement "if (*(long *)(local_48 + -0x18) != 0) {\n    std::string::push_back((string *)&local_48,'\0');\n    cVar5 = __verify_grouping(*(char **)(lVar6 + 0x10),*(ulong *)(lVar6 + 0x18),(string *)&local_48)\n    ;\n    if (cVar5 == '\0') {\n      *param_7 = *param_7 | 4;\n    }\n  }" if (parenthesized_expression "(*(long *)(local_48 + -0x18) != 0)" ( (binary_expression "*(long *)(local_48 + -0x18) != 0" (pointer_expression "*(long *)(local_48 + -0x18)" * (cast_expression "(long *)(local_48 + -0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_48 + -0x18)" ( (binary_expression "local_48 + -0x18" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    std::string::push_back((string *)&local_48,'\0');\n    cVar5 = __verify_grouping(*(char **)(lVar6 + 0x10),*(ulong *)(lVar6 + 0x18),(string *)&local_48)\n    ;\n    if (cVar5 == '\0') {\n      *param_7 = *param_7 | 4;\n    }\n  }" { (labeled_statement "std::string::push_back((string *)&local_48,'\0');" statement_identifier : (ERROR ":" :) (labeled_statement "string::push_back((string *)&local_48,'\0');" statement_identifier : (ERROR ":" :) (expression_statement "push_back((string *)&local_48,'\0');" (call_expression "push_back((string *)&local_48,'\0')" identifier (argument_list "((string *)&local_48,'\0')" ( (cast_expression "(string *)&local_48" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_48" & identifier)) , (char_literal "'\0'" ' escape_sequence ') ))) ;))) (expression_statement "cVar5 = __verify_grouping(*(char **)(lVar6 + 0x10),*(ulong *)(lVar6 + 0x18),(string *)&local_48)\n    ;" (assignment_expression "cVar5 = __verify_grouping(*(char **)(lVar6 + 0x10),*(ulong *)(lVar6 + 0x18),(string *)&local_48)" identifier = (call_expression "__verify_grouping(*(char **)(lVar6 + 0x10),*(ulong *)(lVar6 + 0x18),(string *)&local_48)" identifier (argument_list "(*(char **)(lVar6 + 0x10),*(ulong *)(lVar6 + 0x18),(string *)&local_48)" ( (pointer_expression "*(char **)(lVar6 + 0x10)" * (cast_expression "(char **)(lVar6 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar6 + 0x10)" ( (binary_expression "lVar6 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(ulong *)(lVar6 + 0x18)" * (cast_expression "(ulong *)(lVar6 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x18)" ( (binary_expression "lVar6 + 0x18" identifier + number_literal) )))) , (cast_expression "(string *)&local_48" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_48" & identifier)) )))) ;) (if_statement "if (cVar5 == '\0') {\n      *param_7 = *param_7 | 4;\n    }" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *param_7 = *param_7 | 4;\n    }" { (expression_statement "*param_7 = *param_7 | 4;" (assignment_expression "*param_7 = *param_7 | 4" (pointer_expression "*param_7" * identifier) = (binary_expression "*param_7 | 4" (pointer_expression "*param_7" * identifier) | number_literal)) ;) })) })) (labeled_statement "std::string::swap(param_8,(string *)local_40);" statement_identifier : (ERROR ":" :) (labeled_statement "string::swap(param_8,(string *)local_40);" statement_identifier : (ERROR ":" :) (expression_statement "swap(param_8,(string *)local_40);" (call_expression "swap(param_8,(string *)local_40)" identifier (argument_list "(param_8,(string *)local_40)" ( identifier , (cast_expression "(string *)local_40" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;))) (expression_statement "local_c0 = &local_78;" (assignment_expression "local_c0 = &local_78" identifier = (pointer_expression "&local_78" & identifier)) ;) (ERROR "cVar5 = istreambuf_iterator<char,std::" (comma_expression "cVar5 = istreambuf_iterator<char,std" (assignment_expression "cVar5 = istreambuf_iterator<char" identifier = (binary_expression "istreambuf_iterator<char" identifier < identifier)) , identifier) : :) (expression_statement "char_traits<char>>::equal\n                    ((istreambuf_iterator<char,std::char_traits<char>> *)&local_68,\n                     (istreambuf_iterator *)local_c0);" (binary_expression "char_traits<char>>::equal\n                    ((istreambuf_iterator<char,std::char_traits<char>> *)&local_68,\n                     (istreambuf_iterator *)local_c0)" identifier < (binary_expression "char>>::equal\n                    ((istreambuf_iterator<char,std::char_traits<char>> *)&local_68,\n                     (istreambuf_iterator *)local_c0)" identifier >> (ERROR "::" : :) (call_expression "equal\n                    ((istreambuf_iterator<char,std::char_traits<char>> *)&local_68,\n                     (istreambuf_iterator *)local_c0)" identifier (argument_list "((istreambuf_iterator<char,std::char_traits<char>> *)&local_68,\n                     (istreambuf_iterator *)local_c0)" ( (binary_expression "(istreambuf_iterator<char,std::char_traits<char>> *)&local_68" (parenthesized_expression "(istreambuf_iterator<char,std::char_traits<char>> *)" ( (ERROR "istreambuf_iterator<char,std::" (comma_expression "istreambuf_iterator<char,std" (binary_expression "istreambuf_iterator<char" identifier < identifier) , identifier) : :) (binary_expression "char_traits<char>> *" identifier < (binary_expression "char>> *" identifier >> (pointer_expression "*" * identifier))) )) & identifier) , (cast_expression "(istreambuf_iterator *)local_c0" ( (type_descriptor "istreambuf_iterator *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))))) ;) (expression_statement "uVar4 = local_60;" (assignment_expression "uVar4 = local_60" identifier = identifier) ;) (expression_statement "uVar3 = local_68;" (assignment_expression "uVar3 = local_68" identifier = identifier) ;) (if_statement "if (cVar5 != '\0') {\n    *param_7 = *param_7 | 2;\n  }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    *param_7 = *param_7 | 2;\n  }" { (expression_statement "*param_7 = *param_7 | 2;" (assignment_expression "*param_7 = *param_7 | 2" (pointer_expression "*param_7" * identifier) = (binary_expression "*param_7 | 2" (pointer_expression "*param_7" * identifier) | number_literal)) ;) })) (if_statement "if ((allocator *)(local_40[0] + -0x18) != (allocator *)PTR__S_empty_rep_storage_0043dc38) {\n    std::string::_Rep::_M_dispose((allocator *)(local_40[0] + -0x18));\n  }" if (parenthesized_expression "((allocator *)(local_40[0] + -0x18) != (allocator *)PTR__S_empty_rep_storage_0043dc38)" ( (binary_expression "(allocator *)(local_40[0] + -0x18) != (allocator *)PTR__S_empty_rep_storage_0043dc38" (cast_expression "(allocator *)(local_40[0] + -0x18)" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40[0] + -0x18)" ( (binary_expression "local_40[0] + -0x18" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal) ))) != (cast_expression "(allocator *)PTR__S_empty_rep_storage_0043dc38" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    std::string::_Rep::_M_dispose((allocator *)(local_40[0] + -0x18));\n  }" { (labeled_statement "std::string::_Rep::_M_dispose((allocator *)(local_40[0] + -0x18));" statement_identifier : (ERROR ":" :) (labeled_statement "string::_Rep::_M_dispose((allocator *)(local_40[0] + -0x18));" statement_identifier : (ERROR ":" :) (labeled_statement "_Rep::_M_dispose((allocator *)(local_40[0] + -0x18));" statement_identifier : (ERROR ":" :) (expression_statement "_M_dispose((allocator *)(local_40[0] + -0x18));" (call_expression "_M_dispose((allocator *)(local_40[0] + -0x18))" identifier (argument_list "((allocator *)(local_40[0] + -0x18))" ( (cast_expression "(allocator *)(local_40[0] + -0x18)" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40[0] + -0x18)" ( (binary_expression "local_40[0] + -0x18" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal) ))) ))) ;)))) })) (if_statement "if ((allocator *)(local_48 + -0x18) != (allocator *)PTR__S_empty_rep_storage_0043dc38) {\n    std::string::_Rep::_M_dispose((allocator *)(local_48 + -0x18));\n  }" if (parenthesized_expression "((allocator *)(local_48 + -0x18) != (allocator *)PTR__S_empty_rep_storage_0043dc38)" ( (binary_expression "(allocator *)(local_48 + -0x18) != (allocator *)PTR__S_empty_rep_storage_0043dc38" (cast_expression "(allocator *)(local_48 + -0x18)" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_48 + -0x18)" ( (binary_expression "local_48 + -0x18" identifier + number_literal) ))) != (cast_expression "(allocator *)PTR__S_empty_rep_storage_0043dc38" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    std::string::_Rep::_M_dispose((allocator *)(local_48 + -0x18));\n  }" { (labeled_statement "std::string::_Rep::_M_dispose((allocator *)(local_48 + -0x18));" statement_identifier : (ERROR ":" :) (labeled_statement "string::_Rep::_M_dispose((allocator *)(local_48 + -0x18));" statement_identifier : (ERROR ":" :) (labeled_statement "_Rep::_M_dispose((allocator *)(local_48 + -0x18));" statement_identifier : (ERROR ":" :) (expression_statement "_M_dispose((allocator *)(local_48 + -0x18));" (call_expression "_M_dispose((allocator *)(local_48 + -0x18))" identifier (argument_list "((allocator *)(local_48 + -0x18))" ( (cast_expression "(allocator *)(local_48 + -0x18)" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_48 + -0x18)" ( (binary_expression "local_48 + -0x18" identifier + number_literal) ))) ))) ;)))) })) (expression_statement "auVar8._8_8_ = uVar4;" (assignment_expression "auVar8._8_8_ = uVar4" (field_expression "auVar8._8_8_" identifier . field_identifier) = identifier) ;) (expression_statement "auVar8._0_8_ = uVar3;" (assignment_expression "auVar8._0_8_ = uVar3" (field_expression "auVar8._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar8;" return identifier ;) }))
(translation_unit "undefined1  [16]\nFUN_002f8310(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n            undefined8 param_5,long param_6,uint *param_7,undefined8 param_8)\n\n{\n  byte bVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  char cVar4;\n  long lVar5;\n  long lVar6;\n  undefined1 auVar7 [16];\n  undefined8 *local_c0;\n  undefined8 local_78;\n  undefined8 local_70;\n  undefined8 local_68;\n  undefined8 local_60;\n  undefined1 local_4e;\n  undefined1 local_4d;\n  undefined4 local_4c;\n  undefined1 *local_48;\n  undefined1 *local_40 [2];\n  \n  local_78 = param_4;\n  local_70 = param_5;\n  local_68 = param_2;\n  local_60 = param_3;\n  FUN_002ec670(param_6 + 0xd0);\n  lVar5 = FUN_002efb20(&local_4e,param_6 + 0xd0);\n  local_48 = &DAT_0044a558;\n  if (*(char *)(lVar5 + 0x20) != '\0') {\n                    \n    FUN_0030e7a0(&local_48,0x20);\n  }\n  local_40[0] = &DAT_0044a558;\n                    \n  FUN_0030e7a0(local_40,0x20);\n  local_4c = *(undefined4 *)(lVar5 + 0x60);\n  lVar6 = 0;\n  bVar1 = (byte)local_4c;\n  while( true ) {\n    if (bVar1 < 5) {\n                    \n                    \n      auVar7 = (*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)))()\n      ;\n      return auVar7;\n    }\n    if (3 < (int)lVar6 + 1) break;\n    bVar1 = *(byte *)((long)&local_4c + lVar6 + 1);\n    lVar6 = lVar6 + 1;\n  }\n  if ((1 < *(ulong *)(local_40[0] + -0x18)) && (lVar6 = FUN_0030d360(local_40,0x30,0), lVar6 != 0))\n  {\n    if (lVar6 == -1) {\n      lVar6 = *(long *)(local_40[0] + -0x18) + -1;\n    }\n    FUN_0030dfe0(local_40,0,lVar6);\n  }\n  if (*(long *)(local_48 + -0x18) != 0) {\n    FUN_0030ec80(&local_48,0);\n    cVar4 = FUN_00323270(*(undefined8 *)(lVar5 + 0x10),*(undefined8 *)(lVar5 + 0x18),&local_48);\n    if (cVar4 == '\0') {\n      *param_7 = *param_7 | 4;\n    }\n  }\n  FUN_0030ce20(param_8,local_40);\n  local_c0 = &local_78;\n  cVar4 = FUN_002f12b0(&local_68,local_c0);\n  uVar3 = local_60;\n  uVar2 = local_68;\n  if (cVar4 != '\0') {\n    *param_7 = *param_7 | 2;\n  }\n  if (local_40[0] + -0x18 != PTR_DAT_0043dc38) {\n    FUN_002ea270(local_40[0] + -0x18,&local_4d);\n  }\n  if (local_48 + -0x18 != PTR_DAT_0043dc38) {\n    FUN_002ea270(local_48 + -0x18,&local_4d);\n  }\n  auVar7._8_8_ = uVar3;\n  auVar7._0_8_ = uVar2;\n  return auVar7;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (declaration "FUN_002f8310(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n            undefined8 param_5,long param_6,uint *param_7,undefined8 param_8)\n\n{\n  byte bVar1;" (macro_type_specifier "FUN_002f8310(undefined8" identifier ( (type_descriptor "undefined8" type_identifier) )) identifier , identifier (ERROR "param_2" identifier) , identifier (ERROR "param_3" identifier) , identifier (ERROR "param_4" identifier) , identifier (ERROR "param_5" identifier) , (ERROR "long" identifier) identifier , (ERROR "uint" identifier) (pointer_declarator "*param_7" * identifier) , (ERROR "undefined8 param_8)\n\n{\n  byte" identifier identifier ) { identifier) identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 auVar7 [16];" type_identifier (array_declarator "auVar7 [16]" identifier [ number_literal ]) ;) (declaration "undefined8 *local_c0;" type_identifier (pointer_declarator "*local_c0" * identifier) ;) (declaration "undefined8 local_78;" type_identifier identifier ;) (declaration "undefined8 local_70;" type_identifier identifier ;) (declaration "undefined8 local_68;" type_identifier identifier ;) (declaration "undefined8 local_60;" type_identifier identifier ;) (declaration "undefined1 local_4e;" type_identifier identifier ;) (declaration "undefined1 local_4d;" type_identifier identifier ;) (declaration "undefined4 local_4c;" type_identifier identifier ;) (declaration "undefined1 *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "undefined1 *local_40 [2];" type_identifier (pointer_declarator "*local_40 [2]" * (array_declarator "local_40 [2]" identifier [ number_literal ])) ;) (expression_statement "local_78 = param_4;" (assignment_expression "local_78 = param_4" identifier = identifier) ;) (expression_statement "local_70 = param_5;" (assignment_expression "local_70 = param_5" identifier = identifier) ;) (expression_statement "local_68 = param_2;" (assignment_expression "local_68 = param_2" identifier = identifier) ;) (expression_statement "local_60 = param_3;" (assignment_expression "local_60 = param_3" identifier = identifier) ;) (expression_statement "FUN_002ec670(param_6 + 0xd0);" (call_expression "FUN_002ec670(param_6 + 0xd0)" identifier (argument_list "(param_6 + 0xd0)" ( (binary_expression "param_6 + 0xd0" identifier + number_literal) ))) ;) (expression_statement "lVar5 = FUN_002efb20(&local_4e,param_6 + 0xd0);" (assignment_expression "lVar5 = FUN_002efb20(&local_4e,param_6 + 0xd0)" identifier = (call_expression "FUN_002efb20(&local_4e,param_6 + 0xd0)" identifier (argument_list "(&local_4e,param_6 + 0xd0)" ( (pointer_expression "&local_4e" & identifier) , (binary_expression "param_6 + 0xd0" identifier + number_literal) )))) ;) (expression_statement "local_48 = &DAT_0044a558;" (assignment_expression "local_48 = &DAT_0044a558" identifier = (pointer_expression "&DAT_0044a558" & identifier)) ;) (if_statement "if (*(char *)(lVar5 + 0x20) != '\0') {\n                    \n    FUN_0030e7a0(&local_48,0x20);\n  }" if (parenthesized_expression "(*(char *)(lVar5 + 0x20) != '\0')" ( (binary_expression "*(char *)(lVar5 + 0x20) != '\0'" (pointer_expression "*(char *)(lVar5 + 0x20)" * (cast_expression "(char *)(lVar5 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x20)" ( (binary_expression "lVar5 + 0x20" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    \n    FUN_0030e7a0(&local_48,0x20);\n  }" { (expression_statement "FUN_0030e7a0(&local_48,0x20);" (call_expression "FUN_0030e7a0(&local_48,0x20)" identifier (argument_list "(&local_48,0x20)" ( (pointer_expression "&local_48" & identifier) , number_literal ))) ;) })) (expression_statement "local_40[0] = &DAT_0044a558;" (assignment_expression "local_40[0] = &DAT_0044a558" (subscript_expression "local_40[0]" identifier [ number_literal ]) = (pointer_expression "&DAT_0044a558" & identifier)) ;) (expression_statement "FUN_0030e7a0(local_40,0x20);" (call_expression "FUN_0030e7a0(local_40,0x20)" identifier (argument_list "(local_40,0x20)" ( identifier , number_literal ))) ;) (expression_statement "local_4c = *(undefined4 *)(lVar5 + 0x60);" (assignment_expression "local_4c = *(undefined4 *)(lVar5 + 0x60)" identifier = (pointer_expression "*(undefined4 *)(lVar5 + 0x60)" * (cast_expression "(undefined4 *)(lVar5 + 0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x60)" ( (binary_expression "lVar5 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "lVar6 = 0;" (assignment_expression "lVar6 = 0" identifier = number_literal) ;) (expression_statement "bVar1 = (byte)local_4c;" (assignment_expression "bVar1 = (byte)local_4c" identifier = (cast_expression "(byte)local_4c" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (while_statement "while( true ) {\n    if (bVar1 < 5) {\n                    \n                    \n      auVar7 = (*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)))()\n      ;\n      return auVar7;\n    }\n    if (3 < (int)lVar6 + 1) break;\n    bVar1 = *(byte *)((long)&local_4c + lVar6 + 1);\n    lVar6 = lVar6 + 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (bVar1 < 5) {\n                    \n                    \n      auVar7 = (*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)))()\n      ;\n      return auVar7;\n    }\n    if (3 < (int)lVar6 + 1) break;\n    bVar1 = *(byte *)((long)&local_4c + lVar6 + 1);\n    lVar6 = lVar6 + 1;\n  }" { (if_statement "if (bVar1 < 5) {\n                    \n                    \n      auVar7 = (*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)))()\n      ;\n      return auVar7;\n    }" if (parenthesized_expression "(bVar1 < 5)" ( (binary_expression "bVar1 < 5" identifier < number_literal) )) (compound_statement "{\n                    \n                    \n      auVar7 = (*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)))()\n      ;\n      return auVar7;\n    }" { (expression_statement "auVar7 = (*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)))()\n      ;" (assignment_expression "auVar7 = (*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)))()" identifier = (call_expression "(*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)))()" (parenthesized_expression "(*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)))" ( (pointer_expression "*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4))" * (cast_expression "(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4))" ( (binary_expression "&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)" (pointer_expression "&DAT_003913fc" & identifier) + (pointer_expression "*(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)" * (cast_expression "(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)" ( (binary_expression "&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4" (pointer_expression "&DAT_003913fc" & identifier) + (binary_expression "(ulong)*(byte *)((long)&local_4c + lVar6) * 4" (binary_expression "(ulong)*(byte *)((long)&local_4c + lVar6)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(byte *)((long)&local_4c + lVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_4c + lVar6)" ( (binary_expression "(long)&local_4c + lVar6" (cast_expression "(long)&local_4c" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_4c" & identifier)) + identifier) )))) * number_literal)) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return auVar7;" return identifier ;) })) (if_statement "if (3 < (int)lVar6 + 1) break;" if (parenthesized_expression "(3 < (int)lVar6 + 1)" ( (binary_expression "3 < (int)lVar6 + 1" number_literal < (binary_expression "(int)lVar6 + 1" (cast_expression "(int)lVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) )) (break_statement "break;" break ;)) (expression_statement "bVar1 = *(byte *)((long)&local_4c + lVar6 + 1);" (assignment_expression "bVar1 = *(byte *)((long)&local_4c + lVar6 + 1)" identifier = (pointer_expression "*(byte *)((long)&local_4c + lVar6 + 1)" * (cast_expression "(byte *)((long)&local_4c + lVar6 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_4c + lVar6 + 1)" ( (binary_expression "(long)&local_4c + lVar6 + 1" (binary_expression "(long)&local_4c + lVar6" (cast_expression "(long)&local_4c" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_4c" & identifier)) + identifier) + number_literal) ))))) ;) (expression_statement "lVar6 = lVar6 + 1;" (assignment_expression "lVar6 = lVar6 + 1" identifier = (binary_expression "lVar6 + 1" identifier + number_literal)) ;) })) (if_statement "if ((1 < *(ulong *)(local_40[0] + -0x18)) && (lVar6 = FUN_0030d360(local_40,0x30,0), lVar6 != 0))\n  {\n    if (lVar6 == -1) {\n      lVar6 = *(long *)(local_40[0] + -0x18) + -1;\n    }\n    FUN_0030dfe0(local_40,0,lVar6);\n  }" if (parenthesized_expression "((1 < *(ulong *)(local_40[0] + -0x18)) && (lVar6 = FUN_0030d360(local_40,0x30,0), lVar6 != 0))" ( (binary_expression "(1 < *(ulong *)(local_40[0] + -0x18)) && (lVar6 = FUN_0030d360(local_40,0x30,0), lVar6 != 0)" (parenthesized_expression "(1 < *(ulong *)(local_40[0] + -0x18))" ( (binary_expression "1 < *(ulong *)(local_40[0] + -0x18)" number_literal < (pointer_expression "*(ulong *)(local_40[0] + -0x18)" * (cast_expression "(ulong *)(local_40[0] + -0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40[0] + -0x18)" ( (binary_expression "local_40[0] + -0x18" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal) ))))) )) && (parenthesized_expression "(lVar6 = FUN_0030d360(local_40,0x30,0), lVar6 != 0)" ( (comma_expression "lVar6 = FUN_0030d360(local_40,0x30,0), lVar6 != 0" (assignment_expression "lVar6 = FUN_0030d360(local_40,0x30,0)" identifier = (call_expression "FUN_0030d360(local_40,0x30,0)" identifier (argument_list "(local_40,0x30,0)" ( identifier , number_literal , number_literal )))) , (binary_expression "lVar6 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    if (lVar6 == -1) {\n      lVar6 = *(long *)(local_40[0] + -0x18) + -1;\n    }\n    FUN_0030dfe0(local_40,0,lVar6);\n  }" { (if_statement "if (lVar6 == -1) {\n      lVar6 = *(long *)(local_40[0] + -0x18) + -1;\n    }" if (parenthesized_expression "(lVar6 == -1)" ( (binary_expression "lVar6 == -1" identifier == number_literal) )) (compound_statement "{\n      lVar6 = *(long *)(local_40[0] + -0x18) + -1;\n    }" { (expression_statement "lVar6 = *(long *)(local_40[0] + -0x18) + -1;" (assignment_expression "lVar6 = *(long *)(local_40[0] + -0x18) + -1" identifier = (binary_expression "*(long *)(local_40[0] + -0x18) + -1" (pointer_expression "*(long *)(local_40[0] + -0x18)" * (cast_expression "(long *)(local_40[0] + -0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40[0] + -0x18)" ( (binary_expression "local_40[0] + -0x18" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal) )))) + number_literal)) ;) })) (expression_statement "FUN_0030dfe0(local_40,0,lVar6);" (call_expression "FUN_0030dfe0(local_40,0,lVar6)" identifier (argument_list "(local_40,0,lVar6)" ( identifier , number_literal , identifier ))) ;) })) (if_statement "if (*(long *)(local_48 + -0x18) != 0) {\n    FUN_0030ec80(&local_48,0);\n    cVar4 = FUN_00323270(*(undefined8 *)(lVar5 + 0x10),*(undefined8 *)(lVar5 + 0x18),&local_48);\n    if (cVar4 == '\0') {\n      *param_7 = *param_7 | 4;\n    }\n  }" if (parenthesized_expression "(*(long *)(local_48 + -0x18) != 0)" ( (binary_expression "*(long *)(local_48 + -0x18) != 0" (pointer_expression "*(long *)(local_48 + -0x18)" * (cast_expression "(long *)(local_48 + -0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_48 + -0x18)" ( (binary_expression "local_48 + -0x18" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    FUN_0030ec80(&local_48,0);\n    cVar4 = FUN_00323270(*(undefined8 *)(lVar5 + 0x10),*(undefined8 *)(lVar5 + 0x18),&local_48);\n    if (cVar4 == '\0') {\n      *param_7 = *param_7 | 4;\n    }\n  }" { (expression_statement "FUN_0030ec80(&local_48,0);" (call_expression "FUN_0030ec80(&local_48,0)" identifier (argument_list "(&local_48,0)" ( (pointer_expression "&local_48" & identifier) , number_literal ))) ;) (expression_statement "cVar4 = FUN_00323270(*(undefined8 *)(lVar5 + 0x10),*(undefined8 *)(lVar5 + 0x18),&local_48);" (assignment_expression "cVar4 = FUN_00323270(*(undefined8 *)(lVar5 + 0x10),*(undefined8 *)(lVar5 + 0x18),&local_48)" identifier = (call_expression "FUN_00323270(*(undefined8 *)(lVar5 + 0x10),*(undefined8 *)(lVar5 + 0x18),&local_48)" identifier (argument_list "(*(undefined8 *)(lVar5 + 0x10),*(undefined8 *)(lVar5 + 0x18),&local_48)" ( (pointer_expression "*(undefined8 *)(lVar5 + 0x10)" * (cast_expression "(undefined8 *)(lVar5 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x10)" ( (binary_expression "lVar5 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(lVar5 + 0x18)" * (cast_expression "(undefined8 *)(lVar5 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x18)" ( (binary_expression "lVar5 + 0x18" identifier + number_literal) )))) , (pointer_expression "&local_48" & identifier) )))) ;) (if_statement "if (cVar4 == '\0') {\n      *param_7 = *param_7 | 4;\n    }" if (parenthesized_expression "(cVar4 == '\0')" ( (binary_expression "cVar4 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *param_7 = *param_7 | 4;\n    }" { (expression_statement "*param_7 = *param_7 | 4;" (assignment_expression "*param_7 = *param_7 | 4" (pointer_expression "*param_7" * identifier) = (binary_expression "*param_7 | 4" (pointer_expression "*param_7" * identifier) | number_literal)) ;) })) })) (expression_statement "FUN_0030ce20(param_8,local_40);" (call_expression "FUN_0030ce20(param_8,local_40)" identifier (argument_list "(param_8,local_40)" ( identifier , identifier ))) ;) (expression_statement "local_c0 = &local_78;" (assignment_expression "local_c0 = &local_78" identifier = (pointer_expression "&local_78" & identifier)) ;) (expression_statement "cVar4 = FUN_002f12b0(&local_68,local_c0);" (assignment_expression "cVar4 = FUN_002f12b0(&local_68,local_c0)" identifier = (call_expression "FUN_002f12b0(&local_68,local_c0)" identifier (argument_list "(&local_68,local_c0)" ( (pointer_expression "&local_68" & identifier) , identifier )))) ;) (expression_statement "uVar3 = local_60;" (assignment_expression "uVar3 = local_60" identifier = identifier) ;) (expression_statement "uVar2 = local_68;" (assignment_expression "uVar2 = local_68" identifier = identifier) ;) (if_statement "if (cVar4 != '\0') {\n    *param_7 = *param_7 | 2;\n  }" if (parenthesized_expression "(cVar4 != '\0')" ( (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    *param_7 = *param_7 | 2;\n  }" { (expression_statement "*param_7 = *param_7 | 2;" (assignment_expression "*param_7 = *param_7 | 2" (pointer_expression "*param_7" * identifier) = (binary_expression "*param_7 | 2" (pointer_expression "*param_7" * identifier) | number_literal)) ;) })) (if_statement "if (local_40[0] + -0x18 != PTR_DAT_0043dc38) {\n    FUN_002ea270(local_40[0] + -0x18,&local_4d);\n  }" if (parenthesized_expression "(local_40[0] + -0x18 != PTR_DAT_0043dc38)" ( (binary_expression "local_40[0] + -0x18 != PTR_DAT_0043dc38" (binary_expression "local_40[0] + -0x18" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal) != identifier) )) (compound_statement "{\n    FUN_002ea270(local_40[0] + -0x18,&local_4d);\n  }" { (expression_statement "FUN_002ea270(local_40[0] + -0x18,&local_4d);" (call_expression "FUN_002ea270(local_40[0] + -0x18,&local_4d)" identifier (argument_list "(local_40[0] + -0x18,&local_4d)" ( (binary_expression "local_40[0] + -0x18" (subscript_expression "local_40[0]" identifier [ number_literal ]) + number_literal) , (pointer_expression "&local_4d" & identifier) ))) ;) })) (if_statement "if (local_48 + -0x18 != PTR_DAT_0043dc38) {\n    FUN_002ea270(local_48 + -0x18,&local_4d);\n  }" if (parenthesized_expression "(local_48 + -0x18 != PTR_DAT_0043dc38)" ( (binary_expression "local_48 + -0x18 != PTR_DAT_0043dc38" (binary_expression "local_48 + -0x18" identifier + number_literal) != identifier) )) (compound_statement "{\n    FUN_002ea270(local_48 + -0x18,&local_4d);\n  }" { (expression_statement "FUN_002ea270(local_48 + -0x18,&local_4d);" (call_expression "FUN_002ea270(local_48 + -0x18,&local_4d)" identifier (argument_list "(local_48 + -0x18,&local_4d)" ( (binary_expression "local_48 + -0x18" identifier + number_literal) , (pointer_expression "&local_4d" & identifier) ))) ;) })) (expression_statement "auVar7._8_8_ = uVar3;" (assignment_expression "auVar7._8_8_ = uVar3" (field_expression "auVar7._8_8_" identifier . field_identifier) = identifier) ;) (expression_statement "auVar7._0_8_ = uVar2;" (assignment_expression "auVar7._0_8_ = uVar2" (field_expression "auVar7._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar7;" return identifier ;) (ERROR "}" }))
(translation_unit (expression_statement (subscript_expression IDENT [ LIT ]) ;) (declaration (macro_type_specifier IDENT ( (type_descriptor TYPE) )) IDENT , IDENT (ERROR IDENT) , IDENT (ERROR IDENT) , IDENT (ERROR IDENT) , IDENT (ERROR IDENT) , (ERROR IDENT) IDENT , (ERROR IDENT) (pointer_declarator * IDENT) , (ERROR IDENT IDENT ) { IDENT) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT ))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT)) + IDENT) )))) * LIT)) ))))) )))) )) (argument_list ( )))) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT)) + IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) + LIT)) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | LIT)) ;) })) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) , (pointer_expression & IDENT) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression & IDENT) ))) ;) })) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (return_statement return IDENT ;) (ERROR }))
(expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" (identifier "undefined1") ([ "[") (number_literal "16") (] "]")) (; "")) (declaration "FUN_002f8310(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n            undefined8 param_5,long param_6,uint *param_7,undefined8 param_8)\n\n{\n  byte bVar1;" (macro_type_specifier "FUN_002f8310(undefined8" (identifier "FUN_002f8310") (( "(") (type_descriptor "undefined8" (type_identifier "undefined8")) () "")) (identifier "param_1") (, ",") (identifier "undefined8") (ERROR "param_2" (identifier "param_2")) (, ",") (identifier "undefined8") (ERROR "param_3" (identifier "param_3")) (, ",") (identifier "undefined8") (ERROR "param_4" (identifier "param_4")) (, ",") (identifier "undefined8") (ERROR "param_5" (identifier "param_5")) (, ",") (ERROR "long" (identifier "long")) (identifier "param_6") (, ",") (ERROR "uint" (identifier "uint")) (pointer_declarator "*param_7" (* "*") (identifier "param_7")) (, ",") (ERROR "undefined8 param_8)\n\n{\n  byte" (identifier "undefined8") (identifier "param_8") () ")") ({ "{") (identifier "byte")) (identifier "bVar1") (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "undefined8 uVar3;" (type_identifier "undefined8") (identifier "uVar3") (; ";")) (declaration "char cVar4;" (primitive_type "char") (identifier "cVar4") (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "undefined1 auVar7 [16];" (type_identifier "undefined1") (array_declarator "auVar7 [16]" (identifier "auVar7") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined8 *local_c0;" (type_identifier "undefined8") (pointer_declarator "*local_c0" (* "*") (identifier "local_c0")) (; ";")) (declaration "undefined8 local_78;" (type_identifier "undefined8") (identifier "local_78") (; ";")) (declaration "undefined8 local_70;" (type_identifier "undefined8") (identifier "local_70") (; ";")) (declaration "undefined8 local_68;" (type_identifier "undefined8") (identifier "local_68") (; ";")) (declaration "undefined8 local_60;" (type_identifier "undefined8") (identifier "local_60") (; ";")) (declaration "undefined1 local_4e;" (type_identifier "undefined1") (identifier "local_4e") (; ";")) (declaration "undefined1 local_4d;" (type_identifier "undefined1") (identifier "local_4d") (; ";")) (declaration "undefined4 local_4c;" (type_identifier "undefined4") (identifier "local_4c") (; ";")) (declaration "undefined1 *local_48;" (type_identifier "undefined1") (pointer_declarator "*local_48" (* "*") (identifier "local_48")) (; ";")) (declaration "undefined1 *local_40 [2];" (type_identifier "undefined1") (pointer_declarator "*local_40 [2]" (* "*") (array_declarator "local_40 [2]" (identifier "local_40") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "local_78 = param_4;" (assignment_expression "local_78 = param_4" (identifier "local_78") (= "=") (identifier "param_4")) (; ";")) (expression_statement "local_70 = param_5;" (assignment_expression "local_70 = param_5" (identifier "local_70") (= "=") (identifier "param_5")) (; ";")) (expression_statement "local_68 = param_2;" (assignment_expression "local_68 = param_2" (identifier "local_68") (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_60 = param_3;" (assignment_expression "local_60 = param_3" (identifier "local_60") (= "=") (identifier "param_3")) (; ";")) (expression_statement "FUN_002ec670(param_6 + 0xd0);" (call_expression "FUN_002ec670(param_6 + 0xd0)" (identifier "FUN_002ec670") (argument_list "(param_6 + 0xd0)" (( "(") (binary_expression "param_6 + 0xd0" (identifier "param_6") (+ "+") (number_literal "0xd0")) () ")"))) (; ";")) (expression_statement "lVar5 = FUN_002efb20(&local_4e,param_6 + 0xd0);" (assignment_expression "lVar5 = FUN_002efb20(&local_4e,param_6 + 0xd0)" (identifier "lVar5") (= "=") (call_expression "FUN_002efb20(&local_4e,param_6 + 0xd0)" (identifier "FUN_002efb20") (argument_list "(&local_4e,param_6 + 0xd0)" (( "(") (pointer_expression "&local_4e" (& "&") (identifier "local_4e")) (, ",") (binary_expression "param_6 + 0xd0" (identifier "param_6") (+ "+") (number_literal "0xd0")) () ")")))) (; ";")) (expression_statement "local_48 = &DAT_0044a558;" (assignment_expression "local_48 = &DAT_0044a558" (identifier "local_48") (= "=") (pointer_expression "&DAT_0044a558" (& "&") (identifier "DAT_0044a558"))) (; ";")) (if_statement "if (*(char *)(lVar5 + 0x20) != '\0') {\n                    \n    FUN_0030e7a0(&local_48,0x20);\n  }" (if "if") (parenthesized_expression "(*(char *)(lVar5 + 0x20) != '\0')" (( "(") (binary_expression "*(char *)(lVar5 + 0x20) != '\0'" (pointer_expression "*(char *)(lVar5 + 0x20)" (* "*") (cast_expression "(char *)(lVar5 + 0x20)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x20)" (( "(") (binary_expression "lVar5 + 0x20" (identifier "lVar5") (+ "+") (number_literal "0x20")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                    \n    FUN_0030e7a0(&local_48,0x20);\n  }" ({ "{") (expression_statement "FUN_0030e7a0(&local_48,0x20);" (call_expression "FUN_0030e7a0(&local_48,0x20)" (identifier "FUN_0030e7a0") (argument_list "(&local_48,0x20)" (( "(") (pointer_expression "&local_48" (& "&") (identifier "local_48")) (, ",") (number_literal "0x20") () ")"))) (; ";")) (} "}"))) (expression_statement "local_40[0] = &DAT_0044a558;" (assignment_expression "local_40[0] = &DAT_0044a558" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (pointer_expression "&DAT_0044a558" (& "&") (identifier "DAT_0044a558"))) (; ";")) (expression_statement "FUN_0030e7a0(local_40,0x20);" (call_expression "FUN_0030e7a0(local_40,0x20)" (identifier "FUN_0030e7a0") (argument_list "(local_40,0x20)" (( "(") (identifier "local_40") (, ",") (number_literal "0x20") () ")"))) (; ";")) (expression_statement "local_4c = *(undefined4 *)(lVar5 + 0x60);" (assignment_expression "local_4c = *(undefined4 *)(lVar5 + 0x60)" (identifier "local_4c") (= "=") (pointer_expression "*(undefined4 *)(lVar5 + 0x60)" (* "*") (cast_expression "(undefined4 *)(lVar5 + 0x60)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x60)" (( "(") (binary_expression "lVar5 + 0x60" (identifier "lVar5") (+ "+") (number_literal "0x60")) () ")"))))) (; ";")) (expression_statement "lVar6 = 0;" (assignment_expression "lVar6 = 0" (identifier "lVar6") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar1 = (byte)local_4c;" (assignment_expression "bVar1 = (byte)local_4c" (identifier "bVar1") (= "=") (cast_expression "(byte)local_4c" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_4c"))) (; ";")) (while_statement "while( true ) {\n    if (bVar1 < 5) {\n                    \n                    \n      auVar7 = (*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)))()\n      ;\n      return auVar7;\n    }\n    if (3 < (int)lVar6 + 1) break;\n    bVar1 = *(byte *)((long)&local_4c + lVar6 + 1);\n    lVar6 = lVar6 + 1;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    if (bVar1 < 5) {\n                    \n                    \n      auVar7 = (*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)))()\n      ;\n      return auVar7;\n    }\n    if (3 < (int)lVar6 + 1) break;\n    bVar1 = *(byte *)((long)&local_4c + lVar6 + 1);\n    lVar6 = lVar6 + 1;\n  }" ({ "{") (if_statement "if (bVar1 < 5) {\n                    \n                    \n      auVar7 = (*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)))()\n      ;\n      return auVar7;\n    }" (if "if") (parenthesized_expression "(bVar1 < 5)" (( "(") (binary_expression "bVar1 < 5" (identifier "bVar1") (< "<") (number_literal "5")) () ")")) (compound_statement "{\n                    \n                    \n      auVar7 = (*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)))()\n      ;\n      return auVar7;\n    }" ({ "{") (expression_statement "auVar7 = (*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)))()\n      ;" (assignment_expression "auVar7 = (*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)))()" (identifier "auVar7") (= "=") (call_expression "(*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)))()" (parenthesized_expression "(*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)))" (( "(") (pointer_expression "*(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4))" (* "*") (cast_expression "(code *)(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4))" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4))" (( "(") (binary_expression "&DAT_003913fc +\n                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)" (pointer_expression "&DAT_003913fc" (& "&") (identifier "DAT_003913fc")) (+ "+") (pointer_expression "*(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)" (* "*") (cast_expression "(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)" (( "(") (binary_expression "&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4" (pointer_expression "&DAT_003913fc" (& "&") (identifier "DAT_003913fc")) (+ "+") (binary_expression "(ulong)*(byte *)((long)&local_4c + lVar6) * 4" (binary_expression "(ulong)*(byte *)((long)&local_4c + lVar6)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(byte *)((long)&local_4c + lVar6)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)&local_4c + lVar6)" (( "(") (binary_expression "(long)&local_4c + lVar6" (cast_expression "(long)&local_4c" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&local_4c" (& "&") (identifier "local_4c"))) (+ "+") (identifier "lVar6")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return auVar7;" (return "return") (identifier "auVar7") (; ";")) (} "}"))) (if_statement "if (3 < (int)lVar6 + 1) break;" (if "if") (parenthesized_expression "(3 < (int)lVar6 + 1)" (( "(") (binary_expression "3 < (int)lVar6 + 1" (number_literal "3") (< "<") (binary_expression "(int)lVar6 + 1" (cast_expression "(int)lVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar6")) (+ "+") (number_literal "1"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "bVar1 = *(byte *)((long)&local_4c + lVar6 + 1);" (assignment_expression "bVar1 = *(byte *)((long)&local_4c + lVar6 + 1)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)((long)&local_4c + lVar6 + 1)" (* "*") (cast_expression "(byte *)((long)&local_4c + lVar6 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)&local_4c + lVar6 + 1)" (( "(") (binary_expression "(long)&local_4c + lVar6 + 1" (binary_expression "(long)&local_4c + lVar6" (cast_expression "(long)&local_4c" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&local_4c" (& "&") (identifier "local_4c"))) (+ "+") (identifier "lVar6")) (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "lVar6 = lVar6 + 1;" (assignment_expression "lVar6 = lVar6 + 1" (identifier "lVar6") (= "=") (binary_expression "lVar6 + 1" (identifier "lVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if ((1 < *(ulong *)(local_40[0] + -0x18)) && (lVar6 = FUN_0030d360(local_40,0x30,0), lVar6 != 0))\n  {\n    if (lVar6 == -1) {\n      lVar6 = *(long *)(local_40[0] + -0x18) + -1;\n    }\n    FUN_0030dfe0(local_40,0,lVar6);\n  }" (if "if") (parenthesized_expression "((1 < *(ulong *)(local_40[0] + -0x18)) && (lVar6 = FUN_0030d360(local_40,0x30,0), lVar6 != 0))" (( "(") (binary_expression "(1 < *(ulong *)(local_40[0] + -0x18)) && (lVar6 = FUN_0030d360(local_40,0x30,0), lVar6 != 0)" (parenthesized_expression "(1 < *(ulong *)(local_40[0] + -0x18))" (( "(") (binary_expression "1 < *(ulong *)(local_40[0] + -0x18)" (number_literal "1") (< "<") (pointer_expression "*(ulong *)(local_40[0] + -0x18)" (* "*") (cast_expression "(ulong *)(local_40[0] + -0x18)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40[0] + -0x18)" (( "(") (binary_expression "local_40[0] + -0x18" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "-0x18")) () ")"))))) () ")")) (&& "&&") (parenthesized_expression "(lVar6 = FUN_0030d360(local_40,0x30,0), lVar6 != 0)" (( "(") (comma_expression "lVar6 = FUN_0030d360(local_40,0x30,0), lVar6 != 0" (assignment_expression "lVar6 = FUN_0030d360(local_40,0x30,0)" (identifier "lVar6") (= "=") (call_expression "FUN_0030d360(local_40,0x30,0)" (identifier "FUN_0030d360") (argument_list "(local_40,0x30,0)" (( "(") (identifier "local_40") (, ",") (number_literal "0x30") (, ",") (number_literal "0") () ")")))) (, ",") (binary_expression "lVar6 != 0" (identifier "lVar6") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    if (lVar6 == -1) {\n      lVar6 = *(long *)(local_40[0] + -0x18) + -1;\n    }\n    FUN_0030dfe0(local_40,0,lVar6);\n  }" ({ "{") (if_statement "if (lVar6 == -1) {\n      lVar6 = *(long *)(local_40[0] + -0x18) + -1;\n    }" (if "if") (parenthesized_expression "(lVar6 == -1)" (( "(") (binary_expression "lVar6 == -1" (identifier "lVar6") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n      lVar6 = *(long *)(local_40[0] + -0x18) + -1;\n    }" ({ "{") (expression_statement "lVar6 = *(long *)(local_40[0] + -0x18) + -1;" (assignment_expression "lVar6 = *(long *)(local_40[0] + -0x18) + -1" (identifier "lVar6") (= "=") (binary_expression "*(long *)(local_40[0] + -0x18) + -1" (pointer_expression "*(long *)(local_40[0] + -0x18)" (* "*") (cast_expression "(long *)(local_40[0] + -0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40[0] + -0x18)" (( "(") (binary_expression "local_40[0] + -0x18" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "-0x18")) () ")")))) (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "FUN_0030dfe0(local_40,0,lVar6);" (call_expression "FUN_0030dfe0(local_40,0,lVar6)" (identifier "FUN_0030dfe0") (argument_list "(local_40,0,lVar6)" (( "(") (identifier "local_40") (, ",") (number_literal "0") (, ",") (identifier "lVar6") () ")"))) (; ";")) (} "}"))) (if_statement "if (*(long *)(local_48 + -0x18) != 0) {\n    FUN_0030ec80(&local_48,0);\n    cVar4 = FUN_00323270(*(undefined8 *)(lVar5 + 0x10),*(undefined8 *)(lVar5 + 0x18),&local_48);\n    if (cVar4 == '\0') {\n      *param_7 = *param_7 | 4;\n    }\n  }" (if "if") (parenthesized_expression "(*(long *)(local_48 + -0x18) != 0)" (( "(") (binary_expression "*(long *)(local_48 + -0x18) != 0" (pointer_expression "*(long *)(local_48 + -0x18)" (* "*") (cast_expression "(long *)(local_48 + -0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_48 + -0x18)" (( "(") (binary_expression "local_48 + -0x18" (identifier "local_48") (+ "+") (number_literal "-0x18")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_0030ec80(&local_48,0);\n    cVar4 = FUN_00323270(*(undefined8 *)(lVar5 + 0x10),*(undefined8 *)(lVar5 + 0x18),&local_48);\n    if (cVar4 == '\0') {\n      *param_7 = *param_7 | 4;\n    }\n  }" ({ "{") (expression_statement "FUN_0030ec80(&local_48,0);" (call_expression "FUN_0030ec80(&local_48,0)" (identifier "FUN_0030ec80") (argument_list "(&local_48,0)" (( "(") (pointer_expression "&local_48" (& "&") (identifier "local_48")) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "cVar4 = FUN_00323270(*(undefined8 *)(lVar5 + 0x10),*(undefined8 *)(lVar5 + 0x18),&local_48);" (assignment_expression "cVar4 = FUN_00323270(*(undefined8 *)(lVar5 + 0x10),*(undefined8 *)(lVar5 + 0x18),&local_48)" (identifier "cVar4") (= "=") (call_expression "FUN_00323270(*(undefined8 *)(lVar5 + 0x10),*(undefined8 *)(lVar5 + 0x18),&local_48)" (identifier "FUN_00323270") (argument_list "(*(undefined8 *)(lVar5 + 0x10),*(undefined8 *)(lVar5 + 0x18),&local_48)" (( "(") (pointer_expression "*(undefined8 *)(lVar5 + 0x10)" (* "*") (cast_expression "(undefined8 *)(lVar5 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x10)" (( "(") (binary_expression "lVar5 + 0x10" (identifier "lVar5") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(lVar5 + 0x18)" (* "*") (cast_expression "(undefined8 *)(lVar5 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x18)" (( "(") (binary_expression "lVar5 + 0x18" (identifier "lVar5") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) () ")")))) (; ";")) (if_statement "if (cVar4 == '\0') {\n      *param_7 = *param_7 | 4;\n    }" (if "if") (parenthesized_expression "(cVar4 == '\0')" (( "(") (binary_expression "cVar4 == '\0'" (identifier "cVar4") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      *param_7 = *param_7 | 4;\n    }" ({ "{") (expression_statement "*param_7 = *param_7 | 4;" (assignment_expression "*param_7 = *param_7 | 4" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (binary_expression "*param_7 | 4" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (| "|") (number_literal "4"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "FUN_0030ce20(param_8,local_40);" (call_expression "FUN_0030ce20(param_8,local_40)" (identifier "FUN_0030ce20") (argument_list "(param_8,local_40)" (( "(") (identifier "param_8") (, ",") (identifier "local_40") () ")"))) (; ";")) (expression_statement "local_c0 = &local_78;" (assignment_expression "local_c0 = &local_78" (identifier "local_c0") (= "=") (pointer_expression "&local_78" (& "&") (identifier "local_78"))) (; ";")) (expression_statement "cVar4 = FUN_002f12b0(&local_68,local_c0);" (assignment_expression "cVar4 = FUN_002f12b0(&local_68,local_c0)" (identifier "cVar4") (= "=") (call_expression "FUN_002f12b0(&local_68,local_c0)" (identifier "FUN_002f12b0") (argument_list "(&local_68,local_c0)" (( "(") (pointer_expression "&local_68" (& "&") (identifier "local_68")) (, ",") (identifier "local_c0") () ")")))) (; ";")) (expression_statement "uVar3 = local_60;" (assignment_expression "uVar3 = local_60" (identifier "uVar3") (= "=") (identifier "local_60")) (; ";")) (expression_statement "uVar2 = local_68;" (assignment_expression "uVar2 = local_68" (identifier "uVar2") (= "=") (identifier "local_68")) (; ";")) (if_statement "if (cVar4 != '\0') {\n    *param_7 = *param_7 | 2;\n  }" (if "if") (parenthesized_expression "(cVar4 != '\0')" (( "(") (binary_expression "cVar4 != '\0'" (identifier "cVar4") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    *param_7 = *param_7 | 2;\n  }" ({ "{") (expression_statement "*param_7 = *param_7 | 2;" (assignment_expression "*param_7 = *param_7 | 2" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (binary_expression "*param_7 | 2" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (| "|") (number_literal "2"))) (; ";")) (} "}"))) (if_statement "if (local_40[0] + -0x18 != PTR_DAT_0043dc38) {\n    FUN_002ea270(local_40[0] + -0x18,&local_4d);\n  }" (if "if") (parenthesized_expression "(local_40[0] + -0x18 != PTR_DAT_0043dc38)" (( "(") (binary_expression "local_40[0] + -0x18 != PTR_DAT_0043dc38" (binary_expression "local_40[0] + -0x18" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "-0x18")) (!= "!=") (identifier "PTR_DAT_0043dc38")) () ")")) (compound_statement "{\n    FUN_002ea270(local_40[0] + -0x18,&local_4d);\n  }" ({ "{") (expression_statement "FUN_002ea270(local_40[0] + -0x18,&local_4d);" (call_expression "FUN_002ea270(local_40[0] + -0x18,&local_4d)" (identifier "FUN_002ea270") (argument_list "(local_40[0] + -0x18,&local_4d)" (( "(") (binary_expression "local_40[0] + -0x18" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "-0x18")) (, ",") (pointer_expression "&local_4d" (& "&") (identifier "local_4d")) () ")"))) (; ";")) (} "}"))) (if_statement "if (local_48 + -0x18 != PTR_DAT_0043dc38) {\n    FUN_002ea270(local_48 + -0x18,&local_4d);\n  }" (if "if") (parenthesized_expression "(local_48 + -0x18 != PTR_DAT_0043dc38)" (( "(") (binary_expression "local_48 + -0x18 != PTR_DAT_0043dc38" (binary_expression "local_48 + -0x18" (identifier "local_48") (+ "+") (number_literal "-0x18")) (!= "!=") (identifier "PTR_DAT_0043dc38")) () ")")) (compound_statement "{\n    FUN_002ea270(local_48 + -0x18,&local_4d);\n  }" ({ "{") (expression_statement "FUN_002ea270(local_48 + -0x18,&local_4d);" (call_expression "FUN_002ea270(local_48 + -0x18,&local_4d)" (identifier "FUN_002ea270") (argument_list "(local_48 + -0x18,&local_4d)" (( "(") (binary_expression "local_48 + -0x18" (identifier "local_48") (+ "+") (number_literal "-0x18")) (, ",") (pointer_expression "&local_4d" (& "&") (identifier "local_4d")) () ")"))) (; ";")) (} "}"))) (expression_statement "auVar7._8_8_ = uVar3;" (assignment_expression "auVar7._8_8_ = uVar3" (field_expression "auVar7._8_8_" (identifier "auVar7") (. ".") (field_identifier "_8_8_")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "auVar7._0_8_ = uVar2;" (assignment_expression "auVar7._0_8_ = uVar2" (field_expression "auVar7._0_8_" (identifier "auVar7") (. ".") (field_identifier "_0_8_")) (= "=") (identifier "uVar2")) (; ";")) (return_statement "return auVar7;" (return "return") (identifier "auVar7") (; ";")) (ERROR "}" (} "}"))

/* WARNING: Removing unreachable block (ram,0x002f8bd1) */
/* WARNING: Removing unreachable block (ram,0x002f850c) */
/* WARNING: Removing unreachable block (ram,0x002f8520) */
/* WARNING: Removing unreachable block (ram,0x002f8525) */
/* WARNING: Removing unreachable block (ram,0x002f8e60) */
/* WARNING: Removing unreachable block (ram,0x002f8e6f) */
/* WARNING: Removing unreachable block (ram,0x002f84b8) */
/* WARNING: Removing unreachable block (ram,0x002f84c2) */
/* WARNING: Removing unreachable block (ram,0x002f8b70) */
/* WARNING: Removing unreachable block (ram,0x002f8533) */
/* WARNING: Removing unreachable block (ram,0x002f853c) */
/* WARNING: Removing unreachable block (ram,0x002f84d8) */
/* WARNING: Removing unreachable block (ram,0x002f84e0) */
/* WARNING: Removing unreachable block (ram,0x002f8484) */
/* WARNING: Removing unreachable block (ram,0x002f848f) */
/* WARNING: Removing unreachable block (ram,0x002f8a80) */
/* WARNING: Removing unreachable block (ram,0x002f8493) */
/* WARNING: Removing unreachable block (ram,0x002f84ec) */
/* WARNING: Removing unreachable block (ram,0x002f8501) */
/* WARNING: Removing unreachable block (ram,0x002f8b80) */
/* WARNING: Removing unreachable block (ram,0x002f8b8b) */
/* WARNING: Removing unreachable block (ram,0x002f8e0f) */
/* WARNING: Removing unreachable block (ram,0x002f8e2d) */
/* WARNING: Removing unreachable block (ram,0x002f8cb8) */
/* WARNING: Removing unreachable block (ram,0x002f89eb) */
/* WARNING: Removing unreachable block (ram,0x002f89fd) */
/* WARNING: Removing unreachable block (ram,0x002f8cc2) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */
/* std::istreambuf_iterator<char, std::char_traits<char> > std::money_get<char,
   std::istreambuf_iterator<char, std::char_traits<char> >
   >::_M_extract<true>(std::istreambuf_iterator<char, std::char_traits<char> >,
   std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&,
   std::string&) const */

type_4  [16]
std::money_get<var_2,var_10::type_8<var_2,var_10::var_1<var_2>>>::var_3<true>
          (type_2 param_1,type_2 param_2,type_2 param_3,type_2 param_4,
          type_2 param_5,long var_11,var_4 *var_5,var_6 *var_7)

{
  type_1 var_16;
  long var_17;
  type_2 uVar3;
  type_2 uVar4;
  char var_24;
  long var_14;
  type_3 var_19;
  type_4 auVar8 [16];
  type_2 *local_c0;
  type_2 local_78;
  type_2 local_70;
  type_2 var_27;
  type_2 local_60;
  var_12<var_10::var_8<var_2,true>> local_4e [2];
  type_5 local_4c;
  type_4 *var_21;
  type_4 *local_40 [2];
  
  local_78 = param_4;
  local_70 = param_5;
  var_27 = param_2;
  local_60 = param_3;
  var_9<var_10::ctype<var_2>>((type_6 *)(var_11 + 0xd0));
  var_14 = var_12<var_10::var_8<var_2,true>>::var_13()
                    (local_4e,(type_6 *)(var_11 + 0xd0));
  var_21 = &DAT_0044a558;
  if (*(char *)(var_14 + 0x20) != '\0') {
                    /* try { // try from 002f83ad to 002f83b1 has its CatchHandler @ 002f8ef5 */
    std::string::var_15((var_6 *)&var_21,0x20);
  }
  local_40[0] = &DAT_0044a558;
                    /* try { // try from 002f83da to 002f8e65 has its CatchHandler @ 002f8ef0 */
  std::string::var_15((var_6 *)local_40,0x20);
  local_4c = *(type_5 *)(var_14 + 0x60);
  var_17 = 0;
  var_16 = (type_1)local_4c;
  while( true ) {
    if (var_16 < 5) {
                    /* WARNING: Could not recover jumptable at 0x002f845a. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      auVar8 = (*(type_7 *)(&DAT_003913fc +
                         *(int *)(&DAT_003913fc + (type_3)*(type_1 *)((long)&local_4c + var_17) * 4)))()
      ;
      return auVar8;
    }
    if (3 < (int)var_17 + 1) break;
    var_16 = *(type_1 *)((long)&local_4c + var_17 + 1);
    var_17 = var_17 + 1;
  }
  if ((1 < *(type_3 *)(local_40[0] + -0x18)) &&
     (var_19 = var_10::var_6::var_18((var_6 *)local_40,'0',0), var_19 != 0)) {
    if (var_19 == 0xffffffffffffffff) {
      var_19 = *(long *)(local_40[0] + -0x18) - 1;
    }
    std::string::var_20((var_6 *)local_40,0,var_19);
  }
  if (*(long *)(var_21 + -0x18) != 0) {
    std::string::var_22((var_6 *)&var_21,'\0');
    var_24 = var_23(*(char **)(var_14 + 0x10),*(type_3 *)(var_14 + 0x18),(var_6 *)&var_21)
    ;
    if (var_24 == '\0') {
      *var_5 = *var_5 | 4;
    }
  }
  std::string::var_25(var_7,(var_6 *)local_40);
  local_c0 = &local_78;
  var_24 = type_8<var_2,var_10::var_1<var_2>>::var_26
                    ((type_8<var_2,var_10::var_1<var_2>> *)&var_27,
                     (type_8 *)local_c0);
  uVar4 = local_60;
  uVar3 = var_27;
  if (var_24 != '\0') {
    *var_5 = *var_5 | 2;
  }
  if ((type_9 *)(local_40[0] + -0x18) != (type_9 *)PTR__S_empty_rep_storage_0043dc38) {
    std::string::_Rep::var_28((type_9 *)(local_40[0] + -0x18));
  }
  if ((type_9 *)(var_21 + -0x18) != (type_9 *)PTR__S_empty_rep_storage_0043dc38) {
    std::string::_Rep::var_28((type_9 *)(var_21 + -0x18));
  }
  auVar8._8_8_ = uVar4;
  auVar8._0_8_ = uVar3;
  return auVar8;
}


(translation_unit (expression_statement (subscript_expression argument: (identifier) index: (number_literal)) (MISSING ";")) (declaration type: (macro_type_specifier name: (identifier) type: (type_descriptor type: (type_identifier)) (MISSING ")")) declarator: (identifier) declarator: (identifier) (ERROR (identifier)) declarator: (identifier) (ERROR (identifier)) declarator: (identifier) (ERROR (identifier)) declarator: (identifier) (ERROR (identifier)) (ERROR (identifier)) declarator: (identifier) (ERROR (identifier)) declarator: (pointer_declarator declarator: (identifier)) (ERROR (identifier) (identifier) (identifier)) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (array_declarator declarator: (identifier) size: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (identifier))))) right: (number_literal))))))))))) arguments: (argument_list)))) (return_statement (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal)))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)) (pointer_expression argument: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (pointer_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))) (return_statement (identifier)) (ERROR))

/* WARNING: Removing unreachable block (ram,0x002f8bd1) */
/* WARNING: Removing unreachable block (ram,0x002f850c) */
/* WARNING: Removing unreachable block (ram,0x002f8520) */
/* WARNING: Removing unreachable block (ram,0x002f8525) */
/* WARNING: Removing unreachable block (ram,0x002f8e60) */
/* WARNING: Removing unreachable block (ram,0x002f8e6f) */
/* WARNING: Removing unreachable block (ram,0x002f84b8) */
/* WARNING: Removing unreachable block (ram,0x002f84c2) */
/* WARNING: Removing unreachable block (ram,0x002f8b70) */
/* WARNING: Removing unreachable block (ram,0x002f8533) */
/* WARNING: Removing unreachable block (ram,0x002f853c) */
/* WARNING: Removing unreachable block (ram,0x002f84d8) */
/* WARNING: Removing unreachable block (ram,0x002f84e0) */
/* WARNING: Removing unreachable block (ram,0x002f8484) */
/* WARNING: Removing unreachable block (ram,0x002f848f) */
/* WARNING: Removing unreachable block (ram,0x002f8a80) */
/* WARNING: Removing unreachable block (ram,0x002f8493) */
/* WARNING: Removing unreachable block (ram,0x002f84ec) */
/* WARNING: Removing unreachable block (ram,0x002f8501) */
/* WARNING: Removing unreachable block (ram,0x002f8b80) */
/* WARNING: Removing unreachable block (ram,0x002f8b8b) */
/* WARNING: Removing unreachable block (ram,0x002f8e0f) */
/* WARNING: Removing unreachable block (ram,0x002f8e2d) */
/* WARNING: Removing unreachable block (ram,0x002f8cb8) */
/* WARNING: Removing unreachable block (ram,0x002f89eb) */
/* WARNING: Removing unreachable block (ram,0x002f89fd) */
/* WARNING: Removing unreachable block (ram,0x002f8cc2) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

undefined1  [16]
MASKED(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
            undefined8 param_5,long param_6,uint *param_7,undefined8 param_8)

{
  byte bVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  char cVar4;
  long lVar5;
  long lVar6;
  undefined1 auVar7 [16];
  undefined8 *local_c0;
  undefined8 local_78;
  undefined8 local_70;
  undefined8 local_68;
  undefined8 local_60;
  undefined1 local_4e;
  undefined1 local_4d;
  undefined4 local_4c;
  undefined1 *local_48;
  undefined1 *local_40 [2];
  
  local_78 = param_4;
  local_70 = param_5;
  local_68 = param_2;
  local_60 = param_3;
  FUN_002ec670(param_6 + 0xd0);
  lVar5 = FUN_002efb20(&local_4e,param_6 + 0xd0);
  local_48 = &DAT_0044a558;
  if (*(char *)(lVar5 + 0x20) != '\0') {
                    /* try { // try from 002f83ad to 002f83b1 has its CatchHandler @ 002f8ef5 */
    FUN_0030e7a0(&local_48,0x20);
  }
  local_40[0] = &DAT_0044a558;
                    /* try { // try from 002f83da to 002f8e65 has its CatchHandler @ 002f8ef0 */
  FUN_0030e7a0(local_40,0x20);
  local_4c = *(undefined4 *)(lVar5 + 0x60);
  lVar6 = 0;
  bVar1 = (byte)local_4c;
  while( true ) {
    if (bVar1 < 5) {
                    /* WARNING: Could not recover jumptable at 0x002f845a. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      auVar7 = (*(code *)(&DAT_003913fc +
                         *(int *)(&DAT_003913fc + (ulong)*(byte *)((long)&local_4c + lVar6) * 4)))()
      ;
      return auVar7;
    }
    if (3 < (int)lVar6 + 1) break;
    bVar1 = *(byte *)((long)&local_4c + lVar6 + 1);
    lVar6 = lVar6 + 1;
  }
  if ((1 < *(ulong *)(local_40[0] + -0x18)) && (lVar6 = FUN_0030d360(local_40,0x30,0), lVar6 != 0))
  {
    if (lVar6 == -1) {
      lVar6 = *(long *)(local_40[0] + -0x18) + -1;
    }
    FUN_0030dfe0(local_40,0,lVar6);
  }
  if (*(long *)(local_48 + -0x18) != 0) {
    FUN_0030ec80(&local_48,0);
    cVar4 = FUN_00323270(*(undefined8 *)(lVar5 + 0x10),*(undefined8 *)(lVar5 + 0x18),&local_48);
    if (cVar4 == '\0') {
      *param_7 = *param_7 | 4;
    }
  }
  FUN_0030ce20(param_8,local_40);
  local_c0 = &local_78;
  cVar4 = FUN_002f12b0(&local_68,local_c0);
  uVar3 = local_60;
  uVar2 = local_68;
  if (cVar4 != '\0') {
    *param_7 = *param_7 | 2;
  }
  if (local_40[0] + -0x18 != PTR_DAT_0043dc38) {
    FUN_002ea270(local_40[0] + -0x18,&local_4d);
  }
  if (local_48 + -0x18 != PTR_DAT_0043dc38) {
    FUN_002ea270(local_48 + -0x18,&local_4d);
  }
  auVar7._8_8_ = uVar3;
  auVar7._0_8_ = uVar2;
  return auVar7;
}

