
/* WARNING: Removing unreachable block (ram,0x0031c041) */
/* WARNING: Removing unreachable block (ram,0x0031c04e) */
/* WARNING: Removing unreachable block (ram,0x0031b676) */
/* WARNING: Removing unreachable block (ram,0x0031b67f) */
/* WARNING: Removing unreachable block (ram,0x0031bf50) */
/* WARNING: Removing unreachable block (ram,0x0031c464) */
/* WARNING: Removing unreachable block (ram,0x0031c55a) */
/* WARNING: Removing unreachable block (ram,0x0031c473) */
/* WARNING: Removing unreachable block (ram,0x0031bf5e) */
/* WARNING: Removing unreachable block (ram,0x0031bf70) */
/* WARNING: Removing unreachable block (ram,0x0031b69e) */
/* WARNING: Removing unreachable block (ram,0x0031b6ac) */
/* WARNING: Removing unreachable block (ram,0x0031b6ba) */
/* WARNING: Removing unreachable block (ram,0x0031c010) */
/* WARNING: Removing unreachable block (ram,0x0031b6c2) */
/* WARNING: Removing unreachable block (ram,0x0031b60c) */
/* WARNING: Removing unreachable block (ram,0x0031b617) */
/* WARNING: Removing unreachable block (ram,0x0031bdf8) */
/* WARNING: Removing unreachable block (ram,0x0031b61f) */
/* WARNING: Removing unreachable block (ram,0x0031b638) */
/* WARNING: Removing unreachable block (ram,0x0031bf20) */
/* WARNING: Removing unreachable block (ram,0x0031bf30) */
/* WARNING: Removing unreachable block (ram,0x0031bf3f) */
/* WARNING: Removing unreachable block (ram,0x0031b64f) */
/* WARNING: Removing unreachable block (ram,0x0031b661) */
/* WARNING: Removing unreachable block (ram,0x0031b669) */
/* WARNING: Removing unreachable block (ram,0x0031bdc0) */
/* WARNING: Removing unreachable block (ram,0x0031bdce) */
/* WARNING: Removing unreachable block (ram,0x0031bde5) */
/* WARNING: Removing unreachable block (ram,0x0031b66b) */
/* WARNING: Removing unreachable block (ram,0x0031c020) */
/* WARNING: Removing unreachable block (ram,0x0031c02b) */
/* WARNING: Removing unreachable block (ram,0x0031c0f3) */
/* WARNING: Removing unreachable block (ram,0x0031bc3c) */
/* WARNING: Removing unreachable block (ram,0x0031bc41) */
/* WARNING: Removing unreachable block (ram,0x0031bc52) */
/* 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<false>(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<false>
          (undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,int param_5,
          long param_6,uint *param_7,string *param_8)

{
  long *plVar1;
  byte bVar2;
  long lVar3;
  bool bVar4;
  char cVar5;
  int iVar6;
  ulong uVar7;
  __moneypunct_cache<char,false> *this;
  ulong uVar8;
  ulong uVar9;
  bool bVar10;
  long lVar11;
  bool bVar12;
  undefined1 auVar13 [16];
  long *local_98;
  int local_90;
  undefined4 local_7c;
  undefined1 *local_78;
  ulong local_70;
  undefined1 local_68;
  undefined7 uStack_67;
  undefined1 *local_58;
  ulong local_50;
  undefined1 local_48 [24];
  
  use_facet<std::ctype<char>>((locale *)(param_6 + 0xd0));
  uVar7 = locale::id::_M_id((id *)&moneypunct<char,false>::id);
  plVar1 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + uVar7 * 8);
  lVar11 = *plVar1;
  if (lVar11 == 0) {
                    /* try { // try from 0031c2e5 to 0031c2e9 has its CatchHandler @ 0031c576 */
    this = (__moneypunct_cache<char,false> *)operator_new(0x70);
    *(undefined4 *)(this + 8) = 0;
    *(undefined8 *)(this + 0x10) = 0;
    *(undefined8 *)(this + 0x18) = 0;
    *(undefined2 *)(this + 0x20) = 0;
    *(undefined ***)this = &PTR____moneypunct_cache_003f3258;
    this[0x22] = (__moneypunct_cache<char,false>)0x0;
    *(undefined8 *)(this + 0x28) = 0;
    *(undefined8 *)(this + 0x30) = 0;
    *(undefined8 *)(this + 0x38) = 0;
    *(undefined8 *)(this + 0x40) = 0;
    *(undefined8 *)(this + 0x48) = 0;
    *(undefined8 *)(this + 0x50) = 0;
    *(undefined8 *)(this + 0x58) = 0;
    *(undefined4 *)(this + 0x60) = 0;
    this[0x6f] = (__moneypunct_cache<char,false>)0x0;
                    /* try { // try from 0031c365 to 0031c369 has its CatchHandler @ 0031c56f */
    __moneypunct_cache<char,false>::_M_cache(this,(locale *)(param_6 + 0xd0));
    locale::_Impl::_M_install_cache(*(_Impl **)(param_6 + 0xd0),(facet *)this,uVar7);
    lVar11 = *plVar1;
  }
  local_70 = 0;
  local_78 = &local_68;
  local_68 = 0;
  if (*(char *)(lVar11 + 0x20) != '\0') {
                    /* try { // try from 0031b536 to 0031b53a has its CatchHandler @ 0031c571 */
    std::string::reserve((string *)&local_78,0x20);
  }
  local_50 = 0;
  local_58 = local_48;
  local_48[0] = 0;
                    /* try { // try from 0031b56d to 0031c2c4 has its CatchHandler @ 0031c56a */
  std::string::reserve((string *)&local_58,0x20);
  local_7c = *(undefined4 *)(lVar11 + 0x60);
  lVar3 = 0;
  bVar2 = (byte)local_7c;
  while( true ) {
    if (bVar2 < 5) {
                    /* WARNING: Could not recover jumptable at 0x0031b5df. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      auVar13 = (*(code *)(&DAT_0035ec68 +
                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4)))
                          ();
      return auVar13;
    }
    if (3 < (int)lVar3 + 1) break;
    bVar2 = *(byte *)((long)&local_7c + lVar3 + 1);
    lVar3 = lVar3 + 1;
  }
  if ((local_50 < 2) ||
     (uVar7 = std::string::find_first_not_of((string *)&local_58,'0',0), uVar7 == 0))
  goto LAB_0031c03a;
  if (uVar7 == 0xffffffffffffffff) {
    uVar7 = local_50 - 1;
    if (uVar7 == 0xffffffffffffffff) {
      *local_58 = 0;
      goto LAB_0031c03a;
    }
    if (uVar7 == 0) goto LAB_0031c03a;
  }
  uVar8 = local_50;
  if (uVar7 < local_50) {
    uVar8 = uVar7;
  }
  std::string::_M_erase((string *)&local_58,0,uVar8);
LAB_0031c03a:
  uVar7 = local_70;
  if (local_70 != 0) {
    uVar8 = local_70 + 1;
    if (local_78 == &local_68) {
      uVar9 = 0xf;
    }
    else {
      uVar9 = CONCAT71(uStack_67,local_68);
    }
    if (uVar9 < uVar8) {
      std::string::_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1);
    }
    local_78[uVar7] = 0;
    local_78[uVar7 + 1] = 0;
    local_70 = uVar8;
    cVar5 = __verify_grouping(*(char **)(lVar11 + 0x10),*(ulong *)(lVar11 + 0x18),
                              (string *)&local_78);
    if (cVar5 == '\0') {
      *param_7 = *param_7 | 4;
    }
  }
  std::string::swap(param_8,(string *)&local_58);
  local_90 = (int)param_3;
  bVar12 = local_90 == -1;
  bVar10 = param_2 != (long *)0x0 && bVar12;
  local_98 = param_2;
  if (((param_2 != (long *)0x0 && bVar12) &&
      (bVar12 = false, (ulong)param_2[3] <= (ulong)param_2[2])) &&
     (iVar6 = (**(code **)(*param_2 + 0x48))(), iVar6 == -1)) {
    local_98 = (long *)0x0;
    bVar12 = bVar10;
  }
  bVar4 = param_4 != (long *)0x0 && param_5 == -1;
  bVar10 = param_5 == -1;
  if ((bVar4) && (bVar10 = false, (ulong)param_4[3] <= (ulong)param_4[2])) {
    iVar6 = (**(code **)(*param_4 + 0x48))();
    bVar10 = false;
    if (iVar6 == -1) {
      bVar10 = bVar4;
    }
  }
  if (bVar10 == bVar12) {
    *param_7 = *param_7 | 2;
  }
  if (local_58 != local_48) {
    operator_delete(local_58);
  }
  if (local_78 != &local_68) {
    operator_delete(local_78);
  }
  auVar13._8_8_ = param_3;
  auVar13._0_8_ = local_98;
  return auVar13;
}



/* WARNING: Removing unreachable block (ram,0x0031c041) */
/* WARNING: Removing unreachable block (ram,0x0031c04e) */
/* WARNING: Removing unreachable block (ram,0x0031b676) */
/* WARNING: Removing unreachable block (ram,0x0031b67f) */
/* WARNING: Removing unreachable block (ram,0x0031bf50) */
/* WARNING: Removing unreachable block (ram,0x0031c464) */
/* WARNING: Removing unreachable block (ram,0x0031c55a) */
/* WARNING: Removing unreachable block (ram,0x0031c473) */
/* WARNING: Removing unreachable block (ram,0x0031bf5e) */
/* WARNING: Removing unreachable block (ram,0x0031bf70) */
/* WARNING: Removing unreachable block (ram,0x0031b69e) */
/* WARNING: Removing unreachable block (ram,0x0031b6ac) */
/* WARNING: Removing unreachable block (ram,0x0031b6ba) */
/* WARNING: Removing unreachable block (ram,0x0031c010) */
/* WARNING: Removing unreachable block (ram,0x0031b6c2) */
/* WARNING: Removing unreachable block (ram,0x0031b60c) */
/* WARNING: Removing unreachable block (ram,0x0031b617) */
/* WARNING: Removing unreachable block (ram,0x0031bdf8) */
/* WARNING: Removing unreachable block (ram,0x0031b61f) */
/* WARNING: Removing unreachable block (ram,0x0031b638) */
/* WARNING: Removing unreachable block (ram,0x0031bf20) */
/* WARNING: Removing unreachable block (ram,0x0031bf30) */
/* WARNING: Removing unreachable block (ram,0x0031bf3f) */
/* WARNING: Removing unreachable block (ram,0x0031b64f) */
/* WARNING: Removing unreachable block (ram,0x0031b661) */
/* WARNING: Removing unreachable block (ram,0x0031b669) */
/* WARNING: Removing unreachable block (ram,0x0031bdc0) */
/* WARNING: Removing unreachable block (ram,0x0031bdce) */
/* WARNING: Removing unreachable block (ram,0x0031bde5) */
/* WARNING: Removing unreachable block (ram,0x0031b66b) */
/* WARNING: Removing unreachable block (ram,0x0031c020) */
/* WARNING: Removing unreachable block (ram,0x0031c02b) */
/* WARNING: Removing unreachable block (ram,0x0031c0f3) */
/* WARNING: Removing unreachable block (ram,0x0031bc3c) */
/* WARNING: Removing unreachable block (ram,0x0031bc41) */
/* WARNING: Removing unreachable block (ram,0x0031bc52) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

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

{
  long *plVar1;
  byte bVar2;
  bool bVar3;
  char cVar4;
  int iVar5;
  long lVar6;
  ulong uVar7;
  undefined8 *puVar8;
  ulong uVar9;
  ulong uVar10;
  bool bVar11;
  long lVar12;
  bool bVar13;
  undefined1 auVar14 [16];
  long *local_98;
  int local_90;
  undefined4 local_7c;
  undefined1 *local_78;
  ulong local_70;
  undefined1 local_68;
  undefined7 uStack_67;
  undefined1 *local_58;
  ulong local_50;
  undefined1 local_48 [24];
  
  FUN_002b4380(param_6 + 0xd0);
  lVar6 = FUN_002a50c0(&DAT_00405ef0);
  plVar1 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar6 * 8);
  lVar12 = *plVar1;
  if (lVar12 == 0) {
                    /* try { // try from 0031c2e5 to 0031c2e9 has its CatchHandler @ 0031c576 */
    puVar8 = (undefined8 *)FUN_002a11b0(0x70);
    *(undefined4 *)(puVar8 + 1) = 0;
    puVar8[2] = 0;
    puVar8[3] = 0;
    *(undefined2 *)(puVar8 + 4) = 0;
    *puVar8 = &PTR_FUN_003f3258;
    *(undefined1 *)((long)puVar8 + 0x22) = 0;
    puVar8[5] = 0;
    puVar8[6] = 0;
    puVar8[7] = 0;
    puVar8[8] = 0;
    puVar8[9] = 0;
    puVar8[10] = 0;
    puVar8[0xb] = 0;
    *(undefined4 *)(puVar8 + 0xc) = 0;
    *(undefined1 *)((long)puVar8 + 0x6f) = 0;
                    /* try { // try from 0031c365 to 0031c369 has its CatchHandler @ 0031c56f */
    FUN_002b55a0(puVar8,param_6 + 0xd0);
    FUN_002a5530(*(undefined8 *)(param_6 + 0xd0),puVar8,lVar6);
    lVar12 = *plVar1;
  }
  local_70 = 0;
  local_78 = &local_68;
  local_68 = 0;
  if (*(char *)(lVar12 + 0x20) != '\0') {
                    /* try { // try from 0031b536 to 0031b53a has its CatchHandler @ 0031c571 */
    FUN_002a9b20(&local_78,0x20);
  }
  local_50 = 0;
  local_58 = local_48;
  local_48[0] = 0;
                    /* try { // try from 0031b56d to 0031c2c4 has its CatchHandler @ 0031c56a */
  FUN_002a9b20(&local_58,0x20);
  local_7c = *(undefined4 *)(lVar12 + 0x60);
  lVar6 = 0;
  bVar2 = (byte)local_7c;
  while( true ) {
    if (bVar2 < 5) {
                    /* WARNING: Could not recover jumptable at 0x0031b5df. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      auVar14 = (*(code *)(&DAT_0035ec68 +
                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)))
                          ();
      return auVar14;
    }
    if (3 < (int)lVar6 + 1) break;
    bVar2 = *(byte *)((long)&local_7c + lVar6 + 1);
    lVar6 = lVar6 + 1;
  }
  if ((local_50 < 2) || (uVar7 = FUN_002ab490(&local_58,0x30,0), uVar7 == 0)) goto LAB_0031c03a;
  if (uVar7 == 0xffffffffffffffff) {
    uVar7 = local_50 - 1;
    if (uVar7 == 0xffffffffffffffff) {
      *local_58 = 0;
      goto LAB_0031c03a;
    }
    if (uVar7 == 0) goto LAB_0031c03a;
  }
  uVar9 = local_50;
  if (uVar7 < local_50) {
    uVar9 = uVar7;
  }
  FUN_002a97b0(&local_58,0,uVar9);
LAB_0031c03a:
  uVar7 = local_70;
  if (local_70 != 0) {
    uVar9 = local_70 + 1;
    if (local_78 == &local_68) {
      uVar10 = 0xf;
    }
    else {
      uVar10 = CONCAT71(uStack_67,local_68);
    }
    if (uVar10 < uVar9) {
      FUN_002a9670(&local_78,local_70,0,0,1);
    }
    local_78[uVar7] = 0;
    local_78[uVar7 + 1] = 0;
    local_70 = uVar9;
    cVar4 = FUN_0032d0e0(*(undefined8 *)(lVar12 + 0x10),*(undefined8 *)(lVar12 + 0x18),&local_78);
    if (cVar4 == '\0') {
      *param_7 = *param_7 | 4;
    }
  }
  FUN_002aae90(param_8,&local_58);
  local_90 = (int)param_3;
  bVar13 = local_90 == -1;
  bVar11 = param_2 != (long *)0x0 && bVar13;
  local_98 = param_2;
  if (((param_2 != (long *)0x0 && bVar13) &&
      (bVar13 = false, (ulong)param_2[3] <= (ulong)param_2[2])) &&
     (iVar5 = (**(code **)(*param_2 + 0x48))(), iVar5 == -1)) {
    local_98 = (long *)0x0;
    bVar13 = bVar11;
  }
  bVar3 = param_4 != (long *)0x0 && param_5 == -1;
  bVar11 = param_5 == -1;
  if ((bVar3) && (bVar11 = false, (ulong)param_4[3] <= (ulong)param_4[2])) {
    iVar5 = (**(code **)(*param_4 + 0x48))();
    bVar11 = false;
    if (iVar5 == -1) {
      bVar11 = bVar3;
    }
  }
  if (bVar11 == bVar13) {
    *param_7 = *param_7 | 2;
  }
  if (local_58 != local_48) {
    FUN_002a2980();
  }
  if (local_78 != &local_68) {
    FUN_002a2980();
  }
  auVar14._8_8_ = param_3;
  auVar14._0_8_ = local_98;
  return auVar14;
}


PUSH R15
PUSH R14
PUSH R13
LEA R13,[R9 + 0xd0]
PUSH R12
MOV RDI,R13
PUSH RBP
PUSH RBX
MOV RBX,R9
SUB RSP,0xd8
MOV qword ptr [RSP + 0x70],RSI
MOV qword ptr [RSP + 0x78],RDX
MOV qword ptr [RSP + 0x60],RCX
MOV qword ptr [RSP + 0x68],R8
MOV qword ptr [RSP + 0x48],R9
CALL 0x002b4380
LEA RDI,[0x405ef0]
MOV qword ptr [RSP + 0x30],RAX
CALL 0x002a50c0
MOV R12,RAX
MOV RAX,qword ptr [RBX + 0xd0]
MOV RAX,qword ptr [RAX + 0x18]
LEA RBP,[RAX + R12*0x8]
MOV RBX,qword ptr [RBP]
TEST RBX,RBX
JZ 0x0031c2e0
LEA RAX,[RBX + 0x64]
CMP qword ptr [RBX + 0x40],0x0
MOV qword ptr [RSP + 0x20],RAX
JNZ 0x0031bdb0
MOV byte ptr [RSP + 0x57],0x0
LEA RAX,[RSP + 0x90]
CMP byte ptr [RBX + 0x20],0x0
MOV qword ptr [RSP + 0x98],0x0
MOV qword ptr [RSP + 0x18],RAX
LEA RAX,[RSP + 0xa0]
MOV qword ptr [RSP + 0x90],RAX
MOV byte ptr [RSP + 0xa0],0x0
JZ 0x0031b53b
MOV RDI,qword ptr [RSP + 0x18]
MOV ESI,0x20
CALL 0x002a9b20
LEA RDI,[RSP + 0xb0]
MOV ESI,0x20
MOV qword ptr [RSP + 0xb8],0x0
LEA RAX,[RDI + 0x10]
MOV qword ptr [RSP + 0x10],RDI
MOV qword ptr [RSP + 0xb0],RAX
MOV byte ptr [RSP + 0xc0],0x0
CALL 0x002a9b20
LEA RAX,[RBX + 0x65]
XOR R14D,R14D
XOR R15D,R15D
MOV byte ptr [RSP + 0x55],0x0
MOV qword ptr [RSP],RAX
MOV EAX,dword ptr [RBX + 0x60]
MOV dword ptr [RSP + 0x50],0x0
MOV dword ptr [RSP + 0x8c],EAX
LEA RAX,[RSP + 0x8c]
MOV qword ptr [RSP + 0x38],RAX
LEA RAX,[RSP + 0x60]
MOV qword ptr [RSP + 0x58],RAX
MOV RAX,qword ptr [RSP + 0x38]
MOV qword ptr [RSP + 0x28],0x0
CMP byte ptr [RAX + R14*0x1],0x4
MOV byte ptr [RSP + 0x56],0x0
JA 0x0031bd68
MOVZX EAX,byte ptr [RAX + R14*0x1]
LEA RCX,[0x35ec68]
MOVSXD RAX,dword ptr [RCX + RAX*0x4]
ADD RAX,RCX
JMP RAX
CMP qword ptr [RSP + 0x28],0x1
SETA AL
AND EAX,R12D
TEST AL,AL
JZ 0x0031c390
CMP byte ptr [RSP + 0x56],0x0
JNZ 0x0031bdf8
MOV RAX,qword ptr [RBX + 0x38]
MOV qword ptr [RSP],RAX
MOV EAX,dword ptr [RSP + 0x78]
MOV RDI,qword ptr [RSP + 0x70]
MOV R13D,0x1
MOV R14D,0xffffffff
NOP dword ptr [RAX]
CMP EAX,-0x1
SETZ BPL
TEST RDI,RDI
SETNZ R12B
AND R12B,BPL
JNZ 0x0031bf20
MOV RDI,qword ptr [RSP + 0x60]
CMP dword ptr [RSP + 0x68],-0x1
SETZ AL
TEST RDI,RDI
JZ 0x0031b669
TEST AL,AL
JNZ 0x0031bdc0
XOR EBP,EAX
CMP R13,qword ptr [RSP + 0x28]
JNC 0x0031c020
TEST BPL,BPL
JZ 0x0031c020
MOV RDI,qword ptr [RSP + 0x70]
MOV EAX,dword ptr [RSP + 0x78]
TEST RDI,RDI
SETNZ BPL
CMP EAX,-0x1
SETZ DL
AND BPL,DL
JNZ 0x0031bf50
MOV RSI,qword ptr [RSP]
CMP byte ptr [RSI + R13*0x1],AL
JNZ 0x0031bc41
MOV RAX,qword ptr [RDI + 0x10]
CMP RAX,qword ptr [RDI + 0x18]
JNC 0x0031c010
ADD RAX,0x1
MOV qword ptr [RDI + 0x10],RAX
MOV dword ptr [RSP + 0x78],R14D
ADD R13,0x1
MOV EAX,R14D
JMP 0x0031b638
MOV RDI,qword ptr [RSP + 0x70]
CMP dword ptr [RSP + 0x78],-0x1
SETZ BPL
TEST RDI,RDI
SETNZ BL
AND EBX,EBP
MOV RAX,qword ptr [RSP + 0x110]
OR dword ptr [RAX],0x4
TEST BL,BL
JNZ 0x0031c12d
MOV RDI,qword ptr [RSP + 0x60]
CMP dword ptr [RSP + 0x68],-0x1
SETZ DL
TEST RDI,RDI
SETNZ AL
AND AL,DL
MOV EBX,EAX
JNZ 0x0031c1e0
CMP DL,BPL
JNZ 0x0031bc92
MOV RAX,qword ptr [RSP + 0x110]
OR dword ptr [RAX],0x2
MOV RCX,qword ptr [RSP + 0x10]
MOV RDI,qword ptr [RSP + 0xb0]
MOV RAX,qword ptr [RSP + 0x70]
MOV RDX,qword ptr [RSP + 0x78]
ADD RCX,0x10
CMP RDI,RCX
JZ 0x0031bcc9
MOV qword ptr [RSP],RAX
MOV qword ptr [RSP + 0x8],RDX
CALL 0x002a2980
MOV RAX,qword ptr [RSP]
MOV RDX,qword ptr [RSP + 0x8]
MOV RCX,qword ptr [RSP + 0x18]
MOV RDI,qword ptr [RSP + 0x90]
ADD RCX,0x10
CMP RDI,RCX
JZ 0x0031bcf6
MOV qword ptr [RSP],RAX
MOV qword ptr [RSP + 0x8],RDX
CALL 0x002a2980
MOV RAX,qword ptr [RSP]
MOV RDX,qword ptr [RSP + 0x8]
ADD RSP,0xd8
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
LEA EAX,[R14 + 0x1]
CMP EAX,0x3
JG 0x0031b5f8
TEST BPL,BPL
JNZ 0x0031b5f8
MOV RAX,qword ptr [RSP + 0x38]
ADD R14,0x1
CMP byte ptr [RAX + R14*0x1],0x4
JBE 0x0031b5cc
XOR EBP,EBP
MOV R12D,0x1
JMP 0x0031bd3e
CMP qword ptr [RBX + 0x50],0x0
SETNZ byte ptr [RSP + 0x57]
JMP 0x0031b4f5
MOV RAX,qword ptr [RDI + 0x18]
CMP qword ptr [RDI + 0x10],RAX
JC 0x0031b66b
MOV RAX,qword ptr [RDI]
CALL qword ptr [RAX + 0x48]
CMP EAX,-0x1
SETZ DL
XOR EBP,EDX
CMP EAX,-0x1
JNZ 0x0031b66b
MOV qword ptr [RSP + 0x60],0x0
JMP 0x0031b66b
MOV RAX,qword ptr [RBX + 0x48]
MOV qword ptr [RSP],RAX
JMP 0x0031b61f
XOR EBP,EBP
MOV RAX,qword ptr [RDI + 0x18]
CMP qword ptr [RDI + 0x10],RAX
JC 0x0031b64f
MOV RAX,qword ptr [RDI]
CALL qword ptr [RAX + 0x48]
CMP EAX,-0x1
JNZ 0x0031b64f
MOV qword ptr [RSP + 0x70],0x0
MOV EBP,R12D
JMP 0x0031b64f
MOV RAX,qword ptr [RDI + 0x10]
CMP RAX,qword ptr [RDI + 0x18]
JNC 0x0031c464
MOV RSI,qword ptr [RSP]
MOVZX ESI,byte ptr [RSI + R13*0x1]
CMP byte ptr [RAX],SIL
JZ 0x0031b6ba
MOV EBX,EBP
JMP 0x0031bc52
MOV RAX,qword ptr [RDI]
CALL qword ptr [RAX + 0x50]
MOV RDI,qword ptr [RSP + 0x70]
JMP 0x0031b6c2
CMP R13,qword ptr [RSP + 0x28]
JNZ 0x0031bc3c
CMP qword ptr [RSP + 0xb8],0x1
JA 0x0031c218
CMP byte ptr [RSP + 0x56],0x0
JZ 0x0031c067
MOV RAX,qword ptr [RSP + 0xb0]
CMP byte ptr [RAX],0x30
JZ 0x0031c067
MOV RDI,qword ptr [RSP + 0x10]
MOV R8D,0x2d
XOR EDX,EDX
XOR ESI,ESI
MOV ECX,0x1
CALL 0x002aa010
MOV RBP,qword ptr [RSP + 0x98]
TEST RBP,RBP
JZ 0x0031c0ec
MOV RSI,qword ptr [RSP + 0x18]
MOVZX R13D,byte ptr [RSP + 0x50]
LEA R12,[RBP + 0x1]
MOV RAX,qword ptr [RSP + 0x90]
CMP byte ptr [RSP + 0x55],0x0
LEA RDX,[RSI + 0x10]
CMOVZ R13D,R15D
CMP RAX,RDX
JZ 0x0031c540
MOV RDX,qword ptr [RSP + 0xa0]
CMP R12,RDX
JA 0x0031c4ad
MOV byte ptr [RAX + RBP*0x1],R13B
MOV RAX,qword ptr [RSP + 0x90]
MOV qword ptr [RSP + 0x98],R12
MOV RDX,qword ptr [RSP + 0x18]
MOV byte ptr [RAX + RBP*0x1 + 0x1],0x0
MOV RSI,qword ptr [RBX + 0x18]
MOV RDI,qword ptr [RBX + 0x10]
CALL 0x0032d0e0
TEST AL,AL
JNZ 0x0031c0ec
MOV RAX,qword ptr [RSP + 0x110]
OR dword ptr [RAX],0x4
CMP byte ptr [RSP + 0x55],0x0
JZ 0x0031c0fd
CMP dword ptr [RBX + 0x58],R15D
JNZ 0x0031bc3c
MOV RDI,qword ptr [RSP + 0x118]
MOV RSI,qword ptr [RSP + 0x10]
CALL 0x002aae90
MOV RDI,qword ptr [RSP + 0x70]
CMP dword ptr [RSP + 0x78],-0x1
SETZ BPL
TEST RDI,RDI
SETNZ BL
AND EBX,EBP
TEST BL,BL
JZ 0x0031bc65
XOR EBP,EBP
MOV RAX,qword ptr [RDI + 0x18]
CMP qword ptr [RDI + 0x10],RAX
JC 0x0031bc65
MOV RAX,qword ptr [RDI]
CALL qword ptr [RAX + 0x48]
CMP EAX,-0x1
JNZ 0x0031bc65
MOV qword ptr [RSP + 0x70],0x0
MOV EBP,EBX
JMP 0x0031bc65
XOR EDX,EDX
MOV RAX,qword ptr [RDI + 0x18]
CMP qword ptr [RDI + 0x10],RAX
JC 0x0031bc82
MOV RAX,qword ptr [RDI]
CALL qword ptr [RAX + 0x48]
XOR EDX,EDX
CMP EAX,-0x1
JNZ 0x0031bc82
MOV qword ptr [RSP + 0x60],0x0
MOV EDX,EBX
JMP 0x0031bc82
MOV RDI,qword ptr [RSP + 0x10]
XOR EDX,EDX
MOV ESI,0x30
CALL 0x002ab490
TEST RAX,RAX
JZ 0x0031c03a
MOV RDX,qword ptr [RSP + 0xb8]
CMP RAX,-0x1
JZ 0x0031c4f7
CMP RDX,RAX
MOV RDI,qword ptr [RSP + 0x10]
CMOVA RDX,RAX
XOR ESI,ESI
CALL 0x002a97b0
JMP 0x0031c03a
MOV EDI,0x70
CALL 0x002a11b0
MOV RBX,RAX
MOV dword ptr [RAX + 0x8],0x0
XOR EDX,EDX
MOV RSI,R13
LEA RAX,[0x3f3248]
MOV qword ptr [RBX + 0x10],0x0
MOV RDI,RBX
MOV qword ptr [RBX + 0x18],0x0
ADD RAX,0x10
MOV word ptr [RBX + 0x20],DX
MOV qword ptr [RBX],RAX
MOV byte ptr [RBX + 0x22],0x0
MOV qword ptr [RBX + 0x28],0x0
MOV qword ptr [RBX + 0x30],0x0
MOV qword ptr [RBX + 0x38],0x0
MOV qword ptr [RBX + 0x40],0x0
MOV qword ptr [RBX + 0x48],0x0
MOV qword ptr [RBX + 0x50],0x0
MOV qword ptr [RBX + 0x58],0x0
MOV dword ptr [RBX + 0x60],0x0
MOV byte ptr [RBX + 0x6f],0x0
CALL 0x002b55a0
MOV RAX,qword ptr [RSP + 0x48]
MOV RSI,RBX
MOV RDX,R12
MOV RDI,qword ptr [RAX + 0xd0]
CALL 0x002a5530
MOV RBX,qword ptr [RBP]
JMP 0x0031b4dc
TEST R12B,R12B
JZ 0x0031bc3c
CMP qword ptr [RSP + 0xb8],0x1
JBE 0x0031c03a
JMP 0x0031c218
MOV RAX,qword ptr [RDI]
CALL qword ptr [RAX + 0x48]
CMP EAX,-0x1
JZ 0x0031c55a
MOV RDI,qword ptr [RSP + 0x70]
JMP 0x0031b69e
MOV RDI,qword ptr [RSP + 0x18]
MOV R8D,0x1
XOR ECX,ECX
XOR EDX,EDX
MOV RSI,RBP
CALL 0x002a9670
MOV RAX,qword ptr [RSP + 0x90]
JMP 0x0031c0b2
LEA RAX,[RDX + -0x1]
CMP RAX,-0x1
JZ 0x0031c54a
TEST RAX,RAX
JZ 0x0031c03a
JMP 0x0031c244
MOV EDX,0xf
JMP 0x0031c0a9
MOV RAX,qword ptr [RSP + 0xb0]
MOV byte ptr [RAX],0x0
JMP 0x0031c03a
MOV qword ptr [RSP + 0x70],0x0
XOR EDI,EDI
JMP 0x0031b69e
(translation_unit "/* WARNING: Removing unreachable block (ram,0x0031c041) */\n/* WARNING: Removing unreachable block (ram,0x0031c04e) */\n/* WARNING: Removing unreachable block (ram,0x0031b676) */\n/* WARNING: Removing unreachable block (ram,0x0031b67f) */\n/* WARNING: Removing unreachable block (ram,0x0031bf50) */\n/* WARNING: Removing unreachable block (ram,0x0031c464) */\n/* WARNING: Removing unreachable block (ram,0x0031c55a) */\n/* WARNING: Removing unreachable block (ram,0x0031c473) */\n/* WARNING: Removing unreachable block (ram,0x0031bf5e) */\n/* WARNING: Removing unreachable block (ram,0x0031bf70) */\n/* WARNING: Removing unreachable block (ram,0x0031b69e) */\n/* WARNING: Removing unreachable block (ram,0x0031b6ac) */\n/* WARNING: Removing unreachable block (ram,0x0031b6ba) */\n/* WARNING: Removing unreachable block (ram,0x0031c010) */\n/* WARNING: Removing unreachable block (ram,0x0031b6c2) */\n/* WARNING: Removing unreachable block (ram,0x0031b60c) */\n/* WARNING: Removing unreachable block (ram,0x0031b617) */\n/* WARNING: Removing unreachable block (ram,0x0031bdf8) */\n/* WARNING: Removing unreachable block (ram,0x0031b61f) */\n/* WARNING: Removing unreachable block (ram,0x0031b638) */\n/* WARNING: Removing unreachable block (ram,0x0031bf20) */\n/* WARNING: Removing unreachable block (ram,0x0031bf30) */\n/* WARNING: Removing unreachable block (ram,0x0031bf3f) */\n/* WARNING: Removing unreachable block (ram,0x0031b64f) */\n/* WARNING: Removing unreachable block (ram,0x0031b661) */\n/* WARNING: Removing unreachable block (ram,0x0031b669) */\n/* WARNING: Removing unreachable block (ram,0x0031bdc0) */\n/* WARNING: Removing unreachable block (ram,0x0031bdce) */\n/* WARNING: Removing unreachable block (ram,0x0031bde5) */\n/* WARNING: Removing unreachable block (ram,0x0031b66b) */\n/* WARNING: Removing unreachable block (ram,0x0031c020) */\n/* WARNING: Removing unreachable block (ram,0x0031c02b) */\n/* WARNING: Removing unreachable block (ram,0x0031c0f3) */\n/* WARNING: Removing unreachable block (ram,0x0031bc3c) */\n/* WARNING: Removing unreachable block (ram,0x0031bc41) */\n/* WARNING: Removing unreachable block (ram,0x0031bc52) */\n/* WARNING: Restarted to delay deadcode elimination for space: stack */\n\nundefined1  [16]\nFUN_0031b470(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,int param_5,\n            long param_6,uint *param_7,undefined8 param_8)\n\n{\n  long *plVar1;\n  byte bVar2;\n  bool bVar3;\n  char cVar4;\n  int iVar5;\n  long lVar6;\n  ulong uVar7;\n  undefined8 *puVar8;\n  ulong uVar9;\n  ulong uVar10;\n  bool bVar11;\n  long lVar12;\n  bool bVar13;\n  undefined1 auVar14 [16];\n  long *local_98;\n  int local_90;\n  undefined4 local_7c;\n  undefined1 *local_78;\n  ulong local_70;\n  undefined1 local_68;\n  undefined7 uStack_67;\n  undefined1 *local_58;\n  ulong local_50;\n  undefined1 local_48 [24];\n  \n  FUN_002b4380(param_6 + 0xd0);\n  lVar6 = FUN_002a50c0(&DAT_00405ef0);\n  plVar1 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar6 * 8);\n  lVar12 = *plVar1;\n  if (lVar12 == 0) {\n                    /* try { // try from 0031c2e5 to 0031c2e9 has its CatchHandler @ 0031c576 */\n    puVar8 = (undefined8 *)FUN_002a11b0(0x70);\n    *(undefined4 *)(puVar8 + 1) = 0;\n    puVar8[2] = 0;\n    puVar8[3] = 0;\n    *(undefined2 *)(puVar8 + 4) = 0;\n    *puVar8 = &PTR_FUN_003f3258;\n    *(undefined1 *)((long)puVar8 + 0x22) = 0;\n    puVar8[5] = 0;\n    puVar8[6] = 0;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar8[9] = 0;\n    puVar8[10] = 0;\n    puVar8[0xb] = 0;\n    *(undefined4 *)(puVar8 + 0xc) = 0;\n    *(undefined1 *)((long)puVar8 + 0x6f) = 0;\n                    /* try { // try from 0031c365 to 0031c369 has its CatchHandler @ 0031c56f */\n    FUN_002b55a0(puVar8,param_6 + 0xd0);\n    FUN_002a5530(*(undefined8 *)(param_6 + 0xd0),puVar8,lVar6);\n    lVar12 = *plVar1;\n  }\n  local_70 = 0;\n  local_78 = &local_68;\n  local_68 = 0;\n  if (*(char *)(lVar12 + 0x20) != '\0') {\n                    /* try { // try from 0031b536 to 0031b53a has its CatchHandler @ 0031c571 */\n    FUN_002a9b20(&local_78,0x20);\n  }\n  local_50 = 0;\n  local_58 = local_48;\n  local_48[0] = 0;\n                    /* try { // try from 0031b56d to 0031c2c4 has its CatchHandler @ 0031c56a */\n  FUN_002a9b20(&local_58,0x20);\n  local_7c = *(undefined4 *)(lVar12 + 0x60);\n  lVar6 = 0;\n  bVar2 = (byte)local_7c;\n  while( true ) {\n    if (bVar2 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x0031b5df. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar14 = (*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)))\n                          ();\n      return auVar14;\n    }\n    if (3 < (int)lVar6 + 1) break;\n    bVar2 = *(byte *)((long)&local_7c + lVar6 + 1);\n    lVar6 = lVar6 + 1;\n  }\n  if ((local_50 < 2) || (uVar7 = FUN_002ab490(&local_58,0x30,0), uVar7 == 0)) goto LAB_0031c03a;\n  if (uVar7 == 0xffffffffffffffff) {\n    uVar7 = local_50 - 1;\n    if (uVar7 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_0031c03a;\n    }\n    if (uVar7 == 0) goto LAB_0031c03a;\n  }\n  uVar9 = local_50;\n  if (uVar7 < local_50) {\n    uVar9 = uVar7;\n  }\n  FUN_002a97b0(&local_58,0,uVar9);\nLAB_0031c03a:\n  uVar7 = local_70;\n  if (local_70 != 0) {\n    uVar9 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar10 = 0xf;\n    }\n    else {\n      uVar10 = CONCAT71(uStack_67,local_68);\n    }\n    if (uVar10 < uVar9) {\n      FUN_002a9670(&local_78,local_70,0,0,1);\n    }\n    local_78[uVar7] = 0;\n    local_78[uVar7 + 1] = 0;\n    local_70 = uVar9;\n    cVar4 = FUN_0032d0e0(*(undefined8 *)(lVar12 + 0x10),*(undefined8 *)(lVar12 + 0x18),&local_78);\n    if (cVar4 == '\0') {\n      *param_7 = *param_7 | 4;\n    }\n  }\n  FUN_002aae90(param_8,&local_58);\n  local_90 = (int)param_3;\n  bVar13 = local_90 == -1;\n  bVar11 = param_2 != (long *)0x0 && bVar13;\n  local_98 = param_2;\n  if (((param_2 != (long *)0x0 && bVar13) &&\n      (bVar13 = false, (ulong)param_2[3] <= (ulong)param_2[2])) &&\n     (iVar5 = (**(code **)(*param_2 + 0x48))(), iVar5 == -1)) {\n    local_98 = (long *)0x0;\n    bVar13 = bVar11;\n  }\n  bVar3 = param_4 != (long *)0x0 && param_5 == -1;\n  bVar11 = param_5 == -1;\n  if ((bVar3) && (bVar11 = false, (ulong)param_4[3] <= (ulong)param_4[2])) {\n    iVar5 = (**(code **)(*param_4 + 0x48))();\n    bVar11 = false;\n    if (iVar5 == -1) {\n      bVar11 = bVar3;\n    }\n  }\n  if (bVar11 == bVar13) {\n    *param_7 = *param_7 | 2;\n  }\n  if (local_58 != local_48) {\n    FUN_002a2980();\n  }\n  if (local_78 != &local_68) {\n    FUN_002a2980();\n  }\n  auVar14._8_8_ = param_3;\n  auVar14._0_8_ = local_98;\n  return auVar14;\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 comment comment comment comment comment comment comment comment (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (declaration "FUN_0031b470(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,int param_5,\n            long param_6,uint *param_7,undefined8 param_8)\n\n{\n  long *plVar1;" (macro_type_specifier "FUN_0031b470(undefined8" identifier ( (type_descriptor "undefined8" type_identifier) )) identifier , (ERROR "long" identifier) (pointer_declarator "*param_2" * identifier) , identifier (ERROR "param_3" identifier) , (ERROR "long" identifier) (pointer_declarator "*param_4" * identifier) , (ERROR "int" identifier) identifier , (ERROR "long" identifier) identifier , (ERROR "uint" identifier) (pointer_declarator "*param_7" * identifier) , (ERROR "undefined8 param_8)\n\n{\n  long" identifier identifier ) { long) (pointer_declarator "*plVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "undefined8 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "long lVar12;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "undefined1 auVar14 [16];" type_identifier (array_declarator "auVar14 [16]" identifier [ number_literal ]) ;) (declaration "long *local_98;" (sized_type_specifier "long" long) (pointer_declarator "*local_98" * identifier) ;) (declaration "int local_90;" primitive_type identifier ;) (declaration "undefined4 local_7c;" type_identifier identifier ;) (declaration "undefined1 *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "ulong local_70;" type_identifier identifier ;) (declaration "undefined1 local_68;" type_identifier identifier ;) (declaration "undefined7 uStack_67;" type_identifier identifier ;) (declaration "undefined1 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "ulong local_50;" type_identifier identifier ;) (declaration "undefined1 local_48 [24];" type_identifier (array_declarator "local_48 [24]" identifier [ number_literal ]) ;) (expression_statement "FUN_002b4380(param_6 + 0xd0);" (call_expression "FUN_002b4380(param_6 + 0xd0)" identifier (argument_list "(param_6 + 0xd0)" ( (binary_expression "param_6 + 0xd0" identifier + number_literal) ))) ;) (expression_statement "lVar6 = FUN_002a50c0(&DAT_00405ef0);" (assignment_expression "lVar6 = FUN_002a50c0(&DAT_00405ef0)" identifier = (call_expression "FUN_002a50c0(&DAT_00405ef0)" identifier (argument_list "(&DAT_00405ef0)" ( (pointer_expression "&DAT_00405ef0" & identifier) )))) ;) (expression_statement "plVar1 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar6 * 8);" (assignment_expression "plVar1 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar6 * 8)" identifier = (cast_expression "(long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar6 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar6 * 8)" ( (binary_expression "*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar6 * 8" (pointer_expression "*(long *)(*(long *)(param_6 + 0xd0) + 0x18)" * (cast_expression "(long *)(*(long *)(param_6 + 0xd0) + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_6 + 0xd0) + 0x18)" ( (binary_expression "*(long *)(param_6 + 0xd0) + 0x18" (pointer_expression "*(long *)(param_6 + 0xd0)" * (cast_expression "(long *)(param_6 + 0xd0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + 0xd0)" ( (binary_expression "param_6 + 0xd0" identifier + number_literal) )))) + number_literal) )))) + (binary_expression "lVar6 * 8" identifier * number_literal)) )))) ;) (expression_statement "lVar12 = *plVar1;" (assignment_expression "lVar12 = *plVar1" identifier = (pointer_expression "*plVar1" * identifier)) ;) (if_statement "if (lVar12 == 0) {\n                    /* try { // try from 0031c2e5 to 0031c2e9 has its CatchHandler @ 0031c576 */\n    puVar8 = (undefined8 *)FUN_002a11b0(0x70);\n    *(undefined4 *)(puVar8 + 1) = 0;\n    puVar8[2] = 0;\n    puVar8[3] = 0;\n    *(undefined2 *)(puVar8 + 4) = 0;\n    *puVar8 = &PTR_FUN_003f3258;\n    *(undefined1 *)((long)puVar8 + 0x22) = 0;\n    puVar8[5] = 0;\n    puVar8[6] = 0;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar8[9] = 0;\n    puVar8[10] = 0;\n    puVar8[0xb] = 0;\n    *(undefined4 *)(puVar8 + 0xc) = 0;\n    *(undefined1 *)((long)puVar8 + 0x6f) = 0;\n                    /* try { // try from 0031c365 to 0031c369 has its CatchHandler @ 0031c56f */\n    FUN_002b55a0(puVar8,param_6 + 0xd0);\n    FUN_002a5530(*(undefined8 *)(param_6 + 0xd0),puVar8,lVar6);\n    lVar12 = *plVar1;\n  }" if (parenthesized_expression "(lVar12 == 0)" ( (binary_expression "lVar12 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* try { // try from 0031c2e5 to 0031c2e9 has its CatchHandler @ 0031c576 */\n    puVar8 = (undefined8 *)FUN_002a11b0(0x70);\n    *(undefined4 *)(puVar8 + 1) = 0;\n    puVar8[2] = 0;\n    puVar8[3] = 0;\n    *(undefined2 *)(puVar8 + 4) = 0;\n    *puVar8 = &PTR_FUN_003f3258;\n    *(undefined1 *)((long)puVar8 + 0x22) = 0;\n    puVar8[5] = 0;\n    puVar8[6] = 0;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar8[9] = 0;\n    puVar8[10] = 0;\n    puVar8[0xb] = 0;\n    *(undefined4 *)(puVar8 + 0xc) = 0;\n    *(undefined1 *)((long)puVar8 + 0x6f) = 0;\n                    /* try { // try from 0031c365 to 0031c369 has its CatchHandler @ 0031c56f */\n    FUN_002b55a0(puVar8,param_6 + 0xd0);\n    FUN_002a5530(*(undefined8 *)(param_6 + 0xd0),puVar8,lVar6);\n    lVar12 = *plVar1;\n  }" { comment (expression_statement "puVar8 = (undefined8 *)FUN_002a11b0(0x70);" (assignment_expression "puVar8 = (undefined8 *)FUN_002a11b0(0x70)" identifier = (cast_expression "(undefined8 *)FUN_002a11b0(0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002a11b0(0x70)" identifier (argument_list "(0x70)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar8 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar8 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar8 + 1)" * (cast_expression "(undefined4 *)(puVar8 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 1)" ( (binary_expression "puVar8 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar8[2] = 0;" (assignment_expression "puVar8[2] = 0" (subscript_expression "puVar8[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[3] = 0;" (assignment_expression "puVar8[3] = 0" (subscript_expression "puVar8[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar8 + 4) = 0;" (assignment_expression "*(undefined2 *)(puVar8 + 4) = 0" (pointer_expression "*(undefined2 *)(puVar8 + 4)" * (cast_expression "(undefined2 *)(puVar8 + 4)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 4)" ( (binary_expression "puVar8 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar8 = &PTR_FUN_003f3258;" (assignment_expression "*puVar8 = &PTR_FUN_003f3258" (pointer_expression "*puVar8" * identifier) = (pointer_expression "&PTR_FUN_003f3258" & identifier)) ;) (expression_statement "*(undefined1 *)((long)puVar8 + 0x22) = 0;" (assignment_expression "*(undefined1 *)((long)puVar8 + 0x22) = 0" (pointer_expression "*(undefined1 *)((long)puVar8 + 0x22)" * (cast_expression "(undefined1 *)((long)puVar8 + 0x22)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar8 + 0x22)" ( (binary_expression "(long)puVar8 + 0x22" (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar8[5] = 0;" (assignment_expression "puVar8[5] = 0" (subscript_expression "puVar8[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[6] = 0;" (assignment_expression "puVar8[6] = 0" (subscript_expression "puVar8[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[7] = 0;" (assignment_expression "puVar8[7] = 0" (subscript_expression "puVar8[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[8] = 0;" (assignment_expression "puVar8[8] = 0" (subscript_expression "puVar8[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[9] = 0;" (assignment_expression "puVar8[9] = 0" (subscript_expression "puVar8[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[10] = 0;" (assignment_expression "puVar8[10] = 0" (subscript_expression "puVar8[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[0xb] = 0;" (assignment_expression "puVar8[0xb] = 0" (subscript_expression "puVar8[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar8 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar8 + 0xc) = 0" (pointer_expression "*(undefined4 *)(puVar8 + 0xc)" * (cast_expression "(undefined4 *)(puVar8 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0xc)" ( (binary_expression "puVar8 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((long)puVar8 + 0x6f) = 0;" (assignment_expression "*(undefined1 *)((long)puVar8 + 0x6f) = 0" (pointer_expression "*(undefined1 *)((long)puVar8 + 0x6f)" * (cast_expression "(undefined1 *)((long)puVar8 + 0x6f)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar8 + 0x6f)" ( (binary_expression "(long)puVar8 + 0x6f" (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) comment (expression_statement "FUN_002b55a0(puVar8,param_6 + 0xd0);" (call_expression "FUN_002b55a0(puVar8,param_6 + 0xd0)" identifier (argument_list "(puVar8,param_6 + 0xd0)" ( identifier , (binary_expression "param_6 + 0xd0" identifier + number_literal) ))) ;) (expression_statement "FUN_002a5530(*(undefined8 *)(param_6 + 0xd0),puVar8,lVar6);" (call_expression "FUN_002a5530(*(undefined8 *)(param_6 + 0xd0),puVar8,lVar6)" identifier (argument_list "(*(undefined8 *)(param_6 + 0xd0),puVar8,lVar6)" ( (pointer_expression "*(undefined8 *)(param_6 + 0xd0)" * (cast_expression "(undefined8 *)(param_6 + 0xd0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + 0xd0)" ( (binary_expression "param_6 + 0xd0" identifier + number_literal) )))) , identifier , identifier ))) ;) (expression_statement "lVar12 = *plVar1;" (assignment_expression "lVar12 = *plVar1" identifier = (pointer_expression "*plVar1" * identifier)) ;) })) (expression_statement "local_70 = 0;" (assignment_expression "local_70 = 0" identifier = number_literal) ;) (expression_statement "local_78 = &local_68;" (assignment_expression "local_78 = &local_68" identifier = (pointer_expression "&local_68" & identifier)) ;) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" identifier = number_literal) ;) (if_statement "if (*(char *)(lVar12 + 0x20) != '\0') {\n                    /* try { // try from 0031b536 to 0031b53a has its CatchHandler @ 0031c571 */\n    FUN_002a9b20(&local_78,0x20);\n  }" if (parenthesized_expression "(*(char *)(lVar12 + 0x20) != '\0')" ( (binary_expression "*(char *)(lVar12 + 0x20) != '\0'" (pointer_expression "*(char *)(lVar12 + 0x20)" * (cast_expression "(char *)(lVar12 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar12 + 0x20)" ( (binary_expression "lVar12 + 0x20" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* try { // try from 0031b536 to 0031b53a has its CatchHandler @ 0031c571 */\n    FUN_002a9b20(&local_78,0x20);\n  }" { comment (expression_statement "FUN_002a9b20(&local_78,0x20);" (call_expression "FUN_002a9b20(&local_78,0x20)" identifier (argument_list "(&local_78,0x20)" ( (pointer_expression "&local_78" & identifier) , number_literal ))) ;) })) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "local_58 = local_48;" (assignment_expression "local_58 = local_48" identifier = identifier) ;) (expression_statement "local_48[0] = 0;" (assignment_expression "local_48[0] = 0" (subscript_expression "local_48[0]" identifier [ number_literal ]) = number_literal) ;) comment (expression_statement "FUN_002a9b20(&local_58,0x20);" (call_expression "FUN_002a9b20(&local_58,0x20)" identifier (argument_list "(&local_58,0x20)" ( (pointer_expression "&local_58" & identifier) , number_literal ))) ;) (expression_statement "local_7c = *(undefined4 *)(lVar12 + 0x60);" (assignment_expression "local_7c = *(undefined4 *)(lVar12 + 0x60)" identifier = (pointer_expression "*(undefined4 *)(lVar12 + 0x60)" * (cast_expression "(undefined4 *)(lVar12 + 0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar12 + 0x60)" ( (binary_expression "lVar12 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "lVar6 = 0;" (assignment_expression "lVar6 = 0" identifier = number_literal) ;) (expression_statement "bVar2 = (byte)local_7c;" (assignment_expression "bVar2 = (byte)local_7c" identifier = (cast_expression "(byte)local_7c" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (while_statement "while( true ) {\n    if (bVar2 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x0031b5df. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar14 = (*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)))\n                          ();\n      return auVar14;\n    }\n    if (3 < (int)lVar6 + 1) break;\n    bVar2 = *(byte *)((long)&local_7c + lVar6 + 1);\n    lVar6 = lVar6 + 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (bVar2 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x0031b5df. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar14 = (*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)))\n                          ();\n      return auVar14;\n    }\n    if (3 < (int)lVar6 + 1) break;\n    bVar2 = *(byte *)((long)&local_7c + lVar6 + 1);\n    lVar6 = lVar6 + 1;\n  }" { (if_statement "if (bVar2 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x0031b5df. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar14 = (*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)))\n                          ();\n      return auVar14;\n    }" if (parenthesized_expression "(bVar2 < 5)" ( (binary_expression "bVar2 < 5" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x0031b5df. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar14 = (*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)))\n                          ();\n      return auVar14;\n    }" { comment comment (expression_statement "auVar14 = (*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)))\n                          ();" (assignment_expression "auVar14 = (*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)))\n                          ()" identifier = (call_expression "(*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)))\n                          ()" (parenthesized_expression "(*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)))" ( (pointer_expression "*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4))" * (cast_expression "(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4))" ( (binary_expression "&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)" (pointer_expression "&DAT_0035ec68" & identifier) + (pointer_expression "*(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)" * (cast_expression "(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)" ( (binary_expression "&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4" (pointer_expression "&DAT_0035ec68" & identifier) + (binary_expression "(ulong)*(byte *)((long)&local_7c + lVar6) * 4" (binary_expression "(ulong)*(byte *)((long)&local_7c + lVar6)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(byte *)((long)&local_7c + lVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_7c + lVar6)" ( (binary_expression "(long)&local_7c + lVar6" (cast_expression "(long)&local_7c" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_7c" & identifier)) + identifier) )))) * number_literal)) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return auVar14;" 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 "bVar2 = *(byte *)((long)&local_7c + lVar6 + 1);" (assignment_expression "bVar2 = *(byte *)((long)&local_7c + lVar6 + 1)" identifier = (pointer_expression "*(byte *)((long)&local_7c + lVar6 + 1)" * (cast_expression "(byte *)((long)&local_7c + lVar6 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_7c + lVar6 + 1)" ( (binary_expression "(long)&local_7c + lVar6 + 1" (binary_expression "(long)&local_7c + lVar6" (cast_expression "(long)&local_7c" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_7c" & 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 ((local_50 < 2) || (uVar7 = FUN_002ab490(&local_58,0x30,0), uVar7 == 0)) goto LAB_0031c03a;" if (parenthesized_expression "((local_50 < 2) || (uVar7 = FUN_002ab490(&local_58,0x30,0), uVar7 == 0))" ( (binary_expression "(local_50 < 2) || (uVar7 = FUN_002ab490(&local_58,0x30,0), uVar7 == 0)" (parenthesized_expression "(local_50 < 2)" ( (binary_expression "local_50 < 2" identifier < number_literal) )) || (parenthesized_expression "(uVar7 = FUN_002ab490(&local_58,0x30,0), uVar7 == 0)" ( (comma_expression "uVar7 = FUN_002ab490(&local_58,0x30,0), uVar7 == 0" (assignment_expression "uVar7 = FUN_002ab490(&local_58,0x30,0)" identifier = (call_expression "FUN_002ab490(&local_58,0x30,0)" identifier (argument_list "(&local_58,0x30,0)" ( (pointer_expression "&local_58" & identifier) , number_literal , number_literal )))) , (binary_expression "uVar7 == 0" identifier == number_literal)) ))) )) (goto_statement "goto LAB_0031c03a;" goto statement_identifier ;)) (if_statement "if (uVar7 == 0xffffffffffffffff) {\n    uVar7 = local_50 - 1;\n    if (uVar7 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_0031c03a;\n    }\n    if (uVar7 == 0) goto LAB_0031c03a;\n  }" if (parenthesized_expression "(uVar7 == 0xffffffffffffffff)" ( (binary_expression "uVar7 == 0xffffffffffffffff" identifier == number_literal) )) (compound_statement "{\n    uVar7 = local_50 - 1;\n    if (uVar7 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_0031c03a;\n    }\n    if (uVar7 == 0) goto LAB_0031c03a;\n  }" { (expression_statement "uVar7 = local_50 - 1;" (assignment_expression "uVar7 = local_50 - 1" identifier = (binary_expression "local_50 - 1" identifier - number_literal)) ;) (if_statement "if (uVar7 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_0031c03a;\n    }" if (parenthesized_expression "(uVar7 == 0xffffffffffffffff)" ( (binary_expression "uVar7 == 0xffffffffffffffff" identifier == number_literal) )) (compound_statement "{\n      *local_58 = 0;\n      goto LAB_0031c03a;\n    }" { (expression_statement "*local_58 = 0;" (assignment_expression "*local_58 = 0" (pointer_expression "*local_58" * identifier) = number_literal) ;) (goto_statement "goto LAB_0031c03a;" goto statement_identifier ;) })) (if_statement "if (uVar7 == 0) goto LAB_0031c03a;" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0031c03a;" goto statement_identifier ;)) })) (expression_statement "uVar9 = local_50;" (assignment_expression "uVar9 = local_50" identifier = identifier) ;) (if_statement "if (uVar7 < local_50) {\n    uVar9 = uVar7;\n  }" if (parenthesized_expression "(uVar7 < local_50)" ( (binary_expression "uVar7 < local_50" identifier < identifier) )) (compound_statement "{\n    uVar9 = uVar7;\n  }" { (expression_statement "uVar9 = uVar7;" (assignment_expression "uVar9 = uVar7" identifier = identifier) ;) })) (expression_statement "FUN_002a97b0(&local_58,0,uVar9);" (call_expression "FUN_002a97b0(&local_58,0,uVar9)" identifier (argument_list "(&local_58,0,uVar9)" ( (pointer_expression "&local_58" & identifier) , number_literal , identifier ))) ;) (labeled_statement "LAB_0031c03a:\n  uVar7 = local_70;" statement_identifier : (expression_statement "uVar7 = local_70;" (assignment_expression "uVar7 = local_70" identifier = identifier) ;)) (if_statement "if (local_70 != 0) {\n    uVar9 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar10 = 0xf;\n    }\n    else {\n      uVar10 = CONCAT71(uStack_67,local_68);\n    }\n    if (uVar10 < uVar9) {\n      FUN_002a9670(&local_78,local_70,0,0,1);\n    }\n    local_78[uVar7] = 0;\n    local_78[uVar7 + 1] = 0;\n    local_70 = uVar9;\n    cVar4 = FUN_0032d0e0(*(undefined8 *)(lVar12 + 0x10),*(undefined8 *)(lVar12 + 0x18),&local_78);\n    if (cVar4 == '\0') {\n      *param_7 = *param_7 | 4;\n    }\n  }" if (parenthesized_expression "(local_70 != 0)" ( (binary_expression "local_70 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar9 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar10 = 0xf;\n    }\n    else {\n      uVar10 = CONCAT71(uStack_67,local_68);\n    }\n    if (uVar10 < uVar9) {\n      FUN_002a9670(&local_78,local_70,0,0,1);\n    }\n    local_78[uVar7] = 0;\n    local_78[uVar7 + 1] = 0;\n    local_70 = uVar9;\n    cVar4 = FUN_0032d0e0(*(undefined8 *)(lVar12 + 0x10),*(undefined8 *)(lVar12 + 0x18),&local_78);\n    if (cVar4 == '\0') {\n      *param_7 = *param_7 | 4;\n    }\n  }" { (expression_statement "uVar9 = local_70 + 1;" (assignment_expression "uVar9 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) (if_statement "if (local_78 == &local_68) {\n      uVar10 = 0xf;\n    }\n    else {\n      uVar10 = CONCAT71(uStack_67,local_68);\n    }" if (parenthesized_expression "(local_78 == &local_68)" ( (binary_expression "local_78 == &local_68" identifier == (pointer_expression "&local_68" & identifier)) )) (compound_statement "{\n      uVar10 = 0xf;\n    }" { (expression_statement "uVar10 = 0xf;" (assignment_expression "uVar10 = 0xf" identifier = number_literal) ;) }) (else_clause "else {\n      uVar10 = CONCAT71(uStack_67,local_68);\n    }" else (compound_statement "{\n      uVar10 = CONCAT71(uStack_67,local_68);\n    }" { (expression_statement "uVar10 = CONCAT71(uStack_67,local_68);" (assignment_expression "uVar10 = CONCAT71(uStack_67,local_68)" identifier = (call_expression "CONCAT71(uStack_67,local_68)" identifier (argument_list "(uStack_67,local_68)" ( identifier , identifier )))) ;) }))) (if_statement "if (uVar10 < uVar9) {\n      FUN_002a9670(&local_78,local_70,0,0,1);\n    }" if (parenthesized_expression "(uVar10 < uVar9)" ( (binary_expression "uVar10 < uVar9" identifier < identifier) )) (compound_statement "{\n      FUN_002a9670(&local_78,local_70,0,0,1);\n    }" { (expression_statement "FUN_002a9670(&local_78,local_70,0,0,1);" (call_expression "FUN_002a9670(&local_78,local_70,0,0,1)" identifier (argument_list "(&local_78,local_70,0,0,1)" ( (pointer_expression "&local_78" & identifier) , identifier , number_literal , number_literal , number_literal ))) ;) })) (expression_statement "local_78[uVar7] = 0;" (assignment_expression "local_78[uVar7] = 0" (subscript_expression "local_78[uVar7]" identifier [ identifier ]) = number_literal) ;) (expression_statement "local_78[uVar7 + 1] = 0;" (assignment_expression "local_78[uVar7 + 1] = 0" (subscript_expression "local_78[uVar7 + 1]" identifier [ (binary_expression "uVar7 + 1" identifier + number_literal) ]) = number_literal) ;) (expression_statement "local_70 = uVar9;" (assignment_expression "local_70 = uVar9" identifier = identifier) ;) (expression_statement "cVar4 = FUN_0032d0e0(*(undefined8 *)(lVar12 + 0x10),*(undefined8 *)(lVar12 + 0x18),&local_78);" (assignment_expression "cVar4 = FUN_0032d0e0(*(undefined8 *)(lVar12 + 0x10),*(undefined8 *)(lVar12 + 0x18),&local_78)" identifier = (call_expression "FUN_0032d0e0(*(undefined8 *)(lVar12 + 0x10),*(undefined8 *)(lVar12 + 0x18),&local_78)" identifier (argument_list "(*(undefined8 *)(lVar12 + 0x10),*(undefined8 *)(lVar12 + 0x18),&local_78)" ( (pointer_expression "*(undefined8 *)(lVar12 + 0x10)" * (cast_expression "(undefined8 *)(lVar12 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar12 + 0x10)" ( (binary_expression "lVar12 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(lVar12 + 0x18)" * (cast_expression "(undefined8 *)(lVar12 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar12 + 0x18)" ( (binary_expression "lVar12 + 0x18" identifier + number_literal) )))) , (pointer_expression "&local_78" & 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_002aae90(param_8,&local_58);" (call_expression "FUN_002aae90(param_8,&local_58)" identifier (argument_list "(param_8,&local_58)" ( identifier , (pointer_expression "&local_58" & identifier) ))) ;) (expression_statement "local_90 = (int)param_3;" (assignment_expression "local_90 = (int)param_3" identifier = (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "bVar13 = local_90 == -1;" (assignment_expression "bVar13 = local_90 == -1" identifier = (binary_expression "local_90 == -1" identifier == number_literal)) ;) (expression_statement "bVar11 = param_2 != (long *)0x0 && bVar13;" (assignment_expression "bVar11 = param_2 != (long *)0x0 && bVar13" identifier = (binary_expression "param_2 != (long *)0x0 && bVar13" (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier)) ;) (expression_statement "local_98 = param_2;" (assignment_expression "local_98 = param_2" identifier = identifier) ;) (if_statement "if (((param_2 != (long *)0x0 && bVar13) &&\n      (bVar13 = false, (ulong)param_2[3] <= (ulong)param_2[2])) &&\n     (iVar5 = (**(code **)(*param_2 + 0x48))(), iVar5 == -1)) {\n    local_98 = (long *)0x0;\n    bVar13 = bVar11;\n  }" if (parenthesized_expression "(((param_2 != (long *)0x0 && bVar13) &&\n      (bVar13 = false, (ulong)param_2[3] <= (ulong)param_2[2])) &&\n     (iVar5 = (**(code **)(*param_2 + 0x48))(), iVar5 == -1))" ( (binary_expression "((param_2 != (long *)0x0 && bVar13) &&\n      (bVar13 = false, (ulong)param_2[3] <= (ulong)param_2[2])) &&\n     (iVar5 = (**(code **)(*param_2 + 0x48))(), iVar5 == -1)" (parenthesized_expression "((param_2 != (long *)0x0 && bVar13) &&\n      (bVar13 = false, (ulong)param_2[3] <= (ulong)param_2[2]))" ( (binary_expression "(param_2 != (long *)0x0 && bVar13) &&\n      (bVar13 = false, (ulong)param_2[3] <= (ulong)param_2[2])" (parenthesized_expression "(param_2 != (long *)0x0 && bVar13)" ( (binary_expression "param_2 != (long *)0x0 && bVar13" (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier) )) && (parenthesized_expression "(bVar13 = false, (ulong)param_2[3] <= (ulong)param_2[2])" ( (comma_expression "bVar13 = false, (ulong)param_2[3] <= (ulong)param_2[2]" (assignment_expression "bVar13 = false" identifier = false) , (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ))) )) && (parenthesized_expression "(iVar5 = (**(code **)(*param_2 + 0x48))(), iVar5 == -1)" ( (comma_expression "iVar5 = (**(code **)(*param_2 + 0x48))(), iVar5 == -1" (assignment_expression "iVar5 = (**(code **)(*param_2 + 0x48))()" identifier = (call_expression "(**(code **)(*param_2 + 0x48))()" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "()" ( )))) , (binary_expression "iVar5 == -1" identifier == number_literal)) ))) )) (compound_statement "{\n    local_98 = (long *)0x0;\n    bVar13 = bVar11;\n  }" { (expression_statement "local_98 = (long *)0x0;" (assignment_expression "local_98 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar13 = bVar11;" (assignment_expression "bVar13 = bVar11" identifier = identifier) ;) })) (expression_statement "bVar3 = param_4 != (long *)0x0 && param_5 == -1;" (assignment_expression "bVar3 = param_4 != (long *)0x0 && param_5 == -1" identifier = (binary_expression "param_4 != (long *)0x0 && param_5 == -1" (binary_expression "param_4 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "param_5 == -1" identifier == number_literal))) ;) (expression_statement "bVar11 = param_5 == -1;" (assignment_expression "bVar11 = param_5 == -1" identifier = (binary_expression "param_5 == -1" identifier == number_literal)) ;) (if_statement "if ((bVar3) && (bVar11 = false, (ulong)param_4[3] <= (ulong)param_4[2])) {\n    iVar5 = (**(code **)(*param_4 + 0x48))();\n    bVar11 = false;\n    if (iVar5 == -1) {\n      bVar11 = bVar3;\n    }\n  }" if (parenthesized_expression "((bVar3) && (bVar11 = false, (ulong)param_4[3] <= (ulong)param_4[2]))" ( (binary_expression "(bVar3) && (bVar11 = false, (ulong)param_4[3] <= (ulong)param_4[2])" (parenthesized_expression "(bVar3)" ( identifier )) && (parenthesized_expression "(bVar11 = false, (ulong)param_4[3] <= (ulong)param_4[2])" ( (comma_expression "bVar11 = false, (ulong)param_4[3] <= (ulong)param_4[2]" (assignment_expression "bVar11 = false" identifier = false) , (binary_expression "(ulong)param_4[3] <= (ulong)param_4[2]" (cast_expression "(ulong)param_4[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_4[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_4[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_4[2]" identifier [ number_literal ])))) ))) )) (compound_statement "{\n    iVar5 = (**(code **)(*param_4 + 0x48))();\n    bVar11 = false;\n    if (iVar5 == -1) {\n      bVar11 = bVar3;\n    }\n  }" { (expression_statement "iVar5 = (**(code **)(*param_4 + 0x48))();" (assignment_expression "iVar5 = (**(code **)(*param_4 + 0x48))()" identifier = (call_expression "(**(code **)(*param_4 + 0x48))()" (parenthesized_expression "(**(code **)(*param_4 + 0x48))" ( (pointer_expression "**(code **)(*param_4 + 0x48)" * (pointer_expression "*(code **)(*param_4 + 0x48)" * (cast_expression "(code **)(*param_4 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x48)" ( (binary_expression "*param_4 + 0x48" (pointer_expression "*param_4" * identifier) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (if_statement "if (iVar5 == -1) {\n      bVar11 = bVar3;\n    }" if (parenthesized_expression "(iVar5 == -1)" ( (binary_expression "iVar5 == -1" identifier == number_literal) )) (compound_statement "{\n      bVar11 = bVar3;\n    }" { (expression_statement "bVar11 = bVar3;" (assignment_expression "bVar11 = bVar3" identifier = identifier) ;) })) })) (if_statement "if (bVar11 == bVar13) {\n    *param_7 = *param_7 | 2;\n  }" if (parenthesized_expression "(bVar11 == bVar13)" ( (binary_expression "bVar11 == bVar13" identifier == identifier) )) (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_58 != local_48) {\n    FUN_002a2980();\n  }" if (parenthesized_expression "(local_58 != local_48)" ( (binary_expression "local_58 != local_48" identifier != identifier) )) (compound_statement "{\n    FUN_002a2980();\n  }" { (expression_statement "FUN_002a2980();" (call_expression "FUN_002a2980()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (local_78 != &local_68) {\n    FUN_002a2980();\n  }" if (parenthesized_expression "(local_78 != &local_68)" ( (binary_expression "local_78 != &local_68" identifier != (pointer_expression "&local_68" & identifier)) )) (compound_statement "{\n    FUN_002a2980();\n  }" { (expression_statement "FUN_002a2980();" (call_expression "FUN_002a2980()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "auVar14._8_8_ = param_3;" (assignment_expression "auVar14._8_8_ = param_3" (field_expression "auVar14._8_8_" identifier . field_identifier) = identifier) ;) (expression_statement "auVar14._0_8_ = local_98;" (assignment_expression "auVar14._0_8_ = local_98" (field_expression "auVar14._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar14;" return identifier ;) (ERROR "}" }))
(translation_unit "/* WARNING: Removing unreachable block (ram,0x0031c041) */\n/* WARNING: Removing unreachable block (ram,0x0031c04e) */\n/* WARNING: Removing unreachable block (ram,0x0031b676) */\n/* WARNING: Removing unreachable block (ram,0x0031b67f) */\n/* WARNING: Removing unreachable block (ram,0x0031bf50) */\n/* WARNING: Removing unreachable block (ram,0x0031c464) */\n/* WARNING: Removing unreachable block (ram,0x0031c55a) */\n/* WARNING: Removing unreachable block (ram,0x0031c473) */\n/* WARNING: Removing unreachable block (ram,0x0031bf5e) */\n/* WARNING: Removing unreachable block (ram,0x0031bf70) */\n/* WARNING: Removing unreachable block (ram,0x0031b69e) */\n/* WARNING: Removing unreachable block (ram,0x0031b6ac) */\n/* WARNING: Removing unreachable block (ram,0x0031b6ba) */\n/* WARNING: Removing unreachable block (ram,0x0031c010) */\n/* WARNING: Removing unreachable block (ram,0x0031b6c2) */\n/* WARNING: Removing unreachable block (ram,0x0031b60c) */\n/* WARNING: Removing unreachable block (ram,0x0031b617) */\n/* WARNING: Removing unreachable block (ram,0x0031bdf8) */\n/* WARNING: Removing unreachable block (ram,0x0031b61f) */\n/* WARNING: Removing unreachable block (ram,0x0031b638) */\n/* WARNING: Removing unreachable block (ram,0x0031bf20) */\n/* WARNING: Removing unreachable block (ram,0x0031bf30) */\n/* WARNING: Removing unreachable block (ram,0x0031bf3f) */\n/* WARNING: Removing unreachable block (ram,0x0031b64f) */\n/* WARNING: Removing unreachable block (ram,0x0031b661) */\n/* WARNING: Removing unreachable block (ram,0x0031b669) */\n/* WARNING: Removing unreachable block (ram,0x0031bdc0) */\n/* WARNING: Removing unreachable block (ram,0x0031bdce) */\n/* WARNING: Removing unreachable block (ram,0x0031bde5) */\n/* WARNING: Removing unreachable block (ram,0x0031b66b) */\n/* WARNING: Removing unreachable block (ram,0x0031c020) */\n/* WARNING: Removing unreachable block (ram,0x0031c02b) */\n/* WARNING: Removing unreachable block (ram,0x0031c0f3) */\n/* WARNING: Removing unreachable block (ram,0x0031bc3c) */\n/* WARNING: Removing unreachable block (ram,0x0031bc41) */\n/* WARNING: Removing unreachable block (ram,0x0031bc52) */\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<false>(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<false>\n          (undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,int param_5,\n          long param_6,uint *param_7,string *param_8)\n\n{\n  long *plVar1;\n  byte bVar2;\n  long lVar3;\n  bool bVar4;\n  char cVar5;\n  int iVar6;\n  ulong uVar7;\n  __moneypunct_cache<char,false> *this;\n  ulong uVar8;\n  ulong uVar9;\n  bool bVar10;\n  long lVar11;\n  bool bVar12;\n  undefined1 auVar13 [16];\n  long *local_98;\n  int local_90;\n  undefined4 local_7c;\n  undefined1 *local_78;\n  ulong local_70;\n  undefined1 local_68;\n  undefined7 uStack_67;\n  undefined1 *local_58;\n  ulong local_50;\n  undefined1 local_48 [24];\n  \n  use_facet<std::ctype<char>>((locale *)(param_6 + 0xd0));\n  uVar7 = locale::id::_M_id((id *)&moneypunct<char,false>::id);\n  plVar1 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + uVar7 * 8);\n  lVar11 = *plVar1;\n  if (lVar11 == 0) {\n                    /* try { // try from 0031c2e5 to 0031c2e9 has its CatchHandler @ 0031c576 */\n    this = (__moneypunct_cache<char,false> *)operator_new(0x70);\n    *(undefined4 *)(this + 8) = 0;\n    *(undefined8 *)(this + 0x10) = 0;\n    *(undefined8 *)(this + 0x18) = 0;\n    *(undefined2 *)(this + 0x20) = 0;\n    *(undefined ***)this = &PTR____moneypunct_cache_003f3258;\n    this[0x22] = (__moneypunct_cache<char,false>)0x0;\n    *(undefined8 *)(this + 0x28) = 0;\n    *(undefined8 *)(this + 0x30) = 0;\n    *(undefined8 *)(this + 0x38) = 0;\n    *(undefined8 *)(this + 0x40) = 0;\n    *(undefined8 *)(this + 0x48) = 0;\n    *(undefined8 *)(this + 0x50) = 0;\n    *(undefined8 *)(this + 0x58) = 0;\n    *(undefined4 *)(this + 0x60) = 0;\n    this[0x6f] = (__moneypunct_cache<char,false>)0x0;\n                    /* try { // try from 0031c365 to 0031c369 has its CatchHandler @ 0031c56f */\n    __moneypunct_cache<char,false>::_M_cache(this,(locale *)(param_6 + 0xd0));\n    locale::_Impl::_M_install_cache(*(_Impl **)(param_6 + 0xd0),(facet *)this,uVar7);\n    lVar11 = *plVar1;\n  }\n  local_70 = 0;\n  local_78 = &local_68;\n  local_68 = 0;\n  if (*(char *)(lVar11 + 0x20) != '\0') {\n                    /* try { // try from 0031b536 to 0031b53a has its CatchHandler @ 0031c571 */\n    std::string::reserve((string *)&local_78,0x20);\n  }\n  local_50 = 0;\n  local_58 = local_48;\n  local_48[0] = 0;\n                    /* try { // try from 0031b56d to 0031c2c4 has its CatchHandler @ 0031c56a */\n  std::string::reserve((string *)&local_58,0x20);\n  local_7c = *(undefined4 *)(lVar11 + 0x60);\n  lVar3 = 0;\n  bVar2 = (byte)local_7c;\n  while( true ) {\n    if (bVar2 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x0031b5df. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar13 = (*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4)))\n                          ();\n      return auVar13;\n    }\n    if (3 < (int)lVar3 + 1) break;\n    bVar2 = *(byte *)((long)&local_7c + lVar3 + 1);\n    lVar3 = lVar3 + 1;\n  }\n  if ((local_50 < 2) ||\n     (uVar7 = std::string::find_first_not_of((string *)&local_58,'0',0), uVar7 == 0))\n  goto LAB_0031c03a;\n  if (uVar7 == 0xffffffffffffffff) {\n    uVar7 = local_50 - 1;\n    if (uVar7 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_0031c03a;\n    }\n    if (uVar7 == 0) goto LAB_0031c03a;\n  }\n  uVar8 = local_50;\n  if (uVar7 < local_50) {\n    uVar8 = uVar7;\n  }\n  std::string::_M_erase((string *)&local_58,0,uVar8);\nLAB_0031c03a:\n  uVar7 = local_70;\n  if (local_70 != 0) {\n    uVar8 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar9 = 0xf;\n    }\n    else {\n      uVar9 = CONCAT71(uStack_67,local_68);\n    }\n    if (uVar9 < uVar8) {\n      std::string::_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1);\n    }\n    local_78[uVar7] = 0;\n    local_78[uVar7 + 1] = 0;\n    local_70 = uVar8;\n    cVar5 = __verify_grouping(*(char **)(lVar11 + 0x10),*(ulong *)(lVar11 + 0x18),\n                              (string *)&local_78);\n    if (cVar5 == '\0') {\n      *param_7 = *param_7 | 4;\n    }\n  }\n  std::string::swap(param_8,(string *)&local_58);\n  local_90 = (int)param_3;\n  bVar12 = local_90 == -1;\n  bVar10 = param_2 != (long *)0x0 && bVar12;\n  local_98 = param_2;\n  if (((param_2 != (long *)0x0 && bVar12) &&\n      (bVar12 = false, (ulong)param_2[3] <= (ulong)param_2[2])) &&\n     (iVar6 = (**(code **)(*param_2 + 0x48))(), iVar6 == -1)) {\n    local_98 = (long *)0x0;\n    bVar12 = bVar10;\n  }\n  bVar4 = param_4 != (long *)0x0 && param_5 == -1;\n  bVar10 = param_5 == -1;\n  if ((bVar4) && (bVar10 = false, (ulong)param_4[3] <= (ulong)param_4[2])) {\n    iVar6 = (**(code **)(*param_4 + 0x48))();\n    bVar10 = false;\n    if (iVar6 == -1) {\n      bVar10 = bVar4;\n    }\n  }\n  if (bVar10 == bVar12) {\n    *param_7 = *param_7 | 2;\n  }\n  if (local_58 != local_48) {\n    operator_delete(local_58);\n  }\n  if (local_78 != &local_68) {\n    operator_delete(local_78);\n  }\n  auVar13._8_8_ = param_3;\n  auVar13._0_8_ = local_98;\n  return auVar13;\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 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<false>\n          (undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,int param_5,\n          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<false>\n          (undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,int param_5,\n          long param_6,uint *param_7,string *param_8)" (binary_expression "char_traits<char>>>::_M_extract<false>\n          (undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,int param_5,\n          long param_6,uint *param_7,string *param_8)" (binary_expression "char_traits<char>>>::_M_extract<false" (binary_expression "char_traits<char>>>::_M_extract" identifier < (binary_expression "char>>>::_M_extract" identifier >> (ERROR ">::" > : :) identifier)) < false) > (parenthesized_expression "(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,int param_5,\n          long param_6,uint *param_7,string *param_8)" ( (comma_expression "undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,int param_5,\n          long param_6,uint *param_7,string *param_8" identifier (ERROR "param_1" identifier) , (comma_expression "long *param_2,undefined8 param_3,long *param_4,int param_5,\n          long param_6,uint *param_7,string *param_8" (binary_expression "long *param_2" identifier * identifier) , (comma_expression "undefined8 param_3,long *param_4,int param_5,\n          long param_6,uint *param_7,string *param_8" identifier (ERROR "param_3" identifier) , (comma_expression "long *param_4,int param_5,\n          long param_6,uint *param_7,string *param_8" (binary_expression "long *param_4" identifier * identifier) , (ERROR "int" identifier) (comma_expression "param_5,\n          long param_6,uint *param_7,string *param_8" 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  long *plVar1;\n  byte bVar2;\n  long lVar3;\n  bool bVar4;\n  char cVar5;\n  int iVar6;\n  ulong uVar7;\n  __moneypunct_cache<char,false> *this;\n  ulong uVar8;\n  ulong uVar9;\n  bool bVar10;\n  long lVar11;\n  bool bVar12;\n  undefined1 auVar13 [16];\n  long *local_98;\n  int local_90;\n  undefined4 local_7c;\n  undefined1 *local_78;\n  ulong local_70;\n  undefined1 local_68;\n  undefined7 uStack_67;\n  undefined1 *local_58;\n  ulong local_50;\n  undefined1 local_48 [24];\n  \n  use_facet<std::ctype<char>>((locale *)(param_6 + 0xd0));\n  uVar7 = locale::id::_M_id((id *)&moneypunct<char,false>::id);\n  plVar1 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + uVar7 * 8);\n  lVar11 = *plVar1;\n  if (lVar11 == 0) {\n                    /* try { // try from 0031c2e5 to 0031c2e9 has its CatchHandler @ 0031c576 */\n    this = (__moneypunct_cache<char,false> *)operator_new(0x70);\n    *(undefined4 *)(this + 8) = 0;\n    *(undefined8 *)(this + 0x10) = 0;\n    *(undefined8 *)(this + 0x18) = 0;\n    *(undefined2 *)(this + 0x20) = 0;\n    *(undefined ***)this = &PTR____moneypunct_cache_003f3258;\n    this[0x22] = (__moneypunct_cache<char,false>)0x0;\n    *(undefined8 *)(this + 0x28) = 0;\n    *(undefined8 *)(this + 0x30) = 0;\n    *(undefined8 *)(this + 0x38) = 0;\n    *(undefined8 *)(this + 0x40) = 0;\n    *(undefined8 *)(this + 0x48) = 0;\n    *(undefined8 *)(this + 0x50) = 0;\n    *(undefined8 *)(this + 0x58) = 0;\n    *(undefined4 *)(this + 0x60) = 0;\n    this[0x6f] = (__moneypunct_cache<char,false>)0x0;\n                    /* try { // try from 0031c365 to 0031c369 has its CatchHandler @ 0031c56f */\n    __moneypunct_cache<char,false>::_M_cache(this,(locale *)(param_6 + 0xd0));\n    locale::_Impl::_M_install_cache(*(_Impl **)(param_6 + 0xd0),(facet *)this,uVar7);\n    lVar11 = *plVar1;\n  }\n  local_70 = 0;\n  local_78 = &local_68;\n  local_68 = 0;\n  if (*(char *)(lVar11 + 0x20) != '\0') {\n                    /* try { // try from 0031b536 to 0031b53a has its CatchHandler @ 0031c571 */\n    std::string::reserve((string *)&local_78,0x20);\n  }\n  local_50 = 0;\n  local_58 = local_48;\n  local_48[0] = 0;\n                    /* try { // try from 0031b56d to 0031c2c4 has its CatchHandler @ 0031c56a */\n  std::string::reserve((string *)&local_58,0x20);\n  local_7c = *(undefined4 *)(lVar11 + 0x60);\n  lVar3 = 0;\n  bVar2 = (byte)local_7c;\n  while( true ) {\n    if (bVar2 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x0031b5df. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar13 = (*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4)))\n                          ();\n      return auVar13;\n    }\n    if (3 < (int)lVar3 + 1) break;\n    bVar2 = *(byte *)((long)&local_7c + lVar3 + 1);\n    lVar3 = lVar3 + 1;\n  }\n  if ((local_50 < 2) ||\n     (uVar7 = std::string::find_first_not_of((string *)&local_58,'0',0), uVar7 == 0))\n  goto LAB_0031c03a;\n  if (uVar7 == 0xffffffffffffffff) {\n    uVar7 = local_50 - 1;\n    if (uVar7 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_0031c03a;\n    }\n    if (uVar7 == 0) goto LAB_0031c03a;\n  }\n  uVar8 = local_50;\n  if (uVar7 < local_50) {\n    uVar8 = uVar7;\n  }\n  std::string::_M_erase((string *)&local_58,0,uVar8);\nLAB_0031c03a:\n  uVar7 = local_70;\n  if (local_70 != 0) {\n    uVar8 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar9 = 0xf;\n    }\n    else {\n      uVar9 = CONCAT71(uStack_67,local_68);\n    }\n    if (uVar9 < uVar8) {\n      std::string::_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1);\n    }\n    local_78[uVar7] = 0;\n    local_78[uVar7 + 1] = 0;\n    local_70 = uVar8;\n    cVar5 = __verify_grouping(*(char **)(lVar11 + 0x10),*(ulong *)(lVar11 + 0x18),\n                              (string *)&local_78);\n    if (cVar5 == '\0') {\n      *param_7 = *param_7 | 4;\n    }\n  }\n  std::string::swap(param_8,(string *)&local_58);\n  local_90 = (int)param_3;\n  bVar12 = local_90 == -1;\n  bVar10 = param_2 != (long *)0x0 && bVar12;\n  local_98 = param_2;\n  if (((param_2 != (long *)0x0 && bVar12) &&\n      (bVar12 = false, (ulong)param_2[3] <= (ulong)param_2[2])) &&\n     (iVar6 = (**(code **)(*param_2 + 0x48))(), iVar6 == -1)) {\n    local_98 = (long *)0x0;\n    bVar12 = bVar10;\n  }\n  bVar4 = param_4 != (long *)0x0 && param_5 == -1;\n  bVar10 = param_5 == -1;\n  if ((bVar4) && (bVar10 = false, (ulong)param_4[3] <= (ulong)param_4[2])) {\n    iVar6 = (**(code **)(*param_4 + 0x48))();\n    bVar10 = false;\n    if (iVar6 == -1) {\n      bVar10 = bVar4;\n    }\n  }\n  if (bVar10 == bVar12) {\n    *param_7 = *param_7 | 2;\n  }\n  if (local_58 != local_48) {\n    operator_delete(local_58);\n  }\n  if (local_78 != &local_68) {\n    operator_delete(local_78);\n  }\n  auVar13._8_8_ = param_3;\n  auVar13._0_8_ = local_98;\n  return auVar13;\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (expression_statement "__moneypunct_cache<char,false> *this;" (comma_expression "__moneypunct_cache<char,false> *this" (binary_expression "__moneypunct_cache<char" identifier < identifier) , (binary_expression "false> *this" false > (pointer_expression "*this" * identifier))) ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "undefined1 auVar13 [16];" type_identifier (array_declarator "auVar13 [16]" identifier [ number_literal ]) ;) (declaration "long *local_98;" (sized_type_specifier "long" long) (pointer_declarator "*local_98" * identifier) ;) (declaration "int local_90;" primitive_type identifier ;) (declaration "undefined4 local_7c;" type_identifier identifier ;) (declaration "undefined1 *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "ulong local_70;" type_identifier identifier ;) (declaration "undefined1 local_68;" type_identifier identifier ;) (declaration "undefined7 uStack_67;" type_identifier identifier ;) (declaration "undefined1 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "ulong local_50;" type_identifier identifier ;) (declaration "undefined1 local_48 [24];" type_identifier (array_declarator "local_48 [24]" identifier [ number_literal ]) ;) (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) ))) )))) ;) (ERROR "uVar7 = locale::" (assignment_expression "uVar7 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)&moneypunct<char,false>::id);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)&moneypunct<char,false>::id);" (call_expression "_M_id((id *)&moneypunct<char,false>::id)" identifier (argument_list "((id *)&moneypunct<char,false>::id)" ( (binary_expression "(id *)&moneypunct<char" (cast_expression "(id *)&moneypunct" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&moneypunct" & identifier)) < identifier) , (binary_expression "false>::id" false > (ERROR "::" : :) identifier) ))) ;)) (expression_statement "plVar1 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + uVar7 * 8);" (assignment_expression "plVar1 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + uVar7 * 8)" identifier = (cast_expression "(long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + uVar7 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + uVar7 * 8)" ( (binary_expression "*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + uVar7 * 8" (pointer_expression "*(long *)(*(long *)(param_6 + 0xd0) + 0x18)" * (cast_expression "(long *)(*(long *)(param_6 + 0xd0) + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_6 + 0xd0) + 0x18)" ( (binary_expression "*(long *)(param_6 + 0xd0) + 0x18" (pointer_expression "*(long *)(param_6 + 0xd0)" * (cast_expression "(long *)(param_6 + 0xd0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + 0xd0)" ( (binary_expression "param_6 + 0xd0" identifier + number_literal) )))) + number_literal) )))) + (binary_expression "uVar7 * 8" identifier * number_literal)) )))) ;) (expression_statement "lVar11 = *plVar1;" (assignment_expression "lVar11 = *plVar1" identifier = (pointer_expression "*plVar1" * identifier)) ;) (if_statement "if (lVar11 == 0) {\n                    /* try { // try from 0031c2e5 to 0031c2e9 has its CatchHandler @ 0031c576 */\n    this = (__moneypunct_cache<char,false> *)operator_new(0x70);\n    *(undefined4 *)(this + 8) = 0;\n    *(undefined8 *)(this + 0x10) = 0;\n    *(undefined8 *)(this + 0x18) = 0;\n    *(undefined2 *)(this + 0x20) = 0;\n    *(undefined ***)this = &PTR____moneypunct_cache_003f3258;\n    this[0x22] = (__moneypunct_cache<char,false>)0x0;\n    *(undefined8 *)(this + 0x28) = 0;\n    *(undefined8 *)(this + 0x30) = 0;\n    *(undefined8 *)(this + 0x38) = 0;\n    *(undefined8 *)(this + 0x40) = 0;\n    *(undefined8 *)(this + 0x48) = 0;\n    *(undefined8 *)(this + 0x50) = 0;\n    *(undefined8 *)(this + 0x58) = 0;\n    *(undefined4 *)(this + 0x60) = 0;\n    this[0x6f] = (__moneypunct_cache<char,false>)0x0;\n                    /* try { // try from 0031c365 to 0031c369 has its CatchHandler @ 0031c56f */\n    __moneypunct_cache<char,false>::_M_cache(this,(locale *)(param_6 + 0xd0));\n    locale::_Impl::_M_install_cache(*(_Impl **)(param_6 + 0xd0),(facet *)this,uVar7);\n    lVar11 = *plVar1;\n  }" if (parenthesized_expression "(lVar11 == 0)" ( (binary_expression "lVar11 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* try { // try from 0031c2e5 to 0031c2e9 has its CatchHandler @ 0031c576 */\n    this = (__moneypunct_cache<char,false> *)operator_new(0x70);\n    *(undefined4 *)(this + 8) = 0;\n    *(undefined8 *)(this + 0x10) = 0;\n    *(undefined8 *)(this + 0x18) = 0;\n    *(undefined2 *)(this + 0x20) = 0;\n    *(undefined ***)this = &PTR____moneypunct_cache_003f3258;\n    this[0x22] = (__moneypunct_cache<char,false>)0x0;\n    *(undefined8 *)(this + 0x28) = 0;\n    *(undefined8 *)(this + 0x30) = 0;\n    *(undefined8 *)(this + 0x38) = 0;\n    *(undefined8 *)(this + 0x40) = 0;\n    *(undefined8 *)(this + 0x48) = 0;\n    *(undefined8 *)(this + 0x50) = 0;\n    *(undefined8 *)(this + 0x58) = 0;\n    *(undefined4 *)(this + 0x60) = 0;\n    this[0x6f] = (__moneypunct_cache<char,false>)0x0;\n                    /* try { // try from 0031c365 to 0031c369 has its CatchHandler @ 0031c56f */\n    __moneypunct_cache<char,false>::_M_cache(this,(locale *)(param_6 + 0xd0));\n    locale::_Impl::_M_install_cache(*(_Impl **)(param_6 + 0xd0),(facet *)this,uVar7);\n    lVar11 = *plVar1;\n  }" { comment (expression_statement "this = (__moneypunct_cache<char,false> *)operator_new(0x70);" (assignment_expression "this = (__moneypunct_cache<char,false> *)operator_new(0x70)" identifier = (parenthesized_expression "(__moneypunct_cache<char,false> *)operator_new(0x70)" ( (comma_expression "__moneypunct_cache<char,false> *)operator_new(0x70)" (binary_expression "__moneypunct_cache<char" identifier < identifier) , (binary_expression "false> *)operator_new(0x70)" false > (pointer_expression "*)operator_new(0x70)" * (ERROR ")" )) (call_expression "operator_new(0x70)" identifier (argument_list "(0x70)" ( number_literal )))))) ))) ;) (expression_statement "*(undefined4 *)(this + 8) = 0;" (assignment_expression "*(undefined4 *)(this + 8) = 0" (pointer_expression "*(undefined4 *)(this + 8)" * (cast_expression "(undefined4 *)(this + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 8)" ( (binary_expression "this + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(this + 0x10) = 0;" (assignment_expression "*(undefined8 *)(this + 0x10) = 0" (pointer_expression "*(undefined8 *)(this + 0x10)" * (cast_expression "(undefined8 *)(this + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(this + 0x18) = 0;" (assignment_expression "*(undefined8 *)(this + 0x18) = 0" (pointer_expression "*(undefined8 *)(this + 0x18)" * (cast_expression "(undefined8 *)(this + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x18)" ( (binary_expression "this + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(this + 0x20) = 0;" (assignment_expression "*(undefined2 *)(this + 0x20) = 0" (pointer_expression "*(undefined2 *)(this + 0x20)" * (cast_expression "(undefined2 *)(this + 0x20)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x20)" ( (binary_expression "this + 0x20" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined ***)this = &PTR____moneypunct_cache_003f3258;" (assignment_expression "*(undefined ***)this = &PTR____moneypunct_cache_003f3258" (pointer_expression "*(undefined ***)this" * (cast_expression "(undefined ***)this" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) = (pointer_expression "&PTR____moneypunct_cache_003f3258" & identifier)) ;) (expression_statement "this[0x22] = (__moneypunct_cache<char,false>)0x0;" (assignment_expression "this[0x22] = (__moneypunct_cache<char,false>)0x0" (subscript_expression "this[0x22]" identifier [ number_literal ]) = (parenthesized_expression "(__moneypunct_cache<char,false>)0x0" ( (comma_expression "__moneypunct_cache<char,false>)0x0" (binary_expression "__moneypunct_cache<char" identifier < identifier) , (binary_expression "false>)0x0" false > (ERROR ")" )) number_literal)) ))) ;) (expression_statement "*(undefined8 *)(this + 0x28) = 0;" (assignment_expression "*(undefined8 *)(this + 0x28) = 0" (pointer_expression "*(undefined8 *)(this + 0x28)" * (cast_expression "(undefined8 *)(this + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x28)" ( (binary_expression "this + 0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(this + 0x30) = 0;" (assignment_expression "*(undefined8 *)(this + 0x30) = 0" (pointer_expression "*(undefined8 *)(this + 0x30)" * (cast_expression "(undefined8 *)(this + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x30)" ( (binary_expression "this + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(this + 0x38) = 0;" (assignment_expression "*(undefined8 *)(this + 0x38) = 0" (pointer_expression "*(undefined8 *)(this + 0x38)" * (cast_expression "(undefined8 *)(this + 0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x38)" ( (binary_expression "this + 0x38" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(this + 0x40) = 0;" (assignment_expression "*(undefined8 *)(this + 0x40) = 0" (pointer_expression "*(undefined8 *)(this + 0x40)" * (cast_expression "(undefined8 *)(this + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x40)" ( (binary_expression "this + 0x40" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(this + 0x48) = 0;" (assignment_expression "*(undefined8 *)(this + 0x48) = 0" (pointer_expression "*(undefined8 *)(this + 0x48)" * (cast_expression "(undefined8 *)(this + 0x48)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x48)" ( (binary_expression "this + 0x48" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(this + 0x50) = 0;" (assignment_expression "*(undefined8 *)(this + 0x50) = 0" (pointer_expression "*(undefined8 *)(this + 0x50)" * (cast_expression "(undefined8 *)(this + 0x50)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x50)" ( (binary_expression "this + 0x50" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(this + 0x58) = 0;" (assignment_expression "*(undefined8 *)(this + 0x58) = 0" (pointer_expression "*(undefined8 *)(this + 0x58)" * (cast_expression "(undefined8 *)(this + 0x58)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x58)" ( (binary_expression "this + 0x58" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0x60) = 0;" (assignment_expression "*(undefined4 *)(this + 0x60) = 0" (pointer_expression "*(undefined4 *)(this + 0x60)" * (cast_expression "(undefined4 *)(this + 0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x60)" ( (binary_expression "this + 0x60" identifier + number_literal) )))) = number_literal) ;) (expression_statement "this[0x6f] = (__moneypunct_cache<char,false>)0x0;" (assignment_expression "this[0x6f] = (__moneypunct_cache<char,false>)0x0" (subscript_expression "this[0x6f]" identifier [ number_literal ]) = (parenthesized_expression "(__moneypunct_cache<char,false>)0x0" ( (comma_expression "__moneypunct_cache<char,false>)0x0" (binary_expression "__moneypunct_cache<char" identifier < identifier) , (binary_expression "false>)0x0" false > (ERROR ")" )) number_literal)) ))) ;) comment (expression_statement "__moneypunct_cache<char,false>::_M_cache(this,(locale *)(param_6 + 0xd0));" (comma_expression "__moneypunct_cache<char,false>::_M_cache(this,(locale *)(param_6 + 0xd0))" (binary_expression "__moneypunct_cache<char" identifier < identifier) , (binary_expression "false>::_M_cache(this,(locale *)(param_6 + 0xd0))" false > (ERROR "::" : :) (call_expression "_M_cache(this,(locale *)(param_6 + 0xd0))" identifier (argument_list "(this,(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) ))) ))))) ;) (labeled_statement "locale::_Impl::_M_install_cache(*(_Impl **)(param_6 + 0xd0),(facet *)this,uVar7);" statement_identifier : (ERROR ":" :) (labeled_statement "_Impl::_M_install_cache(*(_Impl **)(param_6 + 0xd0),(facet *)this,uVar7);" statement_identifier : (ERROR ":" :) (expression_statement "_M_install_cache(*(_Impl **)(param_6 + 0xd0),(facet *)this,uVar7);" (call_expression "_M_install_cache(*(_Impl **)(param_6 + 0xd0),(facet *)this,uVar7)" identifier (argument_list "(*(_Impl **)(param_6 + 0xd0),(facet *)this,uVar7)" ( (pointer_expression "*(_Impl **)(param_6 + 0xd0)" * (cast_expression "(_Impl **)(param_6 + 0xd0)" ( (type_descriptor "_Impl **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_6 + 0xd0)" ( (binary_expression "param_6 + 0xd0" identifier + number_literal) )))) , (cast_expression "(facet *)this" ( (type_descriptor "facet *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;))) (expression_statement "lVar11 = *plVar1;" (assignment_expression "lVar11 = *plVar1" identifier = (pointer_expression "*plVar1" * identifier)) ;) })) (expression_statement "local_70 = 0;" (assignment_expression "local_70 = 0" identifier = number_literal) ;) (expression_statement "local_78 = &local_68;" (assignment_expression "local_78 = &local_68" identifier = (pointer_expression "&local_68" & identifier)) ;) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" identifier = number_literal) ;) (if_statement "if (*(char *)(lVar11 + 0x20) != '\0') {\n                    /* try { // try from 0031b536 to 0031b53a has its CatchHandler @ 0031c571 */\n    std::string::reserve((string *)&local_78,0x20);\n  }" if (parenthesized_expression "(*(char *)(lVar11 + 0x20) != '\0')" ( (binary_expression "*(char *)(lVar11 + 0x20) != '\0'" (pointer_expression "*(char *)(lVar11 + 0x20)" * (cast_expression "(char *)(lVar11 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0x20)" ( (binary_expression "lVar11 + 0x20" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* try { // try from 0031b536 to 0031b53a has its CatchHandler @ 0031c571 */\n    std::string::reserve((string *)&local_78,0x20);\n  }" { comment (labeled_statement "std::string::reserve((string *)&local_78,0x20);" statement_identifier : (ERROR ":" :) (labeled_statement "string::reserve((string *)&local_78,0x20);" statement_identifier : (ERROR ":" :) (expression_statement "reserve((string *)&local_78,0x20);" (call_expression "reserve((string *)&local_78,0x20)" identifier (argument_list "((string *)&local_78,0x20)" ( (cast_expression "(string *)&local_78" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_78" & identifier)) , number_literal ))) ;))) })) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "local_58 = local_48;" (assignment_expression "local_58 = local_48" identifier = identifier) ;) (expression_statement "local_48[0] = 0;" (assignment_expression "local_48[0] = 0" (subscript_expression "local_48[0]" identifier [ number_literal ]) = number_literal) ;) comment (labeled_statement "std::string::reserve((string *)&local_58,0x20);" statement_identifier : (ERROR ":" :) (labeled_statement "string::reserve((string *)&local_58,0x20);" statement_identifier : (ERROR ":" :) (expression_statement "reserve((string *)&local_58,0x20);" (call_expression "reserve((string *)&local_58,0x20)" identifier (argument_list "((string *)&local_58,0x20)" ( (cast_expression "(string *)&local_58" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_58" & identifier)) , number_literal ))) ;))) (expression_statement "local_7c = *(undefined4 *)(lVar11 + 0x60);" (assignment_expression "local_7c = *(undefined4 *)(lVar11 + 0x60)" identifier = (pointer_expression "*(undefined4 *)(lVar11 + 0x60)" * (cast_expression "(undefined4 *)(lVar11 + 0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0x60)" ( (binary_expression "lVar11 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = 0;" (assignment_expression "lVar3 = 0" identifier = number_literal) ;) (expression_statement "bVar2 = (byte)local_7c;" (assignment_expression "bVar2 = (byte)local_7c" identifier = (cast_expression "(byte)local_7c" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (while_statement "while( true ) {\n    if (bVar2 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x0031b5df. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar13 = (*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4)))\n                          ();\n      return auVar13;\n    }\n    if (3 < (int)lVar3 + 1) break;\n    bVar2 = *(byte *)((long)&local_7c + lVar3 + 1);\n    lVar3 = lVar3 + 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (bVar2 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x0031b5df. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar13 = (*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4)))\n                          ();\n      return auVar13;\n    }\n    if (3 < (int)lVar3 + 1) break;\n    bVar2 = *(byte *)((long)&local_7c + lVar3 + 1);\n    lVar3 = lVar3 + 1;\n  }" { (if_statement "if (bVar2 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x0031b5df. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar13 = (*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4)))\n                          ();\n      return auVar13;\n    }" if (parenthesized_expression "(bVar2 < 5)" ( (binary_expression "bVar2 < 5" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x0031b5df. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar13 = (*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4)))\n                          ();\n      return auVar13;\n    }" { comment comment (expression_statement "auVar13 = (*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4)))\n                          ();" (assignment_expression "auVar13 = (*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4)))\n                          ()" identifier = (call_expression "(*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4)))\n                          ()" (parenthesized_expression "(*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4)))" ( (pointer_expression "*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4))" * (cast_expression "(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4))" ( (binary_expression "&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4)" (pointer_expression "&DAT_0035ec68" & identifier) + (pointer_expression "*(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4)" * (cast_expression "(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4)" ( (binary_expression "&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4" (pointer_expression "&DAT_0035ec68" & identifier) + (binary_expression "(ulong)*(byte *)((long)&local_7c + lVar3) * 4" (binary_expression "(ulong)*(byte *)((long)&local_7c + lVar3)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(byte *)((long)&local_7c + lVar3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_7c + lVar3)" ( (binary_expression "(long)&local_7c + lVar3" (cast_expression "(long)&local_7c" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_7c" & identifier)) + identifier) )))) * number_literal)) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return auVar13;" return identifier ;) })) (if_statement "if (3 < (int)lVar3 + 1) break;" if (parenthesized_expression "(3 < (int)lVar3 + 1)" ( (binary_expression "3 < (int)lVar3 + 1" number_literal < (binary_expression "(int)lVar3 + 1" (cast_expression "(int)lVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) )) (break_statement "break;" break ;)) (expression_statement "bVar2 = *(byte *)((long)&local_7c + lVar3 + 1);" (assignment_expression "bVar2 = *(byte *)((long)&local_7c + lVar3 + 1)" identifier = (pointer_expression "*(byte *)((long)&local_7c + lVar3 + 1)" * (cast_expression "(byte *)((long)&local_7c + lVar3 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_7c + lVar3 + 1)" ( (binary_expression "(long)&local_7c + lVar3 + 1" (binary_expression "(long)&local_7c + lVar3" (cast_expression "(long)&local_7c" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_7c" & identifier)) + identifier) + number_literal) ))))) ;) (expression_statement "lVar3 = lVar3 + 1;" (assignment_expression "lVar3 = lVar3 + 1" identifier = (binary_expression "lVar3 + 1" identifier + number_literal)) ;) })) (if_statement "if ((local_50 < 2) ||\n     (uVar7 = std::string::find_first_not_of((string *)&local_58,'0',0), uVar7 == 0))\n  goto LAB_0031c03a;" if (parenthesized_expression "((local_50 < 2) ||\n     (uVar7 = std::string::find_first_not_of((string *)&local_58,'0',0), uVar7 == 0))" ( (binary_expression "(local_50 < 2) ||\n     (uVar7 = std::string::find_first_not_of((string *)&local_58,'0',0), uVar7 == 0)" (parenthesized_expression "(local_50 < 2)" ( (binary_expression "local_50 < 2" identifier < number_literal) )) || (parenthesized_expression "(uVar7 = std::string::find_first_not_of((string *)&local_58,'0',0), uVar7 == 0)" ( (ERROR "uVar7 = std::string::" (assignment_expression "uVar7 = std" identifier = identifier) : : identifier : :) (comma_expression "find_first_not_of((string *)&local_58,'0',0), uVar7 == 0" (call_expression "find_first_not_of((string *)&local_58,'0',0)" identifier (argument_list "((string *)&local_58,'0',0)" ( (cast_expression "(string *)&local_58" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_58" & identifier)) , (char_literal "'0'" ' character ') , number_literal ))) , (binary_expression "uVar7 == 0" identifier == number_literal)) ))) )) (goto_statement "goto LAB_0031c03a;" goto statement_identifier ;)) (if_statement "if (uVar7 == 0xffffffffffffffff) {\n    uVar7 = local_50 - 1;\n    if (uVar7 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_0031c03a;\n    }\n    if (uVar7 == 0) goto LAB_0031c03a;\n  }" if (parenthesized_expression "(uVar7 == 0xffffffffffffffff)" ( (binary_expression "uVar7 == 0xffffffffffffffff" identifier == number_literal) )) (compound_statement "{\n    uVar7 = local_50 - 1;\n    if (uVar7 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_0031c03a;\n    }\n    if (uVar7 == 0) goto LAB_0031c03a;\n  }" { (expression_statement "uVar7 = local_50 - 1;" (assignment_expression "uVar7 = local_50 - 1" identifier = (binary_expression "local_50 - 1" identifier - number_literal)) ;) (if_statement "if (uVar7 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_0031c03a;\n    }" if (parenthesized_expression "(uVar7 == 0xffffffffffffffff)" ( (binary_expression "uVar7 == 0xffffffffffffffff" identifier == number_literal) )) (compound_statement "{\n      *local_58 = 0;\n      goto LAB_0031c03a;\n    }" { (expression_statement "*local_58 = 0;" (assignment_expression "*local_58 = 0" (pointer_expression "*local_58" * identifier) = number_literal) ;) (goto_statement "goto LAB_0031c03a;" goto statement_identifier ;) })) (if_statement "if (uVar7 == 0) goto LAB_0031c03a;" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0031c03a;" goto statement_identifier ;)) })) (expression_statement "uVar8 = local_50;" (assignment_expression "uVar8 = local_50" identifier = identifier) ;) (if_statement "if (uVar7 < local_50) {\n    uVar8 = uVar7;\n  }" if (parenthesized_expression "(uVar7 < local_50)" ( (binary_expression "uVar7 < local_50" identifier < identifier) )) (compound_statement "{\n    uVar8 = uVar7;\n  }" { (expression_statement "uVar8 = uVar7;" (assignment_expression "uVar8 = uVar7" identifier = identifier) ;) })) (labeled_statement "std::string::_M_erase((string *)&local_58,0,uVar8);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_erase((string *)&local_58,0,uVar8);" statement_identifier : (ERROR ":" :) (expression_statement "_M_erase((string *)&local_58,0,uVar8);" (call_expression "_M_erase((string *)&local_58,0,uVar8)" identifier (argument_list "((string *)&local_58,0,uVar8)" ( (cast_expression "(string *)&local_58" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_58" & identifier)) , number_literal , identifier ))) ;))) (labeled_statement "LAB_0031c03a:\n  uVar7 = local_70;" statement_identifier : (expression_statement "uVar7 = local_70;" (assignment_expression "uVar7 = local_70" identifier = identifier) ;)) (if_statement "if (local_70 != 0) {\n    uVar8 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar9 = 0xf;\n    }\n    else {\n      uVar9 = CONCAT71(uStack_67,local_68);\n    }\n    if (uVar9 < uVar8) {\n      std::string::_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1);\n    }\n    local_78[uVar7] = 0;\n    local_78[uVar7 + 1] = 0;\n    local_70 = uVar8;\n    cVar5 = __verify_grouping(*(char **)(lVar11 + 0x10),*(ulong *)(lVar11 + 0x18),\n                              (string *)&local_78);\n    if (cVar5 == '\0') {\n      *param_7 = *param_7 | 4;\n    }\n  }" if (parenthesized_expression "(local_70 != 0)" ( (binary_expression "local_70 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar8 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar9 = 0xf;\n    }\n    else {\n      uVar9 = CONCAT71(uStack_67,local_68);\n    }\n    if (uVar9 < uVar8) {\n      std::string::_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1);\n    }\n    local_78[uVar7] = 0;\n    local_78[uVar7 + 1] = 0;\n    local_70 = uVar8;\n    cVar5 = __verify_grouping(*(char **)(lVar11 + 0x10),*(ulong *)(lVar11 + 0x18),\n                              (string *)&local_78);\n    if (cVar5 == '\0') {\n      *param_7 = *param_7 | 4;\n    }\n  }" { (expression_statement "uVar8 = local_70 + 1;" (assignment_expression "uVar8 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) (if_statement "if (local_78 == &local_68) {\n      uVar9 = 0xf;\n    }\n    else {\n      uVar9 = CONCAT71(uStack_67,local_68);\n    }" if (parenthesized_expression "(local_78 == &local_68)" ( (binary_expression "local_78 == &local_68" identifier == (pointer_expression "&local_68" & identifier)) )) (compound_statement "{\n      uVar9 = 0xf;\n    }" { (expression_statement "uVar9 = 0xf;" (assignment_expression "uVar9 = 0xf" identifier = number_literal) ;) }) (else_clause "else {\n      uVar9 = CONCAT71(uStack_67,local_68);\n    }" else (compound_statement "{\n      uVar9 = CONCAT71(uStack_67,local_68);\n    }" { (expression_statement "uVar9 = CONCAT71(uStack_67,local_68);" (assignment_expression "uVar9 = CONCAT71(uStack_67,local_68)" identifier = (call_expression "CONCAT71(uStack_67,local_68)" identifier (argument_list "(uStack_67,local_68)" ( identifier , identifier )))) ;) }))) (if_statement "if (uVar9 < uVar8) {\n      std::string::_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1);\n    }" if (parenthesized_expression "(uVar9 < uVar8)" ( (binary_expression "uVar9 < uVar8" identifier < identifier) )) (compound_statement "{\n      std::string::_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1);\n    }" { (labeled_statement "std::string::_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1);" (call_expression "_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1)" identifier (argument_list "((string *)&local_78,local_70,0,(char *)0x0,1)" ( (cast_expression "(string *)&local_78" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_78" & identifier)) , identifier , number_literal , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal ))) ;))) })) (expression_statement "local_78[uVar7] = 0;" (assignment_expression "local_78[uVar7] = 0" (subscript_expression "local_78[uVar7]" identifier [ identifier ]) = number_literal) ;) (expression_statement "local_78[uVar7 + 1] = 0;" (assignment_expression "local_78[uVar7 + 1] = 0" (subscript_expression "local_78[uVar7 + 1]" identifier [ (binary_expression "uVar7 + 1" identifier + number_literal) ]) = number_literal) ;) (expression_statement "local_70 = uVar8;" (assignment_expression "local_70 = uVar8" identifier = identifier) ;) (expression_statement "cVar5 = __verify_grouping(*(char **)(lVar11 + 0x10),*(ulong *)(lVar11 + 0x18),\n                              (string *)&local_78);" (assignment_expression "cVar5 = __verify_grouping(*(char **)(lVar11 + 0x10),*(ulong *)(lVar11 + 0x18),\n                              (string *)&local_78)" identifier = (call_expression "__verify_grouping(*(char **)(lVar11 + 0x10),*(ulong *)(lVar11 + 0x18),\n                              (string *)&local_78)" identifier (argument_list "(*(char **)(lVar11 + 0x10),*(ulong *)(lVar11 + 0x18),\n                              (string *)&local_78)" ( (pointer_expression "*(char **)(lVar11 + 0x10)" * (cast_expression "(char **)(lVar11 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar11 + 0x10)" ( (binary_expression "lVar11 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(ulong *)(lVar11 + 0x18)" * (cast_expression "(ulong *)(lVar11 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0x18)" ( (binary_expression "lVar11 + 0x18" identifier + number_literal) )))) , (cast_expression "(string *)&local_78" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_78" & 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_58);" statement_identifier : (ERROR ":" :) (labeled_statement "string::swap(param_8,(string *)&local_58);" statement_identifier : (ERROR ":" :) (expression_statement "swap(param_8,(string *)&local_58);" (call_expression "swap(param_8,(string *)&local_58)" identifier (argument_list "(param_8,(string *)&local_58)" ( identifier , (cast_expression "(string *)&local_58" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_58" & identifier)) ))) ;))) (expression_statement "local_90 = (int)param_3;" (assignment_expression "local_90 = (int)param_3" identifier = (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "bVar12 = local_90 == -1;" (assignment_expression "bVar12 = local_90 == -1" identifier = (binary_expression "local_90 == -1" identifier == number_literal)) ;) (expression_statement "bVar10 = param_2 != (long *)0x0 && bVar12;" (assignment_expression "bVar10 = param_2 != (long *)0x0 && bVar12" identifier = (binary_expression "param_2 != (long *)0x0 && bVar12" (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier)) ;) (expression_statement "local_98 = param_2;" (assignment_expression "local_98 = param_2" identifier = identifier) ;) (if_statement "if (((param_2 != (long *)0x0 && bVar12) &&\n      (bVar12 = false, (ulong)param_2[3] <= (ulong)param_2[2])) &&\n     (iVar6 = (**(code **)(*param_2 + 0x48))(), iVar6 == -1)) {\n    local_98 = (long *)0x0;\n    bVar12 = bVar10;\n  }" if (parenthesized_expression "(((param_2 != (long *)0x0 && bVar12) &&\n      (bVar12 = false, (ulong)param_2[3] <= (ulong)param_2[2])) &&\n     (iVar6 = (**(code **)(*param_2 + 0x48))(), iVar6 == -1))" ( (binary_expression "((param_2 != (long *)0x0 && bVar12) &&\n      (bVar12 = false, (ulong)param_2[3] <= (ulong)param_2[2])) &&\n     (iVar6 = (**(code **)(*param_2 + 0x48))(), iVar6 == -1)" (parenthesized_expression "((param_2 != (long *)0x0 && bVar12) &&\n      (bVar12 = false, (ulong)param_2[3] <= (ulong)param_2[2]))" ( (binary_expression "(param_2 != (long *)0x0 && bVar12) &&\n      (bVar12 = false, (ulong)param_2[3] <= (ulong)param_2[2])" (parenthesized_expression "(param_2 != (long *)0x0 && bVar12)" ( (binary_expression "param_2 != (long *)0x0 && bVar12" (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier) )) && (parenthesized_expression "(bVar12 = false, (ulong)param_2[3] <= (ulong)param_2[2])" ( (comma_expression "bVar12 = false, (ulong)param_2[3] <= (ulong)param_2[2]" (assignment_expression "bVar12 = false" identifier = false) , (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ))) )) && (parenthesized_expression "(iVar6 = (**(code **)(*param_2 + 0x48))(), iVar6 == -1)" ( (comma_expression "iVar6 = (**(code **)(*param_2 + 0x48))(), iVar6 == -1" (assignment_expression "iVar6 = (**(code **)(*param_2 + 0x48))()" identifier = (call_expression "(**(code **)(*param_2 + 0x48))()" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "()" ( )))) , (binary_expression "iVar6 == -1" identifier == number_literal)) ))) )) (compound_statement "{\n    local_98 = (long *)0x0;\n    bVar12 = bVar10;\n  }" { (expression_statement "local_98 = (long *)0x0;" (assignment_expression "local_98 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar12 = bVar10;" (assignment_expression "bVar12 = bVar10" identifier = identifier) ;) })) (expression_statement "bVar4 = param_4 != (long *)0x0 && param_5 == -1;" (assignment_expression "bVar4 = param_4 != (long *)0x0 && param_5 == -1" identifier = (binary_expression "param_4 != (long *)0x0 && param_5 == -1" (binary_expression "param_4 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "param_5 == -1" identifier == number_literal))) ;) (expression_statement "bVar10 = param_5 == -1;" (assignment_expression "bVar10 = param_5 == -1" identifier = (binary_expression "param_5 == -1" identifier == number_literal)) ;) (if_statement "if ((bVar4) && (bVar10 = false, (ulong)param_4[3] <= (ulong)param_4[2])) {\n    iVar6 = (**(code **)(*param_4 + 0x48))();\n    bVar10 = false;\n    if (iVar6 == -1) {\n      bVar10 = bVar4;\n    }\n  }" if (parenthesized_expression "((bVar4) && (bVar10 = false, (ulong)param_4[3] <= (ulong)param_4[2]))" ( (binary_expression "(bVar4) && (bVar10 = false, (ulong)param_4[3] <= (ulong)param_4[2])" (parenthesized_expression "(bVar4)" ( identifier )) && (parenthesized_expression "(bVar10 = false, (ulong)param_4[3] <= (ulong)param_4[2])" ( (comma_expression "bVar10 = false, (ulong)param_4[3] <= (ulong)param_4[2]" (assignment_expression "bVar10 = false" identifier = false) , (binary_expression "(ulong)param_4[3] <= (ulong)param_4[2]" (cast_expression "(ulong)param_4[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_4[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_4[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_4[2]" identifier [ number_literal ])))) ))) )) (compound_statement "{\n    iVar6 = (**(code **)(*param_4 + 0x48))();\n    bVar10 = false;\n    if (iVar6 == -1) {\n      bVar10 = bVar4;\n    }\n  }" { (expression_statement "iVar6 = (**(code **)(*param_4 + 0x48))();" (assignment_expression "iVar6 = (**(code **)(*param_4 + 0x48))()" identifier = (call_expression "(**(code **)(*param_4 + 0x48))()" (parenthesized_expression "(**(code **)(*param_4 + 0x48))" ( (pointer_expression "**(code **)(*param_4 + 0x48)" * (pointer_expression "*(code **)(*param_4 + 0x48)" * (cast_expression "(code **)(*param_4 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x48)" ( (binary_expression "*param_4 + 0x48" (pointer_expression "*param_4" * identifier) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (if_statement "if (iVar6 == -1) {\n      bVar10 = bVar4;\n    }" if (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) (compound_statement "{\n      bVar10 = bVar4;\n    }" { (expression_statement "bVar10 = bVar4;" (assignment_expression "bVar10 = bVar4" identifier = identifier) ;) })) })) (if_statement "if (bVar10 == bVar12) {\n    *param_7 = *param_7 | 2;\n  }" if (parenthesized_expression "(bVar10 == bVar12)" ( (binary_expression "bVar10 == bVar12" identifier == identifier) )) (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_58 != local_48) {\n    operator_delete(local_58);\n  }" if (parenthesized_expression "(local_58 != local_48)" ( (binary_expression "local_58 != local_48" identifier != identifier) )) (compound_statement "{\n    operator_delete(local_58);\n  }" { (expression_statement "operator_delete(local_58);" (call_expression "operator_delete(local_58)" identifier (argument_list "(local_58)" ( identifier ))) ;) })) (if_statement "if (local_78 != &local_68) {\n    operator_delete(local_78);\n  }" if (parenthesized_expression "(local_78 != &local_68)" ( (binary_expression "local_78 != &local_68" identifier != (pointer_expression "&local_68" & identifier)) )) (compound_statement "{\n    operator_delete(local_78);\n  }" { (expression_statement "operator_delete(local_78);" (call_expression "operator_delete(local_78)" identifier (argument_list "(local_78)" ( identifier ))) ;) })) (expression_statement "auVar13._8_8_ = param_3;" (assignment_expression "auVar13._8_8_ = param_3" (field_expression "auVar13._8_8_" identifier . field_identifier) = identifier) ;) (expression_statement "auVar13._0_8_ = local_98;" (assignment_expression "auVar13._0_8_ = local_98" (field_expression "auVar13._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar13;" return identifier ;) }))
(translation_unit "undefined1  [16]\nFUN_0031b470(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,int param_5,\n            long param_6,uint *param_7,undefined8 param_8)\n\n{\n  long *plVar1;\n  byte bVar2;\n  bool bVar3;\n  char cVar4;\n  int iVar5;\n  long lVar6;\n  ulong uVar7;\n  undefined8 *puVar8;\n  ulong uVar9;\n  ulong uVar10;\n  bool bVar11;\n  long lVar12;\n  bool bVar13;\n  undefined1 auVar14 [16];\n  long *local_98;\n  int local_90;\n  undefined4 local_7c;\n  undefined1 *local_78;\n  ulong local_70;\n  undefined1 local_68;\n  undefined7 uStack_67;\n  undefined1 *local_58;\n  ulong local_50;\n  undefined1 local_48 [24];\n  \n  FUN_002b4380(param_6 + 0xd0);\n  lVar6 = FUN_002a50c0(&DAT_00405ef0);\n  plVar1 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar6 * 8);\n  lVar12 = *plVar1;\n  if (lVar12 == 0) {\n                    \n    puVar8 = (undefined8 *)FUN_002a11b0(0x70);\n    *(undefined4 *)(puVar8 + 1) = 0;\n    puVar8[2] = 0;\n    puVar8[3] = 0;\n    *(undefined2 *)(puVar8 + 4) = 0;\n    *puVar8 = &PTR_FUN_003f3258;\n    *(undefined1 *)((long)puVar8 + 0x22) = 0;\n    puVar8[5] = 0;\n    puVar8[6] = 0;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar8[9] = 0;\n    puVar8[10] = 0;\n    puVar8[0xb] = 0;\n    *(undefined4 *)(puVar8 + 0xc) = 0;\n    *(undefined1 *)((long)puVar8 + 0x6f) = 0;\n                    \n    FUN_002b55a0(puVar8,param_6 + 0xd0);\n    FUN_002a5530(*(undefined8 *)(param_6 + 0xd0),puVar8,lVar6);\n    lVar12 = *plVar1;\n  }\n  local_70 = 0;\n  local_78 = &local_68;\n  local_68 = 0;\n  if (*(char *)(lVar12 + 0x20) != '\0') {\n                    \n    FUN_002a9b20(&local_78,0x20);\n  }\n  local_50 = 0;\n  local_58 = local_48;\n  local_48[0] = 0;\n                    \n  FUN_002a9b20(&local_58,0x20);\n  local_7c = *(undefined4 *)(lVar12 + 0x60);\n  lVar6 = 0;\n  bVar2 = (byte)local_7c;\n  while( true ) {\n    if (bVar2 < 5) {\n                    \n                    \n      auVar14 = (*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)))\n                          ();\n      return auVar14;\n    }\n    if (3 < (int)lVar6 + 1) break;\n    bVar2 = *(byte *)((long)&local_7c + lVar6 + 1);\n    lVar6 = lVar6 + 1;\n  }\n  if ((local_50 < 2) || (uVar7 = FUN_002ab490(&local_58,0x30,0), uVar7 == 0)) goto LAB_0031c03a;\n  if (uVar7 == 0xffffffffffffffff) {\n    uVar7 = local_50 - 1;\n    if (uVar7 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_0031c03a;\n    }\n    if (uVar7 == 0) goto LAB_0031c03a;\n  }\n  uVar9 = local_50;\n  if (uVar7 < local_50) {\n    uVar9 = uVar7;\n  }\n  FUN_002a97b0(&local_58,0,uVar9);\nLAB_0031c03a:\n  uVar7 = local_70;\n  if (local_70 != 0) {\n    uVar9 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar10 = 0xf;\n    }\n    else {\n      uVar10 = CONCAT71(uStack_67,local_68);\n    }\n    if (uVar10 < uVar9) {\n      FUN_002a9670(&local_78,local_70,0,0,1);\n    }\n    local_78[uVar7] = 0;\n    local_78[uVar7 + 1] = 0;\n    local_70 = uVar9;\n    cVar4 = FUN_0032d0e0(*(undefined8 *)(lVar12 + 0x10),*(undefined8 *)(lVar12 + 0x18),&local_78);\n    if (cVar4 == '\0') {\n      *param_7 = *param_7 | 4;\n    }\n  }\n  FUN_002aae90(param_8,&local_58);\n  local_90 = (int)param_3;\n  bVar13 = local_90 == -1;\n  bVar11 = param_2 != (long *)0x0 && bVar13;\n  local_98 = param_2;\n  if (((param_2 != (long *)0x0 && bVar13) &&\n      (bVar13 = false, (ulong)param_2[3] <= (ulong)param_2[2])) &&\n     (iVar5 = (**(code **)(*param_2 + 0x48))(), iVar5 == -1)) {\n    local_98 = (long *)0x0;\n    bVar13 = bVar11;\n  }\n  bVar3 = param_4 != (long *)0x0 && param_5 == -1;\n  bVar11 = param_5 == -1;\n  if ((bVar3) && (bVar11 = false, (ulong)param_4[3] <= (ulong)param_4[2])) {\n    iVar5 = (**(code **)(*param_4 + 0x48))();\n    bVar11 = false;\n    if (iVar5 == -1) {\n      bVar11 = bVar3;\n    }\n  }\n  if (bVar11 == bVar13) {\n    *param_7 = *param_7 | 2;\n  }\n  if (local_58 != local_48) {\n    FUN_002a2980();\n  }\n  if (local_78 != &local_68) {\n    FUN_002a2980();\n  }\n  auVar14._8_8_ = param_3;\n  auVar14._0_8_ = local_98;\n  return auVar14;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (declaration "FUN_0031b470(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,int param_5,\n            long param_6,uint *param_7,undefined8 param_8)\n\n{\n  long *plVar1;" (macro_type_specifier "FUN_0031b470(undefined8" identifier ( (type_descriptor "undefined8" type_identifier) )) identifier , (ERROR "long" identifier) (pointer_declarator "*param_2" * identifier) , identifier (ERROR "param_3" identifier) , (ERROR "long" identifier) (pointer_declarator "*param_4" * identifier) , (ERROR "int" identifier) identifier , (ERROR "long" identifier) identifier , (ERROR "uint" identifier) (pointer_declarator "*param_7" * identifier) , (ERROR "undefined8 param_8)\n\n{\n  long" identifier identifier ) { long) (pointer_declarator "*plVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "undefined8 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "long lVar12;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "undefined1 auVar14 [16];" type_identifier (array_declarator "auVar14 [16]" identifier [ number_literal ]) ;) (declaration "long *local_98;" (sized_type_specifier "long" long) (pointer_declarator "*local_98" * identifier) ;) (declaration "int local_90;" primitive_type identifier ;) (declaration "undefined4 local_7c;" type_identifier identifier ;) (declaration "undefined1 *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "ulong local_70;" type_identifier identifier ;) (declaration "undefined1 local_68;" type_identifier identifier ;) (declaration "undefined7 uStack_67;" type_identifier identifier ;) (declaration "undefined1 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "ulong local_50;" type_identifier identifier ;) (declaration "undefined1 local_48 [24];" type_identifier (array_declarator "local_48 [24]" identifier [ number_literal ]) ;) (expression_statement "FUN_002b4380(param_6 + 0xd0);" (call_expression "FUN_002b4380(param_6 + 0xd0)" identifier (argument_list "(param_6 + 0xd0)" ( (binary_expression "param_6 + 0xd0" identifier + number_literal) ))) ;) (expression_statement "lVar6 = FUN_002a50c0(&DAT_00405ef0);" (assignment_expression "lVar6 = FUN_002a50c0(&DAT_00405ef0)" identifier = (call_expression "FUN_002a50c0(&DAT_00405ef0)" identifier (argument_list "(&DAT_00405ef0)" ( (pointer_expression "&DAT_00405ef0" & identifier) )))) ;) (expression_statement "plVar1 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar6 * 8);" (assignment_expression "plVar1 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar6 * 8)" identifier = (cast_expression "(long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar6 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar6 * 8)" ( (binary_expression "*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar6 * 8" (pointer_expression "*(long *)(*(long *)(param_6 + 0xd0) + 0x18)" * (cast_expression "(long *)(*(long *)(param_6 + 0xd0) + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_6 + 0xd0) + 0x18)" ( (binary_expression "*(long *)(param_6 + 0xd0) + 0x18" (pointer_expression "*(long *)(param_6 + 0xd0)" * (cast_expression "(long *)(param_6 + 0xd0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + 0xd0)" ( (binary_expression "param_6 + 0xd0" identifier + number_literal) )))) + number_literal) )))) + (binary_expression "lVar6 * 8" identifier * number_literal)) )))) ;) (expression_statement "lVar12 = *plVar1;" (assignment_expression "lVar12 = *plVar1" identifier = (pointer_expression "*plVar1" * identifier)) ;) (if_statement "if (lVar12 == 0) {\n                    \n    puVar8 = (undefined8 *)FUN_002a11b0(0x70);\n    *(undefined4 *)(puVar8 + 1) = 0;\n    puVar8[2] = 0;\n    puVar8[3] = 0;\n    *(undefined2 *)(puVar8 + 4) = 0;\n    *puVar8 = &PTR_FUN_003f3258;\n    *(undefined1 *)((long)puVar8 + 0x22) = 0;\n    puVar8[5] = 0;\n    puVar8[6] = 0;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar8[9] = 0;\n    puVar8[10] = 0;\n    puVar8[0xb] = 0;\n    *(undefined4 *)(puVar8 + 0xc) = 0;\n    *(undefined1 *)((long)puVar8 + 0x6f) = 0;\n                    \n    FUN_002b55a0(puVar8,param_6 + 0xd0);\n    FUN_002a5530(*(undefined8 *)(param_6 + 0xd0),puVar8,lVar6);\n    lVar12 = *plVar1;\n  }" if (parenthesized_expression "(lVar12 == 0)" ( (binary_expression "lVar12 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    puVar8 = (undefined8 *)FUN_002a11b0(0x70);\n    *(undefined4 *)(puVar8 + 1) = 0;\n    puVar8[2] = 0;\n    puVar8[3] = 0;\n    *(undefined2 *)(puVar8 + 4) = 0;\n    *puVar8 = &PTR_FUN_003f3258;\n    *(undefined1 *)((long)puVar8 + 0x22) = 0;\n    puVar8[5] = 0;\n    puVar8[6] = 0;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar8[9] = 0;\n    puVar8[10] = 0;\n    puVar8[0xb] = 0;\n    *(undefined4 *)(puVar8 + 0xc) = 0;\n    *(undefined1 *)((long)puVar8 + 0x6f) = 0;\n                    \n    FUN_002b55a0(puVar8,param_6 + 0xd0);\n    FUN_002a5530(*(undefined8 *)(param_6 + 0xd0),puVar8,lVar6);\n    lVar12 = *plVar1;\n  }" { (expression_statement "puVar8 = (undefined8 *)FUN_002a11b0(0x70);" (assignment_expression "puVar8 = (undefined8 *)FUN_002a11b0(0x70)" identifier = (cast_expression "(undefined8 *)FUN_002a11b0(0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002a11b0(0x70)" identifier (argument_list "(0x70)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar8 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar8 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar8 + 1)" * (cast_expression "(undefined4 *)(puVar8 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 1)" ( (binary_expression "puVar8 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar8[2] = 0;" (assignment_expression "puVar8[2] = 0" (subscript_expression "puVar8[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[3] = 0;" (assignment_expression "puVar8[3] = 0" (subscript_expression "puVar8[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar8 + 4) = 0;" (assignment_expression "*(undefined2 *)(puVar8 + 4) = 0" (pointer_expression "*(undefined2 *)(puVar8 + 4)" * (cast_expression "(undefined2 *)(puVar8 + 4)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 4)" ( (binary_expression "puVar8 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar8 = &PTR_FUN_003f3258;" (assignment_expression "*puVar8 = &PTR_FUN_003f3258" (pointer_expression "*puVar8" * identifier) = (pointer_expression "&PTR_FUN_003f3258" & identifier)) ;) (expression_statement "*(undefined1 *)((long)puVar8 + 0x22) = 0;" (assignment_expression "*(undefined1 *)((long)puVar8 + 0x22) = 0" (pointer_expression "*(undefined1 *)((long)puVar8 + 0x22)" * (cast_expression "(undefined1 *)((long)puVar8 + 0x22)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar8 + 0x22)" ( (binary_expression "(long)puVar8 + 0x22" (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar8[5] = 0;" (assignment_expression "puVar8[5] = 0" (subscript_expression "puVar8[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[6] = 0;" (assignment_expression "puVar8[6] = 0" (subscript_expression "puVar8[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[7] = 0;" (assignment_expression "puVar8[7] = 0" (subscript_expression "puVar8[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[8] = 0;" (assignment_expression "puVar8[8] = 0" (subscript_expression "puVar8[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[9] = 0;" (assignment_expression "puVar8[9] = 0" (subscript_expression "puVar8[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[10] = 0;" (assignment_expression "puVar8[10] = 0" (subscript_expression "puVar8[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[0xb] = 0;" (assignment_expression "puVar8[0xb] = 0" (subscript_expression "puVar8[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar8 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar8 + 0xc) = 0" (pointer_expression "*(undefined4 *)(puVar8 + 0xc)" * (cast_expression "(undefined4 *)(puVar8 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0xc)" ( (binary_expression "puVar8 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((long)puVar8 + 0x6f) = 0;" (assignment_expression "*(undefined1 *)((long)puVar8 + 0x6f) = 0" (pointer_expression "*(undefined1 *)((long)puVar8 + 0x6f)" * (cast_expression "(undefined1 *)((long)puVar8 + 0x6f)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar8 + 0x6f)" ( (binary_expression "(long)puVar8 + 0x6f" (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_002b55a0(puVar8,param_6 + 0xd0);" (call_expression "FUN_002b55a0(puVar8,param_6 + 0xd0)" identifier (argument_list "(puVar8,param_6 + 0xd0)" ( identifier , (binary_expression "param_6 + 0xd0" identifier + number_literal) ))) ;) (expression_statement "FUN_002a5530(*(undefined8 *)(param_6 + 0xd0),puVar8,lVar6);" (call_expression "FUN_002a5530(*(undefined8 *)(param_6 + 0xd0),puVar8,lVar6)" identifier (argument_list "(*(undefined8 *)(param_6 + 0xd0),puVar8,lVar6)" ( (pointer_expression "*(undefined8 *)(param_6 + 0xd0)" * (cast_expression "(undefined8 *)(param_6 + 0xd0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + 0xd0)" ( (binary_expression "param_6 + 0xd0" identifier + number_literal) )))) , identifier , identifier ))) ;) (expression_statement "lVar12 = *plVar1;" (assignment_expression "lVar12 = *plVar1" identifier = (pointer_expression "*plVar1" * identifier)) ;) })) (expression_statement "local_70 = 0;" (assignment_expression "local_70 = 0" identifier = number_literal) ;) (expression_statement "local_78 = &local_68;" (assignment_expression "local_78 = &local_68" identifier = (pointer_expression "&local_68" & identifier)) ;) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" identifier = number_literal) ;) (if_statement "if (*(char *)(lVar12 + 0x20) != '\0') {\n                    \n    FUN_002a9b20(&local_78,0x20);\n  }" if (parenthesized_expression "(*(char *)(lVar12 + 0x20) != '\0')" ( (binary_expression "*(char *)(lVar12 + 0x20) != '\0'" (pointer_expression "*(char *)(lVar12 + 0x20)" * (cast_expression "(char *)(lVar12 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar12 + 0x20)" ( (binary_expression "lVar12 + 0x20" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    \n    FUN_002a9b20(&local_78,0x20);\n  }" { (expression_statement "FUN_002a9b20(&local_78,0x20);" (call_expression "FUN_002a9b20(&local_78,0x20)" identifier (argument_list "(&local_78,0x20)" ( (pointer_expression "&local_78" & identifier) , number_literal ))) ;) })) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "local_58 = local_48;" (assignment_expression "local_58 = local_48" identifier = identifier) ;) (expression_statement "local_48[0] = 0;" (assignment_expression "local_48[0] = 0" (subscript_expression "local_48[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_002a9b20(&local_58,0x20);" (call_expression "FUN_002a9b20(&local_58,0x20)" identifier (argument_list "(&local_58,0x20)" ( (pointer_expression "&local_58" & identifier) , number_literal ))) ;) (expression_statement "local_7c = *(undefined4 *)(lVar12 + 0x60);" (assignment_expression "local_7c = *(undefined4 *)(lVar12 + 0x60)" identifier = (pointer_expression "*(undefined4 *)(lVar12 + 0x60)" * (cast_expression "(undefined4 *)(lVar12 + 0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar12 + 0x60)" ( (binary_expression "lVar12 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "lVar6 = 0;" (assignment_expression "lVar6 = 0" identifier = number_literal) ;) (expression_statement "bVar2 = (byte)local_7c;" (assignment_expression "bVar2 = (byte)local_7c" identifier = (cast_expression "(byte)local_7c" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (while_statement "while( true ) {\n    if (bVar2 < 5) {\n                    \n                    \n      auVar14 = (*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)))\n                          ();\n      return auVar14;\n    }\n    if (3 < (int)lVar6 + 1) break;\n    bVar2 = *(byte *)((long)&local_7c + lVar6 + 1);\n    lVar6 = lVar6 + 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (bVar2 < 5) {\n                    \n                    \n      auVar14 = (*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)))\n                          ();\n      return auVar14;\n    }\n    if (3 < (int)lVar6 + 1) break;\n    bVar2 = *(byte *)((long)&local_7c + lVar6 + 1);\n    lVar6 = lVar6 + 1;\n  }" { (if_statement "if (bVar2 < 5) {\n                    \n                    \n      auVar14 = (*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)))\n                          ();\n      return auVar14;\n    }" if (parenthesized_expression "(bVar2 < 5)" ( (binary_expression "bVar2 < 5" identifier < number_literal) )) (compound_statement "{\n                    \n                    \n      auVar14 = (*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)))\n                          ();\n      return auVar14;\n    }" { (expression_statement "auVar14 = (*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)))\n                          ();" (assignment_expression "auVar14 = (*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)))\n                          ()" identifier = (call_expression "(*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)))\n                          ()" (parenthesized_expression "(*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)))" ( (pointer_expression "*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4))" * (cast_expression "(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4))" ( (binary_expression "&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)" (pointer_expression "&DAT_0035ec68" & identifier) + (pointer_expression "*(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)" * (cast_expression "(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)" ( (binary_expression "&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4" (pointer_expression "&DAT_0035ec68" & identifier) + (binary_expression "(ulong)*(byte *)((long)&local_7c + lVar6) * 4" (binary_expression "(ulong)*(byte *)((long)&local_7c + lVar6)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(byte *)((long)&local_7c + lVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_7c + lVar6)" ( (binary_expression "(long)&local_7c + lVar6" (cast_expression "(long)&local_7c" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_7c" & identifier)) + identifier) )))) * number_literal)) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return auVar14;" 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 "bVar2 = *(byte *)((long)&local_7c + lVar6 + 1);" (assignment_expression "bVar2 = *(byte *)((long)&local_7c + lVar6 + 1)" identifier = (pointer_expression "*(byte *)((long)&local_7c + lVar6 + 1)" * (cast_expression "(byte *)((long)&local_7c + lVar6 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_7c + lVar6 + 1)" ( (binary_expression "(long)&local_7c + lVar6 + 1" (binary_expression "(long)&local_7c + lVar6" (cast_expression "(long)&local_7c" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_7c" & 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 ((local_50 < 2) || (uVar7 = FUN_002ab490(&local_58,0x30,0), uVar7 == 0)) goto LAB_0031c03a;" if (parenthesized_expression "((local_50 < 2) || (uVar7 = FUN_002ab490(&local_58,0x30,0), uVar7 == 0))" ( (binary_expression "(local_50 < 2) || (uVar7 = FUN_002ab490(&local_58,0x30,0), uVar7 == 0)" (parenthesized_expression "(local_50 < 2)" ( (binary_expression "local_50 < 2" identifier < number_literal) )) || (parenthesized_expression "(uVar7 = FUN_002ab490(&local_58,0x30,0), uVar7 == 0)" ( (comma_expression "uVar7 = FUN_002ab490(&local_58,0x30,0), uVar7 == 0" (assignment_expression "uVar7 = FUN_002ab490(&local_58,0x30,0)" identifier = (call_expression "FUN_002ab490(&local_58,0x30,0)" identifier (argument_list "(&local_58,0x30,0)" ( (pointer_expression "&local_58" & identifier) , number_literal , number_literal )))) , (binary_expression "uVar7 == 0" identifier == number_literal)) ))) )) (goto_statement "goto LAB_0031c03a;" goto statement_identifier ;)) (if_statement "if (uVar7 == 0xffffffffffffffff) {\n    uVar7 = local_50 - 1;\n    if (uVar7 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_0031c03a;\n    }\n    if (uVar7 == 0) goto LAB_0031c03a;\n  }" if (parenthesized_expression "(uVar7 == 0xffffffffffffffff)" ( (binary_expression "uVar7 == 0xffffffffffffffff" identifier == number_literal) )) (compound_statement "{\n    uVar7 = local_50 - 1;\n    if (uVar7 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_0031c03a;\n    }\n    if (uVar7 == 0) goto LAB_0031c03a;\n  }" { (expression_statement "uVar7 = local_50 - 1;" (assignment_expression "uVar7 = local_50 - 1" identifier = (binary_expression "local_50 - 1" identifier - number_literal)) ;) (if_statement "if (uVar7 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_0031c03a;\n    }" if (parenthesized_expression "(uVar7 == 0xffffffffffffffff)" ( (binary_expression "uVar7 == 0xffffffffffffffff" identifier == number_literal) )) (compound_statement "{\n      *local_58 = 0;\n      goto LAB_0031c03a;\n    }" { (expression_statement "*local_58 = 0;" (assignment_expression "*local_58 = 0" (pointer_expression "*local_58" * identifier) = number_literal) ;) (goto_statement "goto LAB_0031c03a;" goto statement_identifier ;) })) (if_statement "if (uVar7 == 0) goto LAB_0031c03a;" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0031c03a;" goto statement_identifier ;)) })) (expression_statement "uVar9 = local_50;" (assignment_expression "uVar9 = local_50" identifier = identifier) ;) (if_statement "if (uVar7 < local_50) {\n    uVar9 = uVar7;\n  }" if (parenthesized_expression "(uVar7 < local_50)" ( (binary_expression "uVar7 < local_50" identifier < identifier) )) (compound_statement "{\n    uVar9 = uVar7;\n  }" { (expression_statement "uVar9 = uVar7;" (assignment_expression "uVar9 = uVar7" identifier = identifier) ;) })) (expression_statement "FUN_002a97b0(&local_58,0,uVar9);" (call_expression "FUN_002a97b0(&local_58,0,uVar9)" identifier (argument_list "(&local_58,0,uVar9)" ( (pointer_expression "&local_58" & identifier) , number_literal , identifier ))) ;) (labeled_statement "LAB_0031c03a:\n  uVar7 = local_70;" statement_identifier : (expression_statement "uVar7 = local_70;" (assignment_expression "uVar7 = local_70" identifier = identifier) ;)) (if_statement "if (local_70 != 0) {\n    uVar9 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar10 = 0xf;\n    }\n    else {\n      uVar10 = CONCAT71(uStack_67,local_68);\n    }\n    if (uVar10 < uVar9) {\n      FUN_002a9670(&local_78,local_70,0,0,1);\n    }\n    local_78[uVar7] = 0;\n    local_78[uVar7 + 1] = 0;\n    local_70 = uVar9;\n    cVar4 = FUN_0032d0e0(*(undefined8 *)(lVar12 + 0x10),*(undefined8 *)(lVar12 + 0x18),&local_78);\n    if (cVar4 == '\0') {\n      *param_7 = *param_7 | 4;\n    }\n  }" if (parenthesized_expression "(local_70 != 0)" ( (binary_expression "local_70 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar9 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar10 = 0xf;\n    }\n    else {\n      uVar10 = CONCAT71(uStack_67,local_68);\n    }\n    if (uVar10 < uVar9) {\n      FUN_002a9670(&local_78,local_70,0,0,1);\n    }\n    local_78[uVar7] = 0;\n    local_78[uVar7 + 1] = 0;\n    local_70 = uVar9;\n    cVar4 = FUN_0032d0e0(*(undefined8 *)(lVar12 + 0x10),*(undefined8 *)(lVar12 + 0x18),&local_78);\n    if (cVar4 == '\0') {\n      *param_7 = *param_7 | 4;\n    }\n  }" { (expression_statement "uVar9 = local_70 + 1;" (assignment_expression "uVar9 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) (if_statement "if (local_78 == &local_68) {\n      uVar10 = 0xf;\n    }\n    else {\n      uVar10 = CONCAT71(uStack_67,local_68);\n    }" if (parenthesized_expression "(local_78 == &local_68)" ( (binary_expression "local_78 == &local_68" identifier == (pointer_expression "&local_68" & identifier)) )) (compound_statement "{\n      uVar10 = 0xf;\n    }" { (expression_statement "uVar10 = 0xf;" (assignment_expression "uVar10 = 0xf" identifier = number_literal) ;) }) (else_clause "else {\n      uVar10 = CONCAT71(uStack_67,local_68);\n    }" else (compound_statement "{\n      uVar10 = CONCAT71(uStack_67,local_68);\n    }" { (expression_statement "uVar10 = CONCAT71(uStack_67,local_68);" (assignment_expression "uVar10 = CONCAT71(uStack_67,local_68)" identifier = (call_expression "CONCAT71(uStack_67,local_68)" identifier (argument_list "(uStack_67,local_68)" ( identifier , identifier )))) ;) }))) (if_statement "if (uVar10 < uVar9) {\n      FUN_002a9670(&local_78,local_70,0,0,1);\n    }" if (parenthesized_expression "(uVar10 < uVar9)" ( (binary_expression "uVar10 < uVar9" identifier < identifier) )) (compound_statement "{\n      FUN_002a9670(&local_78,local_70,0,0,1);\n    }" { (expression_statement "FUN_002a9670(&local_78,local_70,0,0,1);" (call_expression "FUN_002a9670(&local_78,local_70,0,0,1)" identifier (argument_list "(&local_78,local_70,0,0,1)" ( (pointer_expression "&local_78" & identifier) , identifier , number_literal , number_literal , number_literal ))) ;) })) (expression_statement "local_78[uVar7] = 0;" (assignment_expression "local_78[uVar7] = 0" (subscript_expression "local_78[uVar7]" identifier [ identifier ]) = number_literal) ;) (expression_statement "local_78[uVar7 + 1] = 0;" (assignment_expression "local_78[uVar7 + 1] = 0" (subscript_expression "local_78[uVar7 + 1]" identifier [ (binary_expression "uVar7 + 1" identifier + number_literal) ]) = number_literal) ;) (expression_statement "local_70 = uVar9;" (assignment_expression "local_70 = uVar9" identifier = identifier) ;) (expression_statement "cVar4 = FUN_0032d0e0(*(undefined8 *)(lVar12 + 0x10),*(undefined8 *)(lVar12 + 0x18),&local_78);" (assignment_expression "cVar4 = FUN_0032d0e0(*(undefined8 *)(lVar12 + 0x10),*(undefined8 *)(lVar12 + 0x18),&local_78)" identifier = (call_expression "FUN_0032d0e0(*(undefined8 *)(lVar12 + 0x10),*(undefined8 *)(lVar12 + 0x18),&local_78)" identifier (argument_list "(*(undefined8 *)(lVar12 + 0x10),*(undefined8 *)(lVar12 + 0x18),&local_78)" ( (pointer_expression "*(undefined8 *)(lVar12 + 0x10)" * (cast_expression "(undefined8 *)(lVar12 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar12 + 0x10)" ( (binary_expression "lVar12 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(lVar12 + 0x18)" * (cast_expression "(undefined8 *)(lVar12 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar12 + 0x18)" ( (binary_expression "lVar12 + 0x18" identifier + number_literal) )))) , (pointer_expression "&local_78" & 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_002aae90(param_8,&local_58);" (call_expression "FUN_002aae90(param_8,&local_58)" identifier (argument_list "(param_8,&local_58)" ( identifier , (pointer_expression "&local_58" & identifier) ))) ;) (expression_statement "local_90 = (int)param_3;" (assignment_expression "local_90 = (int)param_3" identifier = (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "bVar13 = local_90 == -1;" (assignment_expression "bVar13 = local_90 == -1" identifier = (binary_expression "local_90 == -1" identifier == number_literal)) ;) (expression_statement "bVar11 = param_2 != (long *)0x0 && bVar13;" (assignment_expression "bVar11 = param_2 != (long *)0x0 && bVar13" identifier = (binary_expression "param_2 != (long *)0x0 && bVar13" (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier)) ;) (expression_statement "local_98 = param_2;" (assignment_expression "local_98 = param_2" identifier = identifier) ;) (if_statement "if (((param_2 != (long *)0x0 && bVar13) &&\n      (bVar13 = false, (ulong)param_2[3] <= (ulong)param_2[2])) &&\n     (iVar5 = (**(code **)(*param_2 + 0x48))(), iVar5 == -1)) {\n    local_98 = (long *)0x0;\n    bVar13 = bVar11;\n  }" if (parenthesized_expression "(((param_2 != (long *)0x0 && bVar13) &&\n      (bVar13 = false, (ulong)param_2[3] <= (ulong)param_2[2])) &&\n     (iVar5 = (**(code **)(*param_2 + 0x48))(), iVar5 == -1))" ( (binary_expression "((param_2 != (long *)0x0 && bVar13) &&\n      (bVar13 = false, (ulong)param_2[3] <= (ulong)param_2[2])) &&\n     (iVar5 = (**(code **)(*param_2 + 0x48))(), iVar5 == -1)" (parenthesized_expression "((param_2 != (long *)0x0 && bVar13) &&\n      (bVar13 = false, (ulong)param_2[3] <= (ulong)param_2[2]))" ( (binary_expression "(param_2 != (long *)0x0 && bVar13) &&\n      (bVar13 = false, (ulong)param_2[3] <= (ulong)param_2[2])" (parenthesized_expression "(param_2 != (long *)0x0 && bVar13)" ( (binary_expression "param_2 != (long *)0x0 && bVar13" (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && identifier) )) && (parenthesized_expression "(bVar13 = false, (ulong)param_2[3] <= (ulong)param_2[2])" ( (comma_expression "bVar13 = false, (ulong)param_2[3] <= (ulong)param_2[2]" (assignment_expression "bVar13 = false" identifier = false) , (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ))) )) && (parenthesized_expression "(iVar5 = (**(code **)(*param_2 + 0x48))(), iVar5 == -1)" ( (comma_expression "iVar5 = (**(code **)(*param_2 + 0x48))(), iVar5 == -1" (assignment_expression "iVar5 = (**(code **)(*param_2 + 0x48))()" identifier = (call_expression "(**(code **)(*param_2 + 0x48))()" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" ( (pointer_expression "**(code **)(*param_2 + 0x48)" * (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "()" ( )))) , (binary_expression "iVar5 == -1" identifier == number_literal)) ))) )) (compound_statement "{\n    local_98 = (long *)0x0;\n    bVar13 = bVar11;\n  }" { (expression_statement "local_98 = (long *)0x0;" (assignment_expression "local_98 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar13 = bVar11;" (assignment_expression "bVar13 = bVar11" identifier = identifier) ;) })) (expression_statement "bVar3 = param_4 != (long *)0x0 && param_5 == -1;" (assignment_expression "bVar3 = param_4 != (long *)0x0 && param_5 == -1" identifier = (binary_expression "param_4 != (long *)0x0 && param_5 == -1" (binary_expression "param_4 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "param_5 == -1" identifier == number_literal))) ;) (expression_statement "bVar11 = param_5 == -1;" (assignment_expression "bVar11 = param_5 == -1" identifier = (binary_expression "param_5 == -1" identifier == number_literal)) ;) (if_statement "if ((bVar3) && (bVar11 = false, (ulong)param_4[3] <= (ulong)param_4[2])) {\n    iVar5 = (**(code **)(*param_4 + 0x48))();\n    bVar11 = false;\n    if (iVar5 == -1) {\n      bVar11 = bVar3;\n    }\n  }" if (parenthesized_expression "((bVar3) && (bVar11 = false, (ulong)param_4[3] <= (ulong)param_4[2]))" ( (binary_expression "(bVar3) && (bVar11 = false, (ulong)param_4[3] <= (ulong)param_4[2])" (parenthesized_expression "(bVar3)" ( identifier )) && (parenthesized_expression "(bVar11 = false, (ulong)param_4[3] <= (ulong)param_4[2])" ( (comma_expression "bVar11 = false, (ulong)param_4[3] <= (ulong)param_4[2]" (assignment_expression "bVar11 = false" identifier = false) , (binary_expression "(ulong)param_4[3] <= (ulong)param_4[2]" (cast_expression "(ulong)param_4[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_4[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_4[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_4[2]" identifier [ number_literal ])))) ))) )) (compound_statement "{\n    iVar5 = (**(code **)(*param_4 + 0x48))();\n    bVar11 = false;\n    if (iVar5 == -1) {\n      bVar11 = bVar3;\n    }\n  }" { (expression_statement "iVar5 = (**(code **)(*param_4 + 0x48))();" (assignment_expression "iVar5 = (**(code **)(*param_4 + 0x48))()" identifier = (call_expression "(**(code **)(*param_4 + 0x48))()" (parenthesized_expression "(**(code **)(*param_4 + 0x48))" ( (pointer_expression "**(code **)(*param_4 + 0x48)" * (pointer_expression "*(code **)(*param_4 + 0x48)" * (cast_expression "(code **)(*param_4 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x48)" ( (binary_expression "*param_4 + 0x48" (pointer_expression "*param_4" * identifier) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (if_statement "if (iVar5 == -1) {\n      bVar11 = bVar3;\n    }" if (parenthesized_expression "(iVar5 == -1)" ( (binary_expression "iVar5 == -1" identifier == number_literal) )) (compound_statement "{\n      bVar11 = bVar3;\n    }" { (expression_statement "bVar11 = bVar3;" (assignment_expression "bVar11 = bVar3" identifier = identifier) ;) })) })) (if_statement "if (bVar11 == bVar13) {\n    *param_7 = *param_7 | 2;\n  }" if (parenthesized_expression "(bVar11 == bVar13)" ( (binary_expression "bVar11 == bVar13" identifier == identifier) )) (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_58 != local_48) {\n    FUN_002a2980();\n  }" if (parenthesized_expression "(local_58 != local_48)" ( (binary_expression "local_58 != local_48" identifier != identifier) )) (compound_statement "{\n    FUN_002a2980();\n  }" { (expression_statement "FUN_002a2980();" (call_expression "FUN_002a2980()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (local_78 != &local_68) {\n    FUN_002a2980();\n  }" if (parenthesized_expression "(local_78 != &local_68)" ( (binary_expression "local_78 != &local_68" identifier != (pointer_expression "&local_68" & identifier)) )) (compound_statement "{\n    FUN_002a2980();\n  }" { (expression_statement "FUN_002a2980();" (call_expression "FUN_002a2980()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "auVar14._8_8_ = param_3;" (assignment_expression "auVar14._8_8_ = param_3" (field_expression "auVar14._8_8_" identifier . field_identifier) = identifier) ;) (expression_statement "auVar14._0_8_ = local_98;" (assignment_expression "auVar14._0_8_ = local_98" (field_expression "auVar14._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar14;" return identifier ;) (ERROR "}" }))
(translation_unit (expression_statement (subscript_expression IDENT [ LIT ]) ;) (declaration (macro_type_specifier IDENT ( (type_descriptor TYPE) )) IDENT , (ERROR IDENT) (pointer_declarator * IDENT) , IDENT (ERROR IDENT) , (ERROR IDENT) (pointer_declarator * IDENT) , (ERROR IDENT) IDENT , (ERROR IDENT) IDENT , (ERROR IDENT) (pointer_declarator * IDENT) , (ERROR IDENT IDENT ) { long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (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 IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & 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 IDENT < LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , LIT )))) , (binary_expression IDENT == LIT)) ))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , IDENT ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , LIT , LIT , LIT ))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 , (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) && IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) && IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = BOOL) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) && (binary_expression IDENT == LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( IDENT )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = BOOL) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (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_0031b470(undefined8 param_1,long *param_2,undefined8 param_3,long *param_4,int param_5,\n            long param_6,uint *param_7,undefined8 param_8)\n\n{\n  long *plVar1;" (macro_type_specifier "FUN_0031b470(undefined8" (identifier "FUN_0031b470") (( "(") (type_descriptor "undefined8" (type_identifier "undefined8")) () "")) (identifier "param_1") (, ",") (ERROR "long" (identifier "long")) (pointer_declarator "*param_2" (* "*") (identifier "param_2")) (, ",") (identifier "undefined8") (ERROR "param_3" (identifier "param_3")) (, ",") (ERROR "long" (identifier "long")) (pointer_declarator "*param_4" (* "*") (identifier "param_4")) (, ",") (ERROR "int" (identifier "int")) (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  long" (identifier "undefined8") (identifier "param_8") () ")") ({ "{") (long "long")) (pointer_declarator "*plVar1" (* "*") (identifier "plVar1")) (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "bool bVar3;" (primitive_type "bool") (identifier "bVar3") (; ";")) (declaration "char cVar4;" (primitive_type "char") (identifier "cVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "ulong uVar7;" (type_identifier "ulong") (identifier "uVar7") (; ";")) (declaration "undefined8 *puVar8;" (type_identifier "undefined8") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "ulong uVar9;" (type_identifier "ulong") (identifier "uVar9") (; ";")) (declaration "ulong uVar10;" (type_identifier "ulong") (identifier "uVar10") (; ";")) (declaration "bool bVar11;" (primitive_type "bool") (identifier "bVar11") (; ";")) (declaration "long lVar12;" (sized_type_specifier "long" (long "long")) (identifier "lVar12") (; ";")) (declaration "bool bVar13;" (primitive_type "bool") (identifier "bVar13") (; ";")) (declaration "undefined1 auVar14 [16];" (type_identifier "undefined1") (array_declarator "auVar14 [16]" (identifier "auVar14") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "long *local_98;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*local_98" (* "*") (identifier "local_98")) (; ";")) (declaration "int local_90;" (primitive_type "int") (identifier "local_90") (; ";")) (declaration "undefined4 local_7c;" (type_identifier "undefined4") (identifier "local_7c") (; ";")) (declaration "undefined1 *local_78;" (type_identifier "undefined1") (pointer_declarator "*local_78" (* "*") (identifier "local_78")) (; ";")) (declaration "ulong local_70;" (type_identifier "ulong") (identifier "local_70") (; ";")) (declaration "undefined1 local_68;" (type_identifier "undefined1") (identifier "local_68") (; ";")) (declaration "undefined7 uStack_67;" (type_identifier "undefined7") (identifier "uStack_67") (; ";")) (declaration "undefined1 *local_58;" (type_identifier "undefined1") (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "ulong local_50;" (type_identifier "ulong") (identifier "local_50") (; ";")) (declaration "undefined1 local_48 [24];" (type_identifier "undefined1") (array_declarator "local_48 [24]" (identifier "local_48") ([ "[") (number_literal "24") (] "]")) (; ";")) (expression_statement "FUN_002b4380(param_6 + 0xd0);" (call_expression "FUN_002b4380(param_6 + 0xd0)" (identifier "FUN_002b4380") (argument_list "(param_6 + 0xd0)" (( "(") (binary_expression "param_6 + 0xd0" (identifier "param_6") (+ "+") (number_literal "0xd0")) () ")"))) (; ";")) (expression_statement "lVar6 = FUN_002a50c0(&DAT_00405ef0);" (assignment_expression "lVar6 = FUN_002a50c0(&DAT_00405ef0)" (identifier "lVar6") (= "=") (call_expression "FUN_002a50c0(&DAT_00405ef0)" (identifier "FUN_002a50c0") (argument_list "(&DAT_00405ef0)" (( "(") (pointer_expression "&DAT_00405ef0" (& "&") (identifier "DAT_00405ef0")) () ")")))) (; ";")) (expression_statement "plVar1 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar6 * 8);" (assignment_expression "plVar1 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar6 * 8)" (identifier "plVar1") (= "=") (cast_expression "(long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar6 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar6 * 8)" (( "(") (binary_expression "*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar6 * 8" (pointer_expression "*(long *)(*(long *)(param_6 + 0xd0) + 0x18)" (* "*") (cast_expression "(long *)(*(long *)(param_6 + 0xd0) + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_6 + 0xd0) + 0x18)" (( "(") (binary_expression "*(long *)(param_6 + 0xd0) + 0x18" (pointer_expression "*(long *)(param_6 + 0xd0)" (* "*") (cast_expression "(long *)(param_6 + 0xd0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + 0xd0)" (( "(") (binary_expression "param_6 + 0xd0" (identifier "param_6") (+ "+") (number_literal "0xd0")) () ")")))) (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (binary_expression "lVar6 * 8" (identifier "lVar6") (* "*") (number_literal "8"))) () ")")))) (; ";")) (expression_statement "lVar12 = *plVar1;" (assignment_expression "lVar12 = *plVar1" (identifier "lVar12") (= "=") (pointer_expression "*plVar1" (* "*") (identifier "plVar1"))) (; ";")) (if_statement "if (lVar12 == 0) {\n                    \n    puVar8 = (undefined8 *)FUN_002a11b0(0x70);\n    *(undefined4 *)(puVar8 + 1) = 0;\n    puVar8[2] = 0;\n    puVar8[3] = 0;\n    *(undefined2 *)(puVar8 + 4) = 0;\n    *puVar8 = &PTR_FUN_003f3258;\n    *(undefined1 *)((long)puVar8 + 0x22) = 0;\n    puVar8[5] = 0;\n    puVar8[6] = 0;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar8[9] = 0;\n    puVar8[10] = 0;\n    puVar8[0xb] = 0;\n    *(undefined4 *)(puVar8 + 0xc) = 0;\n    *(undefined1 *)((long)puVar8 + 0x6f) = 0;\n                    \n    FUN_002b55a0(puVar8,param_6 + 0xd0);\n    FUN_002a5530(*(undefined8 *)(param_6 + 0xd0),puVar8,lVar6);\n    lVar12 = *plVar1;\n  }" (if "if") (parenthesized_expression "(lVar12 == 0)" (( "(") (binary_expression "lVar12 == 0" (identifier "lVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    puVar8 = (undefined8 *)FUN_002a11b0(0x70);\n    *(undefined4 *)(puVar8 + 1) = 0;\n    puVar8[2] = 0;\n    puVar8[3] = 0;\n    *(undefined2 *)(puVar8 + 4) = 0;\n    *puVar8 = &PTR_FUN_003f3258;\n    *(undefined1 *)((long)puVar8 + 0x22) = 0;\n    puVar8[5] = 0;\n    puVar8[6] = 0;\n    puVar8[7] = 0;\n    puVar8[8] = 0;\n    puVar8[9] = 0;\n    puVar8[10] = 0;\n    puVar8[0xb] = 0;\n    *(undefined4 *)(puVar8 + 0xc) = 0;\n    *(undefined1 *)((long)puVar8 + 0x6f) = 0;\n                    \n    FUN_002b55a0(puVar8,param_6 + 0xd0);\n    FUN_002a5530(*(undefined8 *)(param_6 + 0xd0),puVar8,lVar6);\n    lVar12 = *plVar1;\n  }" ({ "{") (expression_statement "puVar8 = (undefined8 *)FUN_002a11b0(0x70);" (assignment_expression "puVar8 = (undefined8 *)FUN_002a11b0(0x70)" (identifier "puVar8") (= "=") (cast_expression "(undefined8 *)FUN_002a11b0(0x70)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002a11b0(0x70)" (identifier "FUN_002a11b0") (argument_list "(0x70)" (( "(") (number_literal "0x70") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar8 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar8 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar8 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar8 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 1)" (( "(") (binary_expression "puVar8 + 1" (identifier "puVar8") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[2] = 0;" (assignment_expression "puVar8[2] = 0" (subscript_expression "puVar8[2]" (identifier "puVar8") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[3] = 0;" (assignment_expression "puVar8[3] = 0" (subscript_expression "puVar8[3]" (identifier "puVar8") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined2 *)(puVar8 + 4) = 0;" (assignment_expression "*(undefined2 *)(puVar8 + 4) = 0" (pointer_expression "*(undefined2 *)(puVar8 + 4)" (* "*") (cast_expression "(undefined2 *)(puVar8 + 4)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 4)" (( "(") (binary_expression "puVar8 + 4" (identifier "puVar8") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar8 = &PTR_FUN_003f3258;" (assignment_expression "*puVar8 = &PTR_FUN_003f3258" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (pointer_expression "&PTR_FUN_003f3258" (& "&") (identifier "PTR_FUN_003f3258"))) (; ";")) (expression_statement "*(undefined1 *)((long)puVar8 + 0x22) = 0;" (assignment_expression "*(undefined1 *)((long)puVar8 + 0x22) = 0" (pointer_expression "*(undefined1 *)((long)puVar8 + 0x22)" (* "*") (cast_expression "(undefined1 *)((long)puVar8 + 0x22)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar8 + 0x22)" (( "(") (binary_expression "(long)puVar8 + 0x22" (cast_expression "(long)puVar8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar8")) (+ "+") (number_literal "0x22")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[5] = 0;" (assignment_expression "puVar8[5] = 0" (subscript_expression "puVar8[5]" (identifier "puVar8") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[6] = 0;" (assignment_expression "puVar8[6] = 0" (subscript_expression "puVar8[6]" (identifier "puVar8") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[7] = 0;" (assignment_expression "puVar8[7] = 0" (subscript_expression "puVar8[7]" (identifier "puVar8") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[8] = 0;" (assignment_expression "puVar8[8] = 0" (subscript_expression "puVar8[8]" (identifier "puVar8") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[9] = 0;" (assignment_expression "puVar8[9] = 0" (subscript_expression "puVar8[9]" (identifier "puVar8") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[10] = 0;" (assignment_expression "puVar8[10] = 0" (subscript_expression "puVar8[10]" (identifier "puVar8") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[0xb] = 0;" (assignment_expression "puVar8[0xb] = 0" (subscript_expression "puVar8[0xb]" (identifier "puVar8") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar8 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(puVar8 + 0xc) = 0" (pointer_expression "*(undefined4 *)(puVar8 + 0xc)" (* "*") (cast_expression "(undefined4 *)(puVar8 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 0xc)" (( "(") (binary_expression "puVar8 + 0xc" (identifier "puVar8") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)((long)puVar8 + 0x6f) = 0;" (assignment_expression "*(undefined1 *)((long)puVar8 + 0x6f) = 0" (pointer_expression "*(undefined1 *)((long)puVar8 + 0x6f)" (* "*") (cast_expression "(undefined1 *)((long)puVar8 + 0x6f)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar8 + 0x6f)" (( "(") (binary_expression "(long)puVar8 + 0x6f" (cast_expression "(long)puVar8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar8")) (+ "+") (number_literal "0x6f")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_002b55a0(puVar8,param_6 + 0xd0);" (call_expression "FUN_002b55a0(puVar8,param_6 + 0xd0)" (identifier "FUN_002b55a0") (argument_list "(puVar8,param_6 + 0xd0)" (( "(") (identifier "puVar8") (, ",") (binary_expression "param_6 + 0xd0" (identifier "param_6") (+ "+") (number_literal "0xd0")) () ")"))) (; ";")) (expression_statement "FUN_002a5530(*(undefined8 *)(param_6 + 0xd0),puVar8,lVar6);" (call_expression "FUN_002a5530(*(undefined8 *)(param_6 + 0xd0),puVar8,lVar6)" (identifier "FUN_002a5530") (argument_list "(*(undefined8 *)(param_6 + 0xd0),puVar8,lVar6)" (( "(") (pointer_expression "*(undefined8 *)(param_6 + 0xd0)" (* "*") (cast_expression "(undefined8 *)(param_6 + 0xd0)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + 0xd0)" (( "(") (binary_expression "param_6 + 0xd0" (identifier "param_6") (+ "+") (number_literal "0xd0")) () ")")))) (, ",") (identifier "puVar8") (, ",") (identifier "lVar6") () ")"))) (; ";")) (expression_statement "lVar12 = *plVar1;" (assignment_expression "lVar12 = *plVar1" (identifier "lVar12") (= "=") (pointer_expression "*plVar1" (* "*") (identifier "plVar1"))) (; ";")) (} "}"))) (expression_statement "local_70 = 0;" (assignment_expression "local_70 = 0" (identifier "local_70") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_78 = &local_68;" (assignment_expression "local_78 = &local_68" (identifier "local_78") (= "=") (pointer_expression "&local_68" (& "&") (identifier "local_68"))) (; ";")) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" (identifier "local_68") (= "=") (number_literal "0")) (; ";")) (if_statement "if (*(char *)(lVar12 + 0x20) != '\0') {\n                    \n    FUN_002a9b20(&local_78,0x20);\n  }" (if "if") (parenthesized_expression "(*(char *)(lVar12 + 0x20) != '\0')" (( "(") (binary_expression "*(char *)(lVar12 + 0x20) != '\0'" (pointer_expression "*(char *)(lVar12 + 0x20)" (* "*") (cast_expression "(char *)(lVar12 + 0x20)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar12 + 0x20)" (( "(") (binary_expression "lVar12 + 0x20" (identifier "lVar12") (+ "+") (number_literal "0x20")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                    \n    FUN_002a9b20(&local_78,0x20);\n  }" ({ "{") (expression_statement "FUN_002a9b20(&local_78,0x20);" (call_expression "FUN_002a9b20(&local_78,0x20)" (identifier "FUN_002a9b20") (argument_list "(&local_78,0x20)" (( "(") (pointer_expression "&local_78" (& "&") (identifier "local_78")) (, ",") (number_literal "0x20") () ")"))) (; ";")) (} "}"))) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" (identifier "local_50") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_58 = local_48;" (assignment_expression "local_58 = local_48" (identifier "local_58") (= "=") (identifier "local_48")) (; ";")) (expression_statement "local_48[0] = 0;" (assignment_expression "local_48[0] = 0" (subscript_expression "local_48[0]" (identifier "local_48") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_002a9b20(&local_58,0x20);" (call_expression "FUN_002a9b20(&local_58,0x20)" (identifier "FUN_002a9b20") (argument_list "(&local_58,0x20)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (number_literal "0x20") () ")"))) (; ";")) (expression_statement "local_7c = *(undefined4 *)(lVar12 + 0x60);" (assignment_expression "local_7c = *(undefined4 *)(lVar12 + 0x60)" (identifier "local_7c") (= "=") (pointer_expression "*(undefined4 *)(lVar12 + 0x60)" (* "*") (cast_expression "(undefined4 *)(lVar12 + 0x60)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar12 + 0x60)" (( "(") (binary_expression "lVar12 + 0x60" (identifier "lVar12") (+ "+") (number_literal "0x60")) () ")"))))) (; ";")) (expression_statement "lVar6 = 0;" (assignment_expression "lVar6 = 0" (identifier "lVar6") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar2 = (byte)local_7c;" (assignment_expression "bVar2 = (byte)local_7c" (identifier "bVar2") (= "=") (cast_expression "(byte)local_7c" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_7c"))) (; ";")) (while_statement "while( true ) {\n    if (bVar2 < 5) {\n                    \n                    \n      auVar14 = (*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)))\n                          ();\n      return auVar14;\n    }\n    if (3 < (int)lVar6 + 1) break;\n    bVar2 = *(byte *)((long)&local_7c + lVar6 + 1);\n    lVar6 = lVar6 + 1;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    if (bVar2 < 5) {\n                    \n                    \n      auVar14 = (*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)))\n                          ();\n      return auVar14;\n    }\n    if (3 < (int)lVar6 + 1) break;\n    bVar2 = *(byte *)((long)&local_7c + lVar6 + 1);\n    lVar6 = lVar6 + 1;\n  }" ({ "{") (if_statement "if (bVar2 < 5) {\n                    \n                    \n      auVar14 = (*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)))\n                          ();\n      return auVar14;\n    }" (if "if") (parenthesized_expression "(bVar2 < 5)" (( "(") (binary_expression "bVar2 < 5" (identifier "bVar2") (< "<") (number_literal "5")) () ")")) (compound_statement "{\n                    \n                    \n      auVar14 = (*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)))\n                          ();\n      return auVar14;\n    }" ({ "{") (expression_statement "auVar14 = (*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)))\n                          ();" (assignment_expression "auVar14 = (*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)))\n                          ()" (identifier "auVar14") (= "=") (call_expression "(*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)))\n                          ()" (parenthesized_expression "(*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)))" (( "(") (pointer_expression "*(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4))" (* "*") (cast_expression "(code *)(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4))" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4))" (( "(") (binary_expression "&DAT_0035ec68 +\n                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)" (pointer_expression "&DAT_0035ec68" (& "&") (identifier "DAT_0035ec68")) (+ "+") (pointer_expression "*(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)" (* "*") (cast_expression "(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)" (( "(") (binary_expression "&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4" (pointer_expression "&DAT_0035ec68" (& "&") (identifier "DAT_0035ec68")) (+ "+") (binary_expression "(ulong)*(byte *)((long)&local_7c + lVar6) * 4" (binary_expression "(ulong)*(byte *)((long)&local_7c + lVar6)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(byte *)((long)&local_7c + lVar6)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)&local_7c + lVar6)" (( "(") (binary_expression "(long)&local_7c + lVar6" (cast_expression "(long)&local_7c" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&local_7c" (& "&") (identifier "local_7c"))) (+ "+") (identifier "lVar6")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return auVar14;" (return "return") (identifier "auVar14") (; ";")) (} "}"))) (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 "bVar2 = *(byte *)((long)&local_7c + lVar6 + 1);" (assignment_expression "bVar2 = *(byte *)((long)&local_7c + lVar6 + 1)" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)((long)&local_7c + lVar6 + 1)" (* "*") (cast_expression "(byte *)((long)&local_7c + lVar6 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)&local_7c + lVar6 + 1)" (( "(") (binary_expression "(long)&local_7c + lVar6 + 1" (binary_expression "(long)&local_7c + lVar6" (cast_expression "(long)&local_7c" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&local_7c" (& "&") (identifier "local_7c"))) (+ "+") (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 ((local_50 < 2) || (uVar7 = FUN_002ab490(&local_58,0x30,0), uVar7 == 0)) goto LAB_0031c03a;" (if "if") (parenthesized_expression "((local_50 < 2) || (uVar7 = FUN_002ab490(&local_58,0x30,0), uVar7 == 0))" (( "(") (binary_expression "(local_50 < 2) || (uVar7 = FUN_002ab490(&local_58,0x30,0), uVar7 == 0)" (parenthesized_expression "(local_50 < 2)" (( "(") (binary_expression "local_50 < 2" (identifier "local_50") (< "<") (number_literal "2")) () ")")) (|| "||") (parenthesized_expression "(uVar7 = FUN_002ab490(&local_58,0x30,0), uVar7 == 0)" (( "(") (comma_expression "uVar7 = FUN_002ab490(&local_58,0x30,0), uVar7 == 0" (assignment_expression "uVar7 = FUN_002ab490(&local_58,0x30,0)" (identifier "uVar7") (= "=") (call_expression "FUN_002ab490(&local_58,0x30,0)" (identifier "FUN_002ab490") (argument_list "(&local_58,0x30,0)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (number_literal "0x30") (, ",") (number_literal "0") () ")")))) (, ",") (binary_expression "uVar7 == 0" (identifier "uVar7") (== "==") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto LAB_0031c03a;" (goto "goto") (statement_identifier "LAB_0031c03a") (; ";"))) (if_statement "if (uVar7 == 0xffffffffffffffff) {\n    uVar7 = local_50 - 1;\n    if (uVar7 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_0031c03a;\n    }\n    if (uVar7 == 0) goto LAB_0031c03a;\n  }" (if "if") (parenthesized_expression "(uVar7 == 0xffffffffffffffff)" (( "(") (binary_expression "uVar7 == 0xffffffffffffffff" (identifier "uVar7") (== "==") (number_literal "0xffffffffffffffff")) () ")")) (compound_statement "{\n    uVar7 = local_50 - 1;\n    if (uVar7 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_0031c03a;\n    }\n    if (uVar7 == 0) goto LAB_0031c03a;\n  }" ({ "{") (expression_statement "uVar7 = local_50 - 1;" (assignment_expression "uVar7 = local_50 - 1" (identifier "uVar7") (= "=") (binary_expression "local_50 - 1" (identifier "local_50") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar7 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_0031c03a;\n    }" (if "if") (parenthesized_expression "(uVar7 == 0xffffffffffffffff)" (( "(") (binary_expression "uVar7 == 0xffffffffffffffff" (identifier "uVar7") (== "==") (number_literal "0xffffffffffffffff")) () ")")) (compound_statement "{\n      *local_58 = 0;\n      goto LAB_0031c03a;\n    }" ({ "{") (expression_statement "*local_58 = 0;" (assignment_expression "*local_58 = 0" (pointer_expression "*local_58" (* "*") (identifier "local_58")) (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0031c03a;" (goto "goto") (statement_identifier "LAB_0031c03a") (; ";")) (} "}"))) (if_statement "if (uVar7 == 0) goto LAB_0031c03a;" (if "if") (parenthesized_expression "(uVar7 == 0)" (( "(") (binary_expression "uVar7 == 0" (identifier "uVar7") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0031c03a;" (goto "goto") (statement_identifier "LAB_0031c03a") (; ";"))) (} "}"))) (expression_statement "uVar9 = local_50;" (assignment_expression "uVar9 = local_50" (identifier "uVar9") (= "=") (identifier "local_50")) (; ";")) (if_statement "if (uVar7 < local_50) {\n    uVar9 = uVar7;\n  }" (if "if") (parenthesized_expression "(uVar7 < local_50)" (( "(") (binary_expression "uVar7 < local_50" (identifier "uVar7") (< "<") (identifier "local_50")) () ")")) (compound_statement "{\n    uVar9 = uVar7;\n  }" ({ "{") (expression_statement "uVar9 = uVar7;" (assignment_expression "uVar9 = uVar7" (identifier "uVar9") (= "=") (identifier "uVar7")) (; ";")) (} "}"))) (expression_statement "FUN_002a97b0(&local_58,0,uVar9);" (call_expression "FUN_002a97b0(&local_58,0,uVar9)" (identifier "FUN_002a97b0") (argument_list "(&local_58,0,uVar9)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (number_literal "0") (, ",") (identifier "uVar9") () ")"))) (; ";")) (labeled_statement "LAB_0031c03a:\n  uVar7 = local_70;" (statement_identifier "LAB_0031c03a") (: ":") (expression_statement "uVar7 = local_70;" (assignment_expression "uVar7 = local_70" (identifier "uVar7") (= "=") (identifier "local_70")) (; ";"))) (if_statement "if (local_70 != 0) {\n    uVar9 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar10 = 0xf;\n    }\n    else {\n      uVar10 = CONCAT71(uStack_67,local_68);\n    }\n    if (uVar10 < uVar9) {\n      FUN_002a9670(&local_78,local_70,0,0,1);\n    }\n    local_78[uVar7] = 0;\n    local_78[uVar7 + 1] = 0;\n    local_70 = uVar9;\n    cVar4 = FUN_0032d0e0(*(undefined8 *)(lVar12 + 0x10),*(undefined8 *)(lVar12 + 0x18),&local_78);\n    if (cVar4 == '\0') {\n      *param_7 = *param_7 | 4;\n    }\n  }" (if "if") (parenthesized_expression "(local_70 != 0)" (( "(") (binary_expression "local_70 != 0" (identifier "local_70") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar9 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar10 = 0xf;\n    }\n    else {\n      uVar10 = CONCAT71(uStack_67,local_68);\n    }\n    if (uVar10 < uVar9) {\n      FUN_002a9670(&local_78,local_70,0,0,1);\n    }\n    local_78[uVar7] = 0;\n    local_78[uVar7 + 1] = 0;\n    local_70 = uVar9;\n    cVar4 = FUN_0032d0e0(*(undefined8 *)(lVar12 + 0x10),*(undefined8 *)(lVar12 + 0x18),&local_78);\n    if (cVar4 == '\0') {\n      *param_7 = *param_7 | 4;\n    }\n  }" ({ "{") (expression_statement "uVar9 = local_70 + 1;" (assignment_expression "uVar9 = local_70 + 1" (identifier "uVar9") (= "=") (binary_expression "local_70 + 1" (identifier "local_70") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (local_78 == &local_68) {\n      uVar10 = 0xf;\n    }\n    else {\n      uVar10 = CONCAT71(uStack_67,local_68);\n    }" (if "if") (parenthesized_expression "(local_78 == &local_68)" (( "(") (binary_expression "local_78 == &local_68" (identifier "local_78") (== "==") (pointer_expression "&local_68" (& "&") (identifier "local_68"))) () ")")) (compound_statement "{\n      uVar10 = 0xf;\n    }" ({ "{") (expression_statement "uVar10 = 0xf;" (assignment_expression "uVar10 = 0xf" (identifier "uVar10") (= "=") (number_literal "0xf")) (; ";")) (} "}")) (else_clause "else {\n      uVar10 = CONCAT71(uStack_67,local_68);\n    }" (else "else") (compound_statement "{\n      uVar10 = CONCAT71(uStack_67,local_68);\n    }" ({ "{") (expression_statement "uVar10 = CONCAT71(uStack_67,local_68);" (assignment_expression "uVar10 = CONCAT71(uStack_67,local_68)" (identifier "uVar10") (= "=") (call_expression "CONCAT71(uStack_67,local_68)" (identifier "CONCAT71") (argument_list "(uStack_67,local_68)" (( "(") (identifier "uStack_67") (, ",") (identifier "local_68") () ")")))) (; ";")) (} "}")))) (if_statement "if (uVar10 < uVar9) {\n      FUN_002a9670(&local_78,local_70,0,0,1);\n    }" (if "if") (parenthesized_expression "(uVar10 < uVar9)" (( "(") (binary_expression "uVar10 < uVar9" (identifier "uVar10") (< "<") (identifier "uVar9")) () ")")) (compound_statement "{\n      FUN_002a9670(&local_78,local_70,0,0,1);\n    }" ({ "{") (expression_statement "FUN_002a9670(&local_78,local_70,0,0,1);" (call_expression "FUN_002a9670(&local_78,local_70,0,0,1)" (identifier "FUN_002a9670") (argument_list "(&local_78,local_70,0,0,1)" (( "(") (pointer_expression "&local_78" (& "&") (identifier "local_78")) (, ",") (identifier "local_70") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "1") () ")"))) (; ";")) (} "}"))) (expression_statement "local_78[uVar7] = 0;" (assignment_expression "local_78[uVar7] = 0" (subscript_expression "local_78[uVar7]" (identifier "local_78") ([ "[") (identifier "uVar7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_78[uVar7 + 1] = 0;" (assignment_expression "local_78[uVar7 + 1] = 0" (subscript_expression "local_78[uVar7 + 1]" (identifier "local_78") ([ "[") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1")) (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_70 = uVar9;" (assignment_expression "local_70 = uVar9" (identifier "local_70") (= "=") (identifier "uVar9")) (; ";")) (expression_statement "cVar4 = FUN_0032d0e0(*(undefined8 *)(lVar12 + 0x10),*(undefined8 *)(lVar12 + 0x18),&local_78);" (assignment_expression "cVar4 = FUN_0032d0e0(*(undefined8 *)(lVar12 + 0x10),*(undefined8 *)(lVar12 + 0x18),&local_78)" (identifier "cVar4") (= "=") (call_expression "FUN_0032d0e0(*(undefined8 *)(lVar12 + 0x10),*(undefined8 *)(lVar12 + 0x18),&local_78)" (identifier "FUN_0032d0e0") (argument_list "(*(undefined8 *)(lVar12 + 0x10),*(undefined8 *)(lVar12 + 0x18),&local_78)" (( "(") (pointer_expression "*(undefined8 *)(lVar12 + 0x10)" (* "*") (cast_expression "(undefined8 *)(lVar12 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar12 + 0x10)" (( "(") (binary_expression "lVar12 + 0x10" (identifier "lVar12") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(lVar12 + 0x18)" (* "*") (cast_expression "(undefined8 *)(lVar12 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar12 + 0x18)" (( "(") (binary_expression "lVar12 + 0x18" (identifier "lVar12") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (pointer_expression "&local_78" (& "&") (identifier "local_78")) () ")")))) (; ";")) (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_002aae90(param_8,&local_58);" (call_expression "FUN_002aae90(param_8,&local_58)" (identifier "FUN_002aae90") (argument_list "(param_8,&local_58)" (( "(") (identifier "param_8") (, ",") (pointer_expression "&local_58" (& "&") (identifier "local_58")) () ")"))) (; ";")) (expression_statement "local_90 = (int)param_3;" (assignment_expression "local_90 = (int)param_3" (identifier "local_90") (= "=") (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3"))) (; ";")) (expression_statement "bVar13 = local_90 == -1;" (assignment_expression "bVar13 = local_90 == -1" (identifier "bVar13") (= "=") (binary_expression "local_90 == -1" (identifier "local_90") (== "==") (number_literal "-1"))) (; ";")) (expression_statement "bVar11 = param_2 != (long *)0x0 && bVar13;" (assignment_expression "bVar11 = param_2 != (long *)0x0 && bVar13" (identifier "bVar11") (= "=") (binary_expression "param_2 != (long *)0x0 && bVar13" (binary_expression "param_2 != (long *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (identifier "bVar13"))) (; ";")) (expression_statement "local_98 = param_2;" (assignment_expression "local_98 = param_2" (identifier "local_98") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (((param_2 != (long *)0x0 && bVar13) &&\n      (bVar13 = false, (ulong)param_2[3] <= (ulong)param_2[2])) &&\n     (iVar5 = (**(code **)(*param_2 + 0x48))(), iVar5 == -1)) {\n    local_98 = (long *)0x0;\n    bVar13 = bVar11;\n  }" (if "if") (parenthesized_expression "(((param_2 != (long *)0x0 && bVar13) &&\n      (bVar13 = false, (ulong)param_2[3] <= (ulong)param_2[2])) &&\n     (iVar5 = (**(code **)(*param_2 + 0x48))(), iVar5 == -1))" (( "(") (binary_expression "((param_2 != (long *)0x0 && bVar13) &&\n      (bVar13 = false, (ulong)param_2[3] <= (ulong)param_2[2])) &&\n     (iVar5 = (**(code **)(*param_2 + 0x48))(), iVar5 == -1)" (parenthesized_expression "((param_2 != (long *)0x0 && bVar13) &&\n      (bVar13 = false, (ulong)param_2[3] <= (ulong)param_2[2]))" (( "(") (binary_expression "(param_2 != (long *)0x0 && bVar13) &&\n      (bVar13 = false, (ulong)param_2[3] <= (ulong)param_2[2])" (parenthesized_expression "(param_2 != (long *)0x0 && bVar13)" (( "(") (binary_expression "param_2 != (long *)0x0 && bVar13" (binary_expression "param_2 != (long *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (identifier "bVar13")) () ")")) (&& "&&") (parenthesized_expression "(bVar13 = false, (ulong)param_2[3] <= (ulong)param_2[2])" (( "(") (comma_expression "bVar13 = false, (ulong)param_2[3] <= (ulong)param_2[2]" (assignment_expression "bVar13 = false" (identifier "bVar13") (= "=") (false "false")) (, ",") (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (cast_expression "(ulong)param_2[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar5 = (**(code **)(*param_2 + 0x48))(), iVar5 == -1)" (( "(") (comma_expression "iVar5 = (**(code **)(*param_2 + 0x48))(), iVar5 == -1" (assignment_expression "iVar5 = (**(code **)(*param_2 + 0x48))()" (identifier "iVar5") (= "=") (call_expression "(**(code **)(*param_2 + 0x48))()" (parenthesized_expression "(**(code **)(*param_2 + 0x48))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x48)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x48)" (* "*") (cast_expression "(code **)(*param_2 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x48)" (( "(") (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar5 == -1" (identifier "iVar5") (== "==") (number_literal "-1"))) () ")"))) () ")")) (compound_statement "{\n    local_98 = (long *)0x0;\n    bVar13 = bVar11;\n  }" ({ "{") (expression_statement "local_98 = (long *)0x0;" (assignment_expression "local_98 = (long *)0x0" (identifier "local_98") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "bVar13 = bVar11;" (assignment_expression "bVar13 = bVar11" (identifier "bVar13") (= "=") (identifier "bVar11")) (; ";")) (} "}"))) (expression_statement "bVar3 = param_4 != (long *)0x0 && param_5 == -1;" (assignment_expression "bVar3 = param_4 != (long *)0x0 && param_5 == -1" (identifier "bVar3") (= "=") (binary_expression "param_4 != (long *)0x0 && param_5 == -1" (binary_expression "param_4 != (long *)0x0" (identifier "param_4") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (binary_expression "param_5 == -1" (identifier "param_5") (== "==") (number_literal "-1")))) (; ";")) (expression_statement "bVar11 = param_5 == -1;" (assignment_expression "bVar11 = param_5 == -1" (identifier "bVar11") (= "=") (binary_expression "param_5 == -1" (identifier "param_5") (== "==") (number_literal "-1"))) (; ";")) (if_statement "if ((bVar3) && (bVar11 = false, (ulong)param_4[3] <= (ulong)param_4[2])) {\n    iVar5 = (**(code **)(*param_4 + 0x48))();\n    bVar11 = false;\n    if (iVar5 == -1) {\n      bVar11 = bVar3;\n    }\n  }" (if "if") (parenthesized_expression "((bVar3) && (bVar11 = false, (ulong)param_4[3] <= (ulong)param_4[2]))" (( "(") (binary_expression "(bVar3) && (bVar11 = false, (ulong)param_4[3] <= (ulong)param_4[2])" (parenthesized_expression "(bVar3)" (( "(") (identifier "bVar3") () ")")) (&& "&&") (parenthesized_expression "(bVar11 = false, (ulong)param_4[3] <= (ulong)param_4[2])" (( "(") (comma_expression "bVar11 = false, (ulong)param_4[3] <= (ulong)param_4[2]" (assignment_expression "bVar11 = false" (identifier "bVar11") (= "=") (false "false")) (, ",") (binary_expression "(ulong)param_4[3] <= (ulong)param_4[2]" (cast_expression "(ulong)param_4[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_4[3]" (identifier "param_4") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (cast_expression "(ulong)param_4[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]"))))) () ")"))) () ")")) (compound_statement "{\n    iVar5 = (**(code **)(*param_4 + 0x48))();\n    bVar11 = false;\n    if (iVar5 == -1) {\n      bVar11 = bVar3;\n    }\n  }" ({ "{") (expression_statement "iVar5 = (**(code **)(*param_4 + 0x48))();" (assignment_expression "iVar5 = (**(code **)(*param_4 + 0x48))()" (identifier "iVar5") (= "=") (call_expression "(**(code **)(*param_4 + 0x48))()" (parenthesized_expression "(**(code **)(*param_4 + 0x48))" (( "(") (pointer_expression "**(code **)(*param_4 + 0x48)" (* "*") (pointer_expression "*(code **)(*param_4 + 0x48)" (* "*") (cast_expression "(code **)(*param_4 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_4 + 0x48)" (( "(") (binary_expression "*param_4 + 0x48" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" (identifier "bVar11") (= "=") (false "false")) (; ";")) (if_statement "if (iVar5 == -1) {\n      bVar11 = bVar3;\n    }" (if "if") (parenthesized_expression "(iVar5 == -1)" (( "(") (binary_expression "iVar5 == -1" (identifier "iVar5") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n      bVar11 = bVar3;\n    }" ({ "{") (expression_statement "bVar11 = bVar3;" (assignment_expression "bVar11 = bVar3" (identifier "bVar11") (= "=") (identifier "bVar3")) (; ";")) (} "}"))) (} "}"))) (if_statement "if (bVar11 == bVar13) {\n    *param_7 = *param_7 | 2;\n  }" (if "if") (parenthesized_expression "(bVar11 == bVar13)" (( "(") (binary_expression "bVar11 == bVar13" (identifier "bVar11") (== "==") (identifier "bVar13")) () ")")) (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_58 != local_48) {\n    FUN_002a2980();\n  }" (if "if") (parenthesized_expression "(local_58 != local_48)" (( "(") (binary_expression "local_58 != local_48" (identifier "local_58") (!= "!=") (identifier "local_48")) () ")")) (compound_statement "{\n    FUN_002a2980();\n  }" ({ "{") (expression_statement "FUN_002a2980();" (call_expression "FUN_002a2980()" (identifier "FUN_002a2980") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_78 != &local_68) {\n    FUN_002a2980();\n  }" (if "if") (parenthesized_expression "(local_78 != &local_68)" (( "(") (binary_expression "local_78 != &local_68" (identifier "local_78") (!= "!=") (pointer_expression "&local_68" (& "&") (identifier "local_68"))) () ")")) (compound_statement "{\n    FUN_002a2980();\n  }" ({ "{") (expression_statement "FUN_002a2980();" (call_expression "FUN_002a2980()" (identifier "FUN_002a2980") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "auVar14._8_8_ = param_3;" (assignment_expression "auVar14._8_8_ = param_3" (field_expression "auVar14._8_8_" (identifier "auVar14") (. ".") (field_identifier "_8_8_")) (= "=") (identifier "param_3")) (; ";")) (expression_statement "auVar14._0_8_ = local_98;" (assignment_expression "auVar14._0_8_ = local_98" (field_expression "auVar14._0_8_" (identifier "auVar14") (. ".") (field_identifier "_0_8_")) (= "=") (identifier "local_98")) (; ";")) (return_statement "return auVar14;" (return "return") (identifier "auVar14") (; ";")) (ERROR "}" (} "}"))

/* WARNING: Removing unreachable block (ram,0x0031c041) */
/* WARNING: Removing unreachable block (ram,0x0031c04e) */
/* WARNING: Removing unreachable block (ram,0x0031b676) */
/* WARNING: Removing unreachable block (ram,0x0031b67f) */
/* WARNING: Removing unreachable block (ram,0x0031bf50) */
/* WARNING: Removing unreachable block (ram,0x0031c464) */
/* WARNING: Removing unreachable block (ram,0x0031c55a) */
/* WARNING: Removing unreachable block (ram,0x0031c473) */
/* WARNING: Removing unreachable block (ram,0x0031bf5e) */
/* WARNING: Removing unreachable block (ram,0x0031bf70) */
/* WARNING: Removing unreachable block (ram,0x0031b69e) */
/* WARNING: Removing unreachable block (ram,0x0031b6ac) */
/* WARNING: Removing unreachable block (ram,0x0031b6ba) */
/* WARNING: Removing unreachable block (ram,0x0031c010) */
/* WARNING: Removing unreachable block (ram,0x0031b6c2) */
/* WARNING: Removing unreachable block (ram,0x0031b60c) */
/* WARNING: Removing unreachable block (ram,0x0031b617) */
/* WARNING: Removing unreachable block (ram,0x0031bdf8) */
/* WARNING: Removing unreachable block (ram,0x0031b61f) */
/* WARNING: Removing unreachable block (ram,0x0031b638) */
/* WARNING: Removing unreachable block (ram,0x0031bf20) */
/* WARNING: Removing unreachable block (ram,0x0031bf30) */
/* WARNING: Removing unreachable block (ram,0x0031bf3f) */
/* WARNING: Removing unreachable block (ram,0x0031b64f) */
/* WARNING: Removing unreachable block (ram,0x0031b661) */
/* WARNING: Removing unreachable block (ram,0x0031b669) */
/* WARNING: Removing unreachable block (ram,0x0031bdc0) */
/* WARNING: Removing unreachable block (ram,0x0031bdce) */
/* WARNING: Removing unreachable block (ram,0x0031bde5) */
/* WARNING: Removing unreachable block (ram,0x0031b66b) */
/* WARNING: Removing unreachable block (ram,0x0031c020) */
/* WARNING: Removing unreachable block (ram,0x0031c02b) */
/* WARNING: Removing unreachable block (ram,0x0031c0f3) */
/* WARNING: Removing unreachable block (ram,0x0031bc3c) */
/* WARNING: Removing unreachable block (ram,0x0031bc41) */
/* WARNING: Removing unreachable block (ram,0x0031bc52) */
/* 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<false>(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_3  [16]
std::money_get<var_2,var_13::istreambuf_iterator<var_2,var_13::var_1<var_2>>>::var_3<false>
          (type_8 param_1,var_4 *var_5,type_8 param_3,var_4 *var_6,int var_40,
          var_4 var_14,var_7 *var_8,var_9 *var_10)

{
  long *plVar1;
  type_1 var_23;
  long var_24;
  bool bVar4;
  char var_35;
  int var_39;
  type_2 var_16;
  var_11<var_2,false> *var_19;
  type_2 var_32;
  type_2 var_31;
  bool var_41;
  long var_17;
  bool var_38;
  type_3 auVar13 [16];
  long *local_98;
  int var_37;
  type_4 local_7c;
  type_3 *var_29;
  type_2 var_28;
  type_3 local_68;
  type_5 uStack_67;
  type_3 *var_42;
  type_2 var_25;
  type_3 var_43 [24];
  
  var_12<var_13::ctype<var_2>>((type_6 *)(var_14 + 0xd0));
  var_16 = type_6::id::var_15((type_7 *)&moneypunct<var_2,false>::type_7);
  plVar1 = (long *)(*(long *)(*(long *)(var_14 + 0xd0) + 0x18) + var_16 * 8);
  var_17 = *plVar1;
  if (var_17 == 0) {
                    /* try { // try from 0031c2e5 to 0031c2e9 has its CatchHandler @ 0031c576 */
    var_19 = (var_11<var_2,false> *)var_18(0x70);
    *(type_4 *)(var_19 + 8) = 0;
    *(type_8 *)(var_19 + 0x10) = 0;
    *(type_8 *)(var_19 + 0x18) = 0;
    *(type_9 *)(var_19 + 0x20) = 0;
    *(type_10 ***)var_19 = &PTR____moneypunct_cache_003f3258;
    var_19[0x22] = (var_11<var_2,false>)0x0;
    *(type_8 *)(var_19 + 0x28) = 0;
    *(type_8 *)(var_19 + 0x30) = 0;
    *(type_8 *)(var_19 + 0x38) = 0;
    *(type_8 *)(var_19 + 0x40) = 0;
    *(type_8 *)(var_19 + 0x48) = 0;
    *(type_8 *)(var_19 + 0x50) = 0;
    *(type_8 *)(var_19 + 0x58) = 0;
    *(type_4 *)(var_19 + 0x60) = 0;
    var_19[0x6f] = (var_11<var_2,false>)0x0;
                    /* try { // try from 0031c365 to 0031c369 has its CatchHandler @ 0031c56f */
    var_11<var_2,false>::var_20(var_19,(type_6 *)(var_14 + 0xd0));
    locale::_Impl::var_21(*(type_11 **)(var_14 + 0xd0),(type_12 *)var_19,var_16);
    var_17 = *plVar1;
  }
  var_28 = 0;
  var_29 = &local_68;
  local_68 = 0;
  if (*(char *)(var_17 + 0x20) != '\0') {
                    /* try { // try from 0031b536 to 0031b53a has its CatchHandler @ 0031c571 */
    std::string::var_22((var_9 *)&var_29,0x20);
  }
  var_25 = 0;
  var_42 = var_43;
  var_43[0] = 0;
                    /* try { // try from 0031b56d to 0031c2c4 has its CatchHandler @ 0031c56a */
  std::string::var_22((var_9 *)&var_42,0x20);
  local_7c = *(type_4 *)(var_17 + 0x60);
  var_24 = 0;
  var_23 = (type_1)local_7c;
  while( true ) {
    if (var_23 < 5) {
                    /* WARNING: Could not recover jumptable at 0x0031b5df. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      auVar13 = (*(type_13 *)(&DAT_0035ec68 +
                          *(int *)(&DAT_0035ec68 + (type_2)*(type_1 *)((long)&local_7c + var_24) * 4)))
                          ();
      return auVar13;
    }
    if (3 < (int)var_24 + 1) break;
    var_23 = *(type_1 *)((long)&local_7c + var_24 + 1);
    var_24 = var_24 + 1;
  }
  if ((var_25 < 2) ||
     (var_16 = var_13::var_9::var_26((var_9 *)&var_42,'0',0), var_16 == 0))
  goto LAB_0031c03a;
  if (var_16 == 0xffffffffffffffff) {
    var_16 = var_25 - 1;
    if (var_16 == 0xffffffffffffffff) {
      *var_42 = 0;
      goto LAB_0031c03a;
    }
    if (var_16 == 0) goto LAB_0031c03a;
  }
  var_32 = var_25;
  if (var_16 < var_25) {
    var_32 = var_16;
  }
  std::string::var_27((var_9 *)&var_42,0,var_32);
LAB_0031c03a:
  var_16 = var_28;
  if (var_28 != 0) {
    var_32 = var_28 + 1;
    if (var_29 == &local_68) {
      var_31 = 0xf;
    }
    else {
      var_31 = var_30(uStack_67,local_68);
    }
    if (var_31 < var_32) {
      std::string::var_33((var_9 *)&var_29,var_28,0,(char *)0x0,1);
    }
    var_29[var_16] = 0;
    var_29[var_16 + 1] = 0;
    var_28 = var_32;
    var_35 = var_34(*(char **)(var_17 + 0x10),*(type_2 *)(var_17 + 0x18),
                              (var_9 *)&var_29);
    if (var_35 == '\0') {
      *var_8 = *var_8 | 4;
    }
  }
  std::string::var_36(var_10,(var_9 *)&var_42);
  var_37 = (int)param_3;
  var_38 = var_37 == -1;
  var_41 = var_5 != (long *)0x0 && var_38;
  local_98 = var_5;
  if (((var_5 != (long *)0x0 && var_38) &&
      (var_38 = false, (type_2)var_5[3] <= (type_2)var_5[2])) &&
     (var_39 = (**(type_13 **)(*var_5 + 0x48))(), var_39 == -1)) {
    local_98 = (long *)0x0;
    var_38 = var_41;
  }
  bVar4 = var_6 != (long *)0x0 && var_40 == -1;
  var_41 = var_40 == -1;
  if ((bVar4) && (var_41 = false, (type_2)var_6[3] <= (type_2)var_6[2])) {
    var_39 = (**(type_13 **)(*var_6 + 0x48))();
    var_41 = false;
    if (var_39 == -1) {
      var_41 = bVar4;
    }
  }
  if (var_41 == var_38) {
    *var_8 = *var_8 | 2;
  }
  if (var_42 != var_43) {
    var_44(var_42);
  }
  if (var_29 != &local_68) {
    var_44(var_29);
  }
  auVar13._8_8_ = param_3;
  auVar13._0_8_ = local_98;
  return auVar13;
}


(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) (ERROR (identifier)) declarator: (pointer_declarator declarator: (identifier)) declarator: (identifier) (ERROR (identifier)) (ERROR (identifier)) declarator: (pointer_declarator declarator: (identifier)) (ERROR (identifier)) declarator: (identifier) (ERROR (identifier)) declarator: (identifier) (ERROR (identifier)) declarator: (pointer_declarator declarator: (identifier)) (ERROR (identifier) (identifier)) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator 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: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (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: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (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)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (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: (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))))) right: (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: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (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))))) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (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: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (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: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (number_literal) (number_literal)))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (goto_statement label: (statement_identifier))) (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: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (number_literal) (identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (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: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (number_literal) (number_literal) (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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) (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (false)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal)))))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (binary_expression left: (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 (identifier)) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (false)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal)))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (false))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) 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: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (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,0x0031c041) */
/* WARNING: Removing unreachable block (ram,0x0031c04e) */
/* WARNING: Removing unreachable block (ram,0x0031b676) */
/* WARNING: Removing unreachable block (ram,0x0031b67f) */
/* WARNING: Removing unreachable block (ram,0x0031bf50) */
/* WARNING: Removing unreachable block (ram,0x0031c464) */
/* WARNING: Removing unreachable block (ram,0x0031c55a) */
/* WARNING: Removing unreachable block (ram,0x0031c473) */
/* WARNING: Removing unreachable block (ram,0x0031bf5e) */
/* WARNING: Removing unreachable block (ram,0x0031bf70) */
/* WARNING: Removing unreachable block (ram,0x0031b69e) */
/* WARNING: Removing unreachable block (ram,0x0031b6ac) */
/* WARNING: Removing unreachable block (ram,0x0031b6ba) */
/* WARNING: Removing unreachable block (ram,0x0031c010) */
/* WARNING: Removing unreachable block (ram,0x0031b6c2) */
/* WARNING: Removing unreachable block (ram,0x0031b60c) */
/* WARNING: Removing unreachable block (ram,0x0031b617) */
/* WARNING: Removing unreachable block (ram,0x0031bdf8) */
/* WARNING: Removing unreachable block (ram,0x0031b61f) */
/* WARNING: Removing unreachable block (ram,0x0031b638) */
/* WARNING: Removing unreachable block (ram,0x0031bf20) */
/* WARNING: Removing unreachable block (ram,0x0031bf30) */
/* WARNING: Removing unreachable block (ram,0x0031bf3f) */
/* WARNING: Removing unreachable block (ram,0x0031b64f) */
/* WARNING: Removing unreachable block (ram,0x0031b661) */
/* WARNING: Removing unreachable block (ram,0x0031b669) */
/* WARNING: Removing unreachable block (ram,0x0031bdc0) */
/* WARNING: Removing unreachable block (ram,0x0031bdce) */
/* WARNING: Removing unreachable block (ram,0x0031bde5) */
/* WARNING: Removing unreachable block (ram,0x0031b66b) */
/* WARNING: Removing unreachable block (ram,0x0031c020) */
/* WARNING: Removing unreachable block (ram,0x0031c02b) */
/* WARNING: Removing unreachable block (ram,0x0031c0f3) */
/* WARNING: Removing unreachable block (ram,0x0031bc3c) */
/* WARNING: Removing unreachable block (ram,0x0031bc41) */
/* WARNING: Removing unreachable block (ram,0x0031bc52) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

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

{
  long *plVar1;
  byte bVar2;
  bool bVar3;
  char cVar4;
  int iVar5;
  long lVar6;
  ulong uVar7;
  undefined8 *puVar8;
  ulong uVar9;
  ulong uVar10;
  bool bVar11;
  long lVar12;
  bool bVar13;
  undefined1 auVar14 [16];
  long *local_98;
  int local_90;
  undefined4 local_7c;
  undefined1 *local_78;
  ulong local_70;
  undefined1 local_68;
  undefined7 uStack_67;
  undefined1 *local_58;
  ulong local_50;
  undefined1 local_48 [24];
  
  FUN_002b4380(param_6 + 0xd0);
  lVar6 = FUN_002a50c0(&DAT_00405ef0);
  plVar1 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar6 * 8);
  lVar12 = *plVar1;
  if (lVar12 == 0) {
                    /* try { // try from 0031c2e5 to 0031c2e9 has its CatchHandler @ 0031c576 */
    puVar8 = (undefined8 *)FUN_002a11b0(0x70);
    *(undefined4 *)(puVar8 + 1) = 0;
    puVar8[2] = 0;
    puVar8[3] = 0;
    *(undefined2 *)(puVar8 + 4) = 0;
    *puVar8 = &PTR_FUN_003f3258;
    *(undefined1 *)((long)puVar8 + 0x22) = 0;
    puVar8[5] = 0;
    puVar8[6] = 0;
    puVar8[7] = 0;
    puVar8[8] = 0;
    puVar8[9] = 0;
    puVar8[10] = 0;
    puVar8[0xb] = 0;
    *(undefined4 *)(puVar8 + 0xc) = 0;
    *(undefined1 *)((long)puVar8 + 0x6f) = 0;
                    /* try { // try from 0031c365 to 0031c369 has its CatchHandler @ 0031c56f */
    FUN_002b55a0(puVar8,param_6 + 0xd0);
    FUN_002a5530(*(undefined8 *)(param_6 + 0xd0),puVar8,lVar6);
    lVar12 = *plVar1;
  }
  local_70 = 0;
  local_78 = &local_68;
  local_68 = 0;
  if (*(char *)(lVar12 + 0x20) != '\0') {
                    /* try { // try from 0031b536 to 0031b53a has its CatchHandler @ 0031c571 */
    FUN_002a9b20(&local_78,0x20);
  }
  local_50 = 0;
  local_58 = local_48;
  local_48[0] = 0;
                    /* try { // try from 0031b56d to 0031c2c4 has its CatchHandler @ 0031c56a */
  FUN_002a9b20(&local_58,0x20);
  local_7c = *(undefined4 *)(lVar12 + 0x60);
  lVar6 = 0;
  bVar2 = (byte)local_7c;
  while( true ) {
    if (bVar2 < 5) {
                    /* WARNING: Could not recover jumptable at 0x0031b5df. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      auVar14 = (*(code *)(&DAT_0035ec68 +
                          *(int *)(&DAT_0035ec68 + (ulong)*(byte *)((long)&local_7c + lVar6) * 4)))
                          ();
      return auVar14;
    }
    if (3 < (int)lVar6 + 1) break;
    bVar2 = *(byte *)((long)&local_7c + lVar6 + 1);
    lVar6 = lVar6 + 1;
  }
  if ((local_50 < 2) || (uVar7 = FUN_002ab490(&local_58,0x30,0), uVar7 == 0)) goto LAB_0031c03a;
  if (uVar7 == 0xffffffffffffffff) {
    uVar7 = local_50 - 1;
    if (uVar7 == 0xffffffffffffffff) {
      *local_58 = 0;
      goto LAB_0031c03a;
    }
    if (uVar7 == 0) goto LAB_0031c03a;
  }
  uVar9 = local_50;
  if (uVar7 < local_50) {
    uVar9 = uVar7;
  }
  FUN_002a97b0(&local_58,0,uVar9);
LAB_0031c03a:
  uVar7 = local_70;
  if (local_70 != 0) {
    uVar9 = local_70 + 1;
    if (local_78 == &local_68) {
      uVar10 = 0xf;
    }
    else {
      uVar10 = CONCAT71(uStack_67,local_68);
    }
    if (uVar10 < uVar9) {
      FUN_002a9670(&local_78,local_70,0,0,1);
    }
    local_78[uVar7] = 0;
    local_78[uVar7 + 1] = 0;
    local_70 = uVar9;
    cVar4 = FUN_0032d0e0(*(undefined8 *)(lVar12 + 0x10),*(undefined8 *)(lVar12 + 0x18),&local_78);
    if (cVar4 == '\0') {
      *param_7 = *param_7 | 4;
    }
  }
  FUN_002aae90(param_8,&local_58);
  local_90 = (int)param_3;
  bVar13 = local_90 == -1;
  bVar11 = param_2 != (long *)0x0 && bVar13;
  local_98 = param_2;
  if (((param_2 != (long *)0x0 && bVar13) &&
      (bVar13 = false, (ulong)param_2[3] <= (ulong)param_2[2])) &&
     (iVar5 = (**(code **)(*param_2 + 0x48))(), iVar5 == -1)) {
    local_98 = (long *)0x0;
    bVar13 = bVar11;
  }
  bVar3 = param_4 != (long *)0x0 && param_5 == -1;
  bVar11 = param_5 == -1;
  if ((bVar3) && (bVar11 = false, (ulong)param_4[3] <= (ulong)param_4[2])) {
    iVar5 = (**(code **)(*param_4 + 0x48))();
    bVar11 = false;
    if (iVar5 == -1) {
      bVar11 = bVar3;
    }
  }
  if (bVar11 == bVar13) {
    *param_7 = *param_7 | 2;
  }
  if (local_58 != local_48) {
    FUN_002a2980();
  }
  if (local_78 != &local_68) {
    FUN_002a2980();
  }
  auVar14._8_8_ = param_3;
  auVar14._0_8_ = local_98;
  return auVar14;
}

