
/* WARNING: Removing unreachable block (ram,0x002dfb11) */
/* WARNING: Removing unreachable block (ram,0x002dfb1e) */
/* WARNING: Removing unreachable block (ram,0x002df1b9) */
/* WARNING: Removing unreachable block (ram,0x002df1c7) */
/* WARNING: Removing unreachable block (ram,0x002dfbf0) */
/* WARNING: Removing unreachable block (ram,0x002e0075) */
/* WARNING: Removing unreachable block (ram,0x002dfbfe) */
/* WARNING: Removing unreachable block (ram,0x002dfc02) */
/* WARNING: Removing unreachable block (ram,0x002dfd80) */
/* WARNING: Removing unreachable block (ram,0x002dfc0b) */
/* WARNING: Removing unreachable block (ram,0x002df1d0) */
/* WARNING: Removing unreachable block (ram,0x002df1da) */
/* WARNING: Removing unreachable block (ram,0x002dfcd0) */
/* WARNING: Removing unreachable block (ram,0x002df1e8) */
/* WARNING: Removing unreachable block (ram,0x002df1f0) */
/* WARNING: Removing unreachable block (ram,0x002df164) */
/* WARNING: Removing unreachable block (ram,0x002df16f) */
/* WARNING: Removing unreachable block (ram,0x002df980) */
/* WARNING: Removing unreachable block (ram,0x002df173) */
/* WARNING: Removing unreachable block (ram,0x002df201) */
/* WARNING: Removing unreachable block (ram,0x002df218) */
/* WARNING: Removing unreachable block (ram,0x002e005f) */
/* WARNING: Removing unreachable block (ram,0x002df226) */
/* WARNING: Removing unreachable block (ram,0x002df228) */
/* WARNING: Removing unreachable block (ram,0x002df234) */
/* WARNING: Removing unreachable block (ram,0x002df188) */
/* WARNING: Removing unreachable block (ram,0x002dfac0) */
/* WARNING: Removing unreachable block (ram,0x002e006a) */
/* WARNING: Removing unreachable block (ram,0x002dface) */
/* WARNING: Removing unreachable block (ram,0x002dfad0) */
/* WARNING: Removing unreachable block (ram,0x002dfadb) */
/* WARNING: Removing unreachable block (ram,0x002df1a5) */
/* WARNING: Removing unreachable block (ram,0x002df1ae) */
/* WARNING: Removing unreachable block (ram,0x002dfaf0) */
/* WARNING: Removing unreachable block (ram,0x002dfafb) */
/* WARNING: Removing unreachable block (ram,0x002dfbc5) */
/* WARNING: Removing unreachable block (ram,0x002df715) */
/* WARNING: Removing unreachable block (ram,0x002df71a) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */
/* std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::money_get<wchar_t,
   std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >
   >::_M_extract<true>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >,
   std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&,
   std::_Ios_Iostate&, std::string&) const */

undefined1  [16]
std::money_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>::
_M_extract<true>(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;
  bool bVar5;
  char cVar6;
  int iVar7;
  ulong uVar8;
  __moneypunct_cache<wchar_t,true> *this;
  ulong uVar9;
  ulong uVar10;
  bool bVar11;
  long lVar12;
  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<wchar_t>>((locale *)(param_6 + 0xd0));
  uVar8 = locale::id::_M_id((id *)&moneypunct<wchar_t,true>::id);
  plVar1 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + uVar8 * 8);
  lVar12 = *plVar1;
  if (lVar12 == 0) {
                    /* try { // try from 002dfee5 to 002dfee9 has its CatchHandler @ 002e0192 */
    this = (__moneypunct_cache<wchar_t,true> *)operator_new(0xa0);
    *(undefined4 *)(this + 8) = 0;
    *(undefined8 *)(this + 0x10) = 0;
    *(undefined8 *)(this + 0x18) = 0;
    *(undefined ***)this = &PTR____moneypunct_cache_003bb338;
    this[0x20] = (__moneypunct_cache<wchar_t,true>)0x0;
    *(undefined8 *)(this + 0x24) = 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;
    *(undefined8 *)(this + 0x60) = 0;
    *(undefined4 *)(this + 0x68) = 0;
    this[0x98] = (__moneypunct_cache<wchar_t,true>)0x0;
                    /* try { // try from 002dff6b to 002dff6f has its CatchHandler @ 002e0190 */
    __moneypunct_cache<wchar_t,true>::_M_cache(this,(locale *)(param_6 + 0xd0));
    locale::_Impl::_M_install_cache(*(_Impl **)(param_6 + 0xd0),(facet *)this,uVar8);
    lVar12 = *plVar1;
  }
  local_70 = 0;
  local_78 = &local_68;
  local_68 = 0;
  if (*(char *)(lVar12 + 0x20) != '\0') {
                    /* try { // try from 002df095 to 002df099 has its CatchHandler @ 002e018b */
    std::string::reserve((string *)&local_78,0x20);
  }
  local_50 = 0;
  local_58 = local_48;
  local_48[0] = 0;
                    /* try { // try from 002df0cc to 002dfe66 has its CatchHandler @ 002e01ba */
  std::string::reserve((string *)&local_58,0x20);
  local_7c = *(undefined4 *)(lVar12 + 0x68);
  lVar3 = 0;
  bVar2 = (byte)local_7c;
  while( true ) {
    if (bVar2 < 5) {
                    /* WARNING: Could not recover jumptable at 0x002df13d. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      auVar13 = (*(code *)(&DAT_0032c9b4 +
                          *(int *)(&DAT_0032c9b4 + (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) ||
     (uVar8 = std::string::find_first_not_of((string *)&local_58,'0',0), uVar8 == 0))
  goto LAB_002dfb0a;
  if (uVar8 == 0xffffffffffffffff) {
    uVar8 = local_50 - 1;
    if (uVar8 == 0xffffffffffffffff) {
      *local_58 = 0;
      goto LAB_002dfb0a;
    }
    if (uVar8 == 0) goto LAB_002dfb0a;
  }
  uVar9 = local_50;
  if (uVar8 <= local_50) {
    uVar9 = uVar8;
  }
  std::string::_M_erase((string *)&local_58,0,uVar9);
LAB_002dfb0a:
  uVar8 = 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) {
      std::string::_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1);
    }
    local_78[uVar8] = 0;
    local_78[uVar8 + 1] = 0;
    local_70 = uVar9;
    cVar6 = __verify_grouping(*(char **)(lVar12 + 0x10),*(ulong *)(lVar12 + 0x18),
                              (string *)&local_78);
    if (cVar6 == '\0') {
      *param_7 = *param_7 | 4;
    }
  }
  std::string::swap(param_8,(string *)&local_58);
  local_90 = (int)param_3;
  bVar4 = param_2 != (long *)0x0 && local_90 == -1;
  bVar11 = local_90 == -1;
  local_98 = param_2;
  if (bVar4) {
    if ((int *)param_2[2] < (int *)param_2[3]) {
      iVar7 = *(int *)param_2[2];
    }
    else {
      iVar7 = (**(code **)(*param_2 + 0x48))();
    }
    bVar11 = false;
    if (iVar7 == -1) {
      local_98 = (long *)0x0;
      bVar11 = bVar4;
    }
  }
  bVar5 = param_4 != (long *)0x0 && param_5 == -1;
  bVar4 = param_5 == -1;
  if (bVar5) {
    if ((int *)param_4[2] < (int *)param_4[3]) {
      iVar7 = *(int *)param_4[2];
    }
    else {
      iVar7 = (**(code **)(*param_4 + 0x48))();
    }
    bVar4 = false;
    if (iVar7 == -1) {
      bVar4 = bVar5;
    }
  }
  if (bVar11 == bVar4) {
    *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,0x002dfb11) */
/* WARNING: Removing unreachable block (ram,0x002dfb1e) */
/* WARNING: Removing unreachable block (ram,0x002df1b9) */
/* WARNING: Removing unreachable block (ram,0x002df1c7) */
/* WARNING: Removing unreachable block (ram,0x002dfbf0) */
/* WARNING: Removing unreachable block (ram,0x002e0075) */
/* WARNING: Removing unreachable block (ram,0x002dfbfe) */
/* WARNING: Removing unreachable block (ram,0x002dfc02) */
/* WARNING: Removing unreachable block (ram,0x002dfd80) */
/* WARNING: Removing unreachable block (ram,0x002dfc0b) */
/* WARNING: Removing unreachable block (ram,0x002df1d0) */
/* WARNING: Removing unreachable block (ram,0x002df1da) */
/* WARNING: Removing unreachable block (ram,0x002dfcd0) */
/* WARNING: Removing unreachable block (ram,0x002df1e8) */
/* WARNING: Removing unreachable block (ram,0x002df1f0) */
/* WARNING: Removing unreachable block (ram,0x002df164) */
/* WARNING: Removing unreachable block (ram,0x002df16f) */
/* WARNING: Removing unreachable block (ram,0x002df980) */
/* WARNING: Removing unreachable block (ram,0x002df173) */
/* WARNING: Removing unreachable block (ram,0x002df201) */
/* WARNING: Removing unreachable block (ram,0x002df218) */
/* WARNING: Removing unreachable block (ram,0x002e005f) */
/* WARNING: Removing unreachable block (ram,0x002df226) */
/* WARNING: Removing unreachable block (ram,0x002df228) */
/* WARNING: Removing unreachable block (ram,0x002df234) */
/* WARNING: Removing unreachable block (ram,0x002df188) */
/* WARNING: Removing unreachable block (ram,0x002dfac0) */
/* WARNING: Removing unreachable block (ram,0x002e006a) */
/* WARNING: Removing unreachable block (ram,0x002dface) */
/* WARNING: Removing unreachable block (ram,0x002dfad0) */
/* WARNING: Removing unreachable block (ram,0x002dfadb) */
/* WARNING: Removing unreachable block (ram,0x002df1a5) */
/* WARNING: Removing unreachable block (ram,0x002df1ae) */
/* WARNING: Removing unreachable block (ram,0x002dfaf0) */
/* WARNING: Removing unreachable block (ram,0x002dfafb) */
/* WARNING: Removing unreachable block (ram,0x002dfbc5) */
/* WARNING: Removing unreachable block (ram,0x002df715) */
/* WARNING: Removing unreachable block (ram,0x002df71a) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

undefined1  [16]
FUN_002defd0(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;
  bool bVar4;
  char cVar5;
  int iVar6;
  long lVar7;
  ulong uVar8;
  undefined8 *puVar9;
  ulong uVar10;
  ulong uVar11;
  bool bVar12;
  long lVar13;
  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_002c36e0(param_6 + 0xd0);
  lVar7 = FUN_00279460(&DAT_003cbd28);
  plVar1 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar7 * 8);
  lVar13 = *plVar1;
  if (lVar13 == 0) {
                    /* try { // try from 002dfee5 to 002dfee9 has its CatchHandler @ 002e0192 */
    puVar9 = (undefined8 *)FUN_00275550(0xa0);
    *(undefined4 *)(puVar9 + 1) = 0;
    puVar9[2] = 0;
    puVar9[3] = 0;
    *puVar9 = &PTR_FUN_003bb338;
    *(undefined1 *)(puVar9 + 4) = 0;
    *(undefined8 *)((long)puVar9 + 0x24) = 0;
    puVar9[6] = 0;
    puVar9[7] = 0;
    puVar9[8] = 0;
    puVar9[9] = 0;
    puVar9[10] = 0;
    puVar9[0xb] = 0;
    puVar9[0xc] = 0;
    *(undefined4 *)(puVar9 + 0xd) = 0;
    *(undefined1 *)(puVar9 + 0x13) = 0;
                    /* try { // try from 002dff6b to 002dff6f has its CatchHandler @ 002e0190 */
    FUN_002c41c0(puVar9,param_6 + 0xd0);
    FUN_002798d0(*(undefined8 *)(param_6 + 0xd0),puVar9,lVar7);
    lVar13 = *plVar1;
  }
  local_70 = 0;
  local_78 = &local_68;
  local_68 = 0;
  if (*(char *)(lVar13 + 0x20) != '\0') {
                    /* try { // try from 002df095 to 002df099 has its CatchHandler @ 002e018b */
    FUN_0027dec0(&local_78,0x20);
  }
  local_50 = 0;
  local_58 = local_48;
  local_48[0] = 0;
                    /* try { // try from 002df0cc to 002dfe66 has its CatchHandler @ 002e01ba */
  FUN_0027dec0(&local_58,0x20);
  local_7c = *(undefined4 *)(lVar13 + 0x68);
  lVar7 = 0;
  bVar2 = (byte)local_7c;
  while( true ) {
    if (bVar2 < 5) {
                    /* WARNING: Could not recover jumptable at 0x002df13d. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      auVar14 = (*(code *)(&DAT_0032c9b4 +
                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)))
                          ();
      return auVar14;
    }
    if (3 < (int)lVar7 + 1) break;
    bVar2 = *(byte *)((long)&local_7c + lVar7 + 1);
    lVar7 = lVar7 + 1;
  }
  if ((local_50 < 2) || (uVar8 = FUN_0027f830(&local_58,0x30,0), uVar8 == 0)) goto LAB_002dfb0a;
  if (uVar8 == 0xffffffffffffffff) {
    uVar8 = local_50 - 1;
    if (uVar8 == 0xffffffffffffffff) {
      *local_58 = 0;
      goto LAB_002dfb0a;
    }
    if (uVar8 == 0) goto LAB_002dfb0a;
  }
  uVar10 = local_50;
  if (uVar8 <= local_50) {
    uVar10 = uVar8;
  }
  FUN_0027db50(&local_58,0,uVar10);
LAB_002dfb0a:
  uVar8 = local_70;
  if (local_70 != 0) {
    uVar10 = local_70 + 1;
    if (local_78 == &local_68) {
      uVar11 = 0xf;
    }
    else {
      uVar11 = CONCAT71(uStack_67,local_68);
    }
    if (uVar11 < uVar10) {
      FUN_0027da10(&local_78,local_70,0,0,1);
    }
    local_78[uVar8] = 0;
    local_78[uVar8 + 1] = 0;
    local_70 = uVar10;
    cVar5 = FUN_00301480(*(undefined8 *)(lVar13 + 0x10),*(undefined8 *)(lVar13 + 0x18),&local_78);
    if (cVar5 == '\0') {
      *param_7 = *param_7 | 4;
    }
  }
  FUN_0027f230(param_8,&local_58);
  local_90 = (int)param_3;
  bVar3 = param_2 != (long *)0x0 && local_90 == -1;
  bVar12 = local_90 == -1;
  local_98 = param_2;
  if (bVar3) {
    if ((int *)param_2[2] < (int *)param_2[3]) {
      iVar6 = *(int *)param_2[2];
    }
    else {
      iVar6 = (**(code **)(*param_2 + 0x48))();
    }
    bVar12 = false;
    if (iVar6 == -1) {
      local_98 = (long *)0x0;
      bVar12 = bVar3;
    }
  }
  bVar4 = param_4 != (long *)0x0 && param_5 == -1;
  bVar3 = param_5 == -1;
  if (bVar4) {
    if ((int *)param_4[2] < (int *)param_4[3]) {
      iVar6 = *(int *)param_4[2];
    }
    else {
      iVar6 = (**(code **)(*param_4 + 0x48))();
    }
    bVar3 = false;
    if (iVar6 == -1) {
      bVar3 = bVar4;
    }
  }
  if (bVar12 == bVar3) {
    *param_7 = *param_7 | 2;
  }
  if (local_58 != local_48) {
    FUN_00276d20();
  }
  if (local_78 != &local_68) {
    FUN_00276d20();
  }
  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 0x002c36e0
LEA RDI,[0x3cbd28]
MOV qword ptr [RSP + 0x30],RAX
CALL 0x00279460
MOV R12,RAX
MOV RAX,qword ptr [RBX + 0xd0]
MOV RAX,qword ptr [RAX + 0x18]
LEA RBX,[RAX + R12*0x8]
MOV RBP,qword ptr [RBX]
TEST RBP,RBP
JZ 0x002dfee0
LEA RAX,[RBP + 0x6c]
CMP qword ptr [RBP + 0x48],0x0
MOV qword ptr [RSP + 0x20],RAX
JNZ 0x002df970
MOV byte ptr [RSP + 0x57],0x0
LEA RAX,[RSP + 0x90]
CMP byte ptr [RBP + 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 0x002df09a
MOV RDI,qword ptr [RSP + 0x18]
MOV ESI,0x20
CALL 0x0027dec0
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 0x0027dec0
LEA RAX,[RBP + 0x70]
XOR R15D,R15D
XOR EBX,EBX
MOV byte ptr [RSP + 0x55],0x0
MOV qword ptr [RSP],RAX
MOV EAX,dword ptr [RBP + 0x68]
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 + R15*0x1],0x4
MOV byte ptr [RSP + 0x56],0x0
JA 0x002df901
MOVZX EAX,byte ptr [RAX + R15*0x1]
LEA RSI,[0x32c9b4]
MOVSXD RAX,dword ptr [RSI + RAX*0x4]
ADD RAX,RSI
JMP RAX
CMP qword ptr [RSP + 0x28],0x1
SETA AL
AND EAX,R13D
TEST AL,AL
JZ 0x002dff90
CMP byte ptr [RSP + 0x56],0x0
JNZ 0x002df980
MOV R15,qword ptr [RBP + 0x40]
MOV EAX,dword ptr [RSP + 0x78]
MOV RDI,qword ptr [RSP + 0x70]
MOV R14D,0x1
JMP 0x002df201
MOV RDI,qword ptr [RSP + 0x60]
CMP dword ptr [RSP + 0x68],-0x1
SETZ DL
TEST RDI,RDI
SETNZ R13B
AND R13B,DL
JNZ 0x002dfac0
CMP R12B,DL
JZ 0x002dfaf0
CMP R14,qword ptr [RSP + 0x28]
JNC 0x002dfaf0
MOV RDI,qword ptr [RSP + 0x70]
MOV EAX,dword ptr [RSP + 0x78]
TEST RDI,RDI
JZ 0x002df1d0
CMP EAX,-0x1
JZ 0x002dfbf0
CMP dword ptr [R15 + R14*0x4],EAX
JNZ 0x002df71a
MOV RAX,qword ptr [RDI + 0x10]
CMP RAX,qword ptr [RDI + 0x18]
JNC 0x002dfcd0
ADD RAX,0x4
MOV qword ptr [RDI + 0x10],RAX
MOV dword ptr [RSP + 0x78],0xffffffff
ADD R14,0x1
MOV EAX,0xffffffff
CMP EAX,-0x1
SETZ R12B
TEST RDI,RDI
SETNZ R13B
AND R13B,R12B
JZ 0x002df188
MOV RAX,qword ptr [RDI + 0x10]
CMP RAX,qword ptr [RDI + 0x18]
JNC 0x002e005f
MOV EAX,dword ptr [RAX]
XOR R12D,R12D
CMP EAX,-0x1
JNZ 0x002df188
MOV qword ptr [RSP + 0x70],0x0
MOV R12D,R13D
JMP 0x002df188
MOV RDI,qword ptr [RSP + 0x70]
MOV RAX,qword ptr [RSP + 0x110]
OR dword ptr [RAX],0x4
CMP dword ptr [RSP + 0x78],-0x1
SETZ BL
TEST RDI,RDI
SETNZ AL
AND AL,BL
MOV EBP,EAX
JNZ 0x002dfd50
MOV RDI,qword ptr [RSP + 0x60]
CMP dword ptr [RSP + 0x68],-0x1
SETZ DL
TEST RDI,RDI
SETNZ AL
AND AL,DL
MOV EBP,EAX
JNZ 0x002dfd20
CMP BL,DL
JNZ 0x002df769
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 0x002df7a0
MOV qword ptr [RSP],RAX
MOV qword ptr [RSP + 0x8],RDX
CALL 0x00276d20
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 0x002df7cd
MOV qword ptr [RSP],RAX
MOV qword ptr [RSP + 0x8],RDX
CALL 0x00276d20
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,[R15 + 0x1]
CMP EAX,0x3
JG 0x002df150
TEST R12B,R12B
JNZ 0x002df150
MOV RAX,qword ptr [RSP + 0x38]
ADD R15,0x1
CMP byte ptr [RAX + R15*0x1],0x4
JBE 0x002df12a
XOR R12D,R12D
NOP dword ptr [RAX]
MOV R13D,0x1
JMP 0x002df8d7
CMP qword ptr [RBP + 0x58],0x0
SETNZ byte ptr [RSP + 0x57]
JMP 0x002df054
MOV R15,qword ptr [RBP + 0x50]
JMP 0x002df173
MOV RAX,qword ptr [RDI + 0x10]
CMP RAX,qword ptr [RDI + 0x18]
JNC 0x002e006a
MOV EAX,dword ptr [RAX]
XOR EDX,EDX
CMP EAX,-0x1
JNZ 0x002df1a5
MOV qword ptr [RSP + 0x60],0x0
MOV EDX,R13D
CMP R12B,DL
JNZ 0x002df1ae
CMP R14,qword ptr [RSP + 0x28]
JNZ 0x002df715
CMP qword ptr [RSP + 0xb8],0x1
JA 0x002dfd90
CMP byte ptr [RSP + 0x56],0x0
JZ 0x002dfb37
MOV RAX,qword ptr [RSP + 0xb0]
CMP byte ptr [RAX],0x30
JZ 0x002dfb37
MOV RDI,qword ptr [RSP + 0x10]
MOV R8D,0x2d
XOR EDX,EDX
XOR ESI,ESI
MOV ECX,0x1
CALL 0x0027e3b0
MOV R12,qword ptr [RSP + 0x98]
TEST R12,R12
JZ 0x002dfbbe
MOV RSI,qword ptr [RSP + 0x18]
MOVZX R14D,byte ptr [RSP + 0x50]
LEA R13,[R12 + 0x1]
MOV RAX,qword ptr [RSP + 0x90]
CMP byte ptr [RSP + 0x55],0x0
LEA RDX,[RSI + 0x10]
CMOVZ R14D,EBX
CMP RAX,RDX
JZ 0x002e0123
MOV RDX,qword ptr [RSP + 0xa0]
CMP R13,RDX
JA 0x002e00c0
MOV byte ptr [RAX + R12*0x1],R14B
MOV RAX,qword ptr [RSP + 0x90]
MOV qword ptr [RSP + 0x98],R13
MOV RDX,qword ptr [RSP + 0x18]
MOV byte ptr [RAX + R12*0x1 + 0x1],0x0
MOV RSI,qword ptr [RBP + 0x18]
MOV RDI,qword ptr [RBP + 0x10]
CALL 0x00301480
TEST AL,AL
JNZ 0x002dfbbe
MOV RAX,qword ptr [RSP + 0x110]
OR dword ptr [RAX],0x4
CMP byte ptr [RSP + 0x55],0x0
JZ 0x002dfbce
CMP dword ptr [RBP + 0x60],EBX
JNZ 0x002df715
MOV RDI,qword ptr [RSP + 0x118]
MOV RSI,qword ptr [RSP + 0x10]
CALL 0x0027f230
MOV RDI,qword ptr [RSP + 0x70]
JMP 0x002df725
MOV RAX,qword ptr [RDI + 0x10]
CMP RAX,qword ptr [RDI + 0x18]
JNC 0x002e0075
MOV EAX,dword ptr [RAX]
MOV EDX,EAX
CMP EDX,-0x1
JZ 0x002dfd80
MOV RDI,qword ptr [RSP + 0x70]
JMP 0x002df1d0
MOV RAX,qword ptr [RDI]
CALL qword ptr [RAX + 0x50]
MOV RDI,qword ptr [RSP + 0x70]
JMP 0x002df1f0
MOV RAX,qword ptr [RDI + 0x10]
CMP RAX,qword ptr [RDI + 0x18]
JNC 0x002e013d
MOV EAX,dword ptr [RAX]
XOR EDX,EDX
CMP EAX,-0x1
JNZ 0x002df75a
MOV qword ptr [RSP + 0x60],0x0
MOV EDX,EBP
JMP 0x002df75a
MOV RAX,qword ptr [RDI + 0x10]
CMP RAX,qword ptr [RDI + 0x18]
JNC 0x002e0148
MOV EAX,dword ptr [RAX]
XOR EBX,EBX
CMP EAX,-0x1
JNZ 0x002df73d
MOV qword ptr [RSP + 0x70],0x0
MOV EBX,EBP
JMP 0x002df73d
MOV qword ptr [RSP + 0x70],0x0
XOR EDI,EDI
JMP 0x002df1d0
MOV RDI,qword ptr [RSP + 0x10]
XOR EDX,EDX
MOV ESI,0x30
CALL 0x0027f830
TEST RAX,RAX
JZ 0x002dfb0a
MOV RDX,qword ptr [RSP + 0xb8]
CMP RAX,-0x1
JZ 0x002e00e4
CMP RAX,RDX
MOV RDI,qword ptr [RSP + 0x10]
CMOVBE RDX,RAX
XOR ESI,ESI
CALL 0x0027db50
JMP 0x002dfb0a
MOV EDI,0xa0
CALL 0x00275550
MOV RBP,RAX
MOV dword ptr [RAX + 0x8],0x0
MOV RSI,R13
LEA RAX,[0x3bb328]
MOV qword ptr [RBP + 0x10],0x0
MOV RDI,RBP
ADD RAX,0x10
MOV qword ptr [RBP + 0x18],0x0
MOV qword ptr [RBP],RAX
MOV byte ptr [RBP + 0x20],0x0
MOV qword ptr [RBP + 0x24],0x0
MOV qword ptr [RBP + 0x30],0x0
MOV qword ptr [RBP + 0x38],0x0
MOV qword ptr [RBP + 0x40],0x0
MOV qword ptr [RBP + 0x48],0x0
MOV qword ptr [RBP + 0x50],0x0
MOV qword ptr [RBP + 0x58],0x0
MOV qword ptr [RBP + 0x60],0x0
MOV dword ptr [RBP + 0x68],0x0
MOV byte ptr [RBP + 0x98],0x0
CALL 0x002c41c0
MOV RAX,qword ptr [RSP + 0x48]
MOV RSI,RBP
MOV RDX,R12
MOV RDI,qword ptr [RAX + 0xd0]
CALL 0x002798d0
MOV RBP,qword ptr [RBX]
JMP 0x002df03b
TEST R13B,R13B
JZ 0x002df715
CMP qword ptr [RSP + 0xb8],0x1
JBE 0x002dfb0a
JMP 0x002dfd90
MOV RAX,qword ptr [RDI]
CALL qword ptr [RAX + 0x48]
JMP 0x002df228
MOV RAX,qword ptr [RDI]
CALL qword ptr [RAX + 0x48]
JMP 0x002dfad0
MOV RAX,qword ptr [RDI]
CALL qword ptr [RAX + 0x48]
MOV EDX,EAX
JMP 0x002dfc02
MOV RDI,qword ptr [RSP + 0x18]
MOV R8D,0x1
XOR ECX,ECX
XOR EDX,EDX
MOV RSI,R12
CALL 0x0027da10
MOV RAX,qword ptr [RSP + 0x90]
JMP 0x002dfb83
LEA RAX,[RDX + -0x1]
CMP RAX,-0x1
JZ 0x002e012d
TEST RAX,RAX
JZ 0x002dfb0a
JMP 0x002dfdbc
MOV EDX,0xf
JMP 0x002dfb7a
MOV RAX,qword ptr [RSP + 0xb0]
MOV byte ptr [RAX],0x0
JMP 0x002dfb0a
MOV RAX,qword ptr [RDI]
CALL qword ptr [RAX + 0x48]
JMP 0x002dfd30
MOV RAX,qword ptr [RDI]
CALL qword ptr [RAX + 0x48]
JMP 0x002dfd60
(translation_unit "/* WARNING: Removing unreachable block (ram,0x002dfb11) */\n/* WARNING: Removing unreachable block (ram,0x002dfb1e) */\n/* WARNING: Removing unreachable block (ram,0x002df1b9) */\n/* WARNING: Removing unreachable block (ram,0x002df1c7) */\n/* WARNING: Removing unreachable block (ram,0x002dfbf0) */\n/* WARNING: Removing unreachable block (ram,0x002e0075) */\n/* WARNING: Removing unreachable block (ram,0x002dfbfe) */\n/* WARNING: Removing unreachable block (ram,0x002dfc02) */\n/* WARNING: Removing unreachable block (ram,0x002dfd80) */\n/* WARNING: Removing unreachable block (ram,0x002dfc0b) */\n/* WARNING: Removing unreachable block (ram,0x002df1d0) */\n/* WARNING: Removing unreachable block (ram,0x002df1da) */\n/* WARNING: Removing unreachable block (ram,0x002dfcd0) */\n/* WARNING: Removing unreachable block (ram,0x002df1e8) */\n/* WARNING: Removing unreachable block (ram,0x002df1f0) */\n/* WARNING: Removing unreachable block (ram,0x002df164) */\n/* WARNING: Removing unreachable block (ram,0x002df16f) */\n/* WARNING: Removing unreachable block (ram,0x002df980) */\n/* WARNING: Removing unreachable block (ram,0x002df173) */\n/* WARNING: Removing unreachable block (ram,0x002df201) */\n/* WARNING: Removing unreachable block (ram,0x002df218) */\n/* WARNING: Removing unreachable block (ram,0x002e005f) */\n/* WARNING: Removing unreachable block (ram,0x002df226) */\n/* WARNING: Removing unreachable block (ram,0x002df228) */\n/* WARNING: Removing unreachable block (ram,0x002df234) */\n/* WARNING: Removing unreachable block (ram,0x002df188) */\n/* WARNING: Removing unreachable block (ram,0x002dfac0) */\n/* WARNING: Removing unreachable block (ram,0x002e006a) */\n/* WARNING: Removing unreachable block (ram,0x002dface) */\n/* WARNING: Removing unreachable block (ram,0x002dfad0) */\n/* WARNING: Removing unreachable block (ram,0x002dfadb) */\n/* WARNING: Removing unreachable block (ram,0x002df1a5) */\n/* WARNING: Removing unreachable block (ram,0x002df1ae) */\n/* WARNING: Removing unreachable block (ram,0x002dfaf0) */\n/* WARNING: Removing unreachable block (ram,0x002dfafb) */\n/* WARNING: Removing unreachable block (ram,0x002dfbc5) */\n/* WARNING: Removing unreachable block (ram,0x002df715) */\n/* WARNING: Removing unreachable block (ram,0x002df71a) */\n/* WARNING: Restarted to delay deadcode elimination for space: stack */\n\nundefined1  [16]\nFUN_002defd0(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  bool bVar4;\n  char cVar5;\n  int iVar6;\n  long lVar7;\n  ulong uVar8;\n  undefined8 *puVar9;\n  ulong uVar10;\n  ulong uVar11;\n  bool bVar12;\n  long lVar13;\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_002c36e0(param_6 + 0xd0);\n  lVar7 = FUN_00279460(&DAT_003cbd28);\n  plVar1 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar7 * 8);\n  lVar13 = *plVar1;\n  if (lVar13 == 0) {\n                    /* try { // try from 002dfee5 to 002dfee9 has its CatchHandler @ 002e0192 */\n    puVar9 = (undefined8 *)FUN_00275550(0xa0);\n    *(undefined4 *)(puVar9 + 1) = 0;\n    puVar9[2] = 0;\n    puVar9[3] = 0;\n    *puVar9 = &PTR_FUN_003bb338;\n    *(undefined1 *)(puVar9 + 4) = 0;\n    *(undefined8 *)((long)puVar9 + 0x24) = 0;\n    puVar9[6] = 0;\n    puVar9[7] = 0;\n    puVar9[8] = 0;\n    puVar9[9] = 0;\n    puVar9[10] = 0;\n    puVar9[0xb] = 0;\n    puVar9[0xc] = 0;\n    *(undefined4 *)(puVar9 + 0xd) = 0;\n    *(undefined1 *)(puVar9 + 0x13) = 0;\n                    /* try { // try from 002dff6b to 002dff6f has its CatchHandler @ 002e0190 */\n    FUN_002c41c0(puVar9,param_6 + 0xd0);\n    FUN_002798d0(*(undefined8 *)(param_6 + 0xd0),puVar9,lVar7);\n    lVar13 = *plVar1;\n  }\n  local_70 = 0;\n  local_78 = &local_68;\n  local_68 = 0;\n  if (*(char *)(lVar13 + 0x20) != '\0') {\n                    /* try { // try from 002df095 to 002df099 has its CatchHandler @ 002e018b */\n    FUN_0027dec0(&local_78,0x20);\n  }\n  local_50 = 0;\n  local_58 = local_48;\n  local_48[0] = 0;\n                    /* try { // try from 002df0cc to 002dfe66 has its CatchHandler @ 002e01ba */\n  FUN_0027dec0(&local_58,0x20);\n  local_7c = *(undefined4 *)(lVar13 + 0x68);\n  lVar7 = 0;\n  bVar2 = (byte)local_7c;\n  while( true ) {\n    if (bVar2 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x002df13d. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar14 = (*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)))\n                          ();\n      return auVar14;\n    }\n    if (3 < (int)lVar7 + 1) break;\n    bVar2 = *(byte *)((long)&local_7c + lVar7 + 1);\n    lVar7 = lVar7 + 1;\n  }\n  if ((local_50 < 2) || (uVar8 = FUN_0027f830(&local_58,0x30,0), uVar8 == 0)) goto LAB_002dfb0a;\n  if (uVar8 == 0xffffffffffffffff) {\n    uVar8 = local_50 - 1;\n    if (uVar8 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_002dfb0a;\n    }\n    if (uVar8 == 0) goto LAB_002dfb0a;\n  }\n  uVar10 = local_50;\n  if (uVar8 <= local_50) {\n    uVar10 = uVar8;\n  }\n  FUN_0027db50(&local_58,0,uVar10);\nLAB_002dfb0a:\n  uVar8 = local_70;\n  if (local_70 != 0) {\n    uVar10 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar11 = 0xf;\n    }\n    else {\n      uVar11 = CONCAT71(uStack_67,local_68);\n    }\n    if (uVar11 < uVar10) {\n      FUN_0027da10(&local_78,local_70,0,0,1);\n    }\n    local_78[uVar8] = 0;\n    local_78[uVar8 + 1] = 0;\n    local_70 = uVar10;\n    cVar5 = FUN_00301480(*(undefined8 *)(lVar13 + 0x10),*(undefined8 *)(lVar13 + 0x18),&local_78);\n    if (cVar5 == '\0') {\n      *param_7 = *param_7 | 4;\n    }\n  }\n  FUN_0027f230(param_8,&local_58);\n  local_90 = (int)param_3;\n  bVar3 = param_2 != (long *)0x0 && local_90 == -1;\n  bVar12 = local_90 == -1;\n  local_98 = param_2;\n  if (bVar3) {\n    if ((int *)param_2[2] < (int *)param_2[3]) {\n      iVar6 = *(int *)param_2[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_2 + 0x48))();\n    }\n    bVar12 = false;\n    if (iVar6 == -1) {\n      local_98 = (long *)0x0;\n      bVar12 = bVar3;\n    }\n  }\n  bVar4 = param_4 != (long *)0x0 && param_5 == -1;\n  bVar3 = param_5 == -1;\n  if (bVar4) {\n    if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar6 = *(int *)param_4[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_4 + 0x48))();\n    }\n    bVar3 = false;\n    if (iVar6 == -1) {\n      bVar3 = bVar4;\n    }\n  }\n  if (bVar12 == bVar3) {\n    *param_7 = *param_7 | 2;\n  }\n  if (local_58 != local_48) {\n    FUN_00276d20();\n  }\n  if (local_78 != &local_68) {\n    FUN_00276d20();\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 comment comment (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (declaration "FUN_002defd0(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_002defd0(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 "bool bVar4;" primitive_type identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "undefined8 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "long lVar13;" (sized_type_specifier "long" long) 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_002c36e0(param_6 + 0xd0);" (call_expression "FUN_002c36e0(param_6 + 0xd0)" identifier (argument_list "(param_6 + 0xd0)" ( (binary_expression "param_6 + 0xd0" identifier + number_literal) ))) ;) (expression_statement "lVar7 = FUN_00279460(&DAT_003cbd28);" (assignment_expression "lVar7 = FUN_00279460(&DAT_003cbd28)" identifier = (call_expression "FUN_00279460(&DAT_003cbd28)" identifier (argument_list "(&DAT_003cbd28)" ( (pointer_expression "&DAT_003cbd28" & identifier) )))) ;) (expression_statement "plVar1 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar7 * 8);" (assignment_expression "plVar1 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar7 * 8)" identifier = (cast_expression "(long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar7 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar7 * 8)" ( (binary_expression "*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar7 * 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 "lVar7 * 8" identifier * number_literal)) )))) ;) (expression_statement "lVar13 = *plVar1;" (assignment_expression "lVar13 = *plVar1" identifier = (pointer_expression "*plVar1" * identifier)) ;) (if_statement "if (lVar13 == 0) {\n                    /* try { // try from 002dfee5 to 002dfee9 has its CatchHandler @ 002e0192 */\n    puVar9 = (undefined8 *)FUN_00275550(0xa0);\n    *(undefined4 *)(puVar9 + 1) = 0;\n    puVar9[2] = 0;\n    puVar9[3] = 0;\n    *puVar9 = &PTR_FUN_003bb338;\n    *(undefined1 *)(puVar9 + 4) = 0;\n    *(undefined8 *)((long)puVar9 + 0x24) = 0;\n    puVar9[6] = 0;\n    puVar9[7] = 0;\n    puVar9[8] = 0;\n    puVar9[9] = 0;\n    puVar9[10] = 0;\n    puVar9[0xb] = 0;\n    puVar9[0xc] = 0;\n    *(undefined4 *)(puVar9 + 0xd) = 0;\n    *(undefined1 *)(puVar9 + 0x13) = 0;\n                    /* try { // try from 002dff6b to 002dff6f has its CatchHandler @ 002e0190 */\n    FUN_002c41c0(puVar9,param_6 + 0xd0);\n    FUN_002798d0(*(undefined8 *)(param_6 + 0xd0),puVar9,lVar7);\n    lVar13 = *plVar1;\n  }" if (parenthesized_expression "(lVar13 == 0)" ( (binary_expression "lVar13 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* try { // try from 002dfee5 to 002dfee9 has its CatchHandler @ 002e0192 */\n    puVar9 = (undefined8 *)FUN_00275550(0xa0);\n    *(undefined4 *)(puVar9 + 1) = 0;\n    puVar9[2] = 0;\n    puVar9[3] = 0;\n    *puVar9 = &PTR_FUN_003bb338;\n    *(undefined1 *)(puVar9 + 4) = 0;\n    *(undefined8 *)((long)puVar9 + 0x24) = 0;\n    puVar9[6] = 0;\n    puVar9[7] = 0;\n    puVar9[8] = 0;\n    puVar9[9] = 0;\n    puVar9[10] = 0;\n    puVar9[0xb] = 0;\n    puVar9[0xc] = 0;\n    *(undefined4 *)(puVar9 + 0xd) = 0;\n    *(undefined1 *)(puVar9 + 0x13) = 0;\n                    /* try { // try from 002dff6b to 002dff6f has its CatchHandler @ 002e0190 */\n    FUN_002c41c0(puVar9,param_6 + 0xd0);\n    FUN_002798d0(*(undefined8 *)(param_6 + 0xd0),puVar9,lVar7);\n    lVar13 = *plVar1;\n  }" { comment (expression_statement "puVar9 = (undefined8 *)FUN_00275550(0xa0);" (assignment_expression "puVar9 = (undefined8 *)FUN_00275550(0xa0)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0xa0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0xa0)" identifier (argument_list "(0xa0)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar9 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar9 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar9 + 1)" * (cast_expression "(undefined4 *)(puVar9 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 1)" ( (binary_expression "puVar9 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar9[2] = 0;" (assignment_expression "puVar9[2] = 0" (subscript_expression "puVar9[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[3] = 0;" (assignment_expression "puVar9[3] = 0" (subscript_expression "puVar9[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar9 = &PTR_FUN_003bb338;" (assignment_expression "*puVar9 = &PTR_FUN_003bb338" (pointer_expression "*puVar9" * identifier) = (pointer_expression "&PTR_FUN_003bb338" & identifier)) ;) (expression_statement "*(undefined1 *)(puVar9 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar9 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar9 + 4)" * (cast_expression "(undefined1 *)(puVar9 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)((long)puVar9 + 0x24) = 0;" (assignment_expression "*(undefined8 *)((long)puVar9 + 0x24) = 0" (pointer_expression "*(undefined8 *)((long)puVar9 + 0x24)" * (cast_expression "(undefined8 *)((long)puVar9 + 0x24)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + 0x24)" ( (binary_expression "(long)puVar9 + 0x24" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar9[6] = 0;" (assignment_expression "puVar9[6] = 0" (subscript_expression "puVar9[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[7] = 0;" (assignment_expression "puVar9[7] = 0" (subscript_expression "puVar9[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[8] = 0;" (assignment_expression "puVar9[8] = 0" (subscript_expression "puVar9[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[9] = 0;" (assignment_expression "puVar9[9] = 0" (subscript_expression "puVar9[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[10] = 0;" (assignment_expression "puVar9[10] = 0" (subscript_expression "puVar9[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[0xb] = 0;" (assignment_expression "puVar9[0xb] = 0" (subscript_expression "puVar9[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[0xc] = 0;" (assignment_expression "puVar9[0xc] = 0" (subscript_expression "puVar9[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar9 + 0xd) = 0;" (assignment_expression "*(undefined4 *)(puVar9 + 0xd) = 0" (pointer_expression "*(undefined4 *)(puVar9 + 0xd)" * (cast_expression "(undefined4 *)(puVar9 + 0xd)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0xd)" ( (binary_expression "puVar9 + 0xd" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar9 + 0x13) = 0;" (assignment_expression "*(undefined1 *)(puVar9 + 0x13) = 0" (pointer_expression "*(undefined1 *)(puVar9 + 0x13)" * (cast_expression "(undefined1 *)(puVar9 + 0x13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x13)" ( (binary_expression "puVar9 + 0x13" identifier + number_literal) )))) = number_literal) ;) comment (expression_statement "FUN_002c41c0(puVar9,param_6 + 0xd0);" (call_expression "FUN_002c41c0(puVar9,param_6 + 0xd0)" identifier (argument_list "(puVar9,param_6 + 0xd0)" ( identifier , (binary_expression "param_6 + 0xd0" identifier + number_literal) ))) ;) (expression_statement "FUN_002798d0(*(undefined8 *)(param_6 + 0xd0),puVar9,lVar7);" (call_expression "FUN_002798d0(*(undefined8 *)(param_6 + 0xd0),puVar9,lVar7)" identifier (argument_list "(*(undefined8 *)(param_6 + 0xd0),puVar9,lVar7)" ( (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 "lVar13 = *plVar1;" (assignment_expression "lVar13 = *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 *)(lVar13 + 0x20) != '\0') {\n                    /* try { // try from 002df095 to 002df099 has its CatchHandler @ 002e018b */\n    FUN_0027dec0(&local_78,0x20);\n  }" if (parenthesized_expression "(*(char *)(lVar13 + 0x20) != '\0')" ( (binary_expression "*(char *)(lVar13 + 0x20) != '\0'" (pointer_expression "*(char *)(lVar13 + 0x20)" * (cast_expression "(char *)(lVar13 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + 0x20)" ( (binary_expression "lVar13 + 0x20" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* try { // try from 002df095 to 002df099 has its CatchHandler @ 002e018b */\n    FUN_0027dec0(&local_78,0x20);\n  }" { comment (expression_statement "FUN_0027dec0(&local_78,0x20);" (call_expression "FUN_0027dec0(&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_0027dec0(&local_58,0x20);" (call_expression "FUN_0027dec0(&local_58,0x20)" identifier (argument_list "(&local_58,0x20)" ( (pointer_expression "&local_58" & identifier) , number_literal ))) ;) (expression_statement "local_7c = *(undefined4 *)(lVar13 + 0x68);" (assignment_expression "local_7c = *(undefined4 *)(lVar13 + 0x68)" identifier = (pointer_expression "*(undefined4 *)(lVar13 + 0x68)" * (cast_expression "(undefined4 *)(lVar13 + 0x68)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + 0x68)" ( (binary_expression "lVar13 + 0x68" identifier + number_literal) ))))) ;) (expression_statement "lVar7 = 0;" (assignment_expression "lVar7 = 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 0x002df13d. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar14 = (*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)))\n                          ();\n      return auVar14;\n    }\n    if (3 < (int)lVar7 + 1) break;\n    bVar2 = *(byte *)((long)&local_7c + lVar7 + 1);\n    lVar7 = lVar7 + 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (bVar2 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x002df13d. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar14 = (*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)))\n                          ();\n      return auVar14;\n    }\n    if (3 < (int)lVar7 + 1) break;\n    bVar2 = *(byte *)((long)&local_7c + lVar7 + 1);\n    lVar7 = lVar7 + 1;\n  }" { (if_statement "if (bVar2 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x002df13d. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar14 = (*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 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 0x002df13d. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar14 = (*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)))\n                          ();\n      return auVar14;\n    }" { comment comment (expression_statement "auVar14 = (*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)))\n                          ();" (assignment_expression "auVar14 = (*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)))\n                          ()" identifier = (call_expression "(*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)))\n                          ()" (parenthesized_expression "(*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)))" ( (pointer_expression "*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4))" * (cast_expression "(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4))" ( (binary_expression "&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)" (pointer_expression "&DAT_0032c9b4" & identifier) + (pointer_expression "*(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)" * (cast_expression "(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)" ( (binary_expression "&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4" (pointer_expression "&DAT_0032c9b4" & identifier) + (binary_expression "(ulong)*(byte *)((long)&local_7c + lVar7) * 4" (binary_expression "(ulong)*(byte *)((long)&local_7c + lVar7)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(byte *)((long)&local_7c + lVar7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_7c + lVar7)" ( (binary_expression "(long)&local_7c + lVar7" (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)lVar7 + 1) break;" if (parenthesized_expression "(3 < (int)lVar7 + 1)" ( (binary_expression "3 < (int)lVar7 + 1" number_literal < (binary_expression "(int)lVar7 + 1" (cast_expression "(int)lVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) )) (break_statement "break;" break ;)) (expression_statement "bVar2 = *(byte *)((long)&local_7c + lVar7 + 1);" (assignment_expression "bVar2 = *(byte *)((long)&local_7c + lVar7 + 1)" identifier = (pointer_expression "*(byte *)((long)&local_7c + lVar7 + 1)" * (cast_expression "(byte *)((long)&local_7c + lVar7 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_7c + lVar7 + 1)" ( (binary_expression "(long)&local_7c + lVar7 + 1" (binary_expression "(long)&local_7c + lVar7" (cast_expression "(long)&local_7c" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_7c" & identifier)) + identifier) + number_literal) ))))) ;) (expression_statement "lVar7 = lVar7 + 1;" (assignment_expression "lVar7 = lVar7 + 1" identifier = (binary_expression "lVar7 + 1" identifier + number_literal)) ;) })) (if_statement "if ((local_50 < 2) || (uVar8 = FUN_0027f830(&local_58,0x30,0), uVar8 == 0)) goto LAB_002dfb0a;" if (parenthesized_expression "((local_50 < 2) || (uVar8 = FUN_0027f830(&local_58,0x30,0), uVar8 == 0))" ( (binary_expression "(local_50 < 2) || (uVar8 = FUN_0027f830(&local_58,0x30,0), uVar8 == 0)" (parenthesized_expression "(local_50 < 2)" ( (binary_expression "local_50 < 2" identifier < number_literal) )) || (parenthesized_expression "(uVar8 = FUN_0027f830(&local_58,0x30,0), uVar8 == 0)" ( (comma_expression "uVar8 = FUN_0027f830(&local_58,0x30,0), uVar8 == 0" (assignment_expression "uVar8 = FUN_0027f830(&local_58,0x30,0)" identifier = (call_expression "FUN_0027f830(&local_58,0x30,0)" identifier (argument_list "(&local_58,0x30,0)" ( (pointer_expression "&local_58" & identifier) , number_literal , number_literal )))) , (binary_expression "uVar8 == 0" identifier == number_literal)) ))) )) (goto_statement "goto LAB_002dfb0a;" goto statement_identifier ;)) (if_statement "if (uVar8 == 0xffffffffffffffff) {\n    uVar8 = local_50 - 1;\n    if (uVar8 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_002dfb0a;\n    }\n    if (uVar8 == 0) goto LAB_002dfb0a;\n  }" if (parenthesized_expression "(uVar8 == 0xffffffffffffffff)" ( (binary_expression "uVar8 == 0xffffffffffffffff" identifier == number_literal) )) (compound_statement "{\n    uVar8 = local_50 - 1;\n    if (uVar8 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_002dfb0a;\n    }\n    if (uVar8 == 0) goto LAB_002dfb0a;\n  }" { (expression_statement "uVar8 = local_50 - 1;" (assignment_expression "uVar8 = local_50 - 1" identifier = (binary_expression "local_50 - 1" identifier - number_literal)) ;) (if_statement "if (uVar8 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_002dfb0a;\n    }" if (parenthesized_expression "(uVar8 == 0xffffffffffffffff)" ( (binary_expression "uVar8 == 0xffffffffffffffff" identifier == number_literal) )) (compound_statement "{\n      *local_58 = 0;\n      goto LAB_002dfb0a;\n    }" { (expression_statement "*local_58 = 0;" (assignment_expression "*local_58 = 0" (pointer_expression "*local_58" * identifier) = number_literal) ;) (goto_statement "goto LAB_002dfb0a;" goto statement_identifier ;) })) (if_statement "if (uVar8 == 0) goto LAB_002dfb0a;" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_002dfb0a;" goto statement_identifier ;)) })) (expression_statement "uVar10 = local_50;" (assignment_expression "uVar10 = local_50" identifier = identifier) ;) (if_statement "if (uVar8 <= local_50) {\n    uVar10 = uVar8;\n  }" if (parenthesized_expression "(uVar8 <= local_50)" ( (binary_expression "uVar8 <= local_50" identifier <= identifier) )) (compound_statement "{\n    uVar10 = uVar8;\n  }" { (expression_statement "uVar10 = uVar8;" (assignment_expression "uVar10 = uVar8" identifier = identifier) ;) })) (expression_statement "FUN_0027db50(&local_58,0,uVar10);" (call_expression "FUN_0027db50(&local_58,0,uVar10)" identifier (argument_list "(&local_58,0,uVar10)" ( (pointer_expression "&local_58" & identifier) , number_literal , identifier ))) ;) (labeled_statement "LAB_002dfb0a:\n  uVar8 = local_70;" statement_identifier : (expression_statement "uVar8 = local_70;" (assignment_expression "uVar8 = local_70" identifier = identifier) ;)) (if_statement "if (local_70 != 0) {\n    uVar10 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar11 = 0xf;\n    }\n    else {\n      uVar11 = CONCAT71(uStack_67,local_68);\n    }\n    if (uVar11 < uVar10) {\n      FUN_0027da10(&local_78,local_70,0,0,1);\n    }\n    local_78[uVar8] = 0;\n    local_78[uVar8 + 1] = 0;\n    local_70 = uVar10;\n    cVar5 = FUN_00301480(*(undefined8 *)(lVar13 + 0x10),*(undefined8 *)(lVar13 + 0x18),&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    uVar10 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar11 = 0xf;\n    }\n    else {\n      uVar11 = CONCAT71(uStack_67,local_68);\n    }\n    if (uVar11 < uVar10) {\n      FUN_0027da10(&local_78,local_70,0,0,1);\n    }\n    local_78[uVar8] = 0;\n    local_78[uVar8 + 1] = 0;\n    local_70 = uVar10;\n    cVar5 = FUN_00301480(*(undefined8 *)(lVar13 + 0x10),*(undefined8 *)(lVar13 + 0x18),&local_78);\n    if (cVar5 == '\0') {\n      *param_7 = *param_7 | 4;\n    }\n  }" { (expression_statement "uVar10 = local_70 + 1;" (assignment_expression "uVar10 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) (if_statement "if (local_78 == &local_68) {\n      uVar11 = 0xf;\n    }\n    else {\n      uVar11 = 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      uVar11 = 0xf;\n    }" { (expression_statement "uVar11 = 0xf;" (assignment_expression "uVar11 = 0xf" identifier = number_literal) ;) }) (else_clause "else {\n      uVar11 = CONCAT71(uStack_67,local_68);\n    }" else (compound_statement "{\n      uVar11 = CONCAT71(uStack_67,local_68);\n    }" { (expression_statement "uVar11 = CONCAT71(uStack_67,local_68);" (assignment_expression "uVar11 = 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 (uVar11 < uVar10) {\n      FUN_0027da10(&local_78,local_70,0,0,1);\n    }" if (parenthesized_expression "(uVar11 < uVar10)" ( (binary_expression "uVar11 < uVar10" identifier < identifier) )) (compound_statement "{\n      FUN_0027da10(&local_78,local_70,0,0,1);\n    }" { (expression_statement "FUN_0027da10(&local_78,local_70,0,0,1);" (call_expression "FUN_0027da10(&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[uVar8] = 0;" (assignment_expression "local_78[uVar8] = 0" (subscript_expression "local_78[uVar8]" identifier [ identifier ]) = number_literal) ;) (expression_statement "local_78[uVar8 + 1] = 0;" (assignment_expression "local_78[uVar8 + 1] = 0" (subscript_expression "local_78[uVar8 + 1]" identifier [ (binary_expression "uVar8 + 1" identifier + number_literal) ]) = number_literal) ;) (expression_statement "local_70 = uVar10;" (assignment_expression "local_70 = uVar10" identifier = identifier) ;) (expression_statement "cVar5 = FUN_00301480(*(undefined8 *)(lVar13 + 0x10),*(undefined8 *)(lVar13 + 0x18),&local_78);" (assignment_expression "cVar5 = FUN_00301480(*(undefined8 *)(lVar13 + 0x10),*(undefined8 *)(lVar13 + 0x18),&local_78)" identifier = (call_expression "FUN_00301480(*(undefined8 *)(lVar13 + 0x10),*(undefined8 *)(lVar13 + 0x18),&local_78)" identifier (argument_list "(*(undefined8 *)(lVar13 + 0x10),*(undefined8 *)(lVar13 + 0x18),&local_78)" ( (pointer_expression "*(undefined8 *)(lVar13 + 0x10)" * (cast_expression "(undefined8 *)(lVar13 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + 0x10)" ( (binary_expression "lVar13 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(lVar13 + 0x18)" * (cast_expression "(undefined8 *)(lVar13 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + 0x18)" ( (binary_expression "lVar13 + 0x18" identifier + number_literal) )))) , (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)) ;) })) })) (expression_statement "FUN_0027f230(param_8,&local_58);" (call_expression "FUN_0027f230(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 "bVar3 = param_2 != (long *)0x0 && local_90 == -1;" (assignment_expression "bVar3 = param_2 != (long *)0x0 && local_90 == -1" identifier = (binary_expression "param_2 != (long *)0x0 && local_90 == -1" (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "local_90 == -1" identifier == number_literal))) ;) (expression_statement "bVar12 = local_90 == -1;" (assignment_expression "bVar12 = local_90 == -1" identifier = (binary_expression "local_90 == -1" identifier == number_literal)) ;) (expression_statement "local_98 = param_2;" (assignment_expression "local_98 = param_2" identifier = identifier) ;) (if_statement "if (bVar3) {\n    if ((int *)param_2[2] < (int *)param_2[3]) {\n      iVar6 = *(int *)param_2[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_2 + 0x48))();\n    }\n    bVar12 = false;\n    if (iVar6 == -1) {\n      local_98 = (long *)0x0;\n      bVar12 = bVar3;\n    }\n  }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n    if ((int *)param_2[2] < (int *)param_2[3]) {\n      iVar6 = *(int *)param_2[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_2 + 0x48))();\n    }\n    bVar12 = false;\n    if (iVar6 == -1) {\n      local_98 = (long *)0x0;\n      bVar12 = bVar3;\n    }\n  }" { (if_statement "if ((int *)param_2[2] < (int *)param_2[3]) {\n      iVar6 = *(int *)param_2[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_2 + 0x48))();\n    }" if (parenthesized_expression "((int *)param_2[2] < (int *)param_2[3])" ( (binary_expression "(int *)param_2[2] < (int *)param_2[3]" (cast_expression "(int *)param_2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(int *)param_2[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar6 = *(int *)param_2[2];\n    }" { (expression_statement "iVar6 = *(int *)param_2[2];" (assignment_expression "iVar6 = *(int *)param_2[2]" identifier = (pointer_expression "*(int *)param_2[2]" * (cast_expression "(int *)param_2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n      iVar6 = (**(code **)(*param_2 + 0x48))();\n    }" else (compound_statement "{\n      iVar6 = (**(code **)(*param_2 + 0x48))();\n    }" { (expression_statement "iVar6 = (**(code **)(*param_2 + 0x48))();" (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 "()" ( )))) ;) }))) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (if_statement "if (iVar6 == -1) {\n      local_98 = (long *)0x0;\n      bVar12 = bVar3;\n    }" if (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) (compound_statement "{\n      local_98 = (long *)0x0;\n      bVar12 = bVar3;\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 = bVar3;" (assignment_expression "bVar12 = bVar3" 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 "bVar3 = param_5 == -1;" (assignment_expression "bVar3 = param_5 == -1" identifier = (binary_expression "param_5 == -1" identifier == number_literal)) ;) (if_statement "if (bVar4) {\n    if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar6 = *(int *)param_4[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_4 + 0x48))();\n    }\n    bVar3 = false;\n    if (iVar6 == -1) {\n      bVar3 = bVar4;\n    }\n  }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n    if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar6 = *(int *)param_4[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_4 + 0x48))();\n    }\n    bVar3 = false;\n    if (iVar6 == -1) {\n      bVar3 = bVar4;\n    }\n  }" { (if_statement "if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar6 = *(int *)param_4[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_4 + 0x48))();\n    }" if (parenthesized_expression "((int *)param_4[2] < (int *)param_4[3])" ( (binary_expression "(int *)param_4[2] < (int *)param_4[3]" (cast_expression "(int *)param_4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[2]" identifier [ number_literal ])) < (cast_expression "(int *)param_4[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar6 = *(int *)param_4[2];\n    }" { (expression_statement "iVar6 = *(int *)param_4[2];" (assignment_expression "iVar6 = *(int *)param_4[2]" identifier = (pointer_expression "*(int *)param_4[2]" * (cast_expression "(int *)param_4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n      iVar6 = (**(code **)(*param_4 + 0x48))();\n    }" else (compound_statement "{\n      iVar6 = (**(code **)(*param_4 + 0x48))();\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 "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (if_statement "if (iVar6 == -1) {\n      bVar3 = bVar4;\n    }" if (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) (compound_statement "{\n      bVar3 = bVar4;\n    }" { (expression_statement "bVar3 = bVar4;" (assignment_expression "bVar3 = bVar4" identifier = identifier) ;) })) })) (if_statement "if (bVar12 == bVar3) {\n    *param_7 = *param_7 | 2;\n  }" if (parenthesized_expression "(bVar12 == bVar3)" ( (binary_expression "bVar12 == bVar3" 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_00276d20();\n  }" if (parenthesized_expression "(local_58 != local_48)" ( (binary_expression "local_58 != local_48" identifier != identifier) )) (compound_statement "{\n    FUN_00276d20();\n  }" { (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (local_78 != &local_68) {\n    FUN_00276d20();\n  }" if (parenthesized_expression "(local_78 != &local_68)" ( (binary_expression "local_78 != &local_68" identifier != (pointer_expression "&local_68" & identifier)) )) (compound_statement "{\n    FUN_00276d20();\n  }" { (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" 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,0x002dfb11) */\n/* WARNING: Removing unreachable block (ram,0x002dfb1e) */\n/* WARNING: Removing unreachable block (ram,0x002df1b9) */\n/* WARNING: Removing unreachable block (ram,0x002df1c7) */\n/* WARNING: Removing unreachable block (ram,0x002dfbf0) */\n/* WARNING: Removing unreachable block (ram,0x002e0075) */\n/* WARNING: Removing unreachable block (ram,0x002dfbfe) */\n/* WARNING: Removing unreachable block (ram,0x002dfc02) */\n/* WARNING: Removing unreachable block (ram,0x002dfd80) */\n/* WARNING: Removing unreachable block (ram,0x002dfc0b) */\n/* WARNING: Removing unreachable block (ram,0x002df1d0) */\n/* WARNING: Removing unreachable block (ram,0x002df1da) */\n/* WARNING: Removing unreachable block (ram,0x002dfcd0) */\n/* WARNING: Removing unreachable block (ram,0x002df1e8) */\n/* WARNING: Removing unreachable block (ram,0x002df1f0) */\n/* WARNING: Removing unreachable block (ram,0x002df164) */\n/* WARNING: Removing unreachable block (ram,0x002df16f) */\n/* WARNING: Removing unreachable block (ram,0x002df980) */\n/* WARNING: Removing unreachable block (ram,0x002df173) */\n/* WARNING: Removing unreachable block (ram,0x002df201) */\n/* WARNING: Removing unreachable block (ram,0x002df218) */\n/* WARNING: Removing unreachable block (ram,0x002e005f) */\n/* WARNING: Removing unreachable block (ram,0x002df226) */\n/* WARNING: Removing unreachable block (ram,0x002df228) */\n/* WARNING: Removing unreachable block (ram,0x002df234) */\n/* WARNING: Removing unreachable block (ram,0x002df188) */\n/* WARNING: Removing unreachable block (ram,0x002dfac0) */\n/* WARNING: Removing unreachable block (ram,0x002e006a) */\n/* WARNING: Removing unreachable block (ram,0x002dface) */\n/* WARNING: Removing unreachable block (ram,0x002dfad0) */\n/* WARNING: Removing unreachable block (ram,0x002dfadb) */\n/* WARNING: Removing unreachable block (ram,0x002df1a5) */\n/* WARNING: Removing unreachable block (ram,0x002df1ae) */\n/* WARNING: Removing unreachable block (ram,0x002dfaf0) */\n/* WARNING: Removing unreachable block (ram,0x002dfafb) */\n/* WARNING: Removing unreachable block (ram,0x002dfbc5) */\n/* WARNING: Removing unreachable block (ram,0x002df715) */\n/* WARNING: Removing unreachable block (ram,0x002df71a) */\n/* WARNING: Restarted to delay deadcode elimination for space: stack */\n/* std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::money_get<wchar_t,\n   std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >\n   >::_M_extract<true>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >,\n   std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, std::ios_base&,\n   std::_Ios_Iostate&, std::string&) const */\n\nundefined1  [16]\nstd::money_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>::\n_M_extract<true>(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  bool bVar5;\n  char cVar6;\n  int iVar7;\n  ulong uVar8;\n  __moneypunct_cache<wchar_t,true> *this;\n  ulong uVar9;\n  ulong uVar10;\n  bool bVar11;\n  long lVar12;\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<wchar_t>>((locale *)(param_6 + 0xd0));\n  uVar8 = locale::id::_M_id((id *)&moneypunct<wchar_t,true>::id);\n  plVar1 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + uVar8 * 8);\n  lVar12 = *plVar1;\n  if (lVar12 == 0) {\n                    /* try { // try from 002dfee5 to 002dfee9 has its CatchHandler @ 002e0192 */\n    this = (__moneypunct_cache<wchar_t,true> *)operator_new(0xa0);\n    *(undefined4 *)(this + 8) = 0;\n    *(undefined8 *)(this + 0x10) = 0;\n    *(undefined8 *)(this + 0x18) = 0;\n    *(undefined ***)this = &PTR____moneypunct_cache_003bb338;\n    this[0x20] = (__moneypunct_cache<wchar_t,true>)0x0;\n    *(undefined8 *)(this + 0x24) = 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    *(undefined8 *)(this + 0x60) = 0;\n    *(undefined4 *)(this + 0x68) = 0;\n    this[0x98] = (__moneypunct_cache<wchar_t,true>)0x0;\n                    /* try { // try from 002dff6b to 002dff6f has its CatchHandler @ 002e0190 */\n    __moneypunct_cache<wchar_t,true>::_M_cache(this,(locale *)(param_6 + 0xd0));\n    locale::_Impl::_M_install_cache(*(_Impl **)(param_6 + 0xd0),(facet *)this,uVar8);\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 002df095 to 002df099 has its CatchHandler @ 002e018b */\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 002df0cc to 002dfe66 has its CatchHandler @ 002e01ba */\n  std::string::reserve((string *)&local_58,0x20);\n  local_7c = *(undefined4 *)(lVar12 + 0x68);\n  lVar3 = 0;\n  bVar2 = (byte)local_7c;\n  while( true ) {\n    if (bVar2 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x002df13d. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar13 = (*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (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     (uVar8 = std::string::find_first_not_of((string *)&local_58,'0',0), uVar8 == 0))\n  goto LAB_002dfb0a;\n  if (uVar8 == 0xffffffffffffffff) {\n    uVar8 = local_50 - 1;\n    if (uVar8 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_002dfb0a;\n    }\n    if (uVar8 == 0) goto LAB_002dfb0a;\n  }\n  uVar9 = local_50;\n  if (uVar8 <= local_50) {\n    uVar9 = uVar8;\n  }\n  std::string::_M_erase((string *)&local_58,0,uVar9);\nLAB_002dfb0a:\n  uVar8 = 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      std::string::_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1);\n    }\n    local_78[uVar8] = 0;\n    local_78[uVar8 + 1] = 0;\n    local_70 = uVar9;\n    cVar6 = __verify_grouping(*(char **)(lVar12 + 0x10),*(ulong *)(lVar12 + 0x18),\n                              (string *)&local_78);\n    if (cVar6 == '\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  bVar4 = param_2 != (long *)0x0 && local_90 == -1;\n  bVar11 = local_90 == -1;\n  local_98 = param_2;\n  if (bVar4) {\n    if ((int *)param_2[2] < (int *)param_2[3]) {\n      iVar7 = *(int *)param_2[2];\n    }\n    else {\n      iVar7 = (**(code **)(*param_2 + 0x48))();\n    }\n    bVar11 = false;\n    if (iVar7 == -1) {\n      local_98 = (long *)0x0;\n      bVar11 = bVar4;\n    }\n  }\n  bVar5 = param_4 != (long *)0x0 && param_5 == -1;\n  bVar4 = param_5 == -1;\n  if (bVar5) {\n    if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar7 = *(int *)param_4[2];\n    }\n    else {\n      iVar7 = (**(code **)(*param_4 + 0x48))();\n    }\n    bVar4 = false;\n    if (iVar7 == -1) {\n      bVar4 = bVar5;\n    }\n  }\n  if (bVar11 == bVar4) {\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 comment comment (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (labeled_statement "std::money_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>::\n_M_extract<true>(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<wchar_t,std::istreambuf_iterator<wchar_t,std:" : : (comma_expression "money_get<wchar_t,std" (binary_expression "money_get<wchar_t" identifier < identifier) , identifier) : : (comma_expression "istreambuf_iterator<wchar_t,std" (binary_expression "istreambuf_iterator<wchar_t" identifier < identifier) , identifier) :) : (expression_statement "char_traits<wchar_t>>>::\n_M_extract<true>(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<wchar_t>>>::\n_M_extract<true>(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<wchar_t>>>::\n_M_extract<true" (binary_expression "char_traits<wchar_t>>>::\n_M_extract" identifier < (binary_expression "wchar_t>>>::\n_M_extract" identifier >> (ERROR ">::" > : :) identifier)) < true) > (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  bool bVar5;\n  char cVar6;\n  int iVar7;\n  ulong uVar8;\n  __moneypunct_cache<wchar_t,true> *this;\n  ulong uVar9;\n  ulong uVar10;\n  bool bVar11;\n  long lVar12;\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<wchar_t>>((locale *)(param_6 + 0xd0));\n  uVar8 = locale::id::_M_id((id *)&moneypunct<wchar_t,true>::id);\n  plVar1 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + uVar8 * 8);\n  lVar12 = *plVar1;\n  if (lVar12 == 0) {\n                    /* try { // try from 002dfee5 to 002dfee9 has its CatchHandler @ 002e0192 */\n    this = (__moneypunct_cache<wchar_t,true> *)operator_new(0xa0);\n    *(undefined4 *)(this + 8) = 0;\n    *(undefined8 *)(this + 0x10) = 0;\n    *(undefined8 *)(this + 0x18) = 0;\n    *(undefined ***)this = &PTR____moneypunct_cache_003bb338;\n    this[0x20] = (__moneypunct_cache<wchar_t,true>)0x0;\n    *(undefined8 *)(this + 0x24) = 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    *(undefined8 *)(this + 0x60) = 0;\n    *(undefined4 *)(this + 0x68) = 0;\n    this[0x98] = (__moneypunct_cache<wchar_t,true>)0x0;\n                    /* try { // try from 002dff6b to 002dff6f has its CatchHandler @ 002e0190 */\n    __moneypunct_cache<wchar_t,true>::_M_cache(this,(locale *)(param_6 + 0xd0));\n    locale::_Impl::_M_install_cache(*(_Impl **)(param_6 + 0xd0),(facet *)this,uVar8);\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 002df095 to 002df099 has its CatchHandler @ 002e018b */\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 002df0cc to 002dfe66 has its CatchHandler @ 002e01ba */\n  std::string::reserve((string *)&local_58,0x20);\n  local_7c = *(undefined4 *)(lVar12 + 0x68);\n  lVar3 = 0;\n  bVar2 = (byte)local_7c;\n  while( true ) {\n    if (bVar2 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x002df13d. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar13 = (*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (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     (uVar8 = std::string::find_first_not_of((string *)&local_58,'0',0), uVar8 == 0))\n  goto LAB_002dfb0a;\n  if (uVar8 == 0xffffffffffffffff) {\n    uVar8 = local_50 - 1;\n    if (uVar8 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_002dfb0a;\n    }\n    if (uVar8 == 0) goto LAB_002dfb0a;\n  }\n  uVar9 = local_50;\n  if (uVar8 <= local_50) {\n    uVar9 = uVar8;\n  }\n  std::string::_M_erase((string *)&local_58,0,uVar9);\nLAB_002dfb0a:\n  uVar8 = 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      std::string::_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1);\n    }\n    local_78[uVar8] = 0;\n    local_78[uVar8 + 1] = 0;\n    local_70 = uVar9;\n    cVar6 = __verify_grouping(*(char **)(lVar12 + 0x10),*(ulong *)(lVar12 + 0x18),\n                              (string *)&local_78);\n    if (cVar6 == '\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  bVar4 = param_2 != (long *)0x0 && local_90 == -1;\n  bVar11 = local_90 == -1;\n  local_98 = param_2;\n  if (bVar4) {\n    if ((int *)param_2[2] < (int *)param_2[3]) {\n      iVar7 = *(int *)param_2[2];\n    }\n    else {\n      iVar7 = (**(code **)(*param_2 + 0x48))();\n    }\n    bVar11 = false;\n    if (iVar7 == -1) {\n      local_98 = (long *)0x0;\n      bVar11 = bVar4;\n    }\n  }\n  bVar5 = param_4 != (long *)0x0 && param_5 == -1;\n  bVar4 = param_5 == -1;\n  if (bVar5) {\n    if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar7 = *(int *)param_4[2];\n    }\n    else {\n      iVar7 = (**(code **)(*param_4 + 0x48))();\n    }\n    bVar4 = false;\n    if (iVar7 == -1) {\n      bVar4 = bVar5;\n    }\n  }\n  if (bVar11 == bVar4) {\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 "bool bVar5;" primitive_type identifier ;) (declaration "char cVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (expression_statement "__moneypunct_cache<wchar_t,true> *this;" (comma_expression "__moneypunct_cache<wchar_t,true> *this" (binary_expression "__moneypunct_cache<wchar_t" identifier < identifier) , (binary_expression "true> *this" true > (pointer_expression "*this" * 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 "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<wchar_t>>((locale *)(param_6 + 0xd0));" (binary_expression "use_facet<std::ctype<wchar_t>>((locale *)(param_6 + 0xd0))" (binary_expression "use_facet<std" identifier < identifier) (ERROR "::ctype" : : identifier) < (binary_expression "wchar_t>>((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 "uVar8 = locale::" (assignment_expression "uVar8 = locale" identifier = identifier) : :) (labeled_statement "id::_M_id((id *)&moneypunct<wchar_t,true>::id);" statement_identifier : (ERROR ":" :) (expression_statement "_M_id((id *)&moneypunct<wchar_t,true>::id);" (call_expression "_M_id((id *)&moneypunct<wchar_t,true>::id)" identifier (argument_list "((id *)&moneypunct<wchar_t,true>::id)" ( (binary_expression "(id *)&moneypunct<wchar_t" (cast_expression "(id *)&moneypunct" ( (type_descriptor "id *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&moneypunct" & identifier)) < identifier) , (binary_expression "true>::id" true > (ERROR "::" : :) identifier) ))) ;)) (expression_statement "plVar1 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + uVar8 * 8);" (assignment_expression "plVar1 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + uVar8 * 8)" identifier = (cast_expression "(long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + uVar8 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + uVar8 * 8)" ( (binary_expression "*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + uVar8 * 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 "uVar8 * 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 002dfee5 to 002dfee9 has its CatchHandler @ 002e0192 */\n    this = (__moneypunct_cache<wchar_t,true> *)operator_new(0xa0);\n    *(undefined4 *)(this + 8) = 0;\n    *(undefined8 *)(this + 0x10) = 0;\n    *(undefined8 *)(this + 0x18) = 0;\n    *(undefined ***)this = &PTR____moneypunct_cache_003bb338;\n    this[0x20] = (__moneypunct_cache<wchar_t,true>)0x0;\n    *(undefined8 *)(this + 0x24) = 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    *(undefined8 *)(this + 0x60) = 0;\n    *(undefined4 *)(this + 0x68) = 0;\n    this[0x98] = (__moneypunct_cache<wchar_t,true>)0x0;\n                    /* try { // try from 002dff6b to 002dff6f has its CatchHandler @ 002e0190 */\n    __moneypunct_cache<wchar_t,true>::_M_cache(this,(locale *)(param_6 + 0xd0));\n    locale::_Impl::_M_install_cache(*(_Impl **)(param_6 + 0xd0),(facet *)this,uVar8);\n    lVar12 = *plVar1;\n  }" if (parenthesized_expression "(lVar12 == 0)" ( (binary_expression "lVar12 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* try { // try from 002dfee5 to 002dfee9 has its CatchHandler @ 002e0192 */\n    this = (__moneypunct_cache<wchar_t,true> *)operator_new(0xa0);\n    *(undefined4 *)(this + 8) = 0;\n    *(undefined8 *)(this + 0x10) = 0;\n    *(undefined8 *)(this + 0x18) = 0;\n    *(undefined ***)this = &PTR____moneypunct_cache_003bb338;\n    this[0x20] = (__moneypunct_cache<wchar_t,true>)0x0;\n    *(undefined8 *)(this + 0x24) = 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    *(undefined8 *)(this + 0x60) = 0;\n    *(undefined4 *)(this + 0x68) = 0;\n    this[0x98] = (__moneypunct_cache<wchar_t,true>)0x0;\n                    /* try { // try from 002dff6b to 002dff6f has its CatchHandler @ 002e0190 */\n    __moneypunct_cache<wchar_t,true>::_M_cache(this,(locale *)(param_6 + 0xd0));\n    locale::_Impl::_M_install_cache(*(_Impl **)(param_6 + 0xd0),(facet *)this,uVar8);\n    lVar12 = *plVar1;\n  }" { comment (expression_statement "this = (__moneypunct_cache<wchar_t,true> *)operator_new(0xa0);" (assignment_expression "this = (__moneypunct_cache<wchar_t,true> *)operator_new(0xa0)" identifier = (parenthesized_expression "(__moneypunct_cache<wchar_t,true> *)operator_new(0xa0)" ( (comma_expression "__moneypunct_cache<wchar_t,true> *)operator_new(0xa0)" (binary_expression "__moneypunct_cache<wchar_t" identifier < identifier) , (binary_expression "true> *)operator_new(0xa0)" true > (pointer_expression "*)operator_new(0xa0)" * (ERROR ")" )) (call_expression "operator_new(0xa0)" identifier (argument_list "(0xa0)" ( 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 "*(undefined ***)this = &PTR____moneypunct_cache_003bb338;" (assignment_expression "*(undefined ***)this = &PTR____moneypunct_cache_003bb338" (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_003bb338" & identifier)) ;) (expression_statement "this[0x20] = (__moneypunct_cache<wchar_t,true>)0x0;" (assignment_expression "this[0x20] = (__moneypunct_cache<wchar_t,true>)0x0" (subscript_expression "this[0x20]" identifier [ number_literal ]) = (parenthesized_expression "(__moneypunct_cache<wchar_t,true>)0x0" ( (comma_expression "__moneypunct_cache<wchar_t,true>)0x0" (binary_expression "__moneypunct_cache<wchar_t" identifier < identifier) , (binary_expression "true>)0x0" true > (ERROR ")" )) number_literal)) ))) ;) (expression_statement "*(undefined8 *)(this + 0x24) = 0;" (assignment_expression "*(undefined8 *)(this + 0x24) = 0" (pointer_expression "*(undefined8 *)(this + 0x24)" * (cast_expression "(undefined8 *)(this + 0x24)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x24)" ( (binary_expression "this + 0x24" 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 "*(undefined8 *)(this + 0x60) = 0;" (assignment_expression "*(undefined8 *)(this + 0x60) = 0" (pointer_expression "*(undefined8 *)(this + 0x60)" * (cast_expression "(undefined8 *)(this + 0x60)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x60)" ( (binary_expression "this + 0x60" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(this + 0x68) = 0;" (assignment_expression "*(undefined4 *)(this + 0x68) = 0" (pointer_expression "*(undefined4 *)(this + 0x68)" * (cast_expression "(undefined4 *)(this + 0x68)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x68)" ( (binary_expression "this + 0x68" identifier + number_literal) )))) = number_literal) ;) (expression_statement "this[0x98] = (__moneypunct_cache<wchar_t,true>)0x0;" (assignment_expression "this[0x98] = (__moneypunct_cache<wchar_t,true>)0x0" (subscript_expression "this[0x98]" identifier [ number_literal ]) = (parenthesized_expression "(__moneypunct_cache<wchar_t,true>)0x0" ( (comma_expression "__moneypunct_cache<wchar_t,true>)0x0" (binary_expression "__moneypunct_cache<wchar_t" identifier < identifier) , (binary_expression "true>)0x0" true > (ERROR ")" )) number_literal)) ))) ;) comment (expression_statement "__moneypunct_cache<wchar_t,true>::_M_cache(this,(locale *)(param_6 + 0xd0));" (comma_expression "__moneypunct_cache<wchar_t,true>::_M_cache(this,(locale *)(param_6 + 0xd0))" (binary_expression "__moneypunct_cache<wchar_t" identifier < identifier) , (binary_expression "true>::_M_cache(this,(locale *)(param_6 + 0xd0))" true > (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,uVar8);" statement_identifier : (ERROR ":" :) (labeled_statement "_Impl::_M_install_cache(*(_Impl **)(param_6 + 0xd0),(facet *)this,uVar8);" statement_identifier : (ERROR ":" :) (expression_statement "_M_install_cache(*(_Impl **)(param_6 + 0xd0),(facet *)this,uVar8);" (call_expression "_M_install_cache(*(_Impl **)(param_6 + 0xd0),(facet *)this,uVar8)" identifier (argument_list "(*(_Impl **)(param_6 + 0xd0),(facet *)this,uVar8)" ( (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 "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 002df095 to 002df099 has its CatchHandler @ 002e018b */\n    std::string::reserve((string *)&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 002df095 to 002df099 has its CatchHandler @ 002e018b */\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 *)(lVar12 + 0x68);" (assignment_expression "local_7c = *(undefined4 *)(lVar12 + 0x68)" identifier = (pointer_expression "*(undefined4 *)(lVar12 + 0x68)" * (cast_expression "(undefined4 *)(lVar12 + 0x68)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar12 + 0x68)" ( (binary_expression "lVar12 + 0x68" 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 0x002df13d. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar13 = (*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (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 0x002df13d. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar13 = (*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (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 0x002df13d. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar13 = (*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (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 0x002df13d. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      auVar13 = (*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4)))\n                          ();\n      return auVar13;\n    }" { comment comment (expression_statement "auVar13 = (*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4)))\n                          ();" (assignment_expression "auVar13 = (*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4)))\n                          ()" identifier = (call_expression "(*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4)))\n                          ()" (parenthesized_expression "(*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4)))" ( (pointer_expression "*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4))" * (cast_expression "(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4))" ( (binary_expression "&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4)" (pointer_expression "&DAT_0032c9b4" & identifier) + (pointer_expression "*(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4)" * (cast_expression "(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4)" ( (binary_expression "&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar3) * 4" (pointer_expression "&DAT_0032c9b4" & 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     (uVar8 = std::string::find_first_not_of((string *)&local_58,'0',0), uVar8 == 0))\n  goto LAB_002dfb0a;" if (parenthesized_expression "((local_50 < 2) ||\n     (uVar8 = std::string::find_first_not_of((string *)&local_58,'0',0), uVar8 == 0))" ( (binary_expression "(local_50 < 2) ||\n     (uVar8 = std::string::find_first_not_of((string *)&local_58,'0',0), uVar8 == 0)" (parenthesized_expression "(local_50 < 2)" ( (binary_expression "local_50 < 2" identifier < number_literal) )) || (parenthesized_expression "(uVar8 = std::string::find_first_not_of((string *)&local_58,'0',0), uVar8 == 0)" ( (ERROR "uVar8 = std::string::" (assignment_expression "uVar8 = std" identifier = identifier) : : identifier : :) (comma_expression "find_first_not_of((string *)&local_58,'0',0), uVar8 == 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 "uVar8 == 0" identifier == number_literal)) ))) )) (goto_statement "goto LAB_002dfb0a;" goto statement_identifier ;)) (if_statement "if (uVar8 == 0xffffffffffffffff) {\n    uVar8 = local_50 - 1;\n    if (uVar8 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_002dfb0a;\n    }\n    if (uVar8 == 0) goto LAB_002dfb0a;\n  }" if (parenthesized_expression "(uVar8 == 0xffffffffffffffff)" ( (binary_expression "uVar8 == 0xffffffffffffffff" identifier == number_literal) )) (compound_statement "{\n    uVar8 = local_50 - 1;\n    if (uVar8 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_002dfb0a;\n    }\n    if (uVar8 == 0) goto LAB_002dfb0a;\n  }" { (expression_statement "uVar8 = local_50 - 1;" (assignment_expression "uVar8 = local_50 - 1" identifier = (binary_expression "local_50 - 1" identifier - number_literal)) ;) (if_statement "if (uVar8 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_002dfb0a;\n    }" if (parenthesized_expression "(uVar8 == 0xffffffffffffffff)" ( (binary_expression "uVar8 == 0xffffffffffffffff" identifier == number_literal) )) (compound_statement "{\n      *local_58 = 0;\n      goto LAB_002dfb0a;\n    }" { (expression_statement "*local_58 = 0;" (assignment_expression "*local_58 = 0" (pointer_expression "*local_58" * identifier) = number_literal) ;) (goto_statement "goto LAB_002dfb0a;" goto statement_identifier ;) })) (if_statement "if (uVar8 == 0) goto LAB_002dfb0a;" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_002dfb0a;" goto statement_identifier ;)) })) (expression_statement "uVar9 = local_50;" (assignment_expression "uVar9 = local_50" identifier = identifier) ;) (if_statement "if (uVar8 <= local_50) {\n    uVar9 = uVar8;\n  }" if (parenthesized_expression "(uVar8 <= local_50)" ( (binary_expression "uVar8 <= local_50" identifier <= identifier) )) (compound_statement "{\n    uVar9 = uVar8;\n  }" { (expression_statement "uVar9 = uVar8;" (assignment_expression "uVar9 = uVar8" identifier = identifier) ;) })) (labeled_statement "std::string::_M_erase((string *)&local_58,0,uVar9);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_erase((string *)&local_58,0,uVar9);" statement_identifier : (ERROR ":" :) (expression_statement "_M_erase((string *)&local_58,0,uVar9);" (call_expression "_M_erase((string *)&local_58,0,uVar9)" identifier (argument_list "((string *)&local_58,0,uVar9)" ( (cast_expression "(string *)&local_58" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_58" & identifier)) , number_literal , identifier ))) ;))) (labeled_statement "LAB_002dfb0a:\n  uVar8 = local_70;" statement_identifier : (expression_statement "uVar8 = local_70;" (assignment_expression "uVar8 = 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      std::string::_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1);\n    }\n    local_78[uVar8] = 0;\n    local_78[uVar8 + 1] = 0;\n    local_70 = uVar9;\n    cVar6 = __verify_grouping(*(char **)(lVar12 + 0x10),*(ulong *)(lVar12 + 0x18),\n                              (string *)&local_78);\n    if (cVar6 == '\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      std::string::_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1);\n    }\n    local_78[uVar8] = 0;\n    local_78[uVar8 + 1] = 0;\n    local_70 = uVar9;\n    cVar6 = __verify_grouping(*(char **)(lVar12 + 0x10),*(ulong *)(lVar12 + 0x18),\n                              (string *)&local_78);\n    if (cVar6 == '\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      std::string::_M_mutate((string *)&local_78,local_70,0,(char *)0x0,1);\n    }" if (parenthesized_expression "(uVar10 < uVar9)" ( (binary_expression "uVar10 < uVar9" 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[uVar8] = 0;" (assignment_expression "local_78[uVar8] = 0" (subscript_expression "local_78[uVar8]" identifier [ identifier ]) = number_literal) ;) (expression_statement "local_78[uVar8 + 1] = 0;" (assignment_expression "local_78[uVar8 + 1] = 0" (subscript_expression "local_78[uVar8 + 1]" identifier [ (binary_expression "uVar8 + 1" identifier + number_literal) ]) = number_literal) ;) (expression_statement "local_70 = uVar9;" (assignment_expression "local_70 = uVar9" identifier = identifier) ;) (expression_statement "cVar6 = __verify_grouping(*(char **)(lVar12 + 0x10),*(ulong *)(lVar12 + 0x18),\n                              (string *)&local_78);" (assignment_expression "cVar6 = __verify_grouping(*(char **)(lVar12 + 0x10),*(ulong *)(lVar12 + 0x18),\n                              (string *)&local_78)" identifier = (call_expression "__verify_grouping(*(char **)(lVar12 + 0x10),*(ulong *)(lVar12 + 0x18),\n                              (string *)&local_78)" identifier (argument_list "(*(char **)(lVar12 + 0x10),*(ulong *)(lVar12 + 0x18),\n                              (string *)&local_78)" ( (pointer_expression "*(char **)(lVar12 + 0x10)" * (cast_expression "(char **)(lVar12 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar12 + 0x10)" ( (binary_expression "lVar12 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(ulong *)(lVar12 + 0x18)" * (cast_expression "(ulong *)(lVar12 + 0x18)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar12 + 0x18)" ( (binary_expression "lVar12 + 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 (cVar6 == '\0') {\n      *param_7 = *param_7 | 4;\n    }" if (parenthesized_expression "(cVar6 == '\0')" ( (binary_expression "cVar6 == '\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 "bVar4 = param_2 != (long *)0x0 && local_90 == -1;" (assignment_expression "bVar4 = param_2 != (long *)0x0 && local_90 == -1" identifier = (binary_expression "param_2 != (long *)0x0 && local_90 == -1" (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "local_90 == -1" identifier == number_literal))) ;) (expression_statement "bVar11 = local_90 == -1;" (assignment_expression "bVar11 = local_90 == -1" identifier = (binary_expression "local_90 == -1" identifier == number_literal)) ;) (expression_statement "local_98 = param_2;" (assignment_expression "local_98 = param_2" identifier = identifier) ;) (if_statement "if (bVar4) {\n    if ((int *)param_2[2] < (int *)param_2[3]) {\n      iVar7 = *(int *)param_2[2];\n    }\n    else {\n      iVar7 = (**(code **)(*param_2 + 0x48))();\n    }\n    bVar11 = false;\n    if (iVar7 == -1) {\n      local_98 = (long *)0x0;\n      bVar11 = bVar4;\n    }\n  }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n    if ((int *)param_2[2] < (int *)param_2[3]) {\n      iVar7 = *(int *)param_2[2];\n    }\n    else {\n      iVar7 = (**(code **)(*param_2 + 0x48))();\n    }\n    bVar11 = false;\n    if (iVar7 == -1) {\n      local_98 = (long *)0x0;\n      bVar11 = bVar4;\n    }\n  }" { (if_statement "if ((int *)param_2[2] < (int *)param_2[3]) {\n      iVar7 = *(int *)param_2[2];\n    }\n    else {\n      iVar7 = (**(code **)(*param_2 + 0x48))();\n    }" if (parenthesized_expression "((int *)param_2[2] < (int *)param_2[3])" ( (binary_expression "(int *)param_2[2] < (int *)param_2[3]" (cast_expression "(int *)param_2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(int *)param_2[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar7 = *(int *)param_2[2];\n    }" { (expression_statement "iVar7 = *(int *)param_2[2];" (assignment_expression "iVar7 = *(int *)param_2[2]" identifier = (pointer_expression "*(int *)param_2[2]" * (cast_expression "(int *)param_2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n      iVar7 = (**(code **)(*param_2 + 0x48))();\n    }" else (compound_statement "{\n      iVar7 = (**(code **)(*param_2 + 0x48))();\n    }" { (expression_statement "iVar7 = (**(code **)(*param_2 + 0x48))();" (assignment_expression "iVar7 = (**(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 "()" ( )))) ;) }))) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (if_statement "if (iVar7 == -1) {\n      local_98 = (long *)0x0;\n      bVar11 = bVar4;\n    }" if (parenthesized_expression "(iVar7 == -1)" ( (binary_expression "iVar7 == -1" identifier == number_literal) )) (compound_statement "{\n      local_98 = (long *)0x0;\n      bVar11 = bVar4;\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 "bVar11 = bVar4;" (assignment_expression "bVar11 = bVar4" identifier = identifier) ;) })) })) (expression_statement "bVar5 = param_4 != (long *)0x0 && param_5 == -1;" (assignment_expression "bVar5 = 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 "bVar4 = param_5 == -1;" (assignment_expression "bVar4 = param_5 == -1" identifier = (binary_expression "param_5 == -1" identifier == number_literal)) ;) (if_statement "if (bVar5) {\n    if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar7 = *(int *)param_4[2];\n    }\n    else {\n      iVar7 = (**(code **)(*param_4 + 0x48))();\n    }\n    bVar4 = false;\n    if (iVar7 == -1) {\n      bVar4 = bVar5;\n    }\n  }" if (parenthesized_expression "(bVar5)" ( identifier )) (compound_statement "{\n    if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar7 = *(int *)param_4[2];\n    }\n    else {\n      iVar7 = (**(code **)(*param_4 + 0x48))();\n    }\n    bVar4 = false;\n    if (iVar7 == -1) {\n      bVar4 = bVar5;\n    }\n  }" { (if_statement "if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar7 = *(int *)param_4[2];\n    }\n    else {\n      iVar7 = (**(code **)(*param_4 + 0x48))();\n    }" if (parenthesized_expression "((int *)param_4[2] < (int *)param_4[3])" ( (binary_expression "(int *)param_4[2] < (int *)param_4[3]" (cast_expression "(int *)param_4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[2]" identifier [ number_literal ])) < (cast_expression "(int *)param_4[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar7 = *(int *)param_4[2];\n    }" { (expression_statement "iVar7 = *(int *)param_4[2];" (assignment_expression "iVar7 = *(int *)param_4[2]" identifier = (pointer_expression "*(int *)param_4[2]" * (cast_expression "(int *)param_4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n      iVar7 = (**(code **)(*param_4 + 0x48))();\n    }" else (compound_statement "{\n      iVar7 = (**(code **)(*param_4 + 0x48))();\n    }" { (expression_statement "iVar7 = (**(code **)(*param_4 + 0x48))();" (assignment_expression "iVar7 = (**(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 "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (if_statement "if (iVar7 == -1) {\n      bVar4 = bVar5;\n    }" if (parenthesized_expression "(iVar7 == -1)" ( (binary_expression "iVar7 == -1" identifier == number_literal) )) (compound_statement "{\n      bVar4 = bVar5;\n    }" { (expression_statement "bVar4 = bVar5;" (assignment_expression "bVar4 = bVar5" identifier = identifier) ;) })) })) (if_statement "if (bVar11 == bVar4) {\n    *param_7 = *param_7 | 2;\n  }" if (parenthesized_expression "(bVar11 == bVar4)" ( (binary_expression "bVar11 == bVar4" 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_002defd0(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  bool bVar4;\n  char cVar5;\n  int iVar6;\n  long lVar7;\n  ulong uVar8;\n  undefined8 *puVar9;\n  ulong uVar10;\n  ulong uVar11;\n  bool bVar12;\n  long lVar13;\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_002c36e0(param_6 + 0xd0);\n  lVar7 = FUN_00279460(&DAT_003cbd28);\n  plVar1 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar7 * 8);\n  lVar13 = *plVar1;\n  if (lVar13 == 0) {\n                    \n    puVar9 = (undefined8 *)FUN_00275550(0xa0);\n    *(undefined4 *)(puVar9 + 1) = 0;\n    puVar9[2] = 0;\n    puVar9[3] = 0;\n    *puVar9 = &PTR_FUN_003bb338;\n    *(undefined1 *)(puVar9 + 4) = 0;\n    *(undefined8 *)((long)puVar9 + 0x24) = 0;\n    puVar9[6] = 0;\n    puVar9[7] = 0;\n    puVar9[8] = 0;\n    puVar9[9] = 0;\n    puVar9[10] = 0;\n    puVar9[0xb] = 0;\n    puVar9[0xc] = 0;\n    *(undefined4 *)(puVar9 + 0xd) = 0;\n    *(undefined1 *)(puVar9 + 0x13) = 0;\n                    \n    FUN_002c41c0(puVar9,param_6 + 0xd0);\n    FUN_002798d0(*(undefined8 *)(param_6 + 0xd0),puVar9,lVar7);\n    lVar13 = *plVar1;\n  }\n  local_70 = 0;\n  local_78 = &local_68;\n  local_68 = 0;\n  if (*(char *)(lVar13 + 0x20) != '\0') {\n                    \n    FUN_0027dec0(&local_78,0x20);\n  }\n  local_50 = 0;\n  local_58 = local_48;\n  local_48[0] = 0;\n                    \n  FUN_0027dec0(&local_58,0x20);\n  local_7c = *(undefined4 *)(lVar13 + 0x68);\n  lVar7 = 0;\n  bVar2 = (byte)local_7c;\n  while( true ) {\n    if (bVar2 < 5) {\n                    \n                    \n      auVar14 = (*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)))\n                          ();\n      return auVar14;\n    }\n    if (3 < (int)lVar7 + 1) break;\n    bVar2 = *(byte *)((long)&local_7c + lVar7 + 1);\n    lVar7 = lVar7 + 1;\n  }\n  if ((local_50 < 2) || (uVar8 = FUN_0027f830(&local_58,0x30,0), uVar8 == 0)) goto LAB_002dfb0a;\n  if (uVar8 == 0xffffffffffffffff) {\n    uVar8 = local_50 - 1;\n    if (uVar8 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_002dfb0a;\n    }\n    if (uVar8 == 0) goto LAB_002dfb0a;\n  }\n  uVar10 = local_50;\n  if (uVar8 <= local_50) {\n    uVar10 = uVar8;\n  }\n  FUN_0027db50(&local_58,0,uVar10);\nLAB_002dfb0a:\n  uVar8 = local_70;\n  if (local_70 != 0) {\n    uVar10 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar11 = 0xf;\n    }\n    else {\n      uVar11 = CONCAT71(uStack_67,local_68);\n    }\n    if (uVar11 < uVar10) {\n      FUN_0027da10(&local_78,local_70,0,0,1);\n    }\n    local_78[uVar8] = 0;\n    local_78[uVar8 + 1] = 0;\n    local_70 = uVar10;\n    cVar5 = FUN_00301480(*(undefined8 *)(lVar13 + 0x10),*(undefined8 *)(lVar13 + 0x18),&local_78);\n    if (cVar5 == '\0') {\n      *param_7 = *param_7 | 4;\n    }\n  }\n  FUN_0027f230(param_8,&local_58);\n  local_90 = (int)param_3;\n  bVar3 = param_2 != (long *)0x0 && local_90 == -1;\n  bVar12 = local_90 == -1;\n  local_98 = param_2;\n  if (bVar3) {\n    if ((int *)param_2[2] < (int *)param_2[3]) {\n      iVar6 = *(int *)param_2[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_2 + 0x48))();\n    }\n    bVar12 = false;\n    if (iVar6 == -1) {\n      local_98 = (long *)0x0;\n      bVar12 = bVar3;\n    }\n  }\n  bVar4 = param_4 != (long *)0x0 && param_5 == -1;\n  bVar3 = param_5 == -1;\n  if (bVar4) {\n    if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar6 = *(int *)param_4[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_4 + 0x48))();\n    }\n    bVar3 = false;\n    if (iVar6 == -1) {\n      bVar3 = bVar4;\n    }\n  }\n  if (bVar12 == bVar3) {\n    *param_7 = *param_7 | 2;\n  }\n  if (local_58 != local_48) {\n    FUN_00276d20();\n  }\n  if (local_78 != &local_68) {\n    FUN_00276d20();\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_002defd0(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_002defd0(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 "bool bVar4;" primitive_type identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "undefined8 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "long lVar13;" (sized_type_specifier "long" long) 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_002c36e0(param_6 + 0xd0);" (call_expression "FUN_002c36e0(param_6 + 0xd0)" identifier (argument_list "(param_6 + 0xd0)" ( (binary_expression "param_6 + 0xd0" identifier + number_literal) ))) ;) (expression_statement "lVar7 = FUN_00279460(&DAT_003cbd28);" (assignment_expression "lVar7 = FUN_00279460(&DAT_003cbd28)" identifier = (call_expression "FUN_00279460(&DAT_003cbd28)" identifier (argument_list "(&DAT_003cbd28)" ( (pointer_expression "&DAT_003cbd28" & identifier) )))) ;) (expression_statement "plVar1 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar7 * 8);" (assignment_expression "plVar1 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar7 * 8)" identifier = (cast_expression "(long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar7 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar7 * 8)" ( (binary_expression "*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar7 * 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 "lVar7 * 8" identifier * number_literal)) )))) ;) (expression_statement "lVar13 = *plVar1;" (assignment_expression "lVar13 = *plVar1" identifier = (pointer_expression "*plVar1" * identifier)) ;) (if_statement "if (lVar13 == 0) {\n                    \n    puVar9 = (undefined8 *)FUN_00275550(0xa0);\n    *(undefined4 *)(puVar9 + 1) = 0;\n    puVar9[2] = 0;\n    puVar9[3] = 0;\n    *puVar9 = &PTR_FUN_003bb338;\n    *(undefined1 *)(puVar9 + 4) = 0;\n    *(undefined8 *)((long)puVar9 + 0x24) = 0;\n    puVar9[6] = 0;\n    puVar9[7] = 0;\n    puVar9[8] = 0;\n    puVar9[9] = 0;\n    puVar9[10] = 0;\n    puVar9[0xb] = 0;\n    puVar9[0xc] = 0;\n    *(undefined4 *)(puVar9 + 0xd) = 0;\n    *(undefined1 *)(puVar9 + 0x13) = 0;\n                    \n    FUN_002c41c0(puVar9,param_6 + 0xd0);\n    FUN_002798d0(*(undefined8 *)(param_6 + 0xd0),puVar9,lVar7);\n    lVar13 = *plVar1;\n  }" if (parenthesized_expression "(lVar13 == 0)" ( (binary_expression "lVar13 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    puVar9 = (undefined8 *)FUN_00275550(0xa0);\n    *(undefined4 *)(puVar9 + 1) = 0;\n    puVar9[2] = 0;\n    puVar9[3] = 0;\n    *puVar9 = &PTR_FUN_003bb338;\n    *(undefined1 *)(puVar9 + 4) = 0;\n    *(undefined8 *)((long)puVar9 + 0x24) = 0;\n    puVar9[6] = 0;\n    puVar9[7] = 0;\n    puVar9[8] = 0;\n    puVar9[9] = 0;\n    puVar9[10] = 0;\n    puVar9[0xb] = 0;\n    puVar9[0xc] = 0;\n    *(undefined4 *)(puVar9 + 0xd) = 0;\n    *(undefined1 *)(puVar9 + 0x13) = 0;\n                    \n    FUN_002c41c0(puVar9,param_6 + 0xd0);\n    FUN_002798d0(*(undefined8 *)(param_6 + 0xd0),puVar9,lVar7);\n    lVar13 = *plVar1;\n  }" { (expression_statement "puVar9 = (undefined8 *)FUN_00275550(0xa0);" (assignment_expression "puVar9 = (undefined8 *)FUN_00275550(0xa0)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0xa0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0xa0)" identifier (argument_list "(0xa0)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar9 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar9 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar9 + 1)" * (cast_expression "(undefined4 *)(puVar9 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 1)" ( (binary_expression "puVar9 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar9[2] = 0;" (assignment_expression "puVar9[2] = 0" (subscript_expression "puVar9[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[3] = 0;" (assignment_expression "puVar9[3] = 0" (subscript_expression "puVar9[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar9 = &PTR_FUN_003bb338;" (assignment_expression "*puVar9 = &PTR_FUN_003bb338" (pointer_expression "*puVar9" * identifier) = (pointer_expression "&PTR_FUN_003bb338" & identifier)) ;) (expression_statement "*(undefined1 *)(puVar9 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar9 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar9 + 4)" * (cast_expression "(undefined1 *)(puVar9 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)((long)puVar9 + 0x24) = 0;" (assignment_expression "*(undefined8 *)((long)puVar9 + 0x24) = 0" (pointer_expression "*(undefined8 *)((long)puVar9 + 0x24)" * (cast_expression "(undefined8 *)((long)puVar9 + 0x24)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + 0x24)" ( (binary_expression "(long)puVar9 + 0x24" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar9[6] = 0;" (assignment_expression "puVar9[6] = 0" (subscript_expression "puVar9[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[7] = 0;" (assignment_expression "puVar9[7] = 0" (subscript_expression "puVar9[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[8] = 0;" (assignment_expression "puVar9[8] = 0" (subscript_expression "puVar9[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[9] = 0;" (assignment_expression "puVar9[9] = 0" (subscript_expression "puVar9[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[10] = 0;" (assignment_expression "puVar9[10] = 0" (subscript_expression "puVar9[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[0xb] = 0;" (assignment_expression "puVar9[0xb] = 0" (subscript_expression "puVar9[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[0xc] = 0;" (assignment_expression "puVar9[0xc] = 0" (subscript_expression "puVar9[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar9 + 0xd) = 0;" (assignment_expression "*(undefined4 *)(puVar9 + 0xd) = 0" (pointer_expression "*(undefined4 *)(puVar9 + 0xd)" * (cast_expression "(undefined4 *)(puVar9 + 0xd)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0xd)" ( (binary_expression "puVar9 + 0xd" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(puVar9 + 0x13) = 0;" (assignment_expression "*(undefined1 *)(puVar9 + 0x13) = 0" (pointer_expression "*(undefined1 *)(puVar9 + 0x13)" * (cast_expression "(undefined1 *)(puVar9 + 0x13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x13)" ( (binary_expression "puVar9 + 0x13" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_002c41c0(puVar9,param_6 + 0xd0);" (call_expression "FUN_002c41c0(puVar9,param_6 + 0xd0)" identifier (argument_list "(puVar9,param_6 + 0xd0)" ( identifier , (binary_expression "param_6 + 0xd0" identifier + number_literal) ))) ;) (expression_statement "FUN_002798d0(*(undefined8 *)(param_6 + 0xd0),puVar9,lVar7);" (call_expression "FUN_002798d0(*(undefined8 *)(param_6 + 0xd0),puVar9,lVar7)" identifier (argument_list "(*(undefined8 *)(param_6 + 0xd0),puVar9,lVar7)" ( (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 "lVar13 = *plVar1;" (assignment_expression "lVar13 = *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 *)(lVar13 + 0x20) != '\0') {\n                    \n    FUN_0027dec0(&local_78,0x20);\n  }" if (parenthesized_expression "(*(char *)(lVar13 + 0x20) != '\0')" ( (binary_expression "*(char *)(lVar13 + 0x20) != '\0'" (pointer_expression "*(char *)(lVar13 + 0x20)" * (cast_expression "(char *)(lVar13 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + 0x20)" ( (binary_expression "lVar13 + 0x20" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    \n    FUN_0027dec0(&local_78,0x20);\n  }" { (expression_statement "FUN_0027dec0(&local_78,0x20);" (call_expression "FUN_0027dec0(&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_0027dec0(&local_58,0x20);" (call_expression "FUN_0027dec0(&local_58,0x20)" identifier (argument_list "(&local_58,0x20)" ( (pointer_expression "&local_58" & identifier) , number_literal ))) ;) (expression_statement "local_7c = *(undefined4 *)(lVar13 + 0x68);" (assignment_expression "local_7c = *(undefined4 *)(lVar13 + 0x68)" identifier = (pointer_expression "*(undefined4 *)(lVar13 + 0x68)" * (cast_expression "(undefined4 *)(lVar13 + 0x68)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + 0x68)" ( (binary_expression "lVar13 + 0x68" identifier + number_literal) ))))) ;) (expression_statement "lVar7 = 0;" (assignment_expression "lVar7 = 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_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)))\n                          ();\n      return auVar14;\n    }\n    if (3 < (int)lVar7 + 1) break;\n    bVar2 = *(byte *)((long)&local_7c + lVar7 + 1);\n    lVar7 = lVar7 + 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (bVar2 < 5) {\n                    \n                    \n      auVar14 = (*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)))\n                          ();\n      return auVar14;\n    }\n    if (3 < (int)lVar7 + 1) break;\n    bVar2 = *(byte *)((long)&local_7c + lVar7 + 1);\n    lVar7 = lVar7 + 1;\n  }" { (if_statement "if (bVar2 < 5) {\n                    \n                    \n      auVar14 = (*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 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_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)))\n                          ();\n      return auVar14;\n    }" { (expression_statement "auVar14 = (*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)))\n                          ();" (assignment_expression "auVar14 = (*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)))\n                          ()" identifier = (call_expression "(*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)))\n                          ()" (parenthesized_expression "(*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)))" ( (pointer_expression "*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4))" * (cast_expression "(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4))" ( (binary_expression "&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)" (pointer_expression "&DAT_0032c9b4" & identifier) + (pointer_expression "*(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)" * (cast_expression "(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)" ( (binary_expression "&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4" (pointer_expression "&DAT_0032c9b4" & identifier) + (binary_expression "(ulong)*(byte *)((long)&local_7c + lVar7) * 4" (binary_expression "(ulong)*(byte *)((long)&local_7c + lVar7)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(byte *)((long)&local_7c + lVar7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_7c + lVar7)" ( (binary_expression "(long)&local_7c + lVar7" (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)lVar7 + 1) break;" if (parenthesized_expression "(3 < (int)lVar7 + 1)" ( (binary_expression "3 < (int)lVar7 + 1" number_literal < (binary_expression "(int)lVar7 + 1" (cast_expression "(int)lVar7" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) )) (break_statement "break;" break ;)) (expression_statement "bVar2 = *(byte *)((long)&local_7c + lVar7 + 1);" (assignment_expression "bVar2 = *(byte *)((long)&local_7c + lVar7 + 1)" identifier = (pointer_expression "*(byte *)((long)&local_7c + lVar7 + 1)" * (cast_expression "(byte *)((long)&local_7c + lVar7 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_7c + lVar7 + 1)" ( (binary_expression "(long)&local_7c + lVar7 + 1" (binary_expression "(long)&local_7c + lVar7" (cast_expression "(long)&local_7c" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_7c" & identifier)) + identifier) + number_literal) ))))) ;) (expression_statement "lVar7 = lVar7 + 1;" (assignment_expression "lVar7 = lVar7 + 1" identifier = (binary_expression "lVar7 + 1" identifier + number_literal)) ;) })) (if_statement "if ((local_50 < 2) || (uVar8 = FUN_0027f830(&local_58,0x30,0), uVar8 == 0)) goto LAB_002dfb0a;" if (parenthesized_expression "((local_50 < 2) || (uVar8 = FUN_0027f830(&local_58,0x30,0), uVar8 == 0))" ( (binary_expression "(local_50 < 2) || (uVar8 = FUN_0027f830(&local_58,0x30,0), uVar8 == 0)" (parenthesized_expression "(local_50 < 2)" ( (binary_expression "local_50 < 2" identifier < number_literal) )) || (parenthesized_expression "(uVar8 = FUN_0027f830(&local_58,0x30,0), uVar8 == 0)" ( (comma_expression "uVar8 = FUN_0027f830(&local_58,0x30,0), uVar8 == 0" (assignment_expression "uVar8 = FUN_0027f830(&local_58,0x30,0)" identifier = (call_expression "FUN_0027f830(&local_58,0x30,0)" identifier (argument_list "(&local_58,0x30,0)" ( (pointer_expression "&local_58" & identifier) , number_literal , number_literal )))) , (binary_expression "uVar8 == 0" identifier == number_literal)) ))) )) (goto_statement "goto LAB_002dfb0a;" goto statement_identifier ;)) (if_statement "if (uVar8 == 0xffffffffffffffff) {\n    uVar8 = local_50 - 1;\n    if (uVar8 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_002dfb0a;\n    }\n    if (uVar8 == 0) goto LAB_002dfb0a;\n  }" if (parenthesized_expression "(uVar8 == 0xffffffffffffffff)" ( (binary_expression "uVar8 == 0xffffffffffffffff" identifier == number_literal) )) (compound_statement "{\n    uVar8 = local_50 - 1;\n    if (uVar8 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_002dfb0a;\n    }\n    if (uVar8 == 0) goto LAB_002dfb0a;\n  }" { (expression_statement "uVar8 = local_50 - 1;" (assignment_expression "uVar8 = local_50 - 1" identifier = (binary_expression "local_50 - 1" identifier - number_literal)) ;) (if_statement "if (uVar8 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_002dfb0a;\n    }" if (parenthesized_expression "(uVar8 == 0xffffffffffffffff)" ( (binary_expression "uVar8 == 0xffffffffffffffff" identifier == number_literal) )) (compound_statement "{\n      *local_58 = 0;\n      goto LAB_002dfb0a;\n    }" { (expression_statement "*local_58 = 0;" (assignment_expression "*local_58 = 0" (pointer_expression "*local_58" * identifier) = number_literal) ;) (goto_statement "goto LAB_002dfb0a;" goto statement_identifier ;) })) (if_statement "if (uVar8 == 0) goto LAB_002dfb0a;" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_002dfb0a;" goto statement_identifier ;)) })) (expression_statement "uVar10 = local_50;" (assignment_expression "uVar10 = local_50" identifier = identifier) ;) (if_statement "if (uVar8 <= local_50) {\n    uVar10 = uVar8;\n  }" if (parenthesized_expression "(uVar8 <= local_50)" ( (binary_expression "uVar8 <= local_50" identifier <= identifier) )) (compound_statement "{\n    uVar10 = uVar8;\n  }" { (expression_statement "uVar10 = uVar8;" (assignment_expression "uVar10 = uVar8" identifier = identifier) ;) })) (expression_statement "FUN_0027db50(&local_58,0,uVar10);" (call_expression "FUN_0027db50(&local_58,0,uVar10)" identifier (argument_list "(&local_58,0,uVar10)" ( (pointer_expression "&local_58" & identifier) , number_literal , identifier ))) ;) (labeled_statement "LAB_002dfb0a:\n  uVar8 = local_70;" statement_identifier : (expression_statement "uVar8 = local_70;" (assignment_expression "uVar8 = local_70" identifier = identifier) ;)) (if_statement "if (local_70 != 0) {\n    uVar10 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar11 = 0xf;\n    }\n    else {\n      uVar11 = CONCAT71(uStack_67,local_68);\n    }\n    if (uVar11 < uVar10) {\n      FUN_0027da10(&local_78,local_70,0,0,1);\n    }\n    local_78[uVar8] = 0;\n    local_78[uVar8 + 1] = 0;\n    local_70 = uVar10;\n    cVar5 = FUN_00301480(*(undefined8 *)(lVar13 + 0x10),*(undefined8 *)(lVar13 + 0x18),&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    uVar10 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar11 = 0xf;\n    }\n    else {\n      uVar11 = CONCAT71(uStack_67,local_68);\n    }\n    if (uVar11 < uVar10) {\n      FUN_0027da10(&local_78,local_70,0,0,1);\n    }\n    local_78[uVar8] = 0;\n    local_78[uVar8 + 1] = 0;\n    local_70 = uVar10;\n    cVar5 = FUN_00301480(*(undefined8 *)(lVar13 + 0x10),*(undefined8 *)(lVar13 + 0x18),&local_78);\n    if (cVar5 == '\0') {\n      *param_7 = *param_7 | 4;\n    }\n  }" { (expression_statement "uVar10 = local_70 + 1;" (assignment_expression "uVar10 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) (if_statement "if (local_78 == &local_68) {\n      uVar11 = 0xf;\n    }\n    else {\n      uVar11 = 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      uVar11 = 0xf;\n    }" { (expression_statement "uVar11 = 0xf;" (assignment_expression "uVar11 = 0xf" identifier = number_literal) ;) }) (else_clause "else {\n      uVar11 = CONCAT71(uStack_67,local_68);\n    }" else (compound_statement "{\n      uVar11 = CONCAT71(uStack_67,local_68);\n    }" { (expression_statement "uVar11 = CONCAT71(uStack_67,local_68);" (assignment_expression "uVar11 = 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 (uVar11 < uVar10) {\n      FUN_0027da10(&local_78,local_70,0,0,1);\n    }" if (parenthesized_expression "(uVar11 < uVar10)" ( (binary_expression "uVar11 < uVar10" identifier < identifier) )) (compound_statement "{\n      FUN_0027da10(&local_78,local_70,0,0,1);\n    }" { (expression_statement "FUN_0027da10(&local_78,local_70,0,0,1);" (call_expression "FUN_0027da10(&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[uVar8] = 0;" (assignment_expression "local_78[uVar8] = 0" (subscript_expression "local_78[uVar8]" identifier [ identifier ]) = number_literal) ;) (expression_statement "local_78[uVar8 + 1] = 0;" (assignment_expression "local_78[uVar8 + 1] = 0" (subscript_expression "local_78[uVar8 + 1]" identifier [ (binary_expression "uVar8 + 1" identifier + number_literal) ]) = number_literal) ;) (expression_statement "local_70 = uVar10;" (assignment_expression "local_70 = uVar10" identifier = identifier) ;) (expression_statement "cVar5 = FUN_00301480(*(undefined8 *)(lVar13 + 0x10),*(undefined8 *)(lVar13 + 0x18),&local_78);" (assignment_expression "cVar5 = FUN_00301480(*(undefined8 *)(lVar13 + 0x10),*(undefined8 *)(lVar13 + 0x18),&local_78)" identifier = (call_expression "FUN_00301480(*(undefined8 *)(lVar13 + 0x10),*(undefined8 *)(lVar13 + 0x18),&local_78)" identifier (argument_list "(*(undefined8 *)(lVar13 + 0x10),*(undefined8 *)(lVar13 + 0x18),&local_78)" ( (pointer_expression "*(undefined8 *)(lVar13 + 0x10)" * (cast_expression "(undefined8 *)(lVar13 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + 0x10)" ( (binary_expression "lVar13 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(lVar13 + 0x18)" * (cast_expression "(undefined8 *)(lVar13 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar13 + 0x18)" ( (binary_expression "lVar13 + 0x18" identifier + number_literal) )))) , (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)) ;) })) })) (expression_statement "FUN_0027f230(param_8,&local_58);" (call_expression "FUN_0027f230(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 "bVar3 = param_2 != (long *)0x0 && local_90 == -1;" (assignment_expression "bVar3 = param_2 != (long *)0x0 && local_90 == -1" identifier = (binary_expression "param_2 != (long *)0x0 && local_90 == -1" (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "local_90 == -1" identifier == number_literal))) ;) (expression_statement "bVar12 = local_90 == -1;" (assignment_expression "bVar12 = local_90 == -1" identifier = (binary_expression "local_90 == -1" identifier == number_literal)) ;) (expression_statement "local_98 = param_2;" (assignment_expression "local_98 = param_2" identifier = identifier) ;) (if_statement "if (bVar3) {\n    if ((int *)param_2[2] < (int *)param_2[3]) {\n      iVar6 = *(int *)param_2[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_2 + 0x48))();\n    }\n    bVar12 = false;\n    if (iVar6 == -1) {\n      local_98 = (long *)0x0;\n      bVar12 = bVar3;\n    }\n  }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n    if ((int *)param_2[2] < (int *)param_2[3]) {\n      iVar6 = *(int *)param_2[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_2 + 0x48))();\n    }\n    bVar12 = false;\n    if (iVar6 == -1) {\n      local_98 = (long *)0x0;\n      bVar12 = bVar3;\n    }\n  }" { (if_statement "if ((int *)param_2[2] < (int *)param_2[3]) {\n      iVar6 = *(int *)param_2[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_2 + 0x48))();\n    }" if (parenthesized_expression "((int *)param_2[2] < (int *)param_2[3])" ( (binary_expression "(int *)param_2[2] < (int *)param_2[3]" (cast_expression "(int *)param_2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(int *)param_2[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar6 = *(int *)param_2[2];\n    }" { (expression_statement "iVar6 = *(int *)param_2[2];" (assignment_expression "iVar6 = *(int *)param_2[2]" identifier = (pointer_expression "*(int *)param_2[2]" * (cast_expression "(int *)param_2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n      iVar6 = (**(code **)(*param_2 + 0x48))();\n    }" else (compound_statement "{\n      iVar6 = (**(code **)(*param_2 + 0x48))();\n    }" { (expression_statement "iVar6 = (**(code **)(*param_2 + 0x48))();" (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 "()" ( )))) ;) }))) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (if_statement "if (iVar6 == -1) {\n      local_98 = (long *)0x0;\n      bVar12 = bVar3;\n    }" if (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) (compound_statement "{\n      local_98 = (long *)0x0;\n      bVar12 = bVar3;\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 = bVar3;" (assignment_expression "bVar12 = bVar3" 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 "bVar3 = param_5 == -1;" (assignment_expression "bVar3 = param_5 == -1" identifier = (binary_expression "param_5 == -1" identifier == number_literal)) ;) (if_statement "if (bVar4) {\n    if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar6 = *(int *)param_4[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_4 + 0x48))();\n    }\n    bVar3 = false;\n    if (iVar6 == -1) {\n      bVar3 = bVar4;\n    }\n  }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n    if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar6 = *(int *)param_4[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_4 + 0x48))();\n    }\n    bVar3 = false;\n    if (iVar6 == -1) {\n      bVar3 = bVar4;\n    }\n  }" { (if_statement "if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar6 = *(int *)param_4[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_4 + 0x48))();\n    }" if (parenthesized_expression "((int *)param_4[2] < (int *)param_4[3])" ( (binary_expression "(int *)param_4[2] < (int *)param_4[3]" (cast_expression "(int *)param_4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[2]" identifier [ number_literal ])) < (cast_expression "(int *)param_4[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      iVar6 = *(int *)param_4[2];\n    }" { (expression_statement "iVar6 = *(int *)param_4[2];" (assignment_expression "iVar6 = *(int *)param_4[2]" identifier = (pointer_expression "*(int *)param_4[2]" * (cast_expression "(int *)param_4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n      iVar6 = (**(code **)(*param_4 + 0x48))();\n    }" else (compound_statement "{\n      iVar6 = (**(code **)(*param_4 + 0x48))();\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 "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (if_statement "if (iVar6 == -1) {\n      bVar3 = bVar4;\n    }" if (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) (compound_statement "{\n      bVar3 = bVar4;\n    }" { (expression_statement "bVar3 = bVar4;" (assignment_expression "bVar3 = bVar4" identifier = identifier) ;) })) })) (if_statement "if (bVar12 == bVar3) {\n    *param_7 = *param_7 | 2;\n  }" if (parenthesized_expression "(bVar12 == bVar3)" ( (binary_expression "bVar12 == bVar3" 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_00276d20();\n  }" if (parenthesized_expression "(local_58 != local_48)" ( (binary_expression "local_58 != local_48" identifier != identifier) )) (compound_statement "{\n    FUN_00276d20();\n  }" { (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (local_78 != &local_68) {\n    FUN_00276d20();\n  }" if (parenthesized_expression "(local_78 != &local_68)" ( (binary_expression "local_78 != &local_68" identifier != (pointer_expression "&local_68" & identifier)) )) (compound_statement "{\n    FUN_00276d20();\n  }" { (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" 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 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 (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 * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (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 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 (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)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( )))) ;) }))) (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (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 ( IDENT )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( )))) ;) }))) (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_002defd0(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_002defd0(undefined8" (identifier "FUN_002defd0") (( "(") (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 "bool bVar4;" (primitive_type "bool") (identifier "bVar4") (; ";")) (declaration "char cVar5;" (primitive_type "char") (identifier "cVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "long lVar7;" (sized_type_specifier "long" (long "long")) (identifier "lVar7") (; ";")) (declaration "ulong uVar8;" (type_identifier "ulong") (identifier "uVar8") (; ";")) (declaration "undefined8 *puVar9;" (type_identifier "undefined8") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "ulong uVar10;" (type_identifier "ulong") (identifier "uVar10") (; ";")) (declaration "ulong uVar11;" (type_identifier "ulong") (identifier "uVar11") (; ";")) (declaration "bool bVar12;" (primitive_type "bool") (identifier "bVar12") (; ";")) (declaration "long lVar13;" (sized_type_specifier "long" (long "long")) (identifier "lVar13") (; ";")) (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_002c36e0(param_6 + 0xd0);" (call_expression "FUN_002c36e0(param_6 + 0xd0)" (identifier "FUN_002c36e0") (argument_list "(param_6 + 0xd0)" (( "(") (binary_expression "param_6 + 0xd0" (identifier "param_6") (+ "+") (number_literal "0xd0")) () ")"))) (; ";")) (expression_statement "lVar7 = FUN_00279460(&DAT_003cbd28);" (assignment_expression "lVar7 = FUN_00279460(&DAT_003cbd28)" (identifier "lVar7") (= "=") (call_expression "FUN_00279460(&DAT_003cbd28)" (identifier "FUN_00279460") (argument_list "(&DAT_003cbd28)" (( "(") (pointer_expression "&DAT_003cbd28" (& "&") (identifier "DAT_003cbd28")) () ")")))) (; ";")) (expression_statement "plVar1 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar7 * 8);" (assignment_expression "plVar1 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar7 * 8)" (identifier "plVar1") (= "=") (cast_expression "(long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar7 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar7 * 8)" (( "(") (binary_expression "*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar7 * 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 "lVar7 * 8" (identifier "lVar7") (* "*") (number_literal "8"))) () ")")))) (; ";")) (expression_statement "lVar13 = *plVar1;" (assignment_expression "lVar13 = *plVar1" (identifier "lVar13") (= "=") (pointer_expression "*plVar1" (* "*") (identifier "plVar1"))) (; ";")) (if_statement "if (lVar13 == 0) {\n                    \n    puVar9 = (undefined8 *)FUN_00275550(0xa0);\n    *(undefined4 *)(puVar9 + 1) = 0;\n    puVar9[2] = 0;\n    puVar9[3] = 0;\n    *puVar9 = &PTR_FUN_003bb338;\n    *(undefined1 *)(puVar9 + 4) = 0;\n    *(undefined8 *)((long)puVar9 + 0x24) = 0;\n    puVar9[6] = 0;\n    puVar9[7] = 0;\n    puVar9[8] = 0;\n    puVar9[9] = 0;\n    puVar9[10] = 0;\n    puVar9[0xb] = 0;\n    puVar9[0xc] = 0;\n    *(undefined4 *)(puVar9 + 0xd) = 0;\n    *(undefined1 *)(puVar9 + 0x13) = 0;\n                    \n    FUN_002c41c0(puVar9,param_6 + 0xd0);\n    FUN_002798d0(*(undefined8 *)(param_6 + 0xd0),puVar9,lVar7);\n    lVar13 = *plVar1;\n  }" (if "if") (parenthesized_expression "(lVar13 == 0)" (( "(") (binary_expression "lVar13 == 0" (identifier "lVar13") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    puVar9 = (undefined8 *)FUN_00275550(0xa0);\n    *(undefined4 *)(puVar9 + 1) = 0;\n    puVar9[2] = 0;\n    puVar9[3] = 0;\n    *puVar9 = &PTR_FUN_003bb338;\n    *(undefined1 *)(puVar9 + 4) = 0;\n    *(undefined8 *)((long)puVar9 + 0x24) = 0;\n    puVar9[6] = 0;\n    puVar9[7] = 0;\n    puVar9[8] = 0;\n    puVar9[9] = 0;\n    puVar9[10] = 0;\n    puVar9[0xb] = 0;\n    puVar9[0xc] = 0;\n    *(undefined4 *)(puVar9 + 0xd) = 0;\n    *(undefined1 *)(puVar9 + 0x13) = 0;\n                    \n    FUN_002c41c0(puVar9,param_6 + 0xd0);\n    FUN_002798d0(*(undefined8 *)(param_6 + 0xd0),puVar9,lVar7);\n    lVar13 = *plVar1;\n  }" ({ "{") (expression_statement "puVar9 = (undefined8 *)FUN_00275550(0xa0);" (assignment_expression "puVar9 = (undefined8 *)FUN_00275550(0xa0)" (identifier "puVar9") (= "=") (cast_expression "(undefined8 *)FUN_00275550(0xa0)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00275550(0xa0)" (identifier "FUN_00275550") (argument_list "(0xa0)" (( "(") (number_literal "0xa0") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar9 + 1) = 0;" (assignment_expression "*(undefined4 *)(puVar9 + 1) = 0" (pointer_expression "*(undefined4 *)(puVar9 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar9 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 1)" (( "(") (binary_expression "puVar9 + 1" (identifier "puVar9") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9[2] = 0;" (assignment_expression "puVar9[2] = 0" (subscript_expression "puVar9[2]" (identifier "puVar9") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9[3] = 0;" (assignment_expression "puVar9[3] = 0" (subscript_expression "puVar9[3]" (identifier "puVar9") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar9 = &PTR_FUN_003bb338;" (assignment_expression "*puVar9 = &PTR_FUN_003bb338" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (= "=") (pointer_expression "&PTR_FUN_003bb338" (& "&") (identifier "PTR_FUN_003bb338"))) (; ";")) (expression_statement "*(undefined1 *)(puVar9 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar9 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar9 + 4)" (* "*") (cast_expression "(undefined1 *)(puVar9 + 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 4)" (( "(") (binary_expression "puVar9 + 4" (identifier "puVar9") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined8 *)((long)puVar9 + 0x24) = 0;" (assignment_expression "*(undefined8 *)((long)puVar9 + 0x24) = 0" (pointer_expression "*(undefined8 *)((long)puVar9 + 0x24)" (* "*") (cast_expression "(undefined8 *)((long)puVar9 + 0x24)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar9 + 0x24)" (( "(") (binary_expression "(long)puVar9 + 0x24" (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9")) (+ "+") (number_literal "0x24")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9[6] = 0;" (assignment_expression "puVar9[6] = 0" (subscript_expression "puVar9[6]" (identifier "puVar9") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9[7] = 0;" (assignment_expression "puVar9[7] = 0" (subscript_expression "puVar9[7]" (identifier "puVar9") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9[8] = 0;" (assignment_expression "puVar9[8] = 0" (subscript_expression "puVar9[8]" (identifier "puVar9") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9[9] = 0;" (assignment_expression "puVar9[9] = 0" (subscript_expression "puVar9[9]" (identifier "puVar9") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9[10] = 0;" (assignment_expression "puVar9[10] = 0" (subscript_expression "puVar9[10]" (identifier "puVar9") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9[0xb] = 0;" (assignment_expression "puVar9[0xb] = 0" (subscript_expression "puVar9[0xb]" (identifier "puVar9") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9[0xc] = 0;" (assignment_expression "puVar9[0xc] = 0" (subscript_expression "puVar9[0xc]" (identifier "puVar9") ([ "[") (number_literal "0xc") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar9 + 0xd) = 0;" (assignment_expression "*(undefined4 *)(puVar9 + 0xd) = 0" (pointer_expression "*(undefined4 *)(puVar9 + 0xd)" (* "*") (cast_expression "(undefined4 *)(puVar9 + 0xd)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 0xd)" (( "(") (binary_expression "puVar9 + 0xd" (identifier "puVar9") (+ "+") (number_literal "0xd")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(puVar9 + 0x13) = 0;" (assignment_expression "*(undefined1 *)(puVar9 + 0x13) = 0" (pointer_expression "*(undefined1 *)(puVar9 + 0x13)" (* "*") (cast_expression "(undefined1 *)(puVar9 + 0x13)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 0x13)" (( "(") (binary_expression "puVar9 + 0x13" (identifier "puVar9") (+ "+") (number_literal "0x13")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_002c41c0(puVar9,param_6 + 0xd0);" (call_expression "FUN_002c41c0(puVar9,param_6 + 0xd0)" (identifier "FUN_002c41c0") (argument_list "(puVar9,param_6 + 0xd0)" (( "(") (identifier "puVar9") (, ",") (binary_expression "param_6 + 0xd0" (identifier "param_6") (+ "+") (number_literal "0xd0")) () ")"))) (; ";")) (expression_statement "FUN_002798d0(*(undefined8 *)(param_6 + 0xd0),puVar9,lVar7);" (call_expression "FUN_002798d0(*(undefined8 *)(param_6 + 0xd0),puVar9,lVar7)" (identifier "FUN_002798d0") (argument_list "(*(undefined8 *)(param_6 + 0xd0),puVar9,lVar7)" (( "(") (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 "puVar9") (, ",") (identifier "lVar7") () ")"))) (; ";")) (expression_statement "lVar13 = *plVar1;" (assignment_expression "lVar13 = *plVar1" (identifier "lVar13") (= "=") (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 *)(lVar13 + 0x20) != '\0') {\n                    \n    FUN_0027dec0(&local_78,0x20);\n  }" (if "if") (parenthesized_expression "(*(char *)(lVar13 + 0x20) != '\0')" (( "(") (binary_expression "*(char *)(lVar13 + 0x20) != '\0'" (pointer_expression "*(char *)(lVar13 + 0x20)" (* "*") (cast_expression "(char *)(lVar13 + 0x20)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar13 + 0x20)" (( "(") (binary_expression "lVar13 + 0x20" (identifier "lVar13") (+ "+") (number_literal "0x20")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                    \n    FUN_0027dec0(&local_78,0x20);\n  }" ({ "{") (expression_statement "FUN_0027dec0(&local_78,0x20);" (call_expression "FUN_0027dec0(&local_78,0x20)" (identifier "FUN_0027dec0") (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_0027dec0(&local_58,0x20);" (call_expression "FUN_0027dec0(&local_58,0x20)" (identifier "FUN_0027dec0") (argument_list "(&local_58,0x20)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (number_literal "0x20") () ")"))) (; ";")) (expression_statement "local_7c = *(undefined4 *)(lVar13 + 0x68);" (assignment_expression "local_7c = *(undefined4 *)(lVar13 + 0x68)" (identifier "local_7c") (= "=") (pointer_expression "*(undefined4 *)(lVar13 + 0x68)" (* "*") (cast_expression "(undefined4 *)(lVar13 + 0x68)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar13 + 0x68)" (( "(") (binary_expression "lVar13 + 0x68" (identifier "lVar13") (+ "+") (number_literal "0x68")) () ")"))))) (; ";")) (expression_statement "lVar7 = 0;" (assignment_expression "lVar7 = 0" (identifier "lVar7") (= "=") (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_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)))\n                          ();\n      return auVar14;\n    }\n    if (3 < (int)lVar7 + 1) break;\n    bVar2 = *(byte *)((long)&local_7c + lVar7 + 1);\n    lVar7 = lVar7 + 1;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    if (bVar2 < 5) {\n                    \n                    \n      auVar14 = (*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)))\n                          ();\n      return auVar14;\n    }\n    if (3 < (int)lVar7 + 1) break;\n    bVar2 = *(byte *)((long)&local_7c + lVar7 + 1);\n    lVar7 = lVar7 + 1;\n  }" ({ "{") (if_statement "if (bVar2 < 5) {\n                    \n                    \n      auVar14 = (*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 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_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)))\n                          ();\n      return auVar14;\n    }" ({ "{") (expression_statement "auVar14 = (*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)))\n                          ();" (assignment_expression "auVar14 = (*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)))\n                          ()" (identifier "auVar14") (= "=") (call_expression "(*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)))\n                          ()" (parenthesized_expression "(*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)))" (( "(") (pointer_expression "*(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4))" (* "*") (cast_expression "(code *)(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4))" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4))" (( "(") (binary_expression "&DAT_0032c9b4 +\n                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)" (pointer_expression "&DAT_0032c9b4" (& "&") (identifier "DAT_0032c9b4")) (+ "+") (pointer_expression "*(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)" (* "*") (cast_expression "(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)" (( "(") (binary_expression "&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4" (pointer_expression "&DAT_0032c9b4" (& "&") (identifier "DAT_0032c9b4")) (+ "+") (binary_expression "(ulong)*(byte *)((long)&local_7c + lVar7) * 4" (binary_expression "(ulong)*(byte *)((long)&local_7c + lVar7)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(byte *)((long)&local_7c + lVar7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)&local_7c + lVar7)" (( "(") (binary_expression "(long)&local_7c + lVar7" (cast_expression "(long)&local_7c" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&local_7c" (& "&") (identifier "local_7c"))) (+ "+") (identifier "lVar7")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return auVar14;" (return "return") (identifier "auVar14") (; ";")) (} "}"))) (if_statement "if (3 < (int)lVar7 + 1) break;" (if "if") (parenthesized_expression "(3 < (int)lVar7 + 1)" (( "(") (binary_expression "3 < (int)lVar7 + 1" (number_literal "3") (< "<") (binary_expression "(int)lVar7 + 1" (cast_expression "(int)lVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar7")) (+ "+") (number_literal "1"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "bVar2 = *(byte *)((long)&local_7c + lVar7 + 1);" (assignment_expression "bVar2 = *(byte *)((long)&local_7c + lVar7 + 1)" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)((long)&local_7c + lVar7 + 1)" (* "*") (cast_expression "(byte *)((long)&local_7c + lVar7 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)&local_7c + lVar7 + 1)" (( "(") (binary_expression "(long)&local_7c + lVar7 + 1" (binary_expression "(long)&local_7c + lVar7" (cast_expression "(long)&local_7c" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&local_7c" (& "&") (identifier "local_7c"))) (+ "+") (identifier "lVar7")) (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "lVar7 = lVar7 + 1;" (assignment_expression "lVar7 = lVar7 + 1" (identifier "lVar7") (= "=") (binary_expression "lVar7 + 1" (identifier "lVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if ((local_50 < 2) || (uVar8 = FUN_0027f830(&local_58,0x30,0), uVar8 == 0)) goto LAB_002dfb0a;" (if "if") (parenthesized_expression "((local_50 < 2) || (uVar8 = FUN_0027f830(&local_58,0x30,0), uVar8 == 0))" (( "(") (binary_expression "(local_50 < 2) || (uVar8 = FUN_0027f830(&local_58,0x30,0), uVar8 == 0)" (parenthesized_expression "(local_50 < 2)" (( "(") (binary_expression "local_50 < 2" (identifier "local_50") (< "<") (number_literal "2")) () ")")) (|| "||") (parenthesized_expression "(uVar8 = FUN_0027f830(&local_58,0x30,0), uVar8 == 0)" (( "(") (comma_expression "uVar8 = FUN_0027f830(&local_58,0x30,0), uVar8 == 0" (assignment_expression "uVar8 = FUN_0027f830(&local_58,0x30,0)" (identifier "uVar8") (= "=") (call_expression "FUN_0027f830(&local_58,0x30,0)" (identifier "FUN_0027f830") (argument_list "(&local_58,0x30,0)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (number_literal "0x30") (, ",") (number_literal "0") () ")")))) (, ",") (binary_expression "uVar8 == 0" (identifier "uVar8") (== "==") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto LAB_002dfb0a;" (goto "goto") (statement_identifier "LAB_002dfb0a") (; ";"))) (if_statement "if (uVar8 == 0xffffffffffffffff) {\n    uVar8 = local_50 - 1;\n    if (uVar8 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_002dfb0a;\n    }\n    if (uVar8 == 0) goto LAB_002dfb0a;\n  }" (if "if") (parenthesized_expression "(uVar8 == 0xffffffffffffffff)" (( "(") (binary_expression "uVar8 == 0xffffffffffffffff" (identifier "uVar8") (== "==") (number_literal "0xffffffffffffffff")) () ")")) (compound_statement "{\n    uVar8 = local_50 - 1;\n    if (uVar8 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_002dfb0a;\n    }\n    if (uVar8 == 0) goto LAB_002dfb0a;\n  }" ({ "{") (expression_statement "uVar8 = local_50 - 1;" (assignment_expression "uVar8 = local_50 - 1" (identifier "uVar8") (= "=") (binary_expression "local_50 - 1" (identifier "local_50") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar8 == 0xffffffffffffffff) {\n      *local_58 = 0;\n      goto LAB_002dfb0a;\n    }" (if "if") (parenthesized_expression "(uVar8 == 0xffffffffffffffff)" (( "(") (binary_expression "uVar8 == 0xffffffffffffffff" (identifier "uVar8") (== "==") (number_literal "0xffffffffffffffff")) () ")")) (compound_statement "{\n      *local_58 = 0;\n      goto LAB_002dfb0a;\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_002dfb0a;" (goto "goto") (statement_identifier "LAB_002dfb0a") (; ";")) (} "}"))) (if_statement "if (uVar8 == 0) goto LAB_002dfb0a;" (if "if") (parenthesized_expression "(uVar8 == 0)" (( "(") (binary_expression "uVar8 == 0" (identifier "uVar8") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_002dfb0a;" (goto "goto") (statement_identifier "LAB_002dfb0a") (; ";"))) (} "}"))) (expression_statement "uVar10 = local_50;" (assignment_expression "uVar10 = local_50" (identifier "uVar10") (= "=") (identifier "local_50")) (; ";")) (if_statement "if (uVar8 <= local_50) {\n    uVar10 = uVar8;\n  }" (if "if") (parenthesized_expression "(uVar8 <= local_50)" (( "(") (binary_expression "uVar8 <= local_50" (identifier "uVar8") (<= "<=") (identifier "local_50")) () ")")) (compound_statement "{\n    uVar10 = uVar8;\n  }" ({ "{") (expression_statement "uVar10 = uVar8;" (assignment_expression "uVar10 = uVar8" (identifier "uVar10") (= "=") (identifier "uVar8")) (; ";")) (} "}"))) (expression_statement "FUN_0027db50(&local_58,0,uVar10);" (call_expression "FUN_0027db50(&local_58,0,uVar10)" (identifier "FUN_0027db50") (argument_list "(&local_58,0,uVar10)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (number_literal "0") (, ",") (identifier "uVar10") () ")"))) (; ";")) (labeled_statement "LAB_002dfb0a:\n  uVar8 = local_70;" (statement_identifier "LAB_002dfb0a") (: ":") (expression_statement "uVar8 = local_70;" (assignment_expression "uVar8 = local_70" (identifier "uVar8") (= "=") (identifier "local_70")) (; ";"))) (if_statement "if (local_70 != 0) {\n    uVar10 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar11 = 0xf;\n    }\n    else {\n      uVar11 = CONCAT71(uStack_67,local_68);\n    }\n    if (uVar11 < uVar10) {\n      FUN_0027da10(&local_78,local_70,0,0,1);\n    }\n    local_78[uVar8] = 0;\n    local_78[uVar8 + 1] = 0;\n    local_70 = uVar10;\n    cVar5 = FUN_00301480(*(undefined8 *)(lVar13 + 0x10),*(undefined8 *)(lVar13 + 0x18),&local_78);\n    if (cVar5 == '\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    uVar10 = local_70 + 1;\n    if (local_78 == &local_68) {\n      uVar11 = 0xf;\n    }\n    else {\n      uVar11 = CONCAT71(uStack_67,local_68);\n    }\n    if (uVar11 < uVar10) {\n      FUN_0027da10(&local_78,local_70,0,0,1);\n    }\n    local_78[uVar8] = 0;\n    local_78[uVar8 + 1] = 0;\n    local_70 = uVar10;\n    cVar5 = FUN_00301480(*(undefined8 *)(lVar13 + 0x10),*(undefined8 *)(lVar13 + 0x18),&local_78);\n    if (cVar5 == '\0') {\n      *param_7 = *param_7 | 4;\n    }\n  }" ({ "{") (expression_statement "uVar10 = local_70 + 1;" (assignment_expression "uVar10 = local_70 + 1" (identifier "uVar10") (= "=") (binary_expression "local_70 + 1" (identifier "local_70") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (local_78 == &local_68) {\n      uVar11 = 0xf;\n    }\n    else {\n      uVar11 = 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      uVar11 = 0xf;\n    }" ({ "{") (expression_statement "uVar11 = 0xf;" (assignment_expression "uVar11 = 0xf" (identifier "uVar11") (= "=") (number_literal "0xf")) (; ";")) (} "}")) (else_clause "else {\n      uVar11 = CONCAT71(uStack_67,local_68);\n    }" (else "else") (compound_statement "{\n      uVar11 = CONCAT71(uStack_67,local_68);\n    }" ({ "{") (expression_statement "uVar11 = CONCAT71(uStack_67,local_68);" (assignment_expression "uVar11 = CONCAT71(uStack_67,local_68)" (identifier "uVar11") (= "=") (call_expression "CONCAT71(uStack_67,local_68)" (identifier "CONCAT71") (argument_list "(uStack_67,local_68)" (( "(") (identifier "uStack_67") (, ",") (identifier "local_68") () ")")))) (; ";")) (} "}")))) (if_statement "if (uVar11 < uVar10) {\n      FUN_0027da10(&local_78,local_70,0,0,1);\n    }" (if "if") (parenthesized_expression "(uVar11 < uVar10)" (( "(") (binary_expression "uVar11 < uVar10" (identifier "uVar11") (< "<") (identifier "uVar10")) () ")")) (compound_statement "{\n      FUN_0027da10(&local_78,local_70,0,0,1);\n    }" ({ "{") (expression_statement "FUN_0027da10(&local_78,local_70,0,0,1);" (call_expression "FUN_0027da10(&local_78,local_70,0,0,1)" (identifier "FUN_0027da10") (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[uVar8] = 0;" (assignment_expression "local_78[uVar8] = 0" (subscript_expression "local_78[uVar8]" (identifier "local_78") ([ "[") (identifier "uVar8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_78[uVar8 + 1] = 0;" (assignment_expression "local_78[uVar8 + 1] = 0" (subscript_expression "local_78[uVar8 + 1]" (identifier "local_78") ([ "[") (binary_expression "uVar8 + 1" (identifier "uVar8") (+ "+") (number_literal "1")) (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_70 = uVar10;" (assignment_expression "local_70 = uVar10" (identifier "local_70") (= "=") (identifier "uVar10")) (; ";")) (expression_statement "cVar5 = FUN_00301480(*(undefined8 *)(lVar13 + 0x10),*(undefined8 *)(lVar13 + 0x18),&local_78);" (assignment_expression "cVar5 = FUN_00301480(*(undefined8 *)(lVar13 + 0x10),*(undefined8 *)(lVar13 + 0x18),&local_78)" (identifier "cVar5") (= "=") (call_expression "FUN_00301480(*(undefined8 *)(lVar13 + 0x10),*(undefined8 *)(lVar13 + 0x18),&local_78)" (identifier "FUN_00301480") (argument_list "(*(undefined8 *)(lVar13 + 0x10),*(undefined8 *)(lVar13 + 0x18),&local_78)" (( "(") (pointer_expression "*(undefined8 *)(lVar13 + 0x10)" (* "*") (cast_expression "(undefined8 *)(lVar13 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar13 + 0x10)" (( "(") (binary_expression "lVar13 + 0x10" (identifier "lVar13") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(lVar13 + 0x18)" (* "*") (cast_expression "(undefined8 *)(lVar13 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar13 + 0x18)" (( "(") (binary_expression "lVar13 + 0x18" (identifier "lVar13") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (pointer_expression "&local_78" (& "&") (identifier "local_78")) () ")")))) (; ";")) (if_statement "if (cVar5 == '\0') {\n      *param_7 = *param_7 | 4;\n    }" (if "if") (parenthesized_expression "(cVar5 == '\0')" (( "(") (binary_expression "cVar5 == '\0'" (identifier "cVar5") (== "==") (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_0027f230(param_8,&local_58);" (call_expression "FUN_0027f230(param_8,&local_58)" (identifier "FUN_0027f230") (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 "bVar3 = param_2 != (long *)0x0 && local_90 == -1;" (assignment_expression "bVar3 = param_2 != (long *)0x0 && local_90 == -1" (identifier "bVar3") (= "=") (binary_expression "param_2 != (long *)0x0 && local_90 == -1" (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"))) (&& "&&") (binary_expression "local_90 == -1" (identifier "local_90") (== "==") (number_literal "-1")))) (; ";")) (expression_statement "bVar12 = local_90 == -1;" (assignment_expression "bVar12 = local_90 == -1" (identifier "bVar12") (= "=") (binary_expression "local_90 == -1" (identifier "local_90") (== "==") (number_literal "-1"))) (; ";")) (expression_statement "local_98 = param_2;" (assignment_expression "local_98 = param_2" (identifier "local_98") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (bVar3) {\n    if ((int *)param_2[2] < (int *)param_2[3]) {\n      iVar6 = *(int *)param_2[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_2 + 0x48))();\n    }\n    bVar12 = false;\n    if (iVar6 == -1) {\n      local_98 = (long *)0x0;\n      bVar12 = bVar3;\n    }\n  }" (if "if") (parenthesized_expression "(bVar3)" (( "(") (identifier "bVar3") () ")")) (compound_statement "{\n    if ((int *)param_2[2] < (int *)param_2[3]) {\n      iVar6 = *(int *)param_2[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_2 + 0x48))();\n    }\n    bVar12 = false;\n    if (iVar6 == -1) {\n      local_98 = (long *)0x0;\n      bVar12 = bVar3;\n    }\n  }" ({ "{") (if_statement "if ((int *)param_2[2] < (int *)param_2[3]) {\n      iVar6 = *(int *)param_2[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_2 + 0x48))();\n    }" (if "if") (parenthesized_expression "((int *)param_2[2] < (int *)param_2[3])" (( "(") (binary_expression "(int *)param_2[2] < (int *)param_2[3]" (cast_expression "(int *)param_2[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(int *)param_2[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n      iVar6 = *(int *)param_2[2];\n    }" ({ "{") (expression_statement "iVar6 = *(int *)param_2[2];" (assignment_expression "iVar6 = *(int *)param_2[2]" (identifier "iVar6") (= "=") (pointer_expression "*(int *)param_2[2]" (* "*") (cast_expression "(int *)param_2[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))))) (; ";")) (} "}")) (else_clause "else {\n      iVar6 = (**(code **)(*param_2 + 0x48))();\n    }" (else "else") (compound_statement "{\n      iVar6 = (**(code **)(*param_2 + 0x48))();\n    }" ({ "{") (expression_statement "iVar6 = (**(code **)(*param_2 + 0x48))();" (assignment_expression "iVar6 = (**(code **)(*param_2 + 0x48))()" (identifier "iVar6") (= "=") (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 "()" (( "(") () ")")))) (; ";")) (} "}")))) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" (identifier "bVar12") (= "=") (false "false")) (; ";")) (if_statement "if (iVar6 == -1) {\n      local_98 = (long *)0x0;\n      bVar12 = bVar3;\n    }" (if "if") (parenthesized_expression "(iVar6 == -1)" (( "(") (binary_expression "iVar6 == -1" (identifier "iVar6") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n      local_98 = (long *)0x0;\n      bVar12 = bVar3;\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 "bVar12 = bVar3;" (assignment_expression "bVar12 = bVar3" (identifier "bVar12") (= "=") (identifier "bVar3")) (; ";")) (} "}"))) (} "}"))) (expression_statement "bVar4 = param_4 != (long *)0x0 && param_5 == -1;" (assignment_expression "bVar4 = param_4 != (long *)0x0 && param_5 == -1" (identifier "bVar4") (= "=") (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 "bVar3 = param_5 == -1;" (assignment_expression "bVar3 = param_5 == -1" (identifier "bVar3") (= "=") (binary_expression "param_5 == -1" (identifier "param_5") (== "==") (number_literal "-1"))) (; ";")) (if_statement "if (bVar4) {\n    if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar6 = *(int *)param_4[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_4 + 0x48))();\n    }\n    bVar3 = false;\n    if (iVar6 == -1) {\n      bVar3 = bVar4;\n    }\n  }" (if "if") (parenthesized_expression "(bVar4)" (( "(") (identifier "bVar4") () ")")) (compound_statement "{\n    if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar6 = *(int *)param_4[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_4 + 0x48))();\n    }\n    bVar3 = false;\n    if (iVar6 == -1) {\n      bVar3 = bVar4;\n    }\n  }" ({ "{") (if_statement "if ((int *)param_4[2] < (int *)param_4[3]) {\n      iVar6 = *(int *)param_4[2];\n    }\n    else {\n      iVar6 = (**(code **)(*param_4 + 0x48))();\n    }" (if "if") (parenthesized_expression "((int *)param_4[2] < (int *)param_4[3])" (( "(") (binary_expression "(int *)param_4[2] < (int *)param_4[3]" (cast_expression "(int *)param_4[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(int *)param_4[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[3]" (identifier "param_4") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n      iVar6 = *(int *)param_4[2];\n    }" ({ "{") (expression_statement "iVar6 = *(int *)param_4[2];" (assignment_expression "iVar6 = *(int *)param_4[2]" (identifier "iVar6") (= "=") (pointer_expression "*(int *)param_4[2]" (* "*") (cast_expression "(int *)param_4[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]"))))) (; ";")) (} "}")) (else_clause "else {\n      iVar6 = (**(code **)(*param_4 + 0x48))();\n    }" (else "else") (compound_statement "{\n      iVar6 = (**(code **)(*param_4 + 0x48))();\n    }" ({ "{") (expression_statement "iVar6 = (**(code **)(*param_4 + 0x48))();" (assignment_expression "iVar6 = (**(code **)(*param_4 + 0x48))()" (identifier "iVar6") (= "=") (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 "bVar3 = false;" (assignment_expression "bVar3 = false" (identifier "bVar3") (= "=") (false "false")) (; ";")) (if_statement "if (iVar6 == -1) {\n      bVar3 = bVar4;\n    }" (if "if") (parenthesized_expression "(iVar6 == -1)" (( "(") (binary_expression "iVar6 == -1" (identifier "iVar6") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n      bVar3 = bVar4;\n    }" ({ "{") (expression_statement "bVar3 = bVar4;" (assignment_expression "bVar3 = bVar4" (identifier "bVar3") (= "=") (identifier "bVar4")) (; ";")) (} "}"))) (} "}"))) (if_statement "if (bVar12 == bVar3) {\n    *param_7 = *param_7 | 2;\n  }" (if "if") (parenthesized_expression "(bVar12 == bVar3)" (( "(") (binary_expression "bVar12 == bVar3" (identifier "bVar12") (== "==") (identifier "bVar3")) () ")")) (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_00276d20();\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_00276d20();\n  }" ({ "{") (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" (identifier "FUN_00276d20") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_78 != &local_68) {\n    FUN_00276d20();\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_00276d20();\n  }" ({ "{") (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" (identifier "FUN_00276d20") (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,0x002dfb11) */
/* WARNING: Removing unreachable block (ram,0x002dfb1e) */
/* WARNING: Removing unreachable block (ram,0x002df1b9) */
/* WARNING: Removing unreachable block (ram,0x002df1c7) */
/* WARNING: Removing unreachable block (ram,0x002dfbf0) */
/* WARNING: Removing unreachable block (ram,0x002e0075) */
/* WARNING: Removing unreachable block (ram,0x002dfbfe) */
/* WARNING: Removing unreachable block (ram,0x002dfc02) */
/* WARNING: Removing unreachable block (ram,0x002dfd80) */
/* WARNING: Removing unreachable block (ram,0x002dfc0b) */
/* WARNING: Removing unreachable block (ram,0x002df1d0) */
/* WARNING: Removing unreachable block (ram,0x002df1da) */
/* WARNING: Removing unreachable block (ram,0x002dfcd0) */
/* WARNING: Removing unreachable block (ram,0x002df1e8) */
/* WARNING: Removing unreachable block (ram,0x002df1f0) */
/* WARNING: Removing unreachable block (ram,0x002df164) */
/* WARNING: Removing unreachable block (ram,0x002df16f) */
/* WARNING: Removing unreachable block (ram,0x002df980) */
/* WARNING: Removing unreachable block (ram,0x002df173) */
/* WARNING: Removing unreachable block (ram,0x002df201) */
/* WARNING: Removing unreachable block (ram,0x002df218) */
/* WARNING: Removing unreachable block (ram,0x002e005f) */
/* WARNING: Removing unreachable block (ram,0x002df226) */
/* WARNING: Removing unreachable block (ram,0x002df228) */
/* WARNING: Removing unreachable block (ram,0x002df234) */
/* WARNING: Removing unreachable block (ram,0x002df188) */
/* WARNING: Removing unreachable block (ram,0x002dfac0) */
/* WARNING: Removing unreachable block (ram,0x002e006a) */
/* WARNING: Removing unreachable block (ram,0x002dface) */
/* WARNING: Removing unreachable block (ram,0x002dfad0) */
/* WARNING: Removing unreachable block (ram,0x002dfadb) */
/* WARNING: Removing unreachable block (ram,0x002df1a5) */
/* WARNING: Removing unreachable block (ram,0x002df1ae) */
/* WARNING: Removing unreachable block (ram,0x002dfaf0) */
/* WARNING: Removing unreachable block (ram,0x002dfafb) */
/* WARNING: Removing unreachable block (ram,0x002dfbc5) */
/* WARNING: Removing unreachable block (ram,0x002df715) */
/* WARNING: Removing unreachable block (ram,0x002df71a) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */
/* std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > std::money_get<wchar_t,
   std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >
   >::_M_extract<true>(std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >,
   std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> >, 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<true>(type_8 param_1,var_4 *var_5,type_8 param_3,var_4 *var_6,int var_39,
                var_4 var_14,var_7 *var_8,var_9 *var_10)

{
  long *plVar1;
  type_1 var_23;
  long var_24;
  bool var_41;
  bool bVar5;
  char var_35;
  int var_38;
  type_2 var_16;
  var_11<var_2,true> *var_19;
  type_2 var_32;
  type_2 var_31;
  bool var_40;
  long var_17;
  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,true>::type_7);
  plVar1 = (long *)(*(long *)(*(long *)(var_14 + 0xd0) + 0x18) + var_16 * 8);
  var_17 = *plVar1;
  if (var_17 == 0) {
                    /* try { // try from 002dfee5 to 002dfee9 has its CatchHandler @ 002e0192 */
    var_19 = (var_11<var_2,true> *)var_18(0xa0);
    *(type_4 *)(var_19 + 8) = 0;
    *(type_8 *)(var_19 + 0x10) = 0;
    *(type_8 *)(var_19 + 0x18) = 0;
    *(type_9 ***)var_19 = &PTR____moneypunct_cache_003bb338;
    var_19[0x20] = (var_11<var_2,true>)0x0;
    *(type_8 *)(var_19 + 0x24) = 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_8 *)(var_19 + 0x60) = 0;
    *(type_4 *)(var_19 + 0x68) = 0;
    var_19[0x98] = (var_11<var_2,true>)0x0;
                    /* try { // try from 002dff6b to 002dff6f has its CatchHandler @ 002e0190 */
    var_11<var_2,true>::var_20(var_19,(type_6 *)(var_14 + 0xd0));
    locale::_Impl::var_21(*(type_10 **)(var_14 + 0xd0),(type_11 *)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 002df095 to 002df099 has its CatchHandler @ 002e018b */
    std::string::var_22((var_9 *)&var_29,0x20);
  }
  var_25 = 0;
  var_42 = var_43;
  var_43[0] = 0;
                    /* try { // try from 002df0cc to 002dfe66 has its CatchHandler @ 002e01ba */
  std::string::var_22((var_9 *)&var_42,0x20);
  local_7c = *(type_4 *)(var_17 + 0x68);
  var_24 = 0;
  var_23 = (type_1)local_7c;
  while( true ) {
    if (var_23 < 5) {
                    /* WARNING: Could not recover jumptable at 0x002df13d. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      auVar13 = (*(type_12 *)(&DAT_0032c9b4 +
                          *(int *)(&DAT_0032c9b4 + (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_002dfb0a;
  if (var_16 == 0xffffffffffffffff) {
    var_16 = var_25 - 1;
    if (var_16 == 0xffffffffffffffff) {
      *var_42 = 0;
      goto LAB_002dfb0a;
    }
    if (var_16 == 0) goto LAB_002dfb0a;
  }
  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_002dfb0a:
  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_41 = var_5 != (long *)0x0 && var_37 == -1;
  var_40 = var_37 == -1;
  local_98 = var_5;
  if (var_41) {
    if ((int *)var_5[2] < (int *)var_5[3]) {
      var_38 = *(int *)var_5[2];
    }
    else {
      var_38 = (**(type_12 **)(*var_5 + 0x48))();
    }
    var_40 = false;
    if (var_38 == -1) {
      local_98 = (long *)0x0;
      var_40 = var_41;
    }
  }
  bVar5 = var_6 != (long *)0x0 && var_39 == -1;
  var_41 = var_39 == -1;
  if (bVar5) {
    if ((int *)var_6[2] < (int *)var_6[3]) {
      var_38 = *(int *)var_6[2];
    }
    else {
      var_38 = (**(type_12 **)(*var_6 + 0x48))();
    }
    var_41 = false;
    if (var_38 == -1) {
      var_41 = bVar5;
    }
  }
  if (var_40 == var_41) {
    *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: (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: (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: (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: (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 (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: (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: (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)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list))))))) (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: (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 (identifier)) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list))))))) (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,0x002dfb11) */
/* WARNING: Removing unreachable block (ram,0x002dfb1e) */
/* WARNING: Removing unreachable block (ram,0x002df1b9) */
/* WARNING: Removing unreachable block (ram,0x002df1c7) */
/* WARNING: Removing unreachable block (ram,0x002dfbf0) */
/* WARNING: Removing unreachable block (ram,0x002e0075) */
/* WARNING: Removing unreachable block (ram,0x002dfbfe) */
/* WARNING: Removing unreachable block (ram,0x002dfc02) */
/* WARNING: Removing unreachable block (ram,0x002dfd80) */
/* WARNING: Removing unreachable block (ram,0x002dfc0b) */
/* WARNING: Removing unreachable block (ram,0x002df1d0) */
/* WARNING: Removing unreachable block (ram,0x002df1da) */
/* WARNING: Removing unreachable block (ram,0x002dfcd0) */
/* WARNING: Removing unreachable block (ram,0x002df1e8) */
/* WARNING: Removing unreachable block (ram,0x002df1f0) */
/* WARNING: Removing unreachable block (ram,0x002df164) */
/* WARNING: Removing unreachable block (ram,0x002df16f) */
/* WARNING: Removing unreachable block (ram,0x002df980) */
/* WARNING: Removing unreachable block (ram,0x002df173) */
/* WARNING: Removing unreachable block (ram,0x002df201) */
/* WARNING: Removing unreachable block (ram,0x002df218) */
/* WARNING: Removing unreachable block (ram,0x002e005f) */
/* WARNING: Removing unreachable block (ram,0x002df226) */
/* WARNING: Removing unreachable block (ram,0x002df228) */
/* WARNING: Removing unreachable block (ram,0x002df234) */
/* WARNING: Removing unreachable block (ram,0x002df188) */
/* WARNING: Removing unreachable block (ram,0x002dfac0) */
/* WARNING: Removing unreachable block (ram,0x002e006a) */
/* WARNING: Removing unreachable block (ram,0x002dface) */
/* WARNING: Removing unreachable block (ram,0x002dfad0) */
/* WARNING: Removing unreachable block (ram,0x002dfadb) */
/* WARNING: Removing unreachable block (ram,0x002df1a5) */
/* WARNING: Removing unreachable block (ram,0x002df1ae) */
/* WARNING: Removing unreachable block (ram,0x002dfaf0) */
/* WARNING: Removing unreachable block (ram,0x002dfafb) */
/* WARNING: Removing unreachable block (ram,0x002dfbc5) */
/* WARNING: Removing unreachable block (ram,0x002df715) */
/* WARNING: Removing unreachable block (ram,0x002df71a) */
/* 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;
  bool bVar4;
  char cVar5;
  int iVar6;
  long lVar7;
  ulong uVar8;
  undefined8 *puVar9;
  ulong uVar10;
  ulong uVar11;
  bool bVar12;
  long lVar13;
  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_002c36e0(param_6 + 0xd0);
  lVar7 = FUN_00279460(&DAT_003cbd28);
  plVar1 = (long *)(*(long *)(*(long *)(param_6 + 0xd0) + 0x18) + lVar7 * 8);
  lVar13 = *plVar1;
  if (lVar13 == 0) {
                    /* try { // try from 002dfee5 to 002dfee9 has its CatchHandler @ 002e0192 */
    puVar9 = (undefined8 *)FUN_00275550(0xa0);
    *(undefined4 *)(puVar9 + 1) = 0;
    puVar9[2] = 0;
    puVar9[3] = 0;
    *puVar9 = &PTR_FUN_003bb338;
    *(undefined1 *)(puVar9 + 4) = 0;
    *(undefined8 *)((long)puVar9 + 0x24) = 0;
    puVar9[6] = 0;
    puVar9[7] = 0;
    puVar9[8] = 0;
    puVar9[9] = 0;
    puVar9[10] = 0;
    puVar9[0xb] = 0;
    puVar9[0xc] = 0;
    *(undefined4 *)(puVar9 + 0xd) = 0;
    *(undefined1 *)(puVar9 + 0x13) = 0;
                    /* try { // try from 002dff6b to 002dff6f has its CatchHandler @ 002e0190 */
    FUN_002c41c0(puVar9,param_6 + 0xd0);
    FUN_002798d0(*(undefined8 *)(param_6 + 0xd0),puVar9,lVar7);
    lVar13 = *plVar1;
  }
  local_70 = 0;
  local_78 = &local_68;
  local_68 = 0;
  if (*(char *)(lVar13 + 0x20) != '\0') {
                    /* try { // try from 002df095 to 002df099 has its CatchHandler @ 002e018b */
    FUN_0027dec0(&local_78,0x20);
  }
  local_50 = 0;
  local_58 = local_48;
  local_48[0] = 0;
                    /* try { // try from 002df0cc to 002dfe66 has its CatchHandler @ 002e01ba */
  FUN_0027dec0(&local_58,0x20);
  local_7c = *(undefined4 *)(lVar13 + 0x68);
  lVar7 = 0;
  bVar2 = (byte)local_7c;
  while( true ) {
    if (bVar2 < 5) {
                    /* WARNING: Could not recover jumptable at 0x002df13d. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      auVar14 = (*(code *)(&DAT_0032c9b4 +
                          *(int *)(&DAT_0032c9b4 + (ulong)*(byte *)((long)&local_7c + lVar7) * 4)))
                          ();
      return auVar14;
    }
    if (3 < (int)lVar7 + 1) break;
    bVar2 = *(byte *)((long)&local_7c + lVar7 + 1);
    lVar7 = lVar7 + 1;
  }
  if ((local_50 < 2) || (uVar8 = FUN_0027f830(&local_58,0x30,0), uVar8 == 0)) goto LAB_002dfb0a;
  if (uVar8 == 0xffffffffffffffff) {
    uVar8 = local_50 - 1;
    if (uVar8 == 0xffffffffffffffff) {
      *local_58 = 0;
      goto LAB_002dfb0a;
    }
    if (uVar8 == 0) goto LAB_002dfb0a;
  }
  uVar10 = local_50;
  if (uVar8 <= local_50) {
    uVar10 = uVar8;
  }
  FUN_0027db50(&local_58,0,uVar10);
LAB_002dfb0a:
  uVar8 = local_70;
  if (local_70 != 0) {
    uVar10 = local_70 + 1;
    if (local_78 == &local_68) {
      uVar11 = 0xf;
    }
    else {
      uVar11 = CONCAT71(uStack_67,local_68);
    }
    if (uVar11 < uVar10) {
      FUN_0027da10(&local_78,local_70,0,0,1);
    }
    local_78[uVar8] = 0;
    local_78[uVar8 + 1] = 0;
    local_70 = uVar10;
    cVar5 = FUN_00301480(*(undefined8 *)(lVar13 + 0x10),*(undefined8 *)(lVar13 + 0x18),&local_78);
    if (cVar5 == '\0') {
      *param_7 = *param_7 | 4;
    }
  }
  FUN_0027f230(param_8,&local_58);
  local_90 = (int)param_3;
  bVar3 = param_2 != (long *)0x0 && local_90 == -1;
  bVar12 = local_90 == -1;
  local_98 = param_2;
  if (bVar3) {
    if ((int *)param_2[2] < (int *)param_2[3]) {
      iVar6 = *(int *)param_2[2];
    }
    else {
      iVar6 = (**(code **)(*param_2 + 0x48))();
    }
    bVar12 = false;
    if (iVar6 == -1) {
      local_98 = (long *)0x0;
      bVar12 = bVar3;
    }
  }
  bVar4 = param_4 != (long *)0x0 && param_5 == -1;
  bVar3 = param_5 == -1;
  if (bVar4) {
    if ((int *)param_4[2] < (int *)param_4[3]) {
      iVar6 = *(int *)param_4[2];
    }
    else {
      iVar6 = (**(code **)(*param_4 + 0x48))();
    }
    bVar3 = false;
    if (iVar6 == -1) {
      bVar3 = bVar4;
    }
  }
  if (bVar12 == bVar3) {
    *param_7 = *param_7 | 2;
  }
  if (local_58 != local_48) {
    FUN_00276d20();
  }
  if (local_78 != &local_68) {
    FUN_00276d20();
  }
  auVar14._8_8_ = param_3;
  auVar14._0_8_ = local_98;
  return auVar14;
}

