
/* WARNING: Removing unreachable block (ram,0x0041077e) */
/* WARNING: Removing unreachable block (ram,0x00410114) */
/* WARNING: Removing unreachable block (ram,0x0041011c) */
/* WARNING: Removing unreachable block (ram,0x00410126) */
/* WARNING: Removing unreachable block (ram,0x0041012b) */
/* WARNING: Removing unreachable block (ram,0x004109ef) */
/* WARNING: Removing unreachable block (ram,0x00410137) */
/* WARNING: Removing unreachable block (ram,0x0041013b) */
/* WARNING: Removing unreachable block (ram,0x00410140) */
/* WARNING: Removing unreachable block (ram,0x004100c8) */
/* WARNING: Removing unreachable block (ram,0x004100d7) */
/* WARNING: Removing unreachable block (ram,0x00410728) */
/* WARNING: Removing unreachable block (ram,0x004100e6) */
/* WARNING: Removing unreachable block (ram,0x004100ec) */
/* WARNING: Removing unreachable block (ram,0x004104e2) */
/* WARNING: Removing unreachable block (ram,0x00410620) */
/* WARNING: Removing unreachable block (ram,0x004109aa) */
/* WARNING: Removing unreachable block (ram,0x00410a3f) */
/* WARNING: Removing unreachable block (ram,0x004109b8) */
/* WARNING: Removing unreachable block (ram,0x004109c1) */
/* WARNING: Removing unreachable block (ram,0x00410a2d) */
/* WARNING: Removing unreachable block (ram,0x004109c8) */
/* WARNING: Removing unreachable block (ram,0x00410858) */
/* WARNING: Removing unreachable block (ram,0x00410870) */
/* WARNING: Removing unreachable block (ram,0x004100a0) */
/* WARNING: Removing unreachable block (ram,0x004104eb) */
/* WARNING: Removing unreachable block (ram,0x0041074c) */
/* 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<false>(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 */

undefined4 *
std::money_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>::
_M_extract<false>(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6,int param_7,uint *param_8,string *param_9)

{
  locale *plVar1;
  byte bVar2;
  uint uVar3;
  char cVar4;
  int iVar5;
  byte *pbVar6;
  undefined4 *puVar7;
  uint uVar8;
  int unaff_EDI;
  allocator *paVar9;
  int local_44;
  istreambuf_iterator *local_38;
  __use_cache<std::__moneypunct_cache<wchar_t,false>> local_2a [2];
  undefined *local_28;
  undefined *local_24;
  undefined4 local_20;
  
  __x86_get_pc_thunk_di();
  plVar1 = (locale *)(param_7 + 0x6c);
  use_facet<std::ctype<wchar_t>>(plVar1);
  iVar5 = __use_cache<std::__moneypunct_cache<wchar_t,false>>::operator()(local_2a,plVar1);
  local_28 = &DAT_001e3103 + unaff_EDI;
  if (*(char *)(iVar5 + 0x10) != '\0') {
                    /* try { // try from 0040fff4 to 0040fff8 has its CatchHandler @ 00410a73 */
    std::string::reserve((uint)&local_28);
  }
  local_24 = &DAT_001e3103 + unaff_EDI;
                    /* try { // try from 00410013 to 00410a4b has its CatchHandler @ 00410a6f */
  std::string::reserve((uint)&local_24);
  local_44 = 1;
  local_20 = *(undefined4 *)(iVar5 + 0x3c);
  paVar9 = (allocator *)0x0;
  pbVar6 = (byte *)&local_20;
  bVar2 = (byte)local_20;
  while( true ) {
    if (bVar2 < 5) {
                    /* WARNING: Could not recover jumptable at 0x00410078. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      puVar7 = (undefined4 *)
               (*(code *)(*(int *)(&UNK_0009539b + (uint)*pbVar6 * 4 + unaff_EDI) +
                         unaff_EDI + 0x1da077))();
      return puVar7;
    }
    if (3 < local_44) break;
    pbVar6 = (byte *)((int)&local_20 + local_44);
    bVar2 = *pbVar6;
    local_44 = local_44 + 1;
  }
  if (1 < *(uint *)(local_24 + -0xc)) {
    paVar9 = (allocator *)0x0;
    uVar8 = std::string::find_first_not_of((string *)&local_24,'0',0);
    if (uVar8 != 0) {
      uVar3 = *(uint *)(local_24 + -0xc);
      if (uVar8 == 0xffffffff) {
        uVar8 = uVar3 - 1;
      }
      if (uVar3 < uVar8) {
        uVar8 = uVar3;
      }
      std::string::_M_mutate((uint)&local_24,0,uVar8);
    }
  }
  if (*(int *)(local_28 + -0xc) != 0) {
    std::string::push_back((char)(string *)&local_28);
    cVar4 = __verify_grouping(*(char **)(iVar5 + 8),*(uint *)(iVar5 + 0xc),(string *)&local_28);
    if (cVar4 == '\0') {
      *param_8 = *param_8 | 4;
    }
  }
  std::string::swap(param_9,(string *)&local_24);
  local_38 = (istreambuf_iterator *)&param_5;
  cVar4 = istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>::equal
                    ((istreambuf_iterator<wchar_t,std::char_traits<wchar_t>> *)&param_3,local_38);
  if (cVar4 != '\0') {
    *param_8 = *param_8 | 2;
  }
  *param_1 = param_3;
  param_1[1] = param_4;
  if (local_24 + -0xc != &DAT_001e30f7 + unaff_EDI) {
    std::string::_Rep::_M_dispose(paVar9);
  }
  if (local_28 + -0xc == &DAT_001e30f7 + unaff_EDI) {
    return param_1;
  }
  std::string::_Rep::_M_dispose(paVar9);
  return param_1;
}



/* WARNING: Removing unreachable block (ram,0x0041077e) */
/* WARNING: Removing unreachable block (ram,0x00410114) */
/* WARNING: Removing unreachable block (ram,0x0041011c) */
/* WARNING: Removing unreachable block (ram,0x00410126) */
/* WARNING: Removing unreachable block (ram,0x0041012b) */
/* WARNING: Removing unreachable block (ram,0x004109ef) */
/* WARNING: Removing unreachable block (ram,0x00410137) */
/* WARNING: Removing unreachable block (ram,0x0041013b) */
/* WARNING: Removing unreachable block (ram,0x00410140) */
/* WARNING: Removing unreachable block (ram,0x004100c8) */
/* WARNING: Removing unreachable block (ram,0x004100d7) */
/* WARNING: Removing unreachable block (ram,0x00410728) */
/* WARNING: Removing unreachable block (ram,0x004100e6) */
/* WARNING: Removing unreachable block (ram,0x004100ec) */
/* WARNING: Removing unreachable block (ram,0x004104e2) */
/* WARNING: Removing unreachable block (ram,0x00410620) */
/* WARNING: Removing unreachable block (ram,0x004109aa) */
/* WARNING: Removing unreachable block (ram,0x00410a3f) */
/* WARNING: Removing unreachable block (ram,0x004109b8) */
/* WARNING: Removing unreachable block (ram,0x004109c1) */
/* WARNING: Removing unreachable block (ram,0x00410a2d) */
/* WARNING: Removing unreachable block (ram,0x004109c8) */
/* WARNING: Removing unreachable block (ram,0x00410858) */
/* WARNING: Removing unreachable block (ram,0x00410870) */
/* WARNING: Removing unreachable block (ram,0x004100a0) */
/* WARNING: Removing unreachable block (ram,0x004104eb) */
/* WARNING: Removing unreachable block (ram,0x0041074c) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

undefined4 *
FUN_0040ff80(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6,int param_7,uint *param_8,undefined4 param_9)

{
  byte bVar1;
  uint uVar2;
  char cVar3;
  int iVar4;
  byte *pbVar5;
  undefined4 *puVar6;
  uint uVar7;
  int unaff_EDI;
  int local_44;
  undefined1 *local_38;
  undefined1 local_2a [2];
  undefined *local_28;
  undefined *local_24;
  undefined4 local_20;
  
  FUN_00074f0a();
  iVar4 = param_7 + 0x6c;
  FUN_004034a0(iVar4);
  iVar4 = FUN_00406c30(local_2a,iVar4);
  local_28 = &DAT_001e3103 + unaff_EDI;
  if (*(char *)(iVar4 + 0x10) != '\0') {
                    /* try { // try from 0040fff4 to 0040fff8 has its CatchHandler @ 00410a73 */
    FUN_003e6d30(&local_28,0x20);
  }
  local_24 = &DAT_001e3103 + unaff_EDI;
                    /* try { // try from 00410013 to 00410a4b has its CatchHandler @ 00410a6f */
  FUN_003e6d30(&local_24,0x20);
  local_44 = 1;
  local_20 = *(undefined4 *)(iVar4 + 0x3c);
  pbVar5 = (byte *)&local_20;
  bVar1 = (byte)local_20;
  while( true ) {
    if (bVar1 < 5) {
                    /* WARNING: Could not recover jumptable at 0x00410078. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      puVar6 = (undefined4 *)
               (*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))
                         ();
      return puVar6;
    }
    if (3 < local_44) break;
    pbVar5 = (byte *)((int)&local_20 + local_44);
    bVar1 = *pbVar5;
    local_44 = local_44 + 1;
  }
  if ((1 < *(uint *)(local_24 + -0xc)) && (uVar7 = FUN_003e5550(&local_24,0x30,0), uVar7 != 0)) {
    uVar2 = *(uint *)(local_24 + -0xc);
    if (uVar7 == 0xffffffff) {
      uVar7 = uVar2 - 1;
    }
    if (uVar2 < uVar7) {
      uVar7 = uVar2;
    }
    FUN_003e5e60(&local_24,0,uVar7,0);
  }
  if (*(int *)(local_28 + -0xc) != 0) {
    FUN_003e7350(&local_28,0);
    cVar3 = FUN_003fe250(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0xc),&local_28);
    if (cVar3 == '\0') {
      *param_8 = *param_8 | 4;
    }
  }
  FUN_003e4ea0(param_9,&local_24);
  local_38 = (undefined1 *)&param_5;
  cVar3 = FUN_00408430(&param_3,local_38);
  if (cVar3 != '\0') {
    *param_8 = *param_8 | 2;
  }
  *param_1 = param_3;
  param_1[1] = param_4;
  if (local_24 + -0xc != (undefined *)(unaff_EDI + 0x1e30f7)) {
    FUN_00400820();
  }
  if (local_28 + -0xc == (undefined *)(unaff_EDI + 0x1e30f7)) {
    return param_1;
  }
  FUN_00400820();
  return param_1;
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
CALL 0x00074f0a
ADD EDI,0x1da077
PUSH ESI
PUSH EBX
SUB ESP,0x68
MOV EAX,dword ptr [EBP + 0x20]
LEA ESI,[EAX + 0x6c]
MOV EBX,EDI
PUSH ESI
CALL 0x004034a0
POP EDX
POP ECX
PUSH ESI
MOV dword ptr [EBP + -0x5c],EAX
LEA EAX,[EBP + -0x26]
PUSH EAX
CALL 0x00406c30
ADD ESP,0x10
MOV byte ptr [EBP + -0x3b],0x0
MOV EBX,dword ptr [EAX + 0x28]
LEA ESI,[EAX + 0x40]
MOV dword ptr [EBP + -0x2c],EAX
MOV dword ptr [EBP + -0x4c],ESI
TEST EBX,EBX
JZ 0x0040ffd1
MOV EAX,dword ptr [EAX + 0x30]
TEST EAX,EAX
SETNZ byte ptr [EBP + -0x3b]
LEA EAX,[EDI + 0x9080]
MOV dword ptr [EBP + -0x48],EAX
ADD EAX,0xc
MOV dword ptr [EBP + -0x24],EAX
MOV EAX,dword ptr [EBP + -0x2c]
CMP byte ptr [EAX + 0x10],0x0
JZ 0x0040fffc
SUB ESP,0x8
LEA EAX,[EBP + -0x24]
MOV EBX,EDI
PUSH 0x20
PUSH EAX
CALL 0x003e6d30
ADD ESP,0x10
MOV EAX,dword ptr [EBP + -0x48]
SUB ESP,0x8
MOV EBX,EDI
PUSH 0x20
ADD EAX,0xc
MOV dword ptr [EBP + -0x20],EAX
LEA EAX,[EBP + -0x20]
PUSH EAX
MOV dword ptr [EBP + -0x58],EAX
CALL 0x003e6d30
MOV EAX,dword ptr [EBP + -0x2c]
MOV dword ptr [EBP + -0x40],0x1
ADD ESP,0x10
MOV byte ptr [EBP + -0x39],0x0
LEA ESI,[EAX + 0x44]
MOV EAX,dword ptr [EAX + 0x3c]
MOV dword ptr [EBP + -0x30],0x0
MOV dword ptr [EBP + -0x38],ESI
MOV dword ptr [EBP + -0x1c],EAX
LEA EAX,[EBP + -0x1d]
MOV dword ptr [EBP + -0x60],EAX
LEA EAX,[EDI + 0x804]
MOV dword ptr [EBP + -0x68],0x0
MOV dword ptr [EBP + -0x50],EAX
MOV EAX,dword ptr [EBP + -0x60]
ADD EAX,dword ptr [EBP + -0x40]
MOV dword ptr [EBP + -0x54],0x0
CMP byte ptr [EAX],0x4
MOV byte ptr [EBP + -0x3c],0x0
JA 0x00410611
MOVZX EAX,byte ptr [EAX]
MOV ESI,dword ptr [EDI + EAX*0x4 + 0xffebb324]
ADD ESI,EDI
JMP ESI
TEST AL,AL
JZ 0x00410958
CMP byte ptr [EBP + -0x3c],0x0
MOV EAX,dword ptr [EBP + -0x2c]
JNZ 0x00410620
MOV EAX,dword ptr [EAX + 0x24]
MOV dword ptr [EBP + -0x40],EAX
LEA EAX,[EBP + 0x18]
MOV dword ptr [EBP + -0x38],0x1
LEA ESI,[EBP + 0x10]
MOV dword ptr [EBP + -0x34],EAX
JMP 0x004100f7
MOV ECX,dword ptr [EBP + -0x40]
MOV EBX,dword ptr [EBP + -0x38]
CMP dword ptr [ECX + EBX*0x4],EAX
JNZ 0x004104eb
MOV EDX,dword ptr [EBP + 0x10]
MOV EAX,dword ptr [EDX + 0x8]
CMP EAX,dword ptr [EDX + 0xc]
JNC 0x00410728
ADD EAX,0x4
MOV dword ptr [EDX + 0x8],EAX
ADD dword ptr [EBP + -0x38],0x1
MOV dword ptr [EBP + 0x14],0xffffffff
SUB ESP,0x8
PUSH dword ptr [EBP + -0x34]
MOV EBX,EDI
PUSH ESI
CALL 0x00408430
ADD ESP,0x10
MOV EBX,dword ptr [EBP + -0x54]
CMP dword ptr [EBP + -0x38],EBX
JNC 0x00410740
CMP AL,0x1
JZ 0x00410740
MOV EDX,dword ptr [EBP + 0x10]
MOV EAX,dword ptr [EBP + 0x14]
TEST EDX,EDX
JZ 0x004100c8
CMP EAX,-0x1
JNZ 0x004100c8
MOV EAX,dword ptr [EDX + 0x8]
CMP EAX,dword ptr [EDX + 0xc]
JNC 0x004109ef
MOV EAX,dword ptr [EAX]
MOV EDX,EAX
CMP EDX,-0x1
JNZ 0x004100c8
MOV dword ptr [EBP + 0x10],0x0
JMP 0x004100c8
LEA EAX,[EBP + 0x18]
LEA ESI,[EBP + 0x10]
MOV dword ptr [EBP + -0x34],EAX
MOV EAX,dword ptr [EBP + 0x24]
OR dword ptr [EAX],0x4
SUB ESP,0x8
PUSH dword ptr [EBP + -0x34]
MOV EBX,EDI
PUSH ESI
CALL 0x00408430
ADD ESP,0x10
TEST AL,AL
JZ 0x0041050c
MOV EAX,dword ptr [EBP + 0x24]
OR dword ptr [EAX],0x2
MOV EAX,dword ptr [EBP + 0x10]
MOV EDI,dword ptr [EBP + 0x8]
MOV EDX,dword ptr [EBP + 0x14]
MOV dword ptr [EDI],EAX
MOV EAX,dword ptr [EBP + -0x20]
MOV dword ptr [EDI + 0x4],EDX
SUB EAX,0xc
CMP EAX,dword ptr [EBP + -0x48]
JNZ 0x00410a17
MOV EAX,dword ptr [EBP + -0x24]
SUB EAX,0xc
CMP EAX,dword ptr [EBP + -0x48]
JNZ 0x00410a02
MOV EAX,dword ptr [EBP + 0x8]
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET 0x4
CMP dword ptr [EBP + -0x40],0x3
JG 0x00410a60
CMP byte ptr [EBP + -0x3a],0x0
JNZ 0x00410a60
ADD dword ptr [EBP + -0x40],0x1
MOV EAX,dword ptr [EBP + -0x60]
ADD EAX,dword ptr [EBP + -0x40]
CMP byte ptr [EAX],0x4
JBE 0x0041006c
MOV byte ptr [EBP + -0x3a],0x0
LEA ESI,[ESI]
MOV byte ptr [EBP + -0x44],0x1
JMP 0x004105ea
MOV EAX,dword ptr [EAX + 0x2c]
MOV dword ptr [EBP + -0x40],EAX
JMP 0x004100b3
MOV EAX,dword ptr [EDX]
SUB ESP,0xc
PUSH EDX
CALL dword ptr [EAX + 0x28]
ADD ESP,0x10
JMP 0x004100ec
MOV ECX,dword ptr [EBP + -0x54]
CMP dword ptr [EBP + -0x38],ECX
JNZ 0x004104eb
MOV EAX,dword ptr [EBP + -0x20]
CMP dword ptr [EAX + -0xc],0x1
JA 0x00410878
CMP byte ptr [EBP + -0x3c],0x0
JNZ 0x004109aa
MOV EAX,dword ptr [EBP + -0x24]
MOV ECX,dword ptr [EAX + -0xc]
TEST ECX,ECX
JZ 0x004107aa
MOVSX EDX,byte ptr [EBP + -0x68]
MOVSX EAX,byte ptr [EBP + -0x30]
LEA ESI,[EBP + -0x24]
MOV EBX,EDI
CMP byte ptr [EBP + -0x39],0x0
CMOVNZ EAX,EDX
SUB ESP,0x8
PUSH EAX
PUSH ESI
CALL 0x003e7350
MOV EAX,dword ptr [EBP + -0x2c]
ADD ESP,0xc
PUSH ESI
PUSH dword ptr [EAX + 0xc]
PUSH dword ptr [EAX + 0x8]
CALL 0x003fe250
ADD ESP,0x10
TEST AL,AL
JNZ 0x004107aa
MOV EAX,dword ptr [EBP + 0x24]
OR dword ptr [EAX],0x4
CMP byte ptr [EBP + -0x39],0x0
JNZ 0x00410858
SUB ESP,0x8
PUSH dword ptr [EBP + -0x58]
MOV EBX,EDI
PUSH dword ptr [EBP + 0x28]
CALL 0x003e4ea0
LEA EAX,[EBP + 0x18]
ADD ESP,0x10
LEA ESI,[EBP + 0x10]
MOV dword ptr [EBP + -0x34],EAX
JMP 0x004104f1
LEA EAX,[EBP + 0x18]
LEA ESI,[EBP + 0x10]
MOV ECX,dword ptr [EBP + -0x30]
MOV dword ptr [EBP + -0x34],EAX
MOV EAX,dword ptr [EBP + -0x2c]
CMP dword ptr [EAX + 0x34],ECX
JNZ 0x004104eb
JMP 0x004107b4
MOV ESI,dword ptr [EBP + -0x58]
SUB ESP,0x4
MOV EBX,EDI
PUSH 0x0
PUSH 0x30
PUSH ESI
CALL 0x003e5550
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00410759
MOV EDX,dword ptr [EBP + -0x20]
CMP EAX,-0x1
MOV EDX,dword ptr [EDX + -0xc]
PUSH 0x0
LEA ECX,[EDX + -0x1]
CMOVZ EAX,ECX
CMP EAX,EDX
CMOVA EAX,EDX
PUSH EAX
PUSH 0x0
PUSH ESI
CALL 0x003e5e60
ADD ESP,0x10
JMP 0x00410759
CMP byte ptr [EBP + -0x44],0x0
JZ 0x004104e2
MOV EAX,dword ptr [EBP + -0x20]
CMP dword ptr [EAX + -0xc],0x1
JBE 0x00410759
JMP 0x00410878
MOV EAX,dword ptr [EBP + -0x20]
MOV EDX,dword ptr [EAX + -0x4]
TEST EDX,EDX
JNS 0x00410a3f
CMP byte ptr [EAX],0x30
JZ 0x00410763
MOV EAX,dword ptr [EAX + -0x4]
TEST EAX,EAX
JNS 0x00410a2d
SUB ESP,0xc
MOV EBX,EDI
PUSH 0x2d
PUSH 0x1
PUSH 0x0
PUSH 0x0
PUSH dword ptr [EBP + -0x58]
CALL 0x003e6460
MOV EAX,dword ptr [EBP + -0x20]
ADD ESP,0x20
MOV dword ptr [EAX + -0x4],0xffffffff
JMP 0x00410763
MOV EAX,dword ptr [EDX]
SUB ESP,0xc
PUSH EDX
CALL dword ptr [EAX + 0x24]
MOV EDX,EAX
ADD ESP,0x10
JMP 0x0041013b
LEA EDX,[EBP + -0x25]
CALL 0x00400820
MOV EAX,dword ptr [EBP + 0x8]
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET 0x4
LEA EDX,[EBP + -0x25]
CALL 0x00400820
JMP 0x00410529
SUB ESP,0xc
PUSH dword ptr [EBP + -0x58]
MOV EBX,EDI
CALL 0x003e60a0
ADD ESP,0x10
JMP 0x004109c8
SUB ESP,0xc
PUSH dword ptr [EBP + -0x58]
MOV EBX,EDI
CALL 0x003e60a0
ADD ESP,0x10
MOV EAX,dword ptr [EBP + -0x20]
JMP 0x004109b8
CMP dword ptr [EBP + -0x54],0x1
SETA AL
AND EAX,dword ptr [EBP + -0x44]
JMP 0x00410098
(translation_unit "/* WARNING: Removing unreachable block (ram,0x0041077e) */\n/* WARNING: Removing unreachable block (ram,0x00410114) */\n/* WARNING: Removing unreachable block (ram,0x0041011c) */\n/* WARNING: Removing unreachable block (ram,0x00410126) */\n/* WARNING: Removing unreachable block (ram,0x0041012b) */\n/* WARNING: Removing unreachable block (ram,0x004109ef) */\n/* WARNING: Removing unreachable block (ram,0x00410137) */\n/* WARNING: Removing unreachable block (ram,0x0041013b) */\n/* WARNING: Removing unreachable block (ram,0x00410140) */\n/* WARNING: Removing unreachable block (ram,0x004100c8) */\n/* WARNING: Removing unreachable block (ram,0x004100d7) */\n/* WARNING: Removing unreachable block (ram,0x00410728) */\n/* WARNING: Removing unreachable block (ram,0x004100e6) */\n/* WARNING: Removing unreachable block (ram,0x004100ec) */\n/* WARNING: Removing unreachable block (ram,0x004104e2) */\n/* WARNING: Removing unreachable block (ram,0x00410620) */\n/* WARNING: Removing unreachable block (ram,0x004109aa) */\n/* WARNING: Removing unreachable block (ram,0x00410a3f) */\n/* WARNING: Removing unreachable block (ram,0x004109b8) */\n/* WARNING: Removing unreachable block (ram,0x004109c1) */\n/* WARNING: Removing unreachable block (ram,0x00410a2d) */\n/* WARNING: Removing unreachable block (ram,0x004109c8) */\n/* WARNING: Removing unreachable block (ram,0x00410858) */\n/* WARNING: Removing unreachable block (ram,0x00410870) */\n/* WARNING: Removing unreachable block (ram,0x004100a0) */\n/* WARNING: Removing unreachable block (ram,0x004104eb) */\n/* WARNING: Removing unreachable block (ram,0x0041074c) */\n/* WARNING: Restarted to delay deadcode elimination for space: stack */\n\nundefined4 *\nFUN_0040ff80(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int param_7,uint *param_8,undefined4 param_9)\n\n{\n  byte bVar1;\n  uint uVar2;\n  char cVar3;\n  int iVar4;\n  byte *pbVar5;\n  undefined4 *puVar6;\n  uint uVar7;\n  int unaff_EDI;\n  int local_44;\n  undefined1 *local_38;\n  undefined1 local_2a [2];\n  undefined *local_28;\n  undefined *local_24;\n  undefined4 local_20;\n  \n  FUN_00074f0a();\n  iVar4 = param_7 + 0x6c;\n  FUN_004034a0(iVar4);\n  iVar4 = FUN_00406c30(local_2a,iVar4);\n  local_28 = &DAT_001e3103 + unaff_EDI;\n  if (*(char *)(iVar4 + 0x10) != '\0') {\n                    /* try { // try from 0040fff4 to 0040fff8 has its CatchHandler @ 00410a73 */\n    FUN_003e6d30(&local_28,0x20);\n  }\n  local_24 = &DAT_001e3103 + unaff_EDI;\n                    /* try { // try from 00410013 to 00410a4b has its CatchHandler @ 00410a6f */\n  FUN_003e6d30(&local_24,0x20);\n  local_44 = 1;\n  local_20 = *(undefined4 *)(iVar4 + 0x3c);\n  pbVar5 = (byte *)&local_20;\n  bVar1 = (byte)local_20;\n  while( true ) {\n    if (bVar1 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00410078. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      puVar6 = (undefined4 *)\n               (*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ();\n      return puVar6;\n    }\n    if (3 < local_44) break;\n    pbVar5 = (byte *)((int)&local_20 + local_44);\n    bVar1 = *pbVar5;\n    local_44 = local_44 + 1;\n  }\n  if ((1 < *(uint *)(local_24 + -0xc)) && (uVar7 = FUN_003e5550(&local_24,0x30,0), uVar7 != 0)) {\n    uVar2 = *(uint *)(local_24 + -0xc);\n    if (uVar7 == 0xffffffff) {\n      uVar7 = uVar2 - 1;\n    }\n    if (uVar2 < uVar7) {\n      uVar7 = uVar2;\n    }\n    FUN_003e5e60(&local_24,0,uVar7,0);\n  }\n  if (*(int *)(local_28 + -0xc) != 0) {\n    FUN_003e7350(&local_28,0);\n    cVar3 = FUN_003fe250(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0xc),&local_28);\n    if (cVar3 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }\n  FUN_003e4ea0(param_9,&local_24);\n  local_38 = (undefined1 *)&param_5;\n  cVar3 = FUN_00408430(&param_3,local_38);\n  if (cVar3 != '\0') {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  if (local_24 + -0xc != (undefined *)(unaff_EDI + 0x1e30f7)) {\n    FUN_00400820();\n  }\n  if (local_28 + -0xc == (undefined *)(unaff_EDI + 0x1e30f7)) {\n    return param_1;\n  }\n  FUN_00400820();\n  return param_1;\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 (function_definition "undefined4 *\nFUN_0040ff80(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int param_7,uint *param_8,undefined4 param_9)\n\n{\n  byte bVar1;\n  uint uVar2;\n  char cVar3;\n  int iVar4;\n  byte *pbVar5;\n  undefined4 *puVar6;\n  uint uVar7;\n  int unaff_EDI;\n  int local_44;\n  undefined1 *local_38;\n  undefined1 local_2a [2];\n  undefined *local_28;\n  undefined *local_24;\n  undefined4 local_20;\n  \n  FUN_00074f0a();\n  iVar4 = param_7 + 0x6c;\n  FUN_004034a0(iVar4);\n  iVar4 = FUN_00406c30(local_2a,iVar4);\n  local_28 = &DAT_001e3103 + unaff_EDI;\n  if (*(char *)(iVar4 + 0x10) != '\0') {\n                    /* try { // try from 0040fff4 to 0040fff8 has its CatchHandler @ 00410a73 */\n    FUN_003e6d30(&local_28,0x20);\n  }\n  local_24 = &DAT_001e3103 + unaff_EDI;\n                    /* try { // try from 00410013 to 00410a4b has its CatchHandler @ 00410a6f */\n  FUN_003e6d30(&local_24,0x20);\n  local_44 = 1;\n  local_20 = *(undefined4 *)(iVar4 + 0x3c);\n  pbVar5 = (byte *)&local_20;\n  bVar1 = (byte)local_20;\n  while( true ) {\n    if (bVar1 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00410078. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      puVar6 = (undefined4 *)\n               (*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ();\n      return puVar6;\n    }\n    if (3 < local_44) break;\n    pbVar5 = (byte *)((int)&local_20 + local_44);\n    bVar1 = *pbVar5;\n    local_44 = local_44 + 1;\n  }\n  if ((1 < *(uint *)(local_24 + -0xc)) && (uVar7 = FUN_003e5550(&local_24,0x30,0), uVar7 != 0)) {\n    uVar2 = *(uint *)(local_24 + -0xc);\n    if (uVar7 == 0xffffffff) {\n      uVar7 = uVar2 - 1;\n    }\n    if (uVar2 < uVar7) {\n      uVar7 = uVar2;\n    }\n    FUN_003e5e60(&local_24,0,uVar7,0);\n  }\n  if (*(int *)(local_28 + -0xc) != 0) {\n    FUN_003e7350(&local_28,0);\n    cVar3 = FUN_003fe250(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0xc),&local_28);\n    if (cVar3 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }\n  FUN_003e4ea0(param_9,&local_24);\n  local_38 = (undefined1 *)&param_5;\n  cVar3 = FUN_00408430(&param_3,local_38);\n  if (cVar3 != '\0') {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  if (local_24 + -0xc != (undefined *)(unaff_EDI + 0x1e30f7)) {\n    FUN_00400820();\n  }\n  if (local_28 + -0xc == (undefined *)(unaff_EDI + 0x1e30f7)) {\n    return param_1;\n  }\n  FUN_00400820();\n  return param_1;\n}" type_identifier (pointer_declarator "*\nFUN_0040ff80(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int param_7,uint *param_8,undefined4 param_9)" * (function_declarator "FUN_0040ff80(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int param_7,uint *param_8,undefined4 param_9)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int param_7,uint *param_8,undefined4 param_9)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "int param_7" primitive_type identifier) , (parameter_declaration "uint *param_8" type_identifier (pointer_declarator "*param_8" * identifier)) , (parameter_declaration "undefined4 param_9" type_identifier identifier) )))) (compound_statement "{\n  byte bVar1;\n  uint uVar2;\n  char cVar3;\n  int iVar4;\n  byte *pbVar5;\n  undefined4 *puVar6;\n  uint uVar7;\n  int unaff_EDI;\n  int local_44;\n  undefined1 *local_38;\n  undefined1 local_2a [2];\n  undefined *local_28;\n  undefined *local_24;\n  undefined4 local_20;\n  \n  FUN_00074f0a();\n  iVar4 = param_7 + 0x6c;\n  FUN_004034a0(iVar4);\n  iVar4 = FUN_00406c30(local_2a,iVar4);\n  local_28 = &DAT_001e3103 + unaff_EDI;\n  if (*(char *)(iVar4 + 0x10) != '\0') {\n                    /* try { // try from 0040fff4 to 0040fff8 has its CatchHandler @ 00410a73 */\n    FUN_003e6d30(&local_28,0x20);\n  }\n  local_24 = &DAT_001e3103 + unaff_EDI;\n                    /* try { // try from 00410013 to 00410a4b has its CatchHandler @ 00410a6f */\n  FUN_003e6d30(&local_24,0x20);\n  local_44 = 1;\n  local_20 = *(undefined4 *)(iVar4 + 0x3c);\n  pbVar5 = (byte *)&local_20;\n  bVar1 = (byte)local_20;\n  while( true ) {\n    if (bVar1 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00410078. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      puVar6 = (undefined4 *)\n               (*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ();\n      return puVar6;\n    }\n    if (3 < local_44) break;\n    pbVar5 = (byte *)((int)&local_20 + local_44);\n    bVar1 = *pbVar5;\n    local_44 = local_44 + 1;\n  }\n  if ((1 < *(uint *)(local_24 + -0xc)) && (uVar7 = FUN_003e5550(&local_24,0x30,0), uVar7 != 0)) {\n    uVar2 = *(uint *)(local_24 + -0xc);\n    if (uVar7 == 0xffffffff) {\n      uVar7 = uVar2 - 1;\n    }\n    if (uVar2 < uVar7) {\n      uVar7 = uVar2;\n    }\n    FUN_003e5e60(&local_24,0,uVar7,0);\n  }\n  if (*(int *)(local_28 + -0xc) != 0) {\n    FUN_003e7350(&local_28,0);\n    cVar3 = FUN_003fe250(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0xc),&local_28);\n    if (cVar3 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }\n  FUN_003e4ea0(param_9,&local_24);\n  local_38 = (undefined1 *)&param_5;\n  cVar3 = FUN_00408430(&param_3,local_38);\n  if (cVar3 != '\0') {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  if (local_24 + -0xc != (undefined *)(unaff_EDI + 0x1e30f7)) {\n    FUN_00400820();\n  }\n  if (local_28 + -0xc == (undefined *)(unaff_EDI + 0x1e30f7)) {\n    return param_1;\n  }\n  FUN_00400820();\n  return param_1;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "undefined1 *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "undefined1 local_2a [2];" type_identifier (array_declarator "local_2a [2]" identifier [ number_literal ]) ;) (declaration "undefined *local_28;" type_identifier (pointer_declarator "*local_28" * identifier) ;) (declaration "undefined *local_24;" type_identifier (pointer_declarator "*local_24" * identifier) ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (expression_statement "FUN_00074f0a();" (call_expression "FUN_00074f0a()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar4 = param_7 + 0x6c;" (assignment_expression "iVar4 = param_7 + 0x6c" identifier = (binary_expression "param_7 + 0x6c" identifier + number_literal)) ;) (expression_statement "FUN_004034a0(iVar4);" (call_expression "FUN_004034a0(iVar4)" identifier (argument_list "(iVar4)" ( identifier ))) ;) (expression_statement "iVar4 = FUN_00406c30(local_2a,iVar4);" (assignment_expression "iVar4 = FUN_00406c30(local_2a,iVar4)" identifier = (call_expression "FUN_00406c30(local_2a,iVar4)" identifier (argument_list "(local_2a,iVar4)" ( identifier , identifier )))) ;) (expression_statement "local_28 = &DAT_001e3103 + unaff_EDI;" (assignment_expression "local_28 = &DAT_001e3103 + unaff_EDI" identifier = (binary_expression "&DAT_001e3103 + unaff_EDI" (pointer_expression "&DAT_001e3103" & identifier) + identifier)) ;) (if_statement "if (*(char *)(iVar4 + 0x10) != '\0') {\n                    /* try { // try from 0040fff4 to 0040fff8 has its CatchHandler @ 00410a73 */\n    FUN_003e6d30(&local_28,0x20);\n  }" if (parenthesized_expression "(*(char *)(iVar4 + 0x10) != '\0')" ( (binary_expression "*(char *)(iVar4 + 0x10) != '\0'" (pointer_expression "*(char *)(iVar4 + 0x10)" * (cast_expression "(char *)(iVar4 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x10)" ( (binary_expression "iVar4 + 0x10" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* try { // try from 0040fff4 to 0040fff8 has its CatchHandler @ 00410a73 */\n    FUN_003e6d30(&local_28,0x20);\n  }" { comment (expression_statement "FUN_003e6d30(&local_28,0x20);" (call_expression "FUN_003e6d30(&local_28,0x20)" identifier (argument_list "(&local_28,0x20)" ( (pointer_expression "&local_28" & identifier) , number_literal ))) ;) })) (expression_statement "local_24 = &DAT_001e3103 + unaff_EDI;" (assignment_expression "local_24 = &DAT_001e3103 + unaff_EDI" identifier = (binary_expression "&DAT_001e3103 + unaff_EDI" (pointer_expression "&DAT_001e3103" & identifier) + identifier)) ;) comment (expression_statement "FUN_003e6d30(&local_24,0x20);" (call_expression "FUN_003e6d30(&local_24,0x20)" identifier (argument_list "(&local_24,0x20)" ( (pointer_expression "&local_24" & identifier) , number_literal ))) ;) (expression_statement "local_44 = 1;" (assignment_expression "local_44 = 1" identifier = number_literal) ;) (expression_statement "local_20 = *(undefined4 *)(iVar4 + 0x3c);" (assignment_expression "local_20 = *(undefined4 *)(iVar4 + 0x3c)" identifier = (pointer_expression "*(undefined4 *)(iVar4 + 0x3c)" * (cast_expression "(undefined4 *)(iVar4 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x3c)" ( (binary_expression "iVar4 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "pbVar5 = (byte *)&local_20;" (assignment_expression "pbVar5 = (byte *)&local_20" identifier = (cast_expression "(byte *)&local_20" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_20" & identifier))) ;) (expression_statement "bVar1 = (byte)local_20;" (assignment_expression "bVar1 = (byte)local_20" identifier = (cast_expression "(byte)local_20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (while_statement "while( true ) {\n    if (bVar1 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00410078. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      puVar6 = (undefined4 *)\n               (*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ();\n      return puVar6;\n    }\n    if (3 < local_44) break;\n    pbVar5 = (byte *)((int)&local_20 + local_44);\n    bVar1 = *pbVar5;\n    local_44 = local_44 + 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (bVar1 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00410078. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      puVar6 = (undefined4 *)\n               (*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ();\n      return puVar6;\n    }\n    if (3 < local_44) break;\n    pbVar5 = (byte *)((int)&local_20 + local_44);\n    bVar1 = *pbVar5;\n    local_44 = local_44 + 1;\n  }" { (if_statement "if (bVar1 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00410078. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      puVar6 = (undefined4 *)\n               (*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ();\n      return puVar6;\n    }" if (parenthesized_expression "(bVar1 < 5)" ( (binary_expression "bVar1 < 5" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x00410078. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      puVar6 = (undefined4 *)\n               (*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ();\n      return puVar6;\n    }" { comment comment (expression_statement "puVar6 = (undefined4 *)\n               (*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ();" (assignment_expression "puVar6 = (undefined4 *)\n               (*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ()" identifier = (cast_expression "(undefined4 *)\n               (*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ()" (parenthesized_expression "(*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))" ( (pointer_expression "*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077)" * (cast_expression "(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077)" ( (binary_expression "*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077" (binary_expression "*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI" (pointer_expression "*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4)" * (cast_expression "(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4)" ( (binary_expression "unaff_EDI + 0x9539b + (uint)*pbVar5 * 4" (binary_expression "unaff_EDI + 0x9539b" identifier + number_literal) + (binary_expression "(uint)*pbVar5 * 4" (binary_expression "(uint)*pbVar5" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) )))) + identifier) + number_literal) )))) )) (argument_list "()" ( ))))) ;) (return_statement "return puVar6;" return identifier ;) })) (if_statement "if (3 < local_44) break;" if (parenthesized_expression "(3 < local_44)" ( (binary_expression "3 < local_44" number_literal < identifier) )) (break_statement "break;" break ;)) (expression_statement "pbVar5 = (byte *)((int)&local_20 + local_44);" (assignment_expression "pbVar5 = (byte *)((int)&local_20 + local_44)" identifier = (cast_expression "(byte *)((int)&local_20 + local_44)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_20 + local_44)" ( (binary_expression "(int)&local_20 + local_44" (cast_expression "(int)&local_20" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_20" & identifier)) + identifier) )))) ;) (expression_statement "bVar1 = *pbVar5;" (assignment_expression "bVar1 = *pbVar5" identifier = (pointer_expression "*pbVar5" * identifier)) ;) (expression_statement "local_44 = local_44 + 1;" (assignment_expression "local_44 = local_44 + 1" identifier = (binary_expression "local_44 + 1" identifier + number_literal)) ;) })) (if_statement "if ((1 < *(uint *)(local_24 + -0xc)) && (uVar7 = FUN_003e5550(&local_24,0x30,0), uVar7 != 0)) {\n    uVar2 = *(uint *)(local_24 + -0xc);\n    if (uVar7 == 0xffffffff) {\n      uVar7 = uVar2 - 1;\n    }\n    if (uVar2 < uVar7) {\n      uVar7 = uVar2;\n    }\n    FUN_003e5e60(&local_24,0,uVar7,0);\n  }" if (parenthesized_expression "((1 < *(uint *)(local_24 + -0xc)) && (uVar7 = FUN_003e5550(&local_24,0x30,0), uVar7 != 0))" ( (binary_expression "(1 < *(uint *)(local_24 + -0xc)) && (uVar7 = FUN_003e5550(&local_24,0x30,0), uVar7 != 0)" (parenthesized_expression "(1 < *(uint *)(local_24 + -0xc))" ( (binary_expression "1 < *(uint *)(local_24 + -0xc)" number_literal < (pointer_expression "*(uint *)(local_24 + -0xc)" * (cast_expression "(uint *)(local_24 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + -0xc)" ( (binary_expression "local_24 + -0xc" identifier + number_literal) ))))) )) && (parenthesized_expression "(uVar7 = FUN_003e5550(&local_24,0x30,0), uVar7 != 0)" ( (comma_expression "uVar7 = FUN_003e5550(&local_24,0x30,0), uVar7 != 0" (assignment_expression "uVar7 = FUN_003e5550(&local_24,0x30,0)" identifier = (call_expression "FUN_003e5550(&local_24,0x30,0)" identifier (argument_list "(&local_24,0x30,0)" ( (pointer_expression "&local_24" & identifier) , number_literal , number_literal )))) , (binary_expression "uVar7 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    uVar2 = *(uint *)(local_24 + -0xc);\n    if (uVar7 == 0xffffffff) {\n      uVar7 = uVar2 - 1;\n    }\n    if (uVar2 < uVar7) {\n      uVar7 = uVar2;\n    }\n    FUN_003e5e60(&local_24,0,uVar7,0);\n  }" { (expression_statement "uVar2 = *(uint *)(local_24 + -0xc);" (assignment_expression "uVar2 = *(uint *)(local_24 + -0xc)" identifier = (pointer_expression "*(uint *)(local_24 + -0xc)" * (cast_expression "(uint *)(local_24 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + -0xc)" ( (binary_expression "local_24 + -0xc" identifier + number_literal) ))))) ;) (if_statement "if (uVar7 == 0xffffffff) {\n      uVar7 = uVar2 - 1;\n    }" if (parenthesized_expression "(uVar7 == 0xffffffff)" ( (binary_expression "uVar7 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n      uVar7 = uVar2 - 1;\n    }" { (expression_statement "uVar7 = uVar2 - 1;" (assignment_expression "uVar7 = uVar2 - 1" identifier = (binary_expression "uVar2 - 1" identifier - number_literal)) ;) })) (if_statement "if (uVar2 < uVar7) {\n      uVar7 = uVar2;\n    }" if (parenthesized_expression "(uVar2 < uVar7)" ( (binary_expression "uVar2 < uVar7" identifier < identifier) )) (compound_statement "{\n      uVar7 = uVar2;\n    }" { (expression_statement "uVar7 = uVar2;" (assignment_expression "uVar7 = uVar2" identifier = identifier) ;) })) (expression_statement "FUN_003e5e60(&local_24,0,uVar7,0);" (call_expression "FUN_003e5e60(&local_24,0,uVar7,0)" identifier (argument_list "(&local_24,0,uVar7,0)" ( (pointer_expression "&local_24" & identifier) , number_literal , identifier , number_literal ))) ;) })) (if_statement "if (*(int *)(local_28 + -0xc) != 0) {\n    FUN_003e7350(&local_28,0);\n    cVar3 = FUN_003fe250(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0xc),&local_28);\n    if (cVar3 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }" if (parenthesized_expression "(*(int *)(local_28 + -0xc) != 0)" ( (binary_expression "*(int *)(local_28 + -0xc) != 0" (pointer_expression "*(int *)(local_28 + -0xc)" * (cast_expression "(int *)(local_28 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    FUN_003e7350(&local_28,0);\n    cVar3 = FUN_003fe250(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0xc),&local_28);\n    if (cVar3 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }" { (expression_statement "FUN_003e7350(&local_28,0);" (call_expression "FUN_003e7350(&local_28,0)" identifier (argument_list "(&local_28,0)" ( (pointer_expression "&local_28" & identifier) , number_literal ))) ;) (expression_statement "cVar3 = FUN_003fe250(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0xc),&local_28);" (assignment_expression "cVar3 = FUN_003fe250(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0xc),&local_28)" identifier = (call_expression "FUN_003fe250(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0xc),&local_28)" identifier (argument_list "(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0xc),&local_28)" ( (pointer_expression "*(undefined4 *)(iVar4 + 8)" * (cast_expression "(undefined4 *)(iVar4 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 8)" ( (binary_expression "iVar4 + 8" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar4 + 0xc)" * (cast_expression "(undefined4 *)(iVar4 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xc)" ( (binary_expression "iVar4 + 0xc" identifier + number_literal) )))) , (pointer_expression "&local_28" & identifier) )))) ;) (if_statement "if (cVar3 == '\0') {\n      *param_8 = *param_8 | 4;\n    }" if (parenthesized_expression "(cVar3 == '\0')" ( (binary_expression "cVar3 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *param_8 = *param_8 | 4;\n    }" { (expression_statement "*param_8 = *param_8 | 4;" (assignment_expression "*param_8 = *param_8 | 4" (pointer_expression "*param_8" * identifier) = (binary_expression "*param_8 | 4" (pointer_expression "*param_8" * identifier) | number_literal)) ;) })) })) (expression_statement "FUN_003e4ea0(param_9,&local_24);" (call_expression "FUN_003e4ea0(param_9,&local_24)" identifier (argument_list "(param_9,&local_24)" ( identifier , (pointer_expression "&local_24" & identifier) ))) ;) (expression_statement "local_38 = (undefined1 *)&param_5;" (assignment_expression "local_38 = (undefined1 *)&param_5" identifier = (cast_expression "(undefined1 *)&param_5" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&param_5" & identifier))) ;) (expression_statement "cVar3 = FUN_00408430(&param_3,local_38);" (assignment_expression "cVar3 = FUN_00408430(&param_3,local_38)" identifier = (call_expression "FUN_00408430(&param_3,local_38)" identifier (argument_list "(&param_3,local_38)" ( (pointer_expression "&param_3" & identifier) , identifier )))) ;) (if_statement "if (cVar3 != '\0') {\n    *param_8 = *param_8 | 2;\n  }" if (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    *param_8 = *param_8 | 2;\n  }" { (expression_statement "*param_8 = *param_8 | 2;" (assignment_expression "*param_8 = *param_8 | 2" (pointer_expression "*param_8" * identifier) = (binary_expression "*param_8 | 2" (pointer_expression "*param_8" * identifier) | number_literal)) ;) })) (expression_statement "*param_1 = param_3;" (assignment_expression "*param_1 = param_3" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = param_4;" (assignment_expression "param_1[1] = param_4" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (local_24 + -0xc != (undefined *)(unaff_EDI + 0x1e30f7)) {\n    FUN_00400820();\n  }" if (parenthesized_expression "(local_24 + -0xc != (undefined *)(unaff_EDI + 0x1e30f7))" ( (binary_expression "local_24 + -0xc != (undefined *)(unaff_EDI + 0x1e30f7)" (binary_expression "local_24 + -0xc" identifier + number_literal) != (cast_expression "(undefined *)(unaff_EDI + 0x1e30f7)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1e30f7)" ( (binary_expression "unaff_EDI + 0x1e30f7" identifier + number_literal) )))) )) (compound_statement "{\n    FUN_00400820();\n  }" { (expression_statement "FUN_00400820();" (call_expression "FUN_00400820()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (local_28 + -0xc == (undefined *)(unaff_EDI + 0x1e30f7)) {\n    return param_1;\n  }" if (parenthesized_expression "(local_28 + -0xc == (undefined *)(unaff_EDI + 0x1e30f7))" ( (binary_expression "local_28 + -0xc == (undefined *)(unaff_EDI + 0x1e30f7)" (binary_expression "local_28 + -0xc" identifier + number_literal) == (cast_expression "(undefined *)(unaff_EDI + 0x1e30f7)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1e30f7)" ( (binary_expression "unaff_EDI + 0x1e30f7" identifier + number_literal) )))) )) (compound_statement "{\n    return param_1;\n  }" { (return_statement "return param_1;" return identifier ;) })) (expression_statement "FUN_00400820();" (call_expression "FUN_00400820()" identifier (argument_list "()" ( ))) ;) (return_statement "return param_1;" return identifier ;) })))
(translation_unit "/* WARNING: Removing unreachable block (ram,0x0041077e) */\n/* WARNING: Removing unreachable block (ram,0x00410114) */\n/* WARNING: Removing unreachable block (ram,0x0041011c) */\n/* WARNING: Removing unreachable block (ram,0x00410126) */\n/* WARNING: Removing unreachable block (ram,0x0041012b) */\n/* WARNING: Removing unreachable block (ram,0x004109ef) */\n/* WARNING: Removing unreachable block (ram,0x00410137) */\n/* WARNING: Removing unreachable block (ram,0x0041013b) */\n/* WARNING: Removing unreachable block (ram,0x00410140) */\n/* WARNING: Removing unreachable block (ram,0x004100c8) */\n/* WARNING: Removing unreachable block (ram,0x004100d7) */\n/* WARNING: Removing unreachable block (ram,0x00410728) */\n/* WARNING: Removing unreachable block (ram,0x004100e6) */\n/* WARNING: Removing unreachable block (ram,0x004100ec) */\n/* WARNING: Removing unreachable block (ram,0x004104e2) */\n/* WARNING: Removing unreachable block (ram,0x00410620) */\n/* WARNING: Removing unreachable block (ram,0x004109aa) */\n/* WARNING: Removing unreachable block (ram,0x00410a3f) */\n/* WARNING: Removing unreachable block (ram,0x004109b8) */\n/* WARNING: Removing unreachable block (ram,0x004109c1) */\n/* WARNING: Removing unreachable block (ram,0x00410a2d) */\n/* WARNING: Removing unreachable block (ram,0x004109c8) */\n/* WARNING: Removing unreachable block (ram,0x00410858) */\n/* WARNING: Removing unreachable block (ram,0x00410870) */\n/* WARNING: Removing unreachable block (ram,0x004100a0) */\n/* WARNING: Removing unreachable block (ram,0x004104eb) */\n/* WARNING: Removing unreachable block (ram,0x0041074c) */\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<false>(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\nundefined4 *\nstd::money_get<wchar_t,std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>::\n_M_extract<false>(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5,undefined4 param_6,int param_7,uint *param_8,string *param_9)\n\n{\n  locale *plVar1;\n  byte bVar2;\n  uint uVar3;\n  char cVar4;\n  int iVar5;\n  byte *pbVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  int unaff_EDI;\n  allocator *paVar9;\n  int local_44;\n  istreambuf_iterator *local_38;\n  __use_cache<std::__moneypunct_cache<wchar_t,false>> local_2a [2];\n  undefined *local_28;\n  undefined *local_24;\n  undefined4 local_20;\n  \n  __x86_get_pc_thunk_di();\n  plVar1 = (locale *)(param_7 + 0x6c);\n  use_facet<std::ctype<wchar_t>>(plVar1);\n  iVar5 = __use_cache<std::__moneypunct_cache<wchar_t,false>>::operator()(local_2a,plVar1);\n  local_28 = &DAT_001e3103 + unaff_EDI;\n  if (*(char *)(iVar5 + 0x10) != '\0') {\n                    /* try { // try from 0040fff4 to 0040fff8 has its CatchHandler @ 00410a73 */\n    std::string::reserve((uint)&local_28);\n  }\n  local_24 = &DAT_001e3103 + unaff_EDI;\n                    /* try { // try from 00410013 to 00410a4b has its CatchHandler @ 00410a6f */\n  std::string::reserve((uint)&local_24);\n  local_44 = 1;\n  local_20 = *(undefined4 *)(iVar5 + 0x3c);\n  paVar9 = (allocator *)0x0;\n  pbVar6 = (byte *)&local_20;\n  bVar2 = (byte)local_20;\n  while( true ) {\n    if (bVar2 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00410078. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      puVar7 = (undefined4 *)\n               (*(code *)(*(int *)(&UNK_0009539b + (uint)*pbVar6 * 4 + unaff_EDI) +\n                         unaff_EDI + 0x1da077))();\n      return puVar7;\n    }\n    if (3 < local_44) break;\n    pbVar6 = (byte *)((int)&local_20 + local_44);\n    bVar2 = *pbVar6;\n    local_44 = local_44 + 1;\n  }\n  if (1 < *(uint *)(local_24 + -0xc)) {\n    paVar9 = (allocator *)0x0;\n    uVar8 = std::string::find_first_not_of((string *)&local_24,'0',0);\n    if (uVar8 != 0) {\n      uVar3 = *(uint *)(local_24 + -0xc);\n      if (uVar8 == 0xffffffff) {\n        uVar8 = uVar3 - 1;\n      }\n      if (uVar3 < uVar8) {\n        uVar8 = uVar3;\n      }\n      std::string::_M_mutate((uint)&local_24,0,uVar8);\n    }\n  }\n  if (*(int *)(local_28 + -0xc) != 0) {\n    std::string::push_back((char)(string *)&local_28);\n    cVar4 = __verify_grouping(*(char **)(iVar5 + 8),*(uint *)(iVar5 + 0xc),(string *)&local_28);\n    if (cVar4 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }\n  std::string::swap(param_9,(string *)&local_24);\n  local_38 = (istreambuf_iterator *)&param_5;\n  cVar4 = istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>::equal\n                    ((istreambuf_iterator<wchar_t,std::char_traits<wchar_t>> *)&param_3,local_38);\n  if (cVar4 != '\0') {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  if (local_24 + -0xc != &DAT_001e30f7 + unaff_EDI) {\n    std::string::_Rep::_M_dispose(paVar9);\n  }\n  if (local_28 + -0xc == &DAT_001e30f7 + unaff_EDI) {\n    return param_1;\n  }\n  std::string::_Rep::_M_dispose(paVar9);\n  return param_1;\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 (ERROR "undefined4 *\nstd::money_get<wchar_t," (binary_expression "undefined4 *\nstd::money_get<wchar_t" (binary_expression "undefined4 *\nstd" identifier * identifier) (ERROR "::money_get" : : identifier) < identifier) ,) (labeled_statement "std::istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>>::\n_M_extract<false>(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5,undefined4 param_6,int param_7,uint *param_8,string *param_9)" statement_identifier (ERROR "::istreambuf_iterator<wchar_t,std:" : : (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<false>(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5,undefined4 param_6,int param_7,uint *param_8,string *param_9)" (binary_expression "char_traits<wchar_t>>>::\n_M_extract<false>(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5,undefined4 param_6,int param_7,uint *param_8,string *param_9)" (binary_expression "char_traits<wchar_t>>>::\n_M_extract<false" (binary_expression "char_traits<wchar_t>>>::\n_M_extract" identifier < (binary_expression "wchar_t>>>::\n_M_extract" identifier >> (ERROR ">::" > : :) identifier)) < false) > (parenthesized_expression "(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5,undefined4 param_6,int param_7,uint *param_8,string *param_9)" ( (comma_expression "undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5,undefined4 param_6,int param_7,uint *param_8,string *param_9" (binary_expression "undefined4 *param_1" identifier * identifier) , (comma_expression "undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5,undefined4 param_6,int param_7,uint *param_8,string *param_9" identifier (ERROR "param_2" identifier) , (comma_expression "undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5,undefined4 param_6,int param_7,uint *param_8,string *param_9" identifier (ERROR "param_3" identifier) , (comma_expression "undefined4 param_4,\n                 undefined4 param_5,undefined4 param_6,int param_7,uint *param_8,string *param_9" identifier (ERROR "param_4" identifier) , (comma_expression "undefined4 param_5,undefined4 param_6,int param_7,uint *param_8,string *param_9" identifier (ERROR "param_5" identifier) , (comma_expression "undefined4 param_6,int param_7,uint *param_8,string *param_9" identifier (ERROR "param_6" identifier) , (ERROR "int" identifier) (comma_expression "param_7,uint *param_8,string *param_9" identifier , (comma_expression "uint *param_8,string *param_9" (binary_expression "uint *param_8" identifier * identifier) , (binary_expression "string *param_9" identifier * identifier))))))))) ))) ;)) (compound_statement "{\n  locale *plVar1;\n  byte bVar2;\n  uint uVar3;\n  char cVar4;\n  int iVar5;\n  byte *pbVar6;\n  undefined4 *puVar7;\n  uint uVar8;\n  int unaff_EDI;\n  allocator *paVar9;\n  int local_44;\n  istreambuf_iterator *local_38;\n  __use_cache<std::__moneypunct_cache<wchar_t,false>> local_2a [2];\n  undefined *local_28;\n  undefined *local_24;\n  undefined4 local_20;\n  \n  __x86_get_pc_thunk_di();\n  plVar1 = (locale *)(param_7 + 0x6c);\n  use_facet<std::ctype<wchar_t>>(plVar1);\n  iVar5 = __use_cache<std::__moneypunct_cache<wchar_t,false>>::operator()(local_2a,plVar1);\n  local_28 = &DAT_001e3103 + unaff_EDI;\n  if (*(char *)(iVar5 + 0x10) != '\0') {\n                    /* try { // try from 0040fff4 to 0040fff8 has its CatchHandler @ 00410a73 */\n    std::string::reserve((uint)&local_28);\n  }\n  local_24 = &DAT_001e3103 + unaff_EDI;\n                    /* try { // try from 00410013 to 00410a4b has its CatchHandler @ 00410a6f */\n  std::string::reserve((uint)&local_24);\n  local_44 = 1;\n  local_20 = *(undefined4 *)(iVar5 + 0x3c);\n  paVar9 = (allocator *)0x0;\n  pbVar6 = (byte *)&local_20;\n  bVar2 = (byte)local_20;\n  while( true ) {\n    if (bVar2 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00410078. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      puVar7 = (undefined4 *)\n               (*(code *)(*(int *)(&UNK_0009539b + (uint)*pbVar6 * 4 + unaff_EDI) +\n                         unaff_EDI + 0x1da077))();\n      return puVar7;\n    }\n    if (3 < local_44) break;\n    pbVar6 = (byte *)((int)&local_20 + local_44);\n    bVar2 = *pbVar6;\n    local_44 = local_44 + 1;\n  }\n  if (1 < *(uint *)(local_24 + -0xc)) {\n    paVar9 = (allocator *)0x0;\n    uVar8 = std::string::find_first_not_of((string *)&local_24,'0',0);\n    if (uVar8 != 0) {\n      uVar3 = *(uint *)(local_24 + -0xc);\n      if (uVar8 == 0xffffffff) {\n        uVar8 = uVar3 - 1;\n      }\n      if (uVar3 < uVar8) {\n        uVar8 = uVar3;\n      }\n      std::string::_M_mutate((uint)&local_24,0,uVar8);\n    }\n  }\n  if (*(int *)(local_28 + -0xc) != 0) {\n    std::string::push_back((char)(string *)&local_28);\n    cVar4 = __verify_grouping(*(char **)(iVar5 + 8),*(uint *)(iVar5 + 0xc),(string *)&local_28);\n    if (cVar4 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }\n  std::string::swap(param_9,(string *)&local_24);\n  local_38 = (istreambuf_iterator *)&param_5;\n  cVar4 = istreambuf_iterator<wchar_t,std::char_traits<wchar_t>>::equal\n                    ((istreambuf_iterator<wchar_t,std::char_traits<wchar_t>> *)&param_3,local_38);\n  if (cVar4 != '\0') {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  if (local_24 + -0xc != &DAT_001e30f7 + unaff_EDI) {\n    std::string::_Rep::_M_dispose(paVar9);\n  }\n  if (local_28 + -0xc == &DAT_001e30f7 + unaff_EDI) {\n    return param_1;\n  }\n  std::string::_Rep::_M_dispose(paVar9);\n  return param_1;\n}" { (declaration "locale *plVar1;" type_identifier (pointer_declarator "*plVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "allocator *paVar9;" type_identifier (pointer_declarator "*paVar9" * identifier) ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "istreambuf_iterator *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (ERROR "__use_cache<std::" (binary_expression "__use_cache<std" identifier < identifier) : :) (expression_statement "__moneypunct_cache<wchar_t,false>> local_2a [2];" (comma_expression "__moneypunct_cache<wchar_t,false>> local_2a [2]" (binary_expression "__moneypunct_cache<wchar_t" identifier < identifier) , (binary_expression "false>> local_2a [2]" false >> (subscript_expression "local_2a [2]" identifier [ number_literal ]))) ;) (declaration "undefined *local_28;" type_identifier (pointer_declarator "*local_28" * identifier) ;) (declaration "undefined *local_24;" type_identifier (pointer_declarator "*local_24" * identifier) ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (expression_statement "__x86_get_pc_thunk_di();" (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( ))) ;) (expression_statement "plVar1 = (locale *)(param_7 + 0x6c);" (assignment_expression "plVar1 = (locale *)(param_7 + 0x6c)" identifier = (cast_expression "(locale *)(param_7 + 0x6c)" ( (type_descriptor "locale *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + 0x6c)" ( (binary_expression "param_7 + 0x6c" identifier + number_literal) )))) ;) (expression_statement "use_facet<std::ctype<wchar_t>>(plVar1);" (binary_expression "use_facet<std::ctype<wchar_t>>(plVar1)" (binary_expression "use_facet<std" identifier < identifier) (ERROR "::ctype" : : identifier) < (binary_expression "wchar_t>>(plVar1)" identifier >> (parenthesized_expression "(plVar1)" ( identifier )))) ;) (expression_statement "iVar5 = __use_cache<std::__moneypunct_cache<wchar_t,false>>::operator()(local_2a,plVar1);" (comma_expression "iVar5 = __use_cache<std::__moneypunct_cache<wchar_t,false>>::operator()(local_2a,plVar1)" (binary_expression "iVar5 = __use_cache<std::__moneypunct_cache<wchar_t" (assignment_expression "iVar5 = __use_cache<std" identifier = (binary_expression "__use_cache<std" identifier < identifier)) (ERROR "::__moneypunct_cache" : : identifier) < identifier) , (binary_expression "false>>::operator()(local_2a,plVar1)" false >> (ERROR "::" : :) (call_expression "operator()(local_2a,plVar1)" (call_expression "operator()" identifier (argument_list "()" ( ))) (argument_list "(local_2a,plVar1)" ( identifier , identifier ))))) ;) (expression_statement "local_28 = &DAT_001e3103 + unaff_EDI;" (assignment_expression "local_28 = &DAT_001e3103 + unaff_EDI" identifier = (binary_expression "&DAT_001e3103 + unaff_EDI" (pointer_expression "&DAT_001e3103" & identifier) + identifier)) ;) (if_statement "if (*(char *)(iVar5 + 0x10) != '\0') {\n                    /* try { // try from 0040fff4 to 0040fff8 has its CatchHandler @ 00410a73 */\n    std::string::reserve((uint)&local_28);\n  }" if (parenthesized_expression "(*(char *)(iVar5 + 0x10) != '\0')" ( (binary_expression "*(char *)(iVar5 + 0x10) != '\0'" (pointer_expression "*(char *)(iVar5 + 0x10)" * (cast_expression "(char *)(iVar5 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* try { // try from 0040fff4 to 0040fff8 has its CatchHandler @ 00410a73 */\n    std::string::reserve((uint)&local_28);\n  }" { comment (labeled_statement "std::string::reserve((uint)&local_28);" statement_identifier : (ERROR ":" :) (labeled_statement "string::reserve((uint)&local_28);" statement_identifier : (ERROR ":" :) (expression_statement "reserve((uint)&local_28);" (call_expression "reserve((uint)&local_28)" identifier (argument_list "((uint)&local_28)" ( (binary_expression "(uint)&local_28" (parenthesized_expression "(uint)" ( identifier )) & identifier) ))) ;))) })) (expression_statement "local_24 = &DAT_001e3103 + unaff_EDI;" (assignment_expression "local_24 = &DAT_001e3103 + unaff_EDI" identifier = (binary_expression "&DAT_001e3103 + unaff_EDI" (pointer_expression "&DAT_001e3103" & identifier) + identifier)) ;) comment (labeled_statement "std::string::reserve((uint)&local_24);" statement_identifier : (ERROR ":" :) (labeled_statement "string::reserve((uint)&local_24);" statement_identifier : (ERROR ":" :) (expression_statement "reserve((uint)&local_24);" (call_expression "reserve((uint)&local_24)" identifier (argument_list "((uint)&local_24)" ( (binary_expression "(uint)&local_24" (parenthesized_expression "(uint)" ( identifier )) & identifier) ))) ;))) (expression_statement "local_44 = 1;" (assignment_expression "local_44 = 1" identifier = number_literal) ;) (expression_statement "local_20 = *(undefined4 *)(iVar5 + 0x3c);" (assignment_expression "local_20 = *(undefined4 *)(iVar5 + 0x3c)" identifier = (pointer_expression "*(undefined4 *)(iVar5 + 0x3c)" * (cast_expression "(undefined4 *)(iVar5 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x3c)" ( (binary_expression "iVar5 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "paVar9 = (allocator *)0x0;" (assignment_expression "paVar9 = (allocator *)0x0" identifier = (cast_expression "(allocator *)0x0" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar6 = (byte *)&local_20;" (assignment_expression "pbVar6 = (byte *)&local_20" identifier = (cast_expression "(byte *)&local_20" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_20" & identifier))) ;) (expression_statement "bVar2 = (byte)local_20;" (assignment_expression "bVar2 = (byte)local_20" identifier = (cast_expression "(byte)local_20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (while_statement "while( true ) {\n    if (bVar2 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00410078. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      puVar7 = (undefined4 *)\n               (*(code *)(*(int *)(&UNK_0009539b + (uint)*pbVar6 * 4 + unaff_EDI) +\n                         unaff_EDI + 0x1da077))();\n      return puVar7;\n    }\n    if (3 < local_44) break;\n    pbVar6 = (byte *)((int)&local_20 + local_44);\n    bVar2 = *pbVar6;\n    local_44 = local_44 + 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (bVar2 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00410078. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      puVar7 = (undefined4 *)\n               (*(code *)(*(int *)(&UNK_0009539b + (uint)*pbVar6 * 4 + unaff_EDI) +\n                         unaff_EDI + 0x1da077))();\n      return puVar7;\n    }\n    if (3 < local_44) break;\n    pbVar6 = (byte *)((int)&local_20 + local_44);\n    bVar2 = *pbVar6;\n    local_44 = local_44 + 1;\n  }" { (if_statement "if (bVar2 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00410078. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      puVar7 = (undefined4 *)\n               (*(code *)(*(int *)(&UNK_0009539b + (uint)*pbVar6 * 4 + unaff_EDI) +\n                         unaff_EDI + 0x1da077))();\n      return puVar7;\n    }" if (parenthesized_expression "(bVar2 < 5)" ( (binary_expression "bVar2 < 5" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x00410078. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      puVar7 = (undefined4 *)\n               (*(code *)(*(int *)(&UNK_0009539b + (uint)*pbVar6 * 4 + unaff_EDI) +\n                         unaff_EDI + 0x1da077))();\n      return puVar7;\n    }" { comment comment (expression_statement "puVar7 = (undefined4 *)\n               (*(code *)(*(int *)(&UNK_0009539b + (uint)*pbVar6 * 4 + unaff_EDI) +\n                         unaff_EDI + 0x1da077))();" (assignment_expression "puVar7 = (undefined4 *)\n               (*(code *)(*(int *)(&UNK_0009539b + (uint)*pbVar6 * 4 + unaff_EDI) +\n                         unaff_EDI + 0x1da077))()" identifier = (cast_expression "(undefined4 *)\n               (*(code *)(*(int *)(&UNK_0009539b + (uint)*pbVar6 * 4 + unaff_EDI) +\n                         unaff_EDI + 0x1da077))()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(*(int *)(&UNK_0009539b + (uint)*pbVar6 * 4 + unaff_EDI) +\n                         unaff_EDI + 0x1da077))()" (parenthesized_expression "(*(code *)(*(int *)(&UNK_0009539b + (uint)*pbVar6 * 4 + unaff_EDI) +\n                         unaff_EDI + 0x1da077))" ( (pointer_expression "*(code *)(*(int *)(&UNK_0009539b + (uint)*pbVar6 * 4 + unaff_EDI) +\n                         unaff_EDI + 0x1da077)" * (cast_expression "(code *)(*(int *)(&UNK_0009539b + (uint)*pbVar6 * 4 + unaff_EDI) +\n                         unaff_EDI + 0x1da077)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(&UNK_0009539b + (uint)*pbVar6 * 4 + unaff_EDI) +\n                         unaff_EDI + 0x1da077)" ( (binary_expression "*(int *)(&UNK_0009539b + (uint)*pbVar6 * 4 + unaff_EDI) +\n                         unaff_EDI + 0x1da077" (binary_expression "*(int *)(&UNK_0009539b + (uint)*pbVar6 * 4 + unaff_EDI) +\n                         unaff_EDI" (pointer_expression "*(int *)(&UNK_0009539b + (uint)*pbVar6 * 4 + unaff_EDI)" * (cast_expression "(int *)(&UNK_0009539b + (uint)*pbVar6 * 4 + unaff_EDI)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&UNK_0009539b + (uint)*pbVar6 * 4 + unaff_EDI)" ( (binary_expression "&UNK_0009539b + (uint)*pbVar6 * 4 + unaff_EDI" (binary_expression "&UNK_0009539b + (uint)*pbVar6 * 4" (pointer_expression "&UNK_0009539b" & identifier) + (binary_expression "(uint)*pbVar6 * 4" (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) + identifier) )))) + identifier) + number_literal) )))) )) (argument_list "()" ( ))))) ;) (return_statement "return puVar7;" return identifier ;) })) (if_statement "if (3 < local_44) break;" if (parenthesized_expression "(3 < local_44)" ( (binary_expression "3 < local_44" number_literal < identifier) )) (break_statement "break;" break ;)) (expression_statement "pbVar6 = (byte *)((int)&local_20 + local_44);" (assignment_expression "pbVar6 = (byte *)((int)&local_20 + local_44)" identifier = (cast_expression "(byte *)((int)&local_20 + local_44)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_20 + local_44)" ( (binary_expression "(int)&local_20 + local_44" (cast_expression "(int)&local_20" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_20" & identifier)) + identifier) )))) ;) (expression_statement "bVar2 = *pbVar6;" (assignment_expression "bVar2 = *pbVar6" identifier = (pointer_expression "*pbVar6" * identifier)) ;) (expression_statement "local_44 = local_44 + 1;" (assignment_expression "local_44 = local_44 + 1" identifier = (binary_expression "local_44 + 1" identifier + number_literal)) ;) })) (if_statement "if (1 < *(uint *)(local_24 + -0xc)) {\n    paVar9 = (allocator *)0x0;\n    uVar8 = std::string::find_first_not_of((string *)&local_24,'0',0);\n    if (uVar8 != 0) {\n      uVar3 = *(uint *)(local_24 + -0xc);\n      if (uVar8 == 0xffffffff) {\n        uVar8 = uVar3 - 1;\n      }\n      if (uVar3 < uVar8) {\n        uVar8 = uVar3;\n      }\n      std::string::_M_mutate((uint)&local_24,0,uVar8);\n    }\n  }" if (parenthesized_expression "(1 < *(uint *)(local_24 + -0xc))" ( (binary_expression "1 < *(uint *)(local_24 + -0xc)" number_literal < (pointer_expression "*(uint *)(local_24 + -0xc)" * (cast_expression "(uint *)(local_24 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + -0xc)" ( (binary_expression "local_24 + -0xc" identifier + number_literal) ))))) )) (compound_statement "{\n    paVar9 = (allocator *)0x0;\n    uVar8 = std::string::find_first_not_of((string *)&local_24,'0',0);\n    if (uVar8 != 0) {\n      uVar3 = *(uint *)(local_24 + -0xc);\n      if (uVar8 == 0xffffffff) {\n        uVar8 = uVar3 - 1;\n      }\n      if (uVar3 < uVar8) {\n        uVar8 = uVar3;\n      }\n      std::string::_M_mutate((uint)&local_24,0,uVar8);\n    }\n  }" { (expression_statement "paVar9 = (allocator *)0x0;" (assignment_expression "paVar9 = (allocator *)0x0" identifier = (cast_expression "(allocator *)0x0" ( (type_descriptor "allocator *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (ERROR "uVar8 = std::" (assignment_expression "uVar8 = std" identifier = identifier) : :) (labeled_statement "string::find_first_not_of((string *)&local_24,'0',0);" statement_identifier : (ERROR ":" :) (expression_statement "find_first_not_of((string *)&local_24,'0',0);" (call_expression "find_first_not_of((string *)&local_24,'0',0)" identifier (argument_list "((string *)&local_24,'0',0)" ( (cast_expression "(string *)&local_24" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_24" & identifier)) , (char_literal "'0'" ' character ') , number_literal ))) ;)) (if_statement "if (uVar8 != 0) {\n      uVar3 = *(uint *)(local_24 + -0xc);\n      if (uVar8 == 0xffffffff) {\n        uVar8 = uVar3 - 1;\n      }\n      if (uVar3 < uVar8) {\n        uVar8 = uVar3;\n      }\n      std::string::_M_mutate((uint)&local_24,0,uVar8);\n    }" if (parenthesized_expression "(uVar8 != 0)" ( (binary_expression "uVar8 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar3 = *(uint *)(local_24 + -0xc);\n      if (uVar8 == 0xffffffff) {\n        uVar8 = uVar3 - 1;\n      }\n      if (uVar3 < uVar8) {\n        uVar8 = uVar3;\n      }\n      std::string::_M_mutate((uint)&local_24,0,uVar8);\n    }" { (expression_statement "uVar3 = *(uint *)(local_24 + -0xc);" (assignment_expression "uVar3 = *(uint *)(local_24 + -0xc)" identifier = (pointer_expression "*(uint *)(local_24 + -0xc)" * (cast_expression "(uint *)(local_24 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + -0xc)" ( (binary_expression "local_24 + -0xc" identifier + number_literal) ))))) ;) (if_statement "if (uVar8 == 0xffffffff) {\n        uVar8 = uVar3 - 1;\n      }" if (parenthesized_expression "(uVar8 == 0xffffffff)" ( (binary_expression "uVar8 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n        uVar8 = uVar3 - 1;\n      }" { (expression_statement "uVar8 = uVar3 - 1;" (assignment_expression "uVar8 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ;) })) (if_statement "if (uVar3 < uVar8) {\n        uVar8 = uVar3;\n      }" if (parenthesized_expression "(uVar3 < uVar8)" ( (binary_expression "uVar3 < uVar8" identifier < identifier) )) (compound_statement "{\n        uVar8 = uVar3;\n      }" { (expression_statement "uVar8 = uVar3;" (assignment_expression "uVar8 = uVar3" identifier = identifier) ;) })) (labeled_statement "std::string::_M_mutate((uint)&local_24,0,uVar8);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_mutate((uint)&local_24,0,uVar8);" statement_identifier : (ERROR ":" :) (expression_statement "_M_mutate((uint)&local_24,0,uVar8);" (call_expression "_M_mutate((uint)&local_24,0,uVar8)" identifier (argument_list "((uint)&local_24,0,uVar8)" ( (binary_expression "(uint)&local_24" (parenthesized_expression "(uint)" ( identifier )) & identifier) , number_literal , identifier ))) ;))) })) })) (if_statement "if (*(int *)(local_28 + -0xc) != 0) {\n    std::string::push_back((char)(string *)&local_28);\n    cVar4 = __verify_grouping(*(char **)(iVar5 + 8),*(uint *)(iVar5 + 0xc),(string *)&local_28);\n    if (cVar4 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }" if (parenthesized_expression "(*(int *)(local_28 + -0xc) != 0)" ( (binary_expression "*(int *)(local_28 + -0xc) != 0" (pointer_expression "*(int *)(local_28 + -0xc)" * (cast_expression "(int *)(local_28 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    std::string::push_back((char)(string *)&local_28);\n    cVar4 = __verify_grouping(*(char **)(iVar5 + 8),*(uint *)(iVar5 + 0xc),(string *)&local_28);\n    if (cVar4 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }" { (labeled_statement "std::string::push_back((char)(string *)&local_28);" statement_identifier : (ERROR ":" :) (labeled_statement "string::push_back((char)(string *)&local_28);" statement_identifier : (ERROR ":" :) (expression_statement "push_back((char)(string *)&local_28);" (call_expression "push_back((char)(string *)&local_28)" identifier (argument_list "((char)(string *)&local_28)" ( (cast_expression "(char)(string *)&local_28" ( (type_descriptor "char" primitive_type) ) (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier))) ))) ;))) (expression_statement "cVar4 = __verify_grouping(*(char **)(iVar5 + 8),*(uint *)(iVar5 + 0xc),(string *)&local_28);" (assignment_expression "cVar4 = __verify_grouping(*(char **)(iVar5 + 8),*(uint *)(iVar5 + 0xc),(string *)&local_28)" identifier = (call_expression "__verify_grouping(*(char **)(iVar5 + 8),*(uint *)(iVar5 + 0xc),(string *)&local_28)" identifier (argument_list "(*(char **)(iVar5 + 8),*(uint *)(iVar5 + 0xc),(string *)&local_28)" ( (pointer_expression "*(char **)(iVar5 + 8)" * (cast_expression "(char **)(iVar5 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 8)" ( (binary_expression "iVar5 + 8" identifier + number_literal) )))) , (pointer_expression "*(uint *)(iVar5 + 0xc)" * (cast_expression "(uint *)(iVar5 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) )))) , (cast_expression "(string *)&local_28" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_28" & identifier)) )))) ;) (if_statement "if (cVar4 == '\0') {\n      *param_8 = *param_8 | 4;\n    }" if (parenthesized_expression "(cVar4 == '\0')" ( (binary_expression "cVar4 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *param_8 = *param_8 | 4;\n    }" { (expression_statement "*param_8 = *param_8 | 4;" (assignment_expression "*param_8 = *param_8 | 4" (pointer_expression "*param_8" * identifier) = (binary_expression "*param_8 | 4" (pointer_expression "*param_8" * identifier) | number_literal)) ;) })) })) (labeled_statement "std::string::swap(param_9,(string *)&local_24);" statement_identifier : (ERROR ":" :) (labeled_statement "string::swap(param_9,(string *)&local_24);" statement_identifier : (ERROR ":" :) (expression_statement "swap(param_9,(string *)&local_24);" (call_expression "swap(param_9,(string *)&local_24)" identifier (argument_list "(param_9,(string *)&local_24)" ( identifier , (cast_expression "(string *)&local_24" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_24" & identifier)) ))) ;))) (expression_statement "local_38 = (istreambuf_iterator *)&param_5;" (assignment_expression "local_38 = (istreambuf_iterator *)&param_5" identifier = (cast_expression "(istreambuf_iterator *)&param_5" ( (type_descriptor "istreambuf_iterator *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&param_5" & identifier))) ;) (ERROR "cVar4 = istreambuf_iterator<wchar_t,std::" (comma_expression "cVar4 = istreambuf_iterator<wchar_t,std" (assignment_expression "cVar4 = istreambuf_iterator<wchar_t" identifier = (binary_expression "istreambuf_iterator<wchar_t" identifier < identifier)) , identifier) : :) (expression_statement "char_traits<wchar_t>>::equal\n                    ((istreambuf_iterator<wchar_t,std::char_traits<wchar_t>> *)&param_3,local_38);" (binary_expression "char_traits<wchar_t>>::equal\n                    ((istreambuf_iterator<wchar_t,std::char_traits<wchar_t>> *)&param_3,local_38)" identifier < (binary_expression "wchar_t>>::equal\n                    ((istreambuf_iterator<wchar_t,std::char_traits<wchar_t>> *)&param_3,local_38)" identifier >> (ERROR "::" : :) (call_expression "equal\n                    ((istreambuf_iterator<wchar_t,std::char_traits<wchar_t>> *)&param_3,local_38)" identifier (argument_list "((istreambuf_iterator<wchar_t,std::char_traits<wchar_t>> *)&param_3,local_38)" ( (binary_expression "(istreambuf_iterator<wchar_t,std::char_traits<wchar_t>> *)&param_3" (parenthesized_expression "(istreambuf_iterator<wchar_t,std::char_traits<wchar_t>> *)" ( (ERROR "istreambuf_iterator<wchar_t,std::" (comma_expression "istreambuf_iterator<wchar_t,std" (binary_expression "istreambuf_iterator<wchar_t" identifier < identifier) , identifier) : :) (binary_expression "char_traits<wchar_t>> *" identifier < (binary_expression "wchar_t>> *" identifier >> (pointer_expression "*" * identifier))) )) & identifier) , identifier ))))) ;) (if_statement "if (cVar4 != '\0') {\n    *param_8 = *param_8 | 2;\n  }" if (parenthesized_expression "(cVar4 != '\0')" ( (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    *param_8 = *param_8 | 2;\n  }" { (expression_statement "*param_8 = *param_8 | 2;" (assignment_expression "*param_8 = *param_8 | 2" (pointer_expression "*param_8" * identifier) = (binary_expression "*param_8 | 2" (pointer_expression "*param_8" * identifier) | number_literal)) ;) })) (expression_statement "*param_1 = param_3;" (assignment_expression "*param_1 = param_3" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = param_4;" (assignment_expression "param_1[1] = param_4" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (local_24 + -0xc != &DAT_001e30f7 + unaff_EDI) {\n    std::string::_Rep::_M_dispose(paVar9);\n  }" if (parenthesized_expression "(local_24 + -0xc != &DAT_001e30f7 + unaff_EDI)" ( (binary_expression "local_24 + -0xc != &DAT_001e30f7 + unaff_EDI" (binary_expression "local_24 + -0xc" identifier + number_literal) != (binary_expression "&DAT_001e30f7 + unaff_EDI" (pointer_expression "&DAT_001e30f7" & identifier) + identifier)) )) (compound_statement "{\n    std::string::_Rep::_M_dispose(paVar9);\n  }" { (labeled_statement "std::string::_Rep::_M_dispose(paVar9);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_Rep::_M_dispose(paVar9);" statement_identifier : (ERROR ":" :) (labeled_statement "_Rep::_M_dispose(paVar9);" statement_identifier : (ERROR ":" :) (expression_statement "_M_dispose(paVar9);" (call_expression "_M_dispose(paVar9)" identifier (argument_list "(paVar9)" ( identifier ))) ;)))) })) (if_statement "if (local_28 + -0xc == &DAT_001e30f7 + unaff_EDI) {\n    return param_1;\n  }" if (parenthesized_expression "(local_28 + -0xc == &DAT_001e30f7 + unaff_EDI)" ( (binary_expression "local_28 + -0xc == &DAT_001e30f7 + unaff_EDI" (binary_expression "local_28 + -0xc" identifier + number_literal) == (binary_expression "&DAT_001e30f7 + unaff_EDI" (pointer_expression "&DAT_001e30f7" & identifier) + identifier)) )) (compound_statement "{\n    return param_1;\n  }" { (return_statement "return param_1;" return identifier ;) })) (labeled_statement "std::string::_Rep::_M_dispose(paVar9);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_Rep::_M_dispose(paVar9);" statement_identifier : (ERROR ":" :) (labeled_statement "_Rep::_M_dispose(paVar9);" statement_identifier : (ERROR ":" :) (expression_statement "_M_dispose(paVar9);" (call_expression "_M_dispose(paVar9)" identifier (argument_list "(paVar9)" ( identifier ))) ;)))) (return_statement "return param_1;" return identifier ;) }))
(translation_unit "undefined4 *\nFUN_0040ff80(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int param_7,uint *param_8,undefined4 param_9)\n\n{\n  byte bVar1;\n  uint uVar2;\n  char cVar3;\n  int iVar4;\n  byte *pbVar5;\n  undefined4 *puVar6;\n  uint uVar7;\n  int unaff_EDI;\n  int local_44;\n  undefined1 *local_38;\n  undefined1 local_2a [2];\n  undefined *local_28;\n  undefined *local_24;\n  undefined4 local_20;\n  \n  FUN_00074f0a();\n  iVar4 = param_7 + 0x6c;\n  FUN_004034a0(iVar4);\n  iVar4 = FUN_00406c30(local_2a,iVar4);\n  local_28 = &DAT_001e3103 + unaff_EDI;\n  if (*(char *)(iVar4 + 0x10) != '\0') {\n                    \n    FUN_003e6d30(&local_28,0x20);\n  }\n  local_24 = &DAT_001e3103 + unaff_EDI;\n                    \n  FUN_003e6d30(&local_24,0x20);\n  local_44 = 1;\n  local_20 = *(undefined4 *)(iVar4 + 0x3c);\n  pbVar5 = (byte *)&local_20;\n  bVar1 = (byte)local_20;\n  while( true ) {\n    if (bVar1 < 5) {\n                    \n                    \n      puVar6 = (undefined4 *)\n               (*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ();\n      return puVar6;\n    }\n    if (3 < local_44) break;\n    pbVar5 = (byte *)((int)&local_20 + local_44);\n    bVar1 = *pbVar5;\n    local_44 = local_44 + 1;\n  }\n  if ((1 < *(uint *)(local_24 + -0xc)) && (uVar7 = FUN_003e5550(&local_24,0x30,0), uVar7 != 0)) {\n    uVar2 = *(uint *)(local_24 + -0xc);\n    if (uVar7 == 0xffffffff) {\n      uVar7 = uVar2 - 1;\n    }\n    if (uVar2 < uVar7) {\n      uVar7 = uVar2;\n    }\n    FUN_003e5e60(&local_24,0,uVar7,0);\n  }\n  if (*(int *)(local_28 + -0xc) != 0) {\n    FUN_003e7350(&local_28,0);\n    cVar3 = FUN_003fe250(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0xc),&local_28);\n    if (cVar3 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }\n  FUN_003e4ea0(param_9,&local_24);\n  local_38 = (undefined1 *)&param_5;\n  cVar3 = FUN_00408430(&param_3,local_38);\n  if (cVar3 != '\0') {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  if (local_24 + -0xc != (undefined *)(unaff_EDI + 0x1e30f7)) {\n    FUN_00400820();\n  }\n  if (local_28 + -0xc == (undefined *)(unaff_EDI + 0x1e30f7)) {\n    return param_1;\n  }\n  FUN_00400820();\n  return param_1;\n}\n\n" (function_definition "undefined4 *\nFUN_0040ff80(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int param_7,uint *param_8,undefined4 param_9)\n\n{\n  byte bVar1;\n  uint uVar2;\n  char cVar3;\n  int iVar4;\n  byte *pbVar5;\n  undefined4 *puVar6;\n  uint uVar7;\n  int unaff_EDI;\n  int local_44;\n  undefined1 *local_38;\n  undefined1 local_2a [2];\n  undefined *local_28;\n  undefined *local_24;\n  undefined4 local_20;\n  \n  FUN_00074f0a();\n  iVar4 = param_7 + 0x6c;\n  FUN_004034a0(iVar4);\n  iVar4 = FUN_00406c30(local_2a,iVar4);\n  local_28 = &DAT_001e3103 + unaff_EDI;\n  if (*(char *)(iVar4 + 0x10) != '\0') {\n                    \n    FUN_003e6d30(&local_28,0x20);\n  }\n  local_24 = &DAT_001e3103 + unaff_EDI;\n                    \n  FUN_003e6d30(&local_24,0x20);\n  local_44 = 1;\n  local_20 = *(undefined4 *)(iVar4 + 0x3c);\n  pbVar5 = (byte *)&local_20;\n  bVar1 = (byte)local_20;\n  while( true ) {\n    if (bVar1 < 5) {\n                    \n                    \n      puVar6 = (undefined4 *)\n               (*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ();\n      return puVar6;\n    }\n    if (3 < local_44) break;\n    pbVar5 = (byte *)((int)&local_20 + local_44);\n    bVar1 = *pbVar5;\n    local_44 = local_44 + 1;\n  }\n  if ((1 < *(uint *)(local_24 + -0xc)) && (uVar7 = FUN_003e5550(&local_24,0x30,0), uVar7 != 0)) {\n    uVar2 = *(uint *)(local_24 + -0xc);\n    if (uVar7 == 0xffffffff) {\n      uVar7 = uVar2 - 1;\n    }\n    if (uVar2 < uVar7) {\n      uVar7 = uVar2;\n    }\n    FUN_003e5e60(&local_24,0,uVar7,0);\n  }\n  if (*(int *)(local_28 + -0xc) != 0) {\n    FUN_003e7350(&local_28,0);\n    cVar3 = FUN_003fe250(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0xc),&local_28);\n    if (cVar3 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }\n  FUN_003e4ea0(param_9,&local_24);\n  local_38 = (undefined1 *)&param_5;\n  cVar3 = FUN_00408430(&param_3,local_38);\n  if (cVar3 != '\0') {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  if (local_24 + -0xc != (undefined *)(unaff_EDI + 0x1e30f7)) {\n    FUN_00400820();\n  }\n  if (local_28 + -0xc == (undefined *)(unaff_EDI + 0x1e30f7)) {\n    return param_1;\n  }\n  FUN_00400820();\n  return param_1;\n}" type_identifier (pointer_declarator "*\nFUN_0040ff80(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int param_7,uint *param_8,undefined4 param_9)" * (function_declarator "FUN_0040ff80(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int param_7,uint *param_8,undefined4 param_9)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int param_7,uint *param_8,undefined4 param_9)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "int param_7" primitive_type identifier) , (parameter_declaration "uint *param_8" type_identifier (pointer_declarator "*param_8" * identifier)) , (parameter_declaration "undefined4 param_9" type_identifier identifier) )))) (compound_statement "{\n  byte bVar1;\n  uint uVar2;\n  char cVar3;\n  int iVar4;\n  byte *pbVar5;\n  undefined4 *puVar6;\n  uint uVar7;\n  int unaff_EDI;\n  int local_44;\n  undefined1 *local_38;\n  undefined1 local_2a [2];\n  undefined *local_28;\n  undefined *local_24;\n  undefined4 local_20;\n  \n  FUN_00074f0a();\n  iVar4 = param_7 + 0x6c;\n  FUN_004034a0(iVar4);\n  iVar4 = FUN_00406c30(local_2a,iVar4);\n  local_28 = &DAT_001e3103 + unaff_EDI;\n  if (*(char *)(iVar4 + 0x10) != '\0') {\n                    \n    FUN_003e6d30(&local_28,0x20);\n  }\n  local_24 = &DAT_001e3103 + unaff_EDI;\n                    \n  FUN_003e6d30(&local_24,0x20);\n  local_44 = 1;\n  local_20 = *(undefined4 *)(iVar4 + 0x3c);\n  pbVar5 = (byte *)&local_20;\n  bVar1 = (byte)local_20;\n  while( true ) {\n    if (bVar1 < 5) {\n                    \n                    \n      puVar6 = (undefined4 *)\n               (*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ();\n      return puVar6;\n    }\n    if (3 < local_44) break;\n    pbVar5 = (byte *)((int)&local_20 + local_44);\n    bVar1 = *pbVar5;\n    local_44 = local_44 + 1;\n  }\n  if ((1 < *(uint *)(local_24 + -0xc)) && (uVar7 = FUN_003e5550(&local_24,0x30,0), uVar7 != 0)) {\n    uVar2 = *(uint *)(local_24 + -0xc);\n    if (uVar7 == 0xffffffff) {\n      uVar7 = uVar2 - 1;\n    }\n    if (uVar2 < uVar7) {\n      uVar7 = uVar2;\n    }\n    FUN_003e5e60(&local_24,0,uVar7,0);\n  }\n  if (*(int *)(local_28 + -0xc) != 0) {\n    FUN_003e7350(&local_28,0);\n    cVar3 = FUN_003fe250(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0xc),&local_28);\n    if (cVar3 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }\n  FUN_003e4ea0(param_9,&local_24);\n  local_38 = (undefined1 *)&param_5;\n  cVar3 = FUN_00408430(&param_3,local_38);\n  if (cVar3 != '\0') {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  if (local_24 + -0xc != (undefined *)(unaff_EDI + 0x1e30f7)) {\n    FUN_00400820();\n  }\n  if (local_28 + -0xc == (undefined *)(unaff_EDI + 0x1e30f7)) {\n    return param_1;\n  }\n  FUN_00400820();\n  return param_1;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "undefined1 *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "undefined1 local_2a [2];" type_identifier (array_declarator "local_2a [2]" identifier [ number_literal ]) ;) (declaration "undefined *local_28;" type_identifier (pointer_declarator "*local_28" * identifier) ;) (declaration "undefined *local_24;" type_identifier (pointer_declarator "*local_24" * identifier) ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (expression_statement "FUN_00074f0a();" (call_expression "FUN_00074f0a()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar4 = param_7 + 0x6c;" (assignment_expression "iVar4 = param_7 + 0x6c" identifier = (binary_expression "param_7 + 0x6c" identifier + number_literal)) ;) (expression_statement "FUN_004034a0(iVar4);" (call_expression "FUN_004034a0(iVar4)" identifier (argument_list "(iVar4)" ( identifier ))) ;) (expression_statement "iVar4 = FUN_00406c30(local_2a,iVar4);" (assignment_expression "iVar4 = FUN_00406c30(local_2a,iVar4)" identifier = (call_expression "FUN_00406c30(local_2a,iVar4)" identifier (argument_list "(local_2a,iVar4)" ( identifier , identifier )))) ;) (expression_statement "local_28 = &DAT_001e3103 + unaff_EDI;" (assignment_expression "local_28 = &DAT_001e3103 + unaff_EDI" identifier = (binary_expression "&DAT_001e3103 + unaff_EDI" (pointer_expression "&DAT_001e3103" & identifier) + identifier)) ;) (if_statement "if (*(char *)(iVar4 + 0x10) != '\0') {\n                    \n    FUN_003e6d30(&local_28,0x20);\n  }" if (parenthesized_expression "(*(char *)(iVar4 + 0x10) != '\0')" ( (binary_expression "*(char *)(iVar4 + 0x10) != '\0'" (pointer_expression "*(char *)(iVar4 + 0x10)" * (cast_expression "(char *)(iVar4 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x10)" ( (binary_expression "iVar4 + 0x10" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    \n    FUN_003e6d30(&local_28,0x20);\n  }" { (expression_statement "FUN_003e6d30(&local_28,0x20);" (call_expression "FUN_003e6d30(&local_28,0x20)" identifier (argument_list "(&local_28,0x20)" ( (pointer_expression "&local_28" & identifier) , number_literal ))) ;) })) (expression_statement "local_24 = &DAT_001e3103 + unaff_EDI;" (assignment_expression "local_24 = &DAT_001e3103 + unaff_EDI" identifier = (binary_expression "&DAT_001e3103 + unaff_EDI" (pointer_expression "&DAT_001e3103" & identifier) + identifier)) ;) (expression_statement "FUN_003e6d30(&local_24,0x20);" (call_expression "FUN_003e6d30(&local_24,0x20)" identifier (argument_list "(&local_24,0x20)" ( (pointer_expression "&local_24" & identifier) , number_literal ))) ;) (expression_statement "local_44 = 1;" (assignment_expression "local_44 = 1" identifier = number_literal) ;) (expression_statement "local_20 = *(undefined4 *)(iVar4 + 0x3c);" (assignment_expression "local_20 = *(undefined4 *)(iVar4 + 0x3c)" identifier = (pointer_expression "*(undefined4 *)(iVar4 + 0x3c)" * (cast_expression "(undefined4 *)(iVar4 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x3c)" ( (binary_expression "iVar4 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "pbVar5 = (byte *)&local_20;" (assignment_expression "pbVar5 = (byte *)&local_20" identifier = (cast_expression "(byte *)&local_20" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_20" & identifier))) ;) (expression_statement "bVar1 = (byte)local_20;" (assignment_expression "bVar1 = (byte)local_20" identifier = (cast_expression "(byte)local_20" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (while_statement "while( true ) {\n    if (bVar1 < 5) {\n                    \n                    \n      puVar6 = (undefined4 *)\n               (*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ();\n      return puVar6;\n    }\n    if (3 < local_44) break;\n    pbVar5 = (byte *)((int)&local_20 + local_44);\n    bVar1 = *pbVar5;\n    local_44 = local_44 + 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (bVar1 < 5) {\n                    \n                    \n      puVar6 = (undefined4 *)\n               (*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ();\n      return puVar6;\n    }\n    if (3 < local_44) break;\n    pbVar5 = (byte *)((int)&local_20 + local_44);\n    bVar1 = *pbVar5;\n    local_44 = local_44 + 1;\n  }" { (if_statement "if (bVar1 < 5) {\n                    \n                    \n      puVar6 = (undefined4 *)\n               (*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ();\n      return puVar6;\n    }" if (parenthesized_expression "(bVar1 < 5)" ( (binary_expression "bVar1 < 5" identifier < number_literal) )) (compound_statement "{\n                    \n                    \n      puVar6 = (undefined4 *)\n               (*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ();\n      return puVar6;\n    }" { (expression_statement "puVar6 = (undefined4 *)\n               (*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ();" (assignment_expression "puVar6 = (undefined4 *)\n               (*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ()" identifier = (cast_expression "(undefined4 *)\n               (*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ()" (parenthesized_expression "(*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))" ( (pointer_expression "*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077)" * (cast_expression "(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077)" ( (binary_expression "*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077" (binary_expression "*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI" (pointer_expression "*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4)" * (cast_expression "(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4)" ( (binary_expression "unaff_EDI + 0x9539b + (uint)*pbVar5 * 4" (binary_expression "unaff_EDI + 0x9539b" identifier + number_literal) + (binary_expression "(uint)*pbVar5 * 4" (binary_expression "(uint)*pbVar5" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) )))) + identifier) + number_literal) )))) )) (argument_list "()" ( ))))) ;) (return_statement "return puVar6;" return identifier ;) })) (if_statement "if (3 < local_44) break;" if (parenthesized_expression "(3 < local_44)" ( (binary_expression "3 < local_44" number_literal < identifier) )) (break_statement "break;" break ;)) (expression_statement "pbVar5 = (byte *)((int)&local_20 + local_44);" (assignment_expression "pbVar5 = (byte *)((int)&local_20 + local_44)" identifier = (cast_expression "(byte *)((int)&local_20 + local_44)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_20 + local_44)" ( (binary_expression "(int)&local_20 + local_44" (cast_expression "(int)&local_20" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_20" & identifier)) + identifier) )))) ;) (expression_statement "bVar1 = *pbVar5;" (assignment_expression "bVar1 = *pbVar5" identifier = (pointer_expression "*pbVar5" * identifier)) ;) (expression_statement "local_44 = local_44 + 1;" (assignment_expression "local_44 = local_44 + 1" identifier = (binary_expression "local_44 + 1" identifier + number_literal)) ;) })) (if_statement "if ((1 < *(uint *)(local_24 + -0xc)) && (uVar7 = FUN_003e5550(&local_24,0x30,0), uVar7 != 0)) {\n    uVar2 = *(uint *)(local_24 + -0xc);\n    if (uVar7 == 0xffffffff) {\n      uVar7 = uVar2 - 1;\n    }\n    if (uVar2 < uVar7) {\n      uVar7 = uVar2;\n    }\n    FUN_003e5e60(&local_24,0,uVar7,0);\n  }" if (parenthesized_expression "((1 < *(uint *)(local_24 + -0xc)) && (uVar7 = FUN_003e5550(&local_24,0x30,0), uVar7 != 0))" ( (binary_expression "(1 < *(uint *)(local_24 + -0xc)) && (uVar7 = FUN_003e5550(&local_24,0x30,0), uVar7 != 0)" (parenthesized_expression "(1 < *(uint *)(local_24 + -0xc))" ( (binary_expression "1 < *(uint *)(local_24 + -0xc)" number_literal < (pointer_expression "*(uint *)(local_24 + -0xc)" * (cast_expression "(uint *)(local_24 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + -0xc)" ( (binary_expression "local_24 + -0xc" identifier + number_literal) ))))) )) && (parenthesized_expression "(uVar7 = FUN_003e5550(&local_24,0x30,0), uVar7 != 0)" ( (comma_expression "uVar7 = FUN_003e5550(&local_24,0x30,0), uVar7 != 0" (assignment_expression "uVar7 = FUN_003e5550(&local_24,0x30,0)" identifier = (call_expression "FUN_003e5550(&local_24,0x30,0)" identifier (argument_list "(&local_24,0x30,0)" ( (pointer_expression "&local_24" & identifier) , number_literal , number_literal )))) , (binary_expression "uVar7 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    uVar2 = *(uint *)(local_24 + -0xc);\n    if (uVar7 == 0xffffffff) {\n      uVar7 = uVar2 - 1;\n    }\n    if (uVar2 < uVar7) {\n      uVar7 = uVar2;\n    }\n    FUN_003e5e60(&local_24,0,uVar7,0);\n  }" { (expression_statement "uVar2 = *(uint *)(local_24 + -0xc);" (assignment_expression "uVar2 = *(uint *)(local_24 + -0xc)" identifier = (pointer_expression "*(uint *)(local_24 + -0xc)" * (cast_expression "(uint *)(local_24 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + -0xc)" ( (binary_expression "local_24 + -0xc" identifier + number_literal) ))))) ;) (if_statement "if (uVar7 == 0xffffffff) {\n      uVar7 = uVar2 - 1;\n    }" if (parenthesized_expression "(uVar7 == 0xffffffff)" ( (binary_expression "uVar7 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n      uVar7 = uVar2 - 1;\n    }" { (expression_statement "uVar7 = uVar2 - 1;" (assignment_expression "uVar7 = uVar2 - 1" identifier = (binary_expression "uVar2 - 1" identifier - number_literal)) ;) })) (if_statement "if (uVar2 < uVar7) {\n      uVar7 = uVar2;\n    }" if (parenthesized_expression "(uVar2 < uVar7)" ( (binary_expression "uVar2 < uVar7" identifier < identifier) )) (compound_statement "{\n      uVar7 = uVar2;\n    }" { (expression_statement "uVar7 = uVar2;" (assignment_expression "uVar7 = uVar2" identifier = identifier) ;) })) (expression_statement "FUN_003e5e60(&local_24,0,uVar7,0);" (call_expression "FUN_003e5e60(&local_24,0,uVar7,0)" identifier (argument_list "(&local_24,0,uVar7,0)" ( (pointer_expression "&local_24" & identifier) , number_literal , identifier , number_literal ))) ;) })) (if_statement "if (*(int *)(local_28 + -0xc) != 0) {\n    FUN_003e7350(&local_28,0);\n    cVar3 = FUN_003fe250(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0xc),&local_28);\n    if (cVar3 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }" if (parenthesized_expression "(*(int *)(local_28 + -0xc) != 0)" ( (binary_expression "*(int *)(local_28 + -0xc) != 0" (pointer_expression "*(int *)(local_28 + -0xc)" * (cast_expression "(int *)(local_28 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + -0xc)" ( (binary_expression "local_28 + -0xc" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    FUN_003e7350(&local_28,0);\n    cVar3 = FUN_003fe250(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0xc),&local_28);\n    if (cVar3 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }" { (expression_statement "FUN_003e7350(&local_28,0);" (call_expression "FUN_003e7350(&local_28,0)" identifier (argument_list "(&local_28,0)" ( (pointer_expression "&local_28" & identifier) , number_literal ))) ;) (expression_statement "cVar3 = FUN_003fe250(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0xc),&local_28);" (assignment_expression "cVar3 = FUN_003fe250(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0xc),&local_28)" identifier = (call_expression "FUN_003fe250(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0xc),&local_28)" identifier (argument_list "(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0xc),&local_28)" ( (pointer_expression "*(undefined4 *)(iVar4 + 8)" * (cast_expression "(undefined4 *)(iVar4 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 8)" ( (binary_expression "iVar4 + 8" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar4 + 0xc)" * (cast_expression "(undefined4 *)(iVar4 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xc)" ( (binary_expression "iVar4 + 0xc" identifier + number_literal) )))) , (pointer_expression "&local_28" & identifier) )))) ;) (if_statement "if (cVar3 == '\0') {\n      *param_8 = *param_8 | 4;\n    }" if (parenthesized_expression "(cVar3 == '\0')" ( (binary_expression "cVar3 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *param_8 = *param_8 | 4;\n    }" { (expression_statement "*param_8 = *param_8 | 4;" (assignment_expression "*param_8 = *param_8 | 4" (pointer_expression "*param_8" * identifier) = (binary_expression "*param_8 | 4" (pointer_expression "*param_8" * identifier) | number_literal)) ;) })) })) (expression_statement "FUN_003e4ea0(param_9,&local_24);" (call_expression "FUN_003e4ea0(param_9,&local_24)" identifier (argument_list "(param_9,&local_24)" ( identifier , (pointer_expression "&local_24" & identifier) ))) ;) (expression_statement "local_38 = (undefined1 *)&param_5;" (assignment_expression "local_38 = (undefined1 *)&param_5" identifier = (cast_expression "(undefined1 *)&param_5" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&param_5" & identifier))) ;) (expression_statement "cVar3 = FUN_00408430(&param_3,local_38);" (assignment_expression "cVar3 = FUN_00408430(&param_3,local_38)" identifier = (call_expression "FUN_00408430(&param_3,local_38)" identifier (argument_list "(&param_3,local_38)" ( (pointer_expression "&param_3" & identifier) , identifier )))) ;) (if_statement "if (cVar3 != '\0') {\n    *param_8 = *param_8 | 2;\n  }" if (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    *param_8 = *param_8 | 2;\n  }" { (expression_statement "*param_8 = *param_8 | 2;" (assignment_expression "*param_8 = *param_8 | 2" (pointer_expression "*param_8" * identifier) = (binary_expression "*param_8 | 2" (pointer_expression "*param_8" * identifier) | number_literal)) ;) })) (expression_statement "*param_1 = param_3;" (assignment_expression "*param_1 = param_3" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = param_4;" (assignment_expression "param_1[1] = param_4" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (local_24 + -0xc != (undefined *)(unaff_EDI + 0x1e30f7)) {\n    FUN_00400820();\n  }" if (parenthesized_expression "(local_24 + -0xc != (undefined *)(unaff_EDI + 0x1e30f7))" ( (binary_expression "local_24 + -0xc != (undefined *)(unaff_EDI + 0x1e30f7)" (binary_expression "local_24 + -0xc" identifier + number_literal) != (cast_expression "(undefined *)(unaff_EDI + 0x1e30f7)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1e30f7)" ( (binary_expression "unaff_EDI + 0x1e30f7" identifier + number_literal) )))) )) (compound_statement "{\n    FUN_00400820();\n  }" { (expression_statement "FUN_00400820();" (call_expression "FUN_00400820()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (local_28 + -0xc == (undefined *)(unaff_EDI + 0x1e30f7)) {\n    return param_1;\n  }" if (parenthesized_expression "(local_28 + -0xc == (undefined *)(unaff_EDI + 0x1e30f7))" ( (binary_expression "local_28 + -0xc == (undefined *)(unaff_EDI + 0x1e30f7)" (binary_expression "local_28 + -0xc" identifier + number_literal) == (cast_expression "(undefined *)(unaff_EDI + 0x1e30f7)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1e30f7)" ( (binary_expression "unaff_EDI + 0x1e30f7" identifier + number_literal) )))) )) (compound_statement "{\n    return param_1;\n  }" { (return_statement "return param_1;" return identifier ;) })) (expression_statement "FUN_00400820();" (call_expression "FUN_00400820()" identifier (argument_list "()" ( ))) ;) (return_statement "return param_1;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression & IDENT) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression & IDENT) + IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT ))) ;) (expression_statement (assignment_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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) * LIT)) )))) + IDENT) + LIT) )))) )) (argument_list ( ))))) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression & IDENT)) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , LIT )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , 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) )))) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | LIT)) ;) })) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return IDENT ;) })))
(function_definition "undefined4 *\nFUN_0040ff80(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int param_7,uint *param_8,undefined4 param_9)\n\n{\n  byte bVar1;\n  uint uVar2;\n  char cVar3;\n  int iVar4;\n  byte *pbVar5;\n  undefined4 *puVar6;\n  uint uVar7;\n  int unaff_EDI;\n  int local_44;\n  undefined1 *local_38;\n  undefined1 local_2a [2];\n  undefined *local_28;\n  undefined *local_24;\n  undefined4 local_20;\n  \n  FUN_00074f0a();\n  iVar4 = param_7 + 0x6c;\n  FUN_004034a0(iVar4);\n  iVar4 = FUN_00406c30(local_2a,iVar4);\n  local_28 = &DAT_001e3103 + unaff_EDI;\n  if (*(char *)(iVar4 + 0x10) != '\0') {\n                    \n    FUN_003e6d30(&local_28,0x20);\n  }\n  local_24 = &DAT_001e3103 + unaff_EDI;\n                    \n  FUN_003e6d30(&local_24,0x20);\n  local_44 = 1;\n  local_20 = *(undefined4 *)(iVar4 + 0x3c);\n  pbVar5 = (byte *)&local_20;\n  bVar1 = (byte)local_20;\n  while( true ) {\n    if (bVar1 < 5) {\n                    \n                    \n      puVar6 = (undefined4 *)\n               (*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ();\n      return puVar6;\n    }\n    if (3 < local_44) break;\n    pbVar5 = (byte *)((int)&local_20 + local_44);\n    bVar1 = *pbVar5;\n    local_44 = local_44 + 1;\n  }\n  if ((1 < *(uint *)(local_24 + -0xc)) && (uVar7 = FUN_003e5550(&local_24,0x30,0), uVar7 != 0)) {\n    uVar2 = *(uint *)(local_24 + -0xc);\n    if (uVar7 == 0xffffffff) {\n      uVar7 = uVar2 - 1;\n    }\n    if (uVar2 < uVar7) {\n      uVar7 = uVar2;\n    }\n    FUN_003e5e60(&local_24,0,uVar7,0);\n  }\n  if (*(int *)(local_28 + -0xc) != 0) {\n    FUN_003e7350(&local_28,0);\n    cVar3 = FUN_003fe250(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0xc),&local_28);\n    if (cVar3 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }\n  FUN_003e4ea0(param_9,&local_24);\n  local_38 = (undefined1 *)&param_5;\n  cVar3 = FUN_00408430(&param_3,local_38);\n  if (cVar3 != '\0') {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  if (local_24 + -0xc != (undefined *)(unaff_EDI + 0x1e30f7)) {\n    FUN_00400820();\n  }\n  if (local_28 + -0xc == (undefined *)(unaff_EDI + 0x1e30f7)) {\n    return param_1;\n  }\n  FUN_00400820();\n  return param_1;\n}" (type_identifier "undefined4") (pointer_declarator "*\nFUN_0040ff80(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int param_7,uint *param_8,undefined4 param_9)" (* "*") (function_declarator "FUN_0040ff80(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int param_7,uint *param_8,undefined4 param_9)" (identifier "FUN_0040ff80") (parameter_list "(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int param_7,uint *param_8,undefined4 param_9)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) (, ",") (parameter_declaration "undefined4 param_6" (type_identifier "undefined4") (identifier "param_6")) (, ",") (parameter_declaration "int param_7" (primitive_type "int") (identifier "param_7")) (, ",") (parameter_declaration "uint *param_8" (type_identifier "uint") (pointer_declarator "*param_8" (* "*") (identifier "param_8"))) (, ",") (parameter_declaration "undefined4 param_9" (type_identifier "undefined4") (identifier "param_9")) () ")")))) (compound_statement "{\n  byte bVar1;\n  uint uVar2;\n  char cVar3;\n  int iVar4;\n  byte *pbVar5;\n  undefined4 *puVar6;\n  uint uVar7;\n  int unaff_EDI;\n  int local_44;\n  undefined1 *local_38;\n  undefined1 local_2a [2];\n  undefined *local_28;\n  undefined *local_24;\n  undefined4 local_20;\n  \n  FUN_00074f0a();\n  iVar4 = param_7 + 0x6c;\n  FUN_004034a0(iVar4);\n  iVar4 = FUN_00406c30(local_2a,iVar4);\n  local_28 = &DAT_001e3103 + unaff_EDI;\n  if (*(char *)(iVar4 + 0x10) != '\0') {\n                    \n    FUN_003e6d30(&local_28,0x20);\n  }\n  local_24 = &DAT_001e3103 + unaff_EDI;\n                    \n  FUN_003e6d30(&local_24,0x20);\n  local_44 = 1;\n  local_20 = *(undefined4 *)(iVar4 + 0x3c);\n  pbVar5 = (byte *)&local_20;\n  bVar1 = (byte)local_20;\n  while( true ) {\n    if (bVar1 < 5) {\n                    \n                    \n      puVar6 = (undefined4 *)\n               (*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ();\n      return puVar6;\n    }\n    if (3 < local_44) break;\n    pbVar5 = (byte *)((int)&local_20 + local_44);\n    bVar1 = *pbVar5;\n    local_44 = local_44 + 1;\n  }\n  if ((1 < *(uint *)(local_24 + -0xc)) && (uVar7 = FUN_003e5550(&local_24,0x30,0), uVar7 != 0)) {\n    uVar2 = *(uint *)(local_24 + -0xc);\n    if (uVar7 == 0xffffffff) {\n      uVar7 = uVar2 - 1;\n    }\n    if (uVar2 < uVar7) {\n      uVar7 = uVar2;\n    }\n    FUN_003e5e60(&local_24,0,uVar7,0);\n  }\n  if (*(int *)(local_28 + -0xc) != 0) {\n    FUN_003e7350(&local_28,0);\n    cVar3 = FUN_003fe250(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0xc),&local_28);\n    if (cVar3 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }\n  FUN_003e4ea0(param_9,&local_24);\n  local_38 = (undefined1 *)&param_5;\n  cVar3 = FUN_00408430(&param_3,local_38);\n  if (cVar3 != '\0') {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  if (local_24 + -0xc != (undefined *)(unaff_EDI + 0x1e30f7)) {\n    FUN_00400820();\n  }\n  if (local_28 + -0xc == (undefined *)(unaff_EDI + 0x1e30f7)) {\n    return param_1;\n  }\n  FUN_00400820();\n  return param_1;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "char cVar3;" (primitive_type "char") (identifier "cVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "byte *pbVar5;" (type_identifier "byte") (pointer_declarator "*pbVar5" (* "*") (identifier "pbVar5")) (; ";")) (declaration "undefined4 *puVar6;" (type_identifier "undefined4") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "int local_44;" (primitive_type "int") (identifier "local_44") (; ";")) (declaration "undefined1 *local_38;" (type_identifier "undefined1") (pointer_declarator "*local_38" (* "*") (identifier "local_38")) (; ";")) (declaration "undefined1 local_2a [2];" (type_identifier "undefined1") (array_declarator "local_2a [2]" (identifier "local_2a") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "undefined *local_28;" (type_identifier "undefined") (pointer_declarator "*local_28" (* "*") (identifier "local_28")) (; ";")) (declaration "undefined *local_24;" (type_identifier "undefined") (pointer_declarator "*local_24" (* "*") (identifier "local_24")) (; ";")) (declaration "undefined4 local_20;" (type_identifier "undefined4") (identifier "local_20") (; ";")) (expression_statement "FUN_00074f0a();" (call_expression "FUN_00074f0a()" (identifier "FUN_00074f0a") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar4 = param_7 + 0x6c;" (assignment_expression "iVar4 = param_7 + 0x6c" (identifier "iVar4") (= "=") (binary_expression "param_7 + 0x6c" (identifier "param_7") (+ "+") (number_literal "0x6c"))) (; ";")) (expression_statement "FUN_004034a0(iVar4);" (call_expression "FUN_004034a0(iVar4)" (identifier "FUN_004034a0") (argument_list "(iVar4)" (( "(") (identifier "iVar4") () ")"))) (; ";")) (expression_statement "iVar4 = FUN_00406c30(local_2a,iVar4);" (assignment_expression "iVar4 = FUN_00406c30(local_2a,iVar4)" (identifier "iVar4") (= "=") (call_expression "FUN_00406c30(local_2a,iVar4)" (identifier "FUN_00406c30") (argument_list "(local_2a,iVar4)" (( "(") (identifier "local_2a") (, ",") (identifier "iVar4") () ")")))) (; ";")) (expression_statement "local_28 = &DAT_001e3103 + unaff_EDI;" (assignment_expression "local_28 = &DAT_001e3103 + unaff_EDI" (identifier "local_28") (= "=") (binary_expression "&DAT_001e3103 + unaff_EDI" (pointer_expression "&DAT_001e3103" (& "&") (identifier "DAT_001e3103")) (+ "+") (identifier "unaff_EDI"))) (; ";")) (if_statement "if (*(char *)(iVar4 + 0x10) != '\0') {\n                    \n    FUN_003e6d30(&local_28,0x20);\n  }" (if "if") (parenthesized_expression "(*(char *)(iVar4 + 0x10) != '\0')" (( "(") (binary_expression "*(char *)(iVar4 + 0x10) != '\0'" (pointer_expression "*(char *)(iVar4 + 0x10)" (* "*") (cast_expression "(char *)(iVar4 + 0x10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x10)" (( "(") (binary_expression "iVar4 + 0x10" (identifier "iVar4") (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                    \n    FUN_003e6d30(&local_28,0x20);\n  }" ({ "{") (expression_statement "FUN_003e6d30(&local_28,0x20);" (call_expression "FUN_003e6d30(&local_28,0x20)" (identifier "FUN_003e6d30") (argument_list "(&local_28,0x20)" (( "(") (pointer_expression "&local_28" (& "&") (identifier "local_28")) (, ",") (number_literal "0x20") () ")"))) (; ";")) (} "}"))) (expression_statement "local_24 = &DAT_001e3103 + unaff_EDI;" (assignment_expression "local_24 = &DAT_001e3103 + unaff_EDI" (identifier "local_24") (= "=") (binary_expression "&DAT_001e3103 + unaff_EDI" (pointer_expression "&DAT_001e3103" (& "&") (identifier "DAT_001e3103")) (+ "+") (identifier "unaff_EDI"))) (; ";")) (expression_statement "FUN_003e6d30(&local_24,0x20);" (call_expression "FUN_003e6d30(&local_24,0x20)" (identifier "FUN_003e6d30") (argument_list "(&local_24,0x20)" (( "(") (pointer_expression "&local_24" (& "&") (identifier "local_24")) (, ",") (number_literal "0x20") () ")"))) (; ";")) (expression_statement "local_44 = 1;" (assignment_expression "local_44 = 1" (identifier "local_44") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_20 = *(undefined4 *)(iVar4 + 0x3c);" (assignment_expression "local_20 = *(undefined4 *)(iVar4 + 0x3c)" (identifier "local_20") (= "=") (pointer_expression "*(undefined4 *)(iVar4 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x3c)" (( "(") (binary_expression "iVar4 + 0x3c" (identifier "iVar4") (+ "+") (number_literal "0x3c")) () ")"))))) (; ";")) (expression_statement "pbVar5 = (byte *)&local_20;" (assignment_expression "pbVar5 = (byte *)&local_20" (identifier "pbVar5") (= "=") (cast_expression "(byte *)&local_20" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&local_20" (& "&") (identifier "local_20")))) (; ";")) (expression_statement "bVar1 = (byte)local_20;" (assignment_expression "bVar1 = (byte)local_20" (identifier "bVar1") (= "=") (cast_expression "(byte)local_20" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_20"))) (; ";")) (while_statement "while( true ) {\n    if (bVar1 < 5) {\n                    \n                    \n      puVar6 = (undefined4 *)\n               (*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ();\n      return puVar6;\n    }\n    if (3 < local_44) break;\n    pbVar5 = (byte *)((int)&local_20 + local_44);\n    bVar1 = *pbVar5;\n    local_44 = local_44 + 1;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    if (bVar1 < 5) {\n                    \n                    \n      puVar6 = (undefined4 *)\n               (*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ();\n      return puVar6;\n    }\n    if (3 < local_44) break;\n    pbVar5 = (byte *)((int)&local_20 + local_44);\n    bVar1 = *pbVar5;\n    local_44 = local_44 + 1;\n  }" ({ "{") (if_statement "if (bVar1 < 5) {\n                    \n                    \n      puVar6 = (undefined4 *)\n               (*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ();\n      return puVar6;\n    }" (if "if") (parenthesized_expression "(bVar1 < 5)" (( "(") (binary_expression "bVar1 < 5" (identifier "bVar1") (< "<") (number_literal "5")) () ")")) (compound_statement "{\n                    \n                    \n      puVar6 = (undefined4 *)\n               (*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ();\n      return puVar6;\n    }" ({ "{") (expression_statement "puVar6 = (undefined4 *)\n               (*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ();" (assignment_expression "puVar6 = (undefined4 *)\n               (*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ()" (identifier "puVar6") (= "=") (cast_expression "(undefined4 *)\n               (*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))\n                         ()" (parenthesized_expression "(*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))" (( "(") (pointer_expression "*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077)" (* "*") (cast_expression "(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077)" (( "(") (binary_expression "*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077" (binary_expression "*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI" (pointer_expression "*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4)" (* "*") (cast_expression "(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4)" (( "(") (binary_expression "unaff_EDI + 0x9539b + (uint)*pbVar5 * 4" (binary_expression "unaff_EDI + 0x9539b" (identifier "unaff_EDI") (+ "+") (number_literal "0x9539b")) (+ "+") (binary_expression "(uint)*pbVar5 * 4" (binary_expression "(uint)*pbVar5" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar5")) (* "*") (number_literal "4"))) () ")")))) (+ "+") (identifier "unaff_EDI")) (+ "+") (number_literal "0x1da077")) () ")")))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (return_statement "return puVar6;" (return "return") (identifier "puVar6") (; ";")) (} "}"))) (if_statement "if (3 < local_44) break;" (if "if") (parenthesized_expression "(3 < local_44)" (( "(") (binary_expression "3 < local_44" (number_literal "3") (< "<") (identifier "local_44")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pbVar5 = (byte *)((int)&local_20 + local_44);" (assignment_expression "pbVar5 = (byte *)((int)&local_20 + local_44)" (identifier "pbVar5") (= "=") (cast_expression "(byte *)((int)&local_20 + local_44)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)&local_20 + local_44)" (( "(") (binary_expression "(int)&local_20 + local_44" (cast_expression "(int)&local_20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "&local_20" (& "&") (identifier "local_20"))) (+ "+") (identifier "local_44")) () ")")))) (; ";")) (expression_statement "bVar1 = *pbVar5;" (assignment_expression "bVar1 = *pbVar5" (identifier "bVar1") (= "=") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5"))) (; ";")) (expression_statement "local_44 = local_44 + 1;" (assignment_expression "local_44 = local_44 + 1" (identifier "local_44") (= "=") (binary_expression "local_44 + 1" (identifier "local_44") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if ((1 < *(uint *)(local_24 + -0xc)) && (uVar7 = FUN_003e5550(&local_24,0x30,0), uVar7 != 0)) {\n    uVar2 = *(uint *)(local_24 + -0xc);\n    if (uVar7 == 0xffffffff) {\n      uVar7 = uVar2 - 1;\n    }\n    if (uVar2 < uVar7) {\n      uVar7 = uVar2;\n    }\n    FUN_003e5e60(&local_24,0,uVar7,0);\n  }" (if "if") (parenthesized_expression "((1 < *(uint *)(local_24 + -0xc)) && (uVar7 = FUN_003e5550(&local_24,0x30,0), uVar7 != 0))" (( "(") (binary_expression "(1 < *(uint *)(local_24 + -0xc)) && (uVar7 = FUN_003e5550(&local_24,0x30,0), uVar7 != 0)" (parenthesized_expression "(1 < *(uint *)(local_24 + -0xc))" (( "(") (binary_expression "1 < *(uint *)(local_24 + -0xc)" (number_literal "1") (< "<") (pointer_expression "*(uint *)(local_24 + -0xc)" (* "*") (cast_expression "(uint *)(local_24 + -0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_24 + -0xc)" (( "(") (binary_expression "local_24 + -0xc" (identifier "local_24") (+ "+") (number_literal "-0xc")) () ")"))))) () ")")) (&& "&&") (parenthesized_expression "(uVar7 = FUN_003e5550(&local_24,0x30,0), uVar7 != 0)" (( "(") (comma_expression "uVar7 = FUN_003e5550(&local_24,0x30,0), uVar7 != 0" (assignment_expression "uVar7 = FUN_003e5550(&local_24,0x30,0)" (identifier "uVar7") (= "=") (call_expression "FUN_003e5550(&local_24,0x30,0)" (identifier "FUN_003e5550") (argument_list "(&local_24,0x30,0)" (( "(") (pointer_expression "&local_24" (& "&") (identifier "local_24")) (, ",") (number_literal "0x30") (, ",") (number_literal "0") () ")")))) (, ",") (binary_expression "uVar7 != 0" (identifier "uVar7") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    uVar2 = *(uint *)(local_24 + -0xc);\n    if (uVar7 == 0xffffffff) {\n      uVar7 = uVar2 - 1;\n    }\n    if (uVar2 < uVar7) {\n      uVar7 = uVar2;\n    }\n    FUN_003e5e60(&local_24,0,uVar7,0);\n  }" ({ "{") (expression_statement "uVar2 = *(uint *)(local_24 + -0xc);" (assignment_expression "uVar2 = *(uint *)(local_24 + -0xc)" (identifier "uVar2") (= "=") (pointer_expression "*(uint *)(local_24 + -0xc)" (* "*") (cast_expression "(uint *)(local_24 + -0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_24 + -0xc)" (( "(") (binary_expression "local_24 + -0xc" (identifier "local_24") (+ "+") (number_literal "-0xc")) () ")"))))) (; ";")) (if_statement "if (uVar7 == 0xffffffff) {\n      uVar7 = uVar2 - 1;\n    }" (if "if") (parenthesized_expression "(uVar7 == 0xffffffff)" (( "(") (binary_expression "uVar7 == 0xffffffff" (identifier "uVar7") (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n      uVar7 = uVar2 - 1;\n    }" ({ "{") (expression_statement "uVar7 = uVar2 - 1;" (assignment_expression "uVar7 = uVar2 - 1" (identifier "uVar7") (= "=") (binary_expression "uVar2 - 1" (identifier "uVar2") (- "-") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if (uVar2 < uVar7) {\n      uVar7 = uVar2;\n    }" (if "if") (parenthesized_expression "(uVar2 < uVar7)" (( "(") (binary_expression "uVar2 < uVar7" (identifier "uVar2") (< "<") (identifier "uVar7")) () ")")) (compound_statement "{\n      uVar7 = uVar2;\n    }" ({ "{") (expression_statement "uVar7 = uVar2;" (assignment_expression "uVar7 = uVar2" (identifier "uVar7") (= "=") (identifier "uVar2")) (; ";")) (} "}"))) (expression_statement "FUN_003e5e60(&local_24,0,uVar7,0);" (call_expression "FUN_003e5e60(&local_24,0,uVar7,0)" (identifier "FUN_003e5e60") (argument_list "(&local_24,0,uVar7,0)" (( "(") (pointer_expression "&local_24" (& "&") (identifier "local_24")) (, ",") (number_literal "0") (, ",") (identifier "uVar7") (, ",") (number_literal "0") () ")"))) (; ";")) (} "}"))) (if_statement "if (*(int *)(local_28 + -0xc) != 0) {\n    FUN_003e7350(&local_28,0);\n    cVar3 = FUN_003fe250(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0xc),&local_28);\n    if (cVar3 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }" (if "if") (parenthesized_expression "(*(int *)(local_28 + -0xc) != 0)" (( "(") (binary_expression "*(int *)(local_28 + -0xc) != 0" (pointer_expression "*(int *)(local_28 + -0xc)" (* "*") (cast_expression "(int *)(local_28 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + -0xc)" (( "(") (binary_expression "local_28 + -0xc" (identifier "local_28") (+ "+") (number_literal "-0xc")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_003e7350(&local_28,0);\n    cVar3 = FUN_003fe250(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0xc),&local_28);\n    if (cVar3 == '\0') {\n      *param_8 = *param_8 | 4;\n    }\n  }" ({ "{") (expression_statement "FUN_003e7350(&local_28,0);" (call_expression "FUN_003e7350(&local_28,0)" (identifier "FUN_003e7350") (argument_list "(&local_28,0)" (( "(") (pointer_expression "&local_28" (& "&") (identifier "local_28")) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "cVar3 = FUN_003fe250(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0xc),&local_28);" (assignment_expression "cVar3 = FUN_003fe250(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0xc),&local_28)" (identifier "cVar3") (= "=") (call_expression "FUN_003fe250(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0xc),&local_28)" (identifier "FUN_003fe250") (argument_list "(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0xc),&local_28)" (( "(") (pointer_expression "*(undefined4 *)(iVar4 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 8)" (( "(") (binary_expression "iVar4 + 8" (identifier "iVar4") (+ "+") (number_literal "8")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(iVar4 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0xc)" (( "(") (binary_expression "iVar4 + 0xc" (identifier "iVar4") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (pointer_expression "&local_28" (& "&") (identifier "local_28")) () ")")))) (; ";")) (if_statement "if (cVar3 == '\0') {\n      *param_8 = *param_8 | 4;\n    }" (if "if") (parenthesized_expression "(cVar3 == '\0')" (( "(") (binary_expression "cVar3 == '\0'" (identifier "cVar3") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      *param_8 = *param_8 | 4;\n    }" ({ "{") (expression_statement "*param_8 = *param_8 | 4;" (assignment_expression "*param_8 = *param_8 | 4" (pointer_expression "*param_8" (* "*") (identifier "param_8")) (= "=") (binary_expression "*param_8 | 4" (pointer_expression "*param_8" (* "*") (identifier "param_8")) (| "|") (number_literal "4"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "FUN_003e4ea0(param_9,&local_24);" (call_expression "FUN_003e4ea0(param_9,&local_24)" (identifier "FUN_003e4ea0") (argument_list "(param_9,&local_24)" (( "(") (identifier "param_9") (, ",") (pointer_expression "&local_24" (& "&") (identifier "local_24")) () ")"))) (; ";")) (expression_statement "local_38 = (undefined1 *)&param_5;" (assignment_expression "local_38 = (undefined1 *)&param_5" (identifier "local_38") (= "=") (cast_expression "(undefined1 *)&param_5" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&param_5" (& "&") (identifier "param_5")))) (; ";")) (expression_statement "cVar3 = FUN_00408430(&param_3,local_38);" (assignment_expression "cVar3 = FUN_00408430(&param_3,local_38)" (identifier "cVar3") (= "=") (call_expression "FUN_00408430(&param_3,local_38)" (identifier "FUN_00408430") (argument_list "(&param_3,local_38)" (( "(") (pointer_expression "&param_3" (& "&") (identifier "param_3")) (, ",") (identifier "local_38") () ")")))) (; ";")) (if_statement "if (cVar3 != '\0') {\n    *param_8 = *param_8 | 2;\n  }" (if "if") (parenthesized_expression "(cVar3 != '\0')" (( "(") (binary_expression "cVar3 != '\0'" (identifier "cVar3") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    *param_8 = *param_8 | 2;\n  }" ({ "{") (expression_statement "*param_8 = *param_8 | 2;" (assignment_expression "*param_8 = *param_8 | 2" (pointer_expression "*param_8" (* "*") (identifier "param_8")) (= "=") (binary_expression "*param_8 | 2" (pointer_expression "*param_8" (* "*") (identifier "param_8")) (| "|") (number_literal "2"))) (; ";")) (} "}"))) (expression_statement "*param_1 = param_3;" (assignment_expression "*param_1 = param_3" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "param_3")) (; ";")) (expression_statement "param_1[1] = param_4;" (assignment_expression "param_1[1] = param_4" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "param_4")) (; ";")) (if_statement "if (local_24 + -0xc != (undefined *)(unaff_EDI + 0x1e30f7)) {\n    FUN_00400820();\n  }" (if "if") (parenthesized_expression "(local_24 + -0xc != (undefined *)(unaff_EDI + 0x1e30f7))" (( "(") (binary_expression "local_24 + -0xc != (undefined *)(unaff_EDI + 0x1e30f7)" (binary_expression "local_24 + -0xc" (identifier "local_24") (+ "+") (number_literal "-0xc")) (!= "!=") (cast_expression "(undefined *)(unaff_EDI + 0x1e30f7)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1e30f7)" (( "(") (binary_expression "unaff_EDI + 0x1e30f7" (identifier "unaff_EDI") (+ "+") (number_literal "0x1e30f7")) () ")")))) () ")")) (compound_statement "{\n    FUN_00400820();\n  }" ({ "{") (expression_statement "FUN_00400820();" (call_expression "FUN_00400820()" (identifier "FUN_00400820") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_28 + -0xc == (undefined *)(unaff_EDI + 0x1e30f7)) {\n    return param_1;\n  }" (if "if") (parenthesized_expression "(local_28 + -0xc == (undefined *)(unaff_EDI + 0x1e30f7))" (( "(") (binary_expression "local_28 + -0xc == (undefined *)(unaff_EDI + 0x1e30f7)" (binary_expression "local_28 + -0xc" (identifier "local_28") (+ "+") (number_literal "-0xc")) (== "==") (cast_expression "(undefined *)(unaff_EDI + 0x1e30f7)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1e30f7)" (( "(") (binary_expression "unaff_EDI + 0x1e30f7" (identifier "unaff_EDI") (+ "+") (number_literal "0x1e30f7")) () ")")))) () ")")) (compound_statement "{\n    return param_1;\n  }" ({ "{") (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))) (expression_statement "FUN_00400820();" (call_expression "FUN_00400820()" (identifier "FUN_00400820") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}")))

/* WARNING: Removing unreachable block (ram,0x0041077e) */
/* WARNING: Removing unreachable block (ram,0x00410114) */
/* WARNING: Removing unreachable block (ram,0x0041011c) */
/* WARNING: Removing unreachable block (ram,0x00410126) */
/* WARNING: Removing unreachable block (ram,0x0041012b) */
/* WARNING: Removing unreachable block (ram,0x004109ef) */
/* WARNING: Removing unreachable block (ram,0x00410137) */
/* WARNING: Removing unreachable block (ram,0x0041013b) */
/* WARNING: Removing unreachable block (ram,0x00410140) */
/* WARNING: Removing unreachable block (ram,0x004100c8) */
/* WARNING: Removing unreachable block (ram,0x004100d7) */
/* WARNING: Removing unreachable block (ram,0x00410728) */
/* WARNING: Removing unreachable block (ram,0x004100e6) */
/* WARNING: Removing unreachable block (ram,0x004100ec) */
/* WARNING: Removing unreachable block (ram,0x004104e2) */
/* WARNING: Removing unreachable block (ram,0x00410620) */
/* WARNING: Removing unreachable block (ram,0x004109aa) */
/* WARNING: Removing unreachable block (ram,0x00410a3f) */
/* WARNING: Removing unreachable block (ram,0x004109b8) */
/* WARNING: Removing unreachable block (ram,0x004109c1) */
/* WARNING: Removing unreachable block (ram,0x00410a2d) */
/* WARNING: Removing unreachable block (ram,0x004109c8) */
/* WARNING: Removing unreachable block (ram,0x00410858) */
/* WARNING: Removing unreachable block (ram,0x00410870) */
/* WARNING: Removing unreachable block (ram,0x004100a0) */
/* WARNING: Removing unreachable block (ram,0x004104eb) */
/* WARNING: Removing unreachable block (ram,0x0041074c) */
/* 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<false>(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 */

var_4 *
var_14::money_get<var_2,std::type_4<var_2,var_14::var_1<var_2>>>::
var_3<false>(var_4 *var_5,var_4 param_2,var_4 var_34,var_4 param_4,
                 var_4 param_5,var_4 param_6,int var_12,var_6 *var_7,var_8 *var_9)

{
  type_1 *plVar1;
  type_2 var_22;
  var_6 var_27;
  char var_31;
  int var_18;
  type_2 *var_23;
  var_4 *puVar7;
  var_6 var_26;
  int var_17;
  type_3 *paVar9;
  int var_24;
  type_4 *local_38;
  var_15<var_14::var_10<var_2,false>> local_2a [2];
  type_5 *var_20;
  type_5 *var_21;
  var_4 local_20;
  
  var_11();
  plVar1 = (type_1 *)(var_12 + 0x6c);
  var_13<var_14::ctype<var_2>>(plVar1);
  var_18 = var_15<var_14::var_10<var_2,false>>::var_16()(local_2a,plVar1);
  var_20 = &DAT_001e3103 + var_17;
  if (*(char *)(var_18 + 0x10) != '\0') {
                    /* try { // try from 0040fff4 to 0040fff8 has its CatchHandler @ 00410a73 */
    std::string::var_19((var_6)&var_20);
  }
  var_21 = &DAT_001e3103 + var_17;
                    /* try { // try from 00410013 to 00410a4b has its CatchHandler @ 00410a6f */
  std::string::var_19((var_6)&var_21);
  var_24 = 1;
  local_20 = *(var_4 *)(var_18 + 0x3c);
  paVar9 = (type_3 *)0x0;
  var_23 = (type_2 *)&local_20;
  var_22 = (type_2)local_20;
  while( true ) {
    if (var_22 < 5) {
                    /* WARNING: Could not recover jumptable at 0x00410078. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      puVar7 = (var_4 *)
               (*(type_6 *)(*(int *)(&UNK_0009539b + (var_6)*var_23 * 4 + var_17) +
                         var_17 + 0x1da077))();
      return puVar7;
    }
    if (3 < var_24) break;
    var_23 = (type_2 *)((int)&local_20 + var_24);
    var_22 = *var_23;
    var_24 = var_24 + 1;
  }
  if (1 < *(var_6 *)(var_21 + -0xc)) {
    paVar9 = (type_3 *)0x0;
    var_26 = var_14::string::var_25((var_8 *)&var_21,'0',0);
    if (var_26 != 0) {
      var_27 = *(var_6 *)(var_21 + -0xc);
      if (var_26 == 0xffffffff) {
        var_26 = var_27 - 1;
      }
      if (var_27 < var_26) {
        var_26 = var_27;
      }
      std::string::var_28((var_6)&var_21,0,var_26);
    }
  }
  if (*(int *)(var_20 + -0xc) != 0) {
    std::string::var_29((char)(var_8 *)&var_20);
    var_31 = var_30(*(char **)(var_18 + 8),*(var_6 *)(var_18 + 0xc),(var_8 *)&var_20);
    if (var_31 == '\0') {
      *var_7 = *var_7 | 4;
    }
  }
  std::string::var_32(var_9,(var_8 *)&var_21);
  local_38 = (type_4 *)&param_5;
  var_31 = type_4<var_2,var_14::var_1<var_2>>::var_33
                    ((type_4<var_2,var_14::var_1<var_2>> *)&var_34,local_38);
  if (var_31 != '\0') {
    *var_7 = *var_7 | 2;
  }
  *var_5 = var_34;
  var_5[1] = param_4;
  if (var_21 + -0xc != &DAT_001e30f7 + var_17) {
    std::string::_Rep::var_35(paVar9);
  }
  if (var_20 + -0xc == &DAT_001e30f7 + var_17) {
    return var_5;
  }
  std::string::_Rep::var_35(paVar9);
  return var_5;
}


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

/* WARNING: Removing unreachable block (ram,0x0041077e) */
/* WARNING: Removing unreachable block (ram,0x00410114) */
/* WARNING: Removing unreachable block (ram,0x0041011c) */
/* WARNING: Removing unreachable block (ram,0x00410126) */
/* WARNING: Removing unreachable block (ram,0x0041012b) */
/* WARNING: Removing unreachable block (ram,0x004109ef) */
/* WARNING: Removing unreachable block (ram,0x00410137) */
/* WARNING: Removing unreachable block (ram,0x0041013b) */
/* WARNING: Removing unreachable block (ram,0x00410140) */
/* WARNING: Removing unreachable block (ram,0x004100c8) */
/* WARNING: Removing unreachable block (ram,0x004100d7) */
/* WARNING: Removing unreachable block (ram,0x00410728) */
/* WARNING: Removing unreachable block (ram,0x004100e6) */
/* WARNING: Removing unreachable block (ram,0x004100ec) */
/* WARNING: Removing unreachable block (ram,0x004104e2) */
/* WARNING: Removing unreachable block (ram,0x00410620) */
/* WARNING: Removing unreachable block (ram,0x004109aa) */
/* WARNING: Removing unreachable block (ram,0x00410a3f) */
/* WARNING: Removing unreachable block (ram,0x004109b8) */
/* WARNING: Removing unreachable block (ram,0x004109c1) */
/* WARNING: Removing unreachable block (ram,0x00410a2d) */
/* WARNING: Removing unreachable block (ram,0x004109c8) */
/* WARNING: Removing unreachable block (ram,0x00410858) */
/* WARNING: Removing unreachable block (ram,0x00410870) */
/* WARNING: Removing unreachable block (ram,0x004100a0) */
/* WARNING: Removing unreachable block (ram,0x004104eb) */
/* WARNING: Removing unreachable block (ram,0x0041074c) */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

undefined4 *
MASKED(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6,int param_7,uint *param_8,undefined4 param_9)

{
  byte bVar1;
  uint uVar2;
  char cVar3;
  int iVar4;
  byte *pbVar5;
  undefined4 *puVar6;
  uint uVar7;
  int unaff_EDI;
  int local_44;
  undefined1 *local_38;
  undefined1 local_2a [2];
  undefined *local_28;
  undefined *local_24;
  undefined4 local_20;
  
  FUN_00074f0a();
  iVar4 = param_7 + 0x6c;
  FUN_004034a0(iVar4);
  iVar4 = FUN_00406c30(local_2a,iVar4);
  local_28 = &DAT_001e3103 + unaff_EDI;
  if (*(char *)(iVar4 + 0x10) != '\0') {
                    /* try { // try from 0040fff4 to 0040fff8 has its CatchHandler @ 00410a73 */
    FUN_003e6d30(&local_28,0x20);
  }
  local_24 = &DAT_001e3103 + unaff_EDI;
                    /* try { // try from 00410013 to 00410a4b has its CatchHandler @ 00410a6f */
  FUN_003e6d30(&local_24,0x20);
  local_44 = 1;
  local_20 = *(undefined4 *)(iVar4 + 0x3c);
  pbVar5 = (byte *)&local_20;
  bVar1 = (byte)local_20;
  while( true ) {
    if (bVar1 < 5) {
                    /* WARNING: Could not recover jumptable at 0x00410078. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      puVar6 = (undefined4 *)
               (*(code *)(*(int *)(unaff_EDI + 0x9539b + (uint)*pbVar5 * 4) + unaff_EDI + 0x1da077))
                         ();
      return puVar6;
    }
    if (3 < local_44) break;
    pbVar5 = (byte *)((int)&local_20 + local_44);
    bVar1 = *pbVar5;
    local_44 = local_44 + 1;
  }
  if ((1 < *(uint *)(local_24 + -0xc)) && (uVar7 = FUN_003e5550(&local_24,0x30,0), uVar7 != 0)) {
    uVar2 = *(uint *)(local_24 + -0xc);
    if (uVar7 == 0xffffffff) {
      uVar7 = uVar2 - 1;
    }
    if (uVar2 < uVar7) {
      uVar7 = uVar2;
    }
    FUN_003e5e60(&local_24,0,uVar7,0);
  }
  if (*(int *)(local_28 + -0xc) != 0) {
    FUN_003e7350(&local_28,0);
    cVar3 = FUN_003fe250(*(undefined4 *)(iVar4 + 8),*(undefined4 *)(iVar4 + 0xc),&local_28);
    if (cVar3 == '\0') {
      *param_8 = *param_8 | 4;
    }
  }
  FUN_003e4ea0(param_9,&local_24);
  local_38 = (undefined1 *)&param_5;
  cVar3 = FUN_00408430(&param_3,local_38);
  if (cVar3 != '\0') {
    *param_8 = *param_8 | 2;
  }
  *param_1 = param_3;
  param_1[1] = param_4;
  if (local_24 + -0xc != (undefined *)(unaff_EDI + 0x1e30f7)) {
    FUN_00400820();
  }
  if (local_28 + -0xc == (undefined *)(unaff_EDI + 0x1e30f7)) {
    return param_1;
  }
  FUN_00400820();
  return param_1;
}

