
/* DWARF original prototype: Relobj * make_object(Dwo_file * this, Dwp_output_file * output_file) */

Relobj * __thiscall gold::Dwo_file::make_object(Dwo_file *this,Dwp_output_file *output_file)

{
  char *pcVar1;
  _Alloc_hider _Var2;
  bool bVar3;
  Input_file *this_00;
  int iVar4;
  Elf_recognizer *this_01;
  Relobj *pRVar5;
  char *pcVar6;
  int unaff_EDI;
  string *error_00;
  uchar *local_60;
  bool big_endian;
  int index;
  int size;
  Dirsearch dirpath;
  string error;
  
  __x86_get_pc_thunk_di();
  this_00 = (Input_file *)operator_new(0x94);
                    /* try { // try from 0003801a to 0003801e has its CatchHandler @ 000382a8 */
  Input_file::Input_file(this_00,this->name_);
  dirpath.token_.is_blocker_ = true;
  dirpath.directories_ = (Dir_list *)0x0;
  this->input_file_ = this_00;
  dirpath.token_.blockers_ = 0;
  dirpath.token_.writer_ = (Task *)0x0;
  dirpath.token_.waiting_.head_ = (Task *)0x0;
  dirpath.token_.waiting_.tail_ = (Task *)0x0;
                    /* try { // try from 0003805a to 000380a5 has its CatchHandler @ 000382a3 */
  iVar4 = Input_file::open(this_00,(char *)&dirpath,0,&index);
  if ((char)iVar4 == '\0') {
    pcVar1 = this->name_;
    pcVar6 = (char *)gettext(unaff_EDI + 0x24859a);
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0003822a to 0003822e has its CatchHandler @ 000382a3 */
    gold_fatal(pcVar6,pcVar1);
  }
  local_60 = *(uchar **)&(this_00->file_).size_;
  if (-*(int *)((int)&(this_00->file_).size_ + 4) < (int)(uint)((uchar *)0x3f < local_60)) {
    local_60 = (uchar *)0x40;
  }
  error_00 = (string *)0x1;
  this_01 = (Elf_recognizer *)
            File_read::get_view(&this_00->file_,0,0,(section_size_type)local_60,true,false);
  if (((int)local_60 < 4) || (*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *(int *)this_01))
  {
    pcVar1 = this->name_;
    pcVar6 = (char *)gettext(unaff_EDI + 0x2485a9);
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 000381aa to 000381ae has its CatchHandler @ 000382a3 */
    gold_fatal(pcVar6,pcVar1);
  }
  error._M_string_length = 0;
  error.field_2._M_local_buf[0] = '\0';
  error._M_dataplus._M_p = (pointer)&error.field_2;
                    /* try { // try from 000380ed to 00038128 has its CatchHandler @ 000382b0 */
  bVar3 = elfcpp::Elf_recognizer::is_valid_header
                    (this_01,local_60,CONCAT44(&size,(int)local_60 >> 0x1f),(int *)&big_endian,
                     (bool *)&error,error_00);
  _Var2._M_p = error._M_dataplus._M_p;
  if (!bVar3) {
    pcVar1 = this->name_;
    pcVar6 = (char *)gettext(unaff_EDI + 0x253e5c);
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0003826b to 0003826f has its CatchHandler @ 000382b0 */
    gold_fatal(pcVar6,pcVar1,_Var2._M_p);
  }
  if (size == 0x20) {
    if (big_endian == false) {
      pRVar5 = sized_make_object<32,_false>(this,(uchar *)this_01,this_00,output_file);
    }
    else {
                    /* try { // try from 000381be to 000381f4 has its CatchHandler @ 000382b0 */
      pRVar5 = sized_make_object<32,_true>(this,(uchar *)this_01,this_00,output_file);
    }
  }
  else {
    if (size != 0x40) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0003829e to 000382a2 has its CatchHandler @ 000382b0 */
      do_gold_unreachable((char *)(unaff_EDI + 0x24800f),0x444,(char *)(unaff_EDI + 0x248c1f));
    }
    if (big_endian == false) {
      pRVar5 = sized_make_object<64,_false>(this,(uchar *)this_01,this_00,output_file);
    }
    else {
      pRVar5 = sized_make_object<64,_true>(this,(uchar *)this_01,this_00,output_file);
    }
  }
  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
       *)error._M_dataplus._M_p != &error.field_2) {
    operator_delete(error._M_dataplus._M_p);
  }
  if (dirpath.token_.blockers_ != 0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable((char *)(unaff_EDI + 0x2485c4),100,(char *)(unaff_EDI + 0x248c13));
  }
  if (dirpath.token_.writer_ != (Task *)0x0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable((char *)(unaff_EDI + 0x2485c4),0x65,(char *)(unaff_EDI + 0x248c13));
  }
  if ((dirpath.token_.waiting_.head_ == (Task *)0x0) &&
     (dirpath.token_.waiting_.tail_ == (Task *)0x0)) {
    return pRVar5;
  }
                    /* WARNING: Subroutine does not return */
  do_gold_unreachable((char *)(unaff_EDI + 0x2485c4),0x2c,(char *)(unaff_EDI + 0x248c07));
}



/* WARNING: Type propagation algorithm not settling */

undefined4 FUN_00037ff0(undefined4 *param_1,undefined4 param_2)

{
  undefined1 *puVar1;
  char cVar2;
  int iVar3;
  int *piVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 extraout_ECX;
  int unaff_EDI;
  uint local_60;
  char local_55;
  undefined1 local_54 [4];
  int local_50 [2];
  undefined1 local_48;
  int local_44;
  int local_40;
  int local_3c;
  int local_38;
  undefined1 *local_34;
  undefined4 local_30;
  undefined1 local_2c [28];
  
  FUN_000559ee();
  iVar3 = FUN_001e5200(0x94);
                    /* try { // try from 0003801a to 0003801e has its CatchHandler @ 000382a8 */
  FUN_000688d0(iVar3,*param_1);
  local_48 = 1;
  local_50[1] = 0;
  param_1[2] = iVar3;
  local_44 = 0;
  local_40 = 0;
  local_3c = 0;
  local_38 = 0;
                    /* try { // try from 0003805a to 000380a5 has its CatchHandler @ 000382a3 */
  cVar2 = FUN_00069870(iVar3,local_50 + 1,0,local_54);
  if (cVar2 == '\0') {
    uVar5 = *param_1;
    uVar6 = gettext(&UNK_0024859a + unaff_EDI);
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0003822a to 0003822e has its CatchHandler @ 000382a3 */
    FUN_00065450(uVar6,uVar5);
  }
  local_60 = *(uint *)(iVar3 + 0x40);
  if (-*(int *)(iVar3 + 0x44) < (int)(uint)(0x3f < local_60)) {
    local_60 = 0x40;
  }
  piVar4 = (int *)FUN_000687f0(iVar3 + 0x1c,0,0,0,0,local_60,1,0);
  if (((int)local_60 < 4) || (*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *piVar4)) {
    uVar5 = *param_1;
    uVar6 = gettext(&UNK_002485a9 + unaff_EDI);
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 000381aa to 000381ae has its CatchHandler @ 000382a3 */
    FUN_00065450(uVar6,uVar5);
  }
  local_30 = 0;
  local_2c[0] = 0;
  local_34 = local_2c;
                    /* try { // try from 000380ed to 00038128 has its CatchHandler @ 000382b0 */
  cVar2 = FUN_00050f10(piVar4,local_60,(int)local_60 >> 0x1f,local_50,&local_55,&local_34);
  puVar1 = local_34;
  if (cVar2 == '\0') {
    uVar5 = *param_1;
    uVar6 = gettext(unaff_EDI + 0x253e5c);
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0003826b to 0003826f has its CatchHandler @ 000382b0 */
    FUN_00065450(uVar6,uVar5,puVar1);
  }
  if (local_50[0] == 0x20) {
    if (local_55 == '\0') {
      uVar5 = FUN_000522b0(param_1,piVar4,iVar3,param_2);
    }
    else {
                    /* try { // try from 000381be to 000381f4 has its CatchHandler @ 000382b0 */
      uVar5 = FUN_00051c40(param_1,piVar4,iVar3,param_2);
    }
  }
  else {
    if (local_50[0] != 0x40) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0003829e to 000382a2 has its CatchHandler @ 000382b0 */
      FUN_00069d00(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX);
    }
    if (local_55 == '\0') {
      uVar5 = FUN_000530f0(param_1,piVar4,iVar3,param_2);
    }
    else {
      uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2);
    }
  }
  uVar6 = uVar5;
  if (local_34 != local_2c) {
    uVar6 = FUN_001e6db0(local_34);
  }
  if (local_44 != 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00069d00(&UNK_002485c4 + unaff_EDI,100,unaff_EDI + 0x248c13,uVar6);
  }
  if (local_40 != 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x65,unaff_EDI + 0x248c13,local_40);
  }
  iVar3 = local_3c;
  if ((local_3c == 0) && (iVar3 = local_38, local_38 == 0)) {
    return uVar5;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x2c,unaff_EDI + 0x248c07,iVar3);
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
CALL 0x000559ee
ADD EDI,0x357007
PUSH ESI
PUSH EBX
SUB ESP,0x68
PUSH 0x94
MOV EBX,EDI
CALL 0x001e5200
MOV ESI,EAX
POP EAX
MOV EAX,dword ptr [EBP + 0x8]
POP EDX
PUSH dword ptr [EAX]
PUSH ESI
CALL 0x000688d0
MOV EAX,dword ptr [EBP + 0x8]
ADD ESP,0x10
MOV byte ptr [EBP + -0x44],0x1
MOV dword ptr [EBP + -0x48],0x0
MOV dword ptr [EAX + 0x8],ESI
LEA EAX,[EBP + -0x50]
PUSH EAX
LEA EAX,[EBP + -0x48]
PUSH 0x0
PUSH EAX
PUSH ESI
MOV dword ptr [EBP + -0x40],0x0
MOV dword ptr [EBP + -0x3c],0x0
MOV dword ptr [EBP + -0x38],0x0
MOV dword ptr [EBP + -0x34],0x0
CALL 0x00069870
ADD ESP,0x10
TEST AL,AL
JZ 0x00038212
MOV EAX,dword ptr [ESI + 0x40]
MOV EDX,0x3f
CMP EDX,EAX
MOV EDX,0x0
SBB EDX,dword ptr [ESI + 0x44]
JGE 0x00038180
MOV dword ptr [EBP + -0x5c],0x40
MOV EAX,0x40
PUSH 0x0
MOV EBX,EDI
PUSH 0x1
PUSH EAX
LEA EAX,[ESI + 0x1c]
PUSH 0x0
PUSH 0x0
PUSH 0x0
PUSH 0x0
PUSH EAX
CALL 0x000687f0
ADD ESP,0x20
CMP dword ptr [EBP + -0x5c],0x3
MOV EBX,EAX
JLE 0x00038190
MOV EAX,dword ptr [EAX]
CMP dword ptr [EDI + 0x370],EAX
JNZ 0x00038190
SUB ESP,0x8
LEA EAX,[EBP + -0x30]
LEA ECX,[EBP + -0x28]
MOV dword ptr [EBP + -0x2c],0x0
PUSH EAX
LEA EAX,[EBP + -0x51]
PUSH EAX
LEA EAX,[EBP + -0x4c]
PUSH EAX
MOV EAX,dword ptr [EBP + -0x5c]
MOV dword ptr [EBP + -0x60],ECX
CDQ
MOV dword ptr [EBP + -0x30],ECX
PUSH EDX
PUSH EAX
PUSH EBX
MOV byte ptr [EBP + -0x28],0x0
CALL 0x00050f10
ADD ESP,0x20
TEST AL,AL
JZ 0x00038247
MOV EAX,dword ptr [EBP + -0x4c]
CMP EAX,0x20
JZ 0x000381b0
CMP EAX,0x40
JNZ 0x00038288
CMP byte ptr [EBP + -0x51],0x0
JZ 0x000381d0
PUSH dword ptr [EBP + 0xc]
PUSH ESI
PUSH EBX
PUSH dword ptr [EBP + 0x8]
CALL 0x00052a80
MOV ESI,EAX
ADD ESP,0x10
MOV EDX,dword ptr [EBP + -0x30]
CMP EDX,dword ptr [EBP + -0x60]
JZ 0x00038144
SUB ESP,0xc
MOV EBX,EDI
PUSH EDX
CALL 0x001e6db0
ADD ESP,0x10
MOV EDX,dword ptr [EBP + -0x40]
TEST EDX,EDX
JNZ 0x00038270
MOV EAX,dword ptr [EBP + -0x3c]
TEST EAX,EAX
JNZ 0x0003822f
MOV EAX,dword ptr [EBP + -0x38]
TEST EAX,EAX
JNZ 0x000381fa
MOV EAX,dword ptr [EBP + -0x34]
TEST EAX,EAX
JNZ 0x000381fa
LEA ESP,[EBP + -0xc]
MOV EAX,ESI
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [EBP + -0x5c],EAX
JMP 0x0003808e
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0xc
MOV EBX,EDI
MOV ESI,dword ptr [EAX]
LEA EAX,[EDI + 0xffef15a2]
PUSH EAX
CALL 0x000293b0
POP EDX
POP ECX
PUSH ESI
PUSH EAX
CALL 0x00065450
CMP byte ptr [EBP + -0x51],0x0
JZ 0x000381e8
PUSH dword ptr [EBP + 0xc]
PUSH ESI
PUSH EBX
PUSH dword ptr [EBP + 0x8]
CALL 0x00051c40
JMP 0x00038129
PUSH dword ptr [EBP + 0xc]
PUSH ESI
PUSH EBX
PUSH dword ptr [EBP + 0x8]
CALL 0x000530f0
JMP 0x00038129
PUSH dword ptr [EBP + 0xc]
PUSH ESI
PUSH EBX
PUSH dword ptr [EBP + 0x8]
CALL 0x000522b0
JMP 0x00038129
PUSH EAX
LEA EAX,[EDI + 0xffef1c00]
MOV EBX,EDI
PUSH EAX
LEA EAX,[EDI + 0xffef15bd]
PUSH 0x2c
PUSH EAX
CALL 0x00069d00
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0xc
MOV ESI,dword ptr [EAX]
LEA EAX,[EDI + 0xffef1593]
PUSH EAX
CALL 0x000293b0
POP EDX
POP ECX
PUSH ESI
PUSH EAX
CALL 0x00065450
PUSH EAX
LEA EAX,[EDI + 0xffef1c0c]
MOV EBX,EDI
PUSH EAX
LEA EAX,[EDI + 0xffef15bd]
PUSH 0x65
PUSH EAX
CALL 0x00069d00
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0xc
MOV ESI,dword ptr [EBP + -0x30]
MOV EBX,EDI
MOV EAX,dword ptr [EAX]
MOV dword ptr [EBP + -0x5c],EAX
LEA EAX,[EDI + 0xffefce55]
PUSH EAX
CALL 0x000293b0
ADD ESP,0xc
PUSH ESI
PUSH dword ptr [EBP + -0x5c]
PUSH EAX
CALL 0x00065450
PUSH EAX
LEA EAX,[EDI + 0xffef1c0c]
MOV EBX,EDI
PUSH EAX
LEA EAX,[EDI + 0xffef15bd]
PUSH 0x64
PUSH EAX
CALL 0x00069d00
LEA EAX,[EDI + 0xffef1c18]
PUSH ECX
MOV EBX,EDI
PUSH EAX
LEA EAX,[EDI + 0xffef1008]
PUSH 0x444
PUSH EAX
CALL 0x00069d00
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n\nundefined4 FUN_00037ff0(undefined4 *param_1,undefined4 param_2)\n\n{\n  undefined1 *puVar1;\n  char cVar2;\n  int iVar3;\n  int *piVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 extraout_ECX;\n  int unaff_EDI;\n  uint local_60;\n  char local_55;\n  undefined1 local_54 [4];\n  int local_50 [2];\n  undefined1 local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_38;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  FUN_000559ee();\n  iVar3 = FUN_001e5200(0x94);\n                    /* try { // try from 0003801a to 0003801e has its CatchHandler @ 000382a8 */\n  FUN_000688d0(iVar3,*param_1);\n  local_48 = 1;\n  local_50[1] = 0;\n  param_1[2] = iVar3;\n  local_44 = 0;\n  local_40 = 0;\n  local_3c = 0;\n  local_38 = 0;\n                    /* try { // try from 0003805a to 000380a5 has its CatchHandler @ 000382a3 */\n  cVar2 = FUN_00069870(iVar3,local_50 + 1,0,local_54);\n  if (cVar2 == '\0') {\n    uVar5 = *param_1;\n    uVar6 = gettext(&UNK_0024859a + unaff_EDI);\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003822a to 0003822e has its CatchHandler @ 000382a3 */\n    FUN_00065450(uVar6,uVar5);\n  }\n  local_60 = *(uint *)(iVar3 + 0x40);\n  if (-*(int *)(iVar3 + 0x44) < (int)(uint)(0x3f < local_60)) {\n    local_60 = 0x40;\n  }\n  piVar4 = (int *)FUN_000687f0(iVar3 + 0x1c,0,0,0,0,local_60,1,0);\n  if (((int)local_60 < 4) || (*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *piVar4)) {\n    uVar5 = *param_1;\n    uVar6 = gettext(&UNK_002485a9 + unaff_EDI);\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000381aa to 000381ae has its CatchHandler @ 000382a3 */\n    FUN_00065450(uVar6,uVar5);\n  }\n  local_30 = 0;\n  local_2c[0] = 0;\n  local_34 = local_2c;\n                    /* try { // try from 000380ed to 00038128 has its CatchHandler @ 000382b0 */\n  cVar2 = FUN_00050f10(piVar4,local_60,(int)local_60 >> 0x1f,local_50,&local_55,&local_34);\n  puVar1 = local_34;\n  if (cVar2 == '\0') {\n    uVar5 = *param_1;\n    uVar6 = gettext(unaff_EDI + 0x253e5c);\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003826b to 0003826f has its CatchHandler @ 000382b0 */\n    FUN_00065450(uVar6,uVar5,puVar1);\n  }\n  if (local_50[0] == 0x20) {\n    if (local_55 == '\0') {\n      uVar5 = FUN_000522b0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n                    /* try { // try from 000381be to 000381f4 has its CatchHandler @ 000382b0 */\n      uVar5 = FUN_00051c40(param_1,piVar4,iVar3,param_2);\n    }\n  }\n  else {\n    if (local_50[0] != 0x40) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003829e to 000382a2 has its CatchHandler @ 000382b0 */\n      FUN_00069d00(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX);\n    }\n    if (local_55 == '\0') {\n      uVar5 = FUN_000530f0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n      uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2);\n    }\n  }\n  uVar6 = uVar5;\n  if (local_34 != local_2c) {\n    uVar6 = FUN_001e6db0(local_34);\n  }\n  if (local_44 != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00(&UNK_002485c4 + unaff_EDI,100,unaff_EDI + 0x248c13,uVar6);\n  }\n  if (local_40 != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x65,unaff_EDI + 0x248c13,local_40);\n  }\n  iVar3 = local_3c;\n  if ((local_3c == 0) && (iVar3 = local_38, local_38 == 0)) {\n    return uVar5;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x2c,unaff_EDI + 0x248c07,iVar3);\n}\n\n" comment (function_definition "undefined4 FUN_00037ff0(undefined4 *param_1,undefined4 param_2)\n\n{\n  undefined1 *puVar1;\n  char cVar2;\n  int iVar3;\n  int *piVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 extraout_ECX;\n  int unaff_EDI;\n  uint local_60;\n  char local_55;\n  undefined1 local_54 [4];\n  int local_50 [2];\n  undefined1 local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_38;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  FUN_000559ee();\n  iVar3 = FUN_001e5200(0x94);\n                    /* try { // try from 0003801a to 0003801e has its CatchHandler @ 000382a8 */\n  FUN_000688d0(iVar3,*param_1);\n  local_48 = 1;\n  local_50[1] = 0;\n  param_1[2] = iVar3;\n  local_44 = 0;\n  local_40 = 0;\n  local_3c = 0;\n  local_38 = 0;\n                    /* try { // try from 0003805a to 000380a5 has its CatchHandler @ 000382a3 */\n  cVar2 = FUN_00069870(iVar3,local_50 + 1,0,local_54);\n  if (cVar2 == '\0') {\n    uVar5 = *param_1;\n    uVar6 = gettext(&UNK_0024859a + unaff_EDI);\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003822a to 0003822e has its CatchHandler @ 000382a3 */\n    FUN_00065450(uVar6,uVar5);\n  }\n  local_60 = *(uint *)(iVar3 + 0x40);\n  if (-*(int *)(iVar3 + 0x44) < (int)(uint)(0x3f < local_60)) {\n    local_60 = 0x40;\n  }\n  piVar4 = (int *)FUN_000687f0(iVar3 + 0x1c,0,0,0,0,local_60,1,0);\n  if (((int)local_60 < 4) || (*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *piVar4)) {\n    uVar5 = *param_1;\n    uVar6 = gettext(&UNK_002485a9 + unaff_EDI);\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000381aa to 000381ae has its CatchHandler @ 000382a3 */\n    FUN_00065450(uVar6,uVar5);\n  }\n  local_30 = 0;\n  local_2c[0] = 0;\n  local_34 = local_2c;\n                    /* try { // try from 000380ed to 00038128 has its CatchHandler @ 000382b0 */\n  cVar2 = FUN_00050f10(piVar4,local_60,(int)local_60 >> 0x1f,local_50,&local_55,&local_34);\n  puVar1 = local_34;\n  if (cVar2 == '\0') {\n    uVar5 = *param_1;\n    uVar6 = gettext(unaff_EDI + 0x253e5c);\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003826b to 0003826f has its CatchHandler @ 000382b0 */\n    FUN_00065450(uVar6,uVar5,puVar1);\n  }\n  if (local_50[0] == 0x20) {\n    if (local_55 == '\0') {\n      uVar5 = FUN_000522b0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n                    /* try { // try from 000381be to 000381f4 has its CatchHandler @ 000382b0 */\n      uVar5 = FUN_00051c40(param_1,piVar4,iVar3,param_2);\n    }\n  }\n  else {\n    if (local_50[0] != 0x40) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003829e to 000382a2 has its CatchHandler @ 000382b0 */\n      FUN_00069d00(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX);\n    }\n    if (local_55 == '\0') {\n      uVar5 = FUN_000530f0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n      uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2);\n    }\n  }\n  uVar6 = uVar5;\n  if (local_34 != local_2c) {\n    uVar6 = FUN_001e6db0(local_34);\n  }\n  if (local_44 != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00(&UNK_002485c4 + unaff_EDI,100,unaff_EDI + 0x248c13,uVar6);\n  }\n  if (local_40 != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x65,unaff_EDI + 0x248c13,local_40);\n  }\n  iVar3 = local_3c;\n  if ((local_3c == 0) && (iVar3 = local_38, local_38 == 0)) {\n    return uVar5;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x2c,unaff_EDI + 0x248c07,iVar3);\n}" type_identifier (function_declarator "FUN_00037ff0(undefined4 *param_1,undefined4 param_2)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  undefined1 *puVar1;\n  char cVar2;\n  int iVar3;\n  int *piVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 extraout_ECX;\n  int unaff_EDI;\n  uint local_60;\n  char local_55;\n  undefined1 local_54 [4];\n  int local_50 [2];\n  undefined1 local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_38;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  FUN_000559ee();\n  iVar3 = FUN_001e5200(0x94);\n                    /* try { // try from 0003801a to 0003801e has its CatchHandler @ 000382a8 */\n  FUN_000688d0(iVar3,*param_1);\n  local_48 = 1;\n  local_50[1] = 0;\n  param_1[2] = iVar3;\n  local_44 = 0;\n  local_40 = 0;\n  local_3c = 0;\n  local_38 = 0;\n                    /* try { // try from 0003805a to 000380a5 has its CatchHandler @ 000382a3 */\n  cVar2 = FUN_00069870(iVar3,local_50 + 1,0,local_54);\n  if (cVar2 == '\0') {\n    uVar5 = *param_1;\n    uVar6 = gettext(&UNK_0024859a + unaff_EDI);\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003822a to 0003822e has its CatchHandler @ 000382a3 */\n    FUN_00065450(uVar6,uVar5);\n  }\n  local_60 = *(uint *)(iVar3 + 0x40);\n  if (-*(int *)(iVar3 + 0x44) < (int)(uint)(0x3f < local_60)) {\n    local_60 = 0x40;\n  }\n  piVar4 = (int *)FUN_000687f0(iVar3 + 0x1c,0,0,0,0,local_60,1,0);\n  if (((int)local_60 < 4) || (*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *piVar4)) {\n    uVar5 = *param_1;\n    uVar6 = gettext(&UNK_002485a9 + unaff_EDI);\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000381aa to 000381ae has its CatchHandler @ 000382a3 */\n    FUN_00065450(uVar6,uVar5);\n  }\n  local_30 = 0;\n  local_2c[0] = 0;\n  local_34 = local_2c;\n                    /* try { // try from 000380ed to 00038128 has its CatchHandler @ 000382b0 */\n  cVar2 = FUN_00050f10(piVar4,local_60,(int)local_60 >> 0x1f,local_50,&local_55,&local_34);\n  puVar1 = local_34;\n  if (cVar2 == '\0') {\n    uVar5 = *param_1;\n    uVar6 = gettext(unaff_EDI + 0x253e5c);\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003826b to 0003826f has its CatchHandler @ 000382b0 */\n    FUN_00065450(uVar6,uVar5,puVar1);\n  }\n  if (local_50[0] == 0x20) {\n    if (local_55 == '\0') {\n      uVar5 = FUN_000522b0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n                    /* try { // try from 000381be to 000381f4 has its CatchHandler @ 000382b0 */\n      uVar5 = FUN_00051c40(param_1,piVar4,iVar3,param_2);\n    }\n  }\n  else {\n    if (local_50[0] != 0x40) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003829e to 000382a2 has its CatchHandler @ 000382b0 */\n      FUN_00069d00(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX);\n    }\n    if (local_55 == '\0') {\n      uVar5 = FUN_000530f0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n      uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2);\n    }\n  }\n  uVar6 = uVar5;\n  if (local_34 != local_2c) {\n    uVar6 = FUN_001e6db0(local_34);\n  }\n  if (local_44 != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00(&UNK_002485c4 + unaff_EDI,100,unaff_EDI + 0x248c13,uVar6);\n  }\n  if (local_40 != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x65,unaff_EDI + 0x248c13,local_40);\n  }\n  iVar3 = local_3c;\n  if ((local_3c == 0) && (iVar3 = local_38, local_38 == 0)) {\n    return uVar5;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x2c,unaff_EDI + 0x248c07,iVar3);\n}" { (declaration "undefined1 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 extraout_ECX;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "uint local_60;" type_identifier identifier ;) (declaration "char local_55;" primitive_type identifier ;) (declaration "undefined1 local_54 [4];" type_identifier (array_declarator "local_54 [4]" identifier [ number_literal ]) ;) (declaration "int local_50 [2];" primitive_type (array_declarator "local_50 [2]" identifier [ number_literal ]) ;) (declaration "undefined1 local_48;" type_identifier identifier ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "undefined1 *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "undefined1 local_2c [28];" type_identifier (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "FUN_000559ee();" (call_expression "FUN_000559ee()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar3 = FUN_001e5200(0x94);" (assignment_expression "iVar3 = FUN_001e5200(0x94)" identifier = (call_expression "FUN_001e5200(0x94)" identifier (argument_list "(0x94)" ( number_literal )))) ;) comment (expression_statement "FUN_000688d0(iVar3,*param_1);" (call_expression "FUN_000688d0(iVar3,*param_1)" identifier (argument_list "(iVar3,*param_1)" ( identifier , (pointer_expression "*param_1" * identifier) ))) ;) (expression_statement "local_48 = 1;" (assignment_expression "local_48 = 1" identifier = number_literal) ;) (expression_statement "local_50[1] = 0;" (assignment_expression "local_50[1] = 0" (subscript_expression "local_50[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[2] = iVar3;" (assignment_expression "param_1[2] = iVar3" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) comment (expression_statement "cVar2 = FUN_00069870(iVar3,local_50 + 1,0,local_54);" (assignment_expression "cVar2 = FUN_00069870(iVar3,local_50 + 1,0,local_54)" identifier = (call_expression "FUN_00069870(iVar3,local_50 + 1,0,local_54)" identifier (argument_list "(iVar3,local_50 + 1,0,local_54)" ( identifier , (binary_expression "local_50 + 1" identifier + number_literal) , number_literal , identifier )))) ;) (if_statement "if (cVar2 == '\0') {\n    uVar5 = *param_1;\n    uVar6 = gettext(&UNK_0024859a + unaff_EDI);\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003822a to 0003822e has its CatchHandler @ 000382a3 */\n    FUN_00065450(uVar6,uVar5);\n  }" if (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar5 = *param_1;\n    uVar6 = gettext(&UNK_0024859a + unaff_EDI);\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003822a to 0003822e has its CatchHandler @ 000382a3 */\n    FUN_00065450(uVar6,uVar5);\n  }" { (expression_statement "uVar5 = *param_1;" (assignment_expression "uVar5 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar6 = gettext(&UNK_0024859a + unaff_EDI);" (assignment_expression "uVar6 = gettext(&UNK_0024859a + unaff_EDI)" identifier = (call_expression "gettext(&UNK_0024859a + unaff_EDI)" identifier (argument_list "(&UNK_0024859a + unaff_EDI)" ( (binary_expression "&UNK_0024859a + unaff_EDI" (pointer_expression "&UNK_0024859a" & identifier) + identifier) )))) ;) comment comment (expression_statement "FUN_00065450(uVar6,uVar5);" (call_expression "FUN_00065450(uVar6,uVar5)" identifier (argument_list "(uVar6,uVar5)" ( identifier , identifier ))) ;) })) (expression_statement "local_60 = *(uint *)(iVar3 + 0x40);" (assignment_expression "local_60 = *(uint *)(iVar3 + 0x40)" identifier = (pointer_expression "*(uint *)(iVar3 + 0x40)" * (cast_expression "(uint *)(iVar3 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x40)" ( (binary_expression "iVar3 + 0x40" identifier + number_literal) ))))) ;) (if_statement "if (-*(int *)(iVar3 + 0x44) < (int)(uint)(0x3f < local_60)) {\n    local_60 = 0x40;\n  }" if (parenthesized_expression "(-*(int *)(iVar3 + 0x44) < (int)(uint)(0x3f < local_60))" ( (binary_expression "-*(int *)(iVar3 + 0x44) < (int)(uint)(0x3f < local_60)" (unary_expression "-*(int *)(iVar3 + 0x44)" - (pointer_expression "*(int *)(iVar3 + 0x44)" * (cast_expression "(int *)(iVar3 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x44)" ( (binary_expression "iVar3 + 0x44" identifier + number_literal) ))))) < (cast_expression "(int)(uint)(0x3f < local_60)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(0x3f < local_60)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x3f < local_60)" ( (binary_expression "0x3f < local_60" number_literal < identifier) ))))) )) (compound_statement "{\n    local_60 = 0x40;\n  }" { (expression_statement "local_60 = 0x40;" (assignment_expression "local_60 = 0x40" identifier = number_literal) ;) })) (expression_statement "piVar4 = (int *)FUN_000687f0(iVar3 + 0x1c,0,0,0,0,local_60,1,0);" (assignment_expression "piVar4 = (int *)FUN_000687f0(iVar3 + 0x1c,0,0,0,0,local_60,1,0)" identifier = (cast_expression "(int *)FUN_000687f0(iVar3 + 0x1c,0,0,0,0,local_60,1,0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000687f0(iVar3 + 0x1c,0,0,0,0,local_60,1,0)" identifier (argument_list "(iVar3 + 0x1c,0,0,0,0,local_60,1,0)" ( (binary_expression "iVar3 + 0x1c" identifier + number_literal) , number_literal , number_literal , number_literal , number_literal , identifier , number_literal , number_literal ))))) ;) (if_statement "if (((int)local_60 < 4) || (*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *piVar4)) {\n    uVar5 = *param_1;\n    uVar6 = gettext(&UNK_002485a9 + unaff_EDI);\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000381aa to 000381ae has its CatchHandler @ 000382a3 */\n    FUN_00065450(uVar6,uVar5);\n  }" if (parenthesized_expression "(((int)local_60 < 4) || (*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *piVar4))" ( (binary_expression "((int)local_60 < 4) || (*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *piVar4)" (parenthesized_expression "((int)local_60 < 4)" ( (binary_expression "(int)local_60 < 4" (cast_expression "(int)local_60" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) || (parenthesized_expression "(*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *piVar4)" ( (binary_expression "*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *piVar4" (pointer_expression "*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22)" * (cast_expression "(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(BYTE_ARRAY_00357355 + unaff_EDI + 0x22)" ( (binary_expression "BYTE_ARRAY_00357355 + unaff_EDI + 0x22" (binary_expression "BYTE_ARRAY_00357355 + unaff_EDI" identifier + identifier) + number_literal) )))) != (pointer_expression "*piVar4" * identifier)) ))) )) (compound_statement "{\n    uVar5 = *param_1;\n    uVar6 = gettext(&UNK_002485a9 + unaff_EDI);\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000381aa to 000381ae has its CatchHandler @ 000382a3 */\n    FUN_00065450(uVar6,uVar5);\n  }" { (expression_statement "uVar5 = *param_1;" (assignment_expression "uVar5 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar6 = gettext(&UNK_002485a9 + unaff_EDI);" (assignment_expression "uVar6 = gettext(&UNK_002485a9 + unaff_EDI)" identifier = (call_expression "gettext(&UNK_002485a9 + unaff_EDI)" identifier (argument_list "(&UNK_002485a9 + unaff_EDI)" ( (binary_expression "&UNK_002485a9 + unaff_EDI" (pointer_expression "&UNK_002485a9" & identifier) + identifier) )))) ;) comment comment (expression_statement "FUN_00065450(uVar6,uVar5);" (call_expression "FUN_00065450(uVar6,uVar5)" identifier (argument_list "(uVar6,uVar5)" ( identifier , identifier ))) ;) })) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c[0] = 0;" (assignment_expression "local_2c[0] = 0" (subscript_expression "local_2c[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" identifier = identifier) ;) comment (expression_statement "cVar2 = FUN_00050f10(piVar4,local_60,(int)local_60 >> 0x1f,local_50,&local_55,&local_34);" (assignment_expression "cVar2 = FUN_00050f10(piVar4,local_60,(int)local_60 >> 0x1f,local_50,&local_55,&local_34)" identifier = (call_expression "FUN_00050f10(piVar4,local_60,(int)local_60 >> 0x1f,local_50,&local_55,&local_34)" identifier (argument_list "(piVar4,local_60,(int)local_60 >> 0x1f,local_50,&local_55,&local_34)" ( identifier , identifier , (binary_expression "(int)local_60 >> 0x1f" (cast_expression "(int)local_60" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) , identifier , (pointer_expression "&local_55" & identifier) , (pointer_expression "&local_34" & identifier) )))) ;) (expression_statement "puVar1 = local_34;" (assignment_expression "puVar1 = local_34" identifier = identifier) ;) (if_statement "if (cVar2 == '\0') {\n    uVar5 = *param_1;\n    uVar6 = gettext(unaff_EDI + 0x253e5c);\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003826b to 0003826f has its CatchHandler @ 000382b0 */\n    FUN_00065450(uVar6,uVar5,puVar1);\n  }" if (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar5 = *param_1;\n    uVar6 = gettext(unaff_EDI + 0x253e5c);\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003826b to 0003826f has its CatchHandler @ 000382b0 */\n    FUN_00065450(uVar6,uVar5,puVar1);\n  }" { (expression_statement "uVar5 = *param_1;" (assignment_expression "uVar5 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar6 = gettext(unaff_EDI + 0x253e5c);" (assignment_expression "uVar6 = gettext(unaff_EDI + 0x253e5c)" identifier = (call_expression "gettext(unaff_EDI + 0x253e5c)" identifier (argument_list "(unaff_EDI + 0x253e5c)" ( (binary_expression "unaff_EDI + 0x253e5c" identifier + number_literal) )))) ;) comment comment (expression_statement "FUN_00065450(uVar6,uVar5,puVar1);" (call_expression "FUN_00065450(uVar6,uVar5,puVar1)" identifier (argument_list "(uVar6,uVar5,puVar1)" ( identifier , identifier , identifier ))) ;) })) (if_statement "if (local_50[0] == 0x20) {\n    if (local_55 == '\0') {\n      uVar5 = FUN_000522b0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n                    /* try { // try from 000381be to 000381f4 has its CatchHandler @ 000382b0 */\n      uVar5 = FUN_00051c40(param_1,piVar4,iVar3,param_2);\n    }\n  }\n  else {\n    if (local_50[0] != 0x40) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003829e to 000382a2 has its CatchHandler @ 000382b0 */\n      FUN_00069d00(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX);\n    }\n    if (local_55 == '\0') {\n      uVar5 = FUN_000530f0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n      uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2);\n    }\n  }" if (parenthesized_expression "(local_50[0] == 0x20)" ( (binary_expression "local_50[0] == 0x20" (subscript_expression "local_50[0]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    if (local_55 == '\0') {\n      uVar5 = FUN_000522b0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n                    /* try { // try from 000381be to 000381f4 has its CatchHandler @ 000382b0 */\n      uVar5 = FUN_00051c40(param_1,piVar4,iVar3,param_2);\n    }\n  }" { (if_statement "if (local_55 == '\0') {\n      uVar5 = FUN_000522b0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n                    /* try { // try from 000381be to 000381f4 has its CatchHandler @ 000382b0 */\n      uVar5 = FUN_00051c40(param_1,piVar4,iVar3,param_2);\n    }" if (parenthesized_expression "(local_55 == '\0')" ( (binary_expression "local_55 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar5 = FUN_000522b0(param_1,piVar4,iVar3,param_2);\n    }" { (expression_statement "uVar5 = FUN_000522b0(param_1,piVar4,iVar3,param_2);" (assignment_expression "uVar5 = FUN_000522b0(param_1,piVar4,iVar3,param_2)" identifier = (call_expression "FUN_000522b0(param_1,piVar4,iVar3,param_2)" identifier (argument_list "(param_1,piVar4,iVar3,param_2)" ( identifier , identifier , identifier , identifier )))) ;) }) (else_clause "else {\n                    /* try { // try from 000381be to 000381f4 has its CatchHandler @ 000382b0 */\n      uVar5 = FUN_00051c40(param_1,piVar4,iVar3,param_2);\n    }" else (compound_statement "{\n                    /* try { // try from 000381be to 000381f4 has its CatchHandler @ 000382b0 */\n      uVar5 = FUN_00051c40(param_1,piVar4,iVar3,param_2);\n    }" { comment (expression_statement "uVar5 = FUN_00051c40(param_1,piVar4,iVar3,param_2);" (assignment_expression "uVar5 = FUN_00051c40(param_1,piVar4,iVar3,param_2)" identifier = (call_expression "FUN_00051c40(param_1,piVar4,iVar3,param_2)" identifier (argument_list "(param_1,piVar4,iVar3,param_2)" ( identifier , identifier , identifier , identifier )))) ;) }))) }) (else_clause "else {\n    if (local_50[0] != 0x40) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003829e to 000382a2 has its CatchHandler @ 000382b0 */\n      FUN_00069d00(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX);\n    }\n    if (local_55 == '\0') {\n      uVar5 = FUN_000530f0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n      uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2);\n    }\n  }" else (compound_statement "{\n    if (local_50[0] != 0x40) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003829e to 000382a2 has its CatchHandler @ 000382b0 */\n      FUN_00069d00(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX);\n    }\n    if (local_55 == '\0') {\n      uVar5 = FUN_000530f0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n      uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2);\n    }\n  }" { (if_statement "if (local_50[0] != 0x40) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003829e to 000382a2 has its CatchHandler @ 000382b0 */\n      FUN_00069d00(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX);\n    }" if (parenthesized_expression "(local_50[0] != 0x40)" ( (binary_expression "local_50[0] != 0x40" (subscript_expression "local_50[0]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003829e to 000382a2 has its CatchHandler @ 000382b0 */\n      FUN_00069d00(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX);\n    }" { comment comment (expression_statement "FUN_00069d00(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX);" (call_expression "FUN_00069d00(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX)" identifier (argument_list "(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX)" ( (binary_expression "unaff_EDI + 0x24800f" identifier + number_literal) , number_literal , (binary_expression "&UNK_00248c1f + unaff_EDI" (pointer_expression "&UNK_00248c1f" & identifier) + identifier) , identifier ))) ;) })) (if_statement "if (local_55 == '\0') {\n      uVar5 = FUN_000530f0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n      uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2);\n    }" if (parenthesized_expression "(local_55 == '\0')" ( (binary_expression "local_55 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar5 = FUN_000530f0(param_1,piVar4,iVar3,param_2);\n    }" { (expression_statement "uVar5 = FUN_000530f0(param_1,piVar4,iVar3,param_2);" (assignment_expression "uVar5 = FUN_000530f0(param_1,piVar4,iVar3,param_2)" identifier = (call_expression "FUN_000530f0(param_1,piVar4,iVar3,param_2)" identifier (argument_list "(param_1,piVar4,iVar3,param_2)" ( identifier , identifier , identifier , identifier )))) ;) }) (else_clause "else {\n      uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2);\n    }" else (compound_statement "{\n      uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2);\n    }" { (expression_statement "uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2);" (assignment_expression "uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2)" identifier = (call_expression "FUN_00052a80(param_1,piVar4,iVar3,param_2)" identifier (argument_list "(param_1,piVar4,iVar3,param_2)" ( identifier , identifier , identifier , identifier )))) ;) }))) }))) (expression_statement "uVar6 = uVar5;" (assignment_expression "uVar6 = uVar5" identifier = identifier) ;) (if_statement "if (local_34 != local_2c) {\n    uVar6 = FUN_001e6db0(local_34);\n  }" if (parenthesized_expression "(local_34 != local_2c)" ( (binary_expression "local_34 != local_2c" identifier != identifier) )) (compound_statement "{\n    uVar6 = FUN_001e6db0(local_34);\n  }" { (expression_statement "uVar6 = FUN_001e6db0(local_34);" (assignment_expression "uVar6 = FUN_001e6db0(local_34)" identifier = (call_expression "FUN_001e6db0(local_34)" identifier (argument_list "(local_34)" ( identifier )))) ;) })) (if_statement "if (local_44 != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00(&UNK_002485c4 + unaff_EDI,100,unaff_EDI + 0x248c13,uVar6);\n  }" if (parenthesized_expression "(local_44 != 0)" ( (binary_expression "local_44 != 0" identifier != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00(&UNK_002485c4 + unaff_EDI,100,unaff_EDI + 0x248c13,uVar6);\n  }" { comment (expression_statement "FUN_00069d00(&UNK_002485c4 + unaff_EDI,100,unaff_EDI + 0x248c13,uVar6);" (call_expression "FUN_00069d00(&UNK_002485c4 + unaff_EDI,100,unaff_EDI + 0x248c13,uVar6)" identifier (argument_list "(&UNK_002485c4 + unaff_EDI,100,unaff_EDI + 0x248c13,uVar6)" ( (binary_expression "&UNK_002485c4 + unaff_EDI" (pointer_expression "&UNK_002485c4" & identifier) + identifier) , number_literal , (binary_expression "unaff_EDI + 0x248c13" identifier + number_literal) , identifier ))) ;) })) (if_statement "if (local_40 != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x65,unaff_EDI + 0x248c13,local_40);\n  }" if (parenthesized_expression "(local_40 != 0)" ( (binary_expression "local_40 != 0" identifier != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x65,unaff_EDI + 0x248c13,local_40);\n  }" { comment (expression_statement "FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x65,unaff_EDI + 0x248c13,local_40);" (call_expression "FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x65,unaff_EDI + 0x248c13,local_40)" identifier (argument_list "(&UNK_002485c4 + unaff_EDI,0x65,unaff_EDI + 0x248c13,local_40)" ( (binary_expression "&UNK_002485c4 + unaff_EDI" (pointer_expression "&UNK_002485c4" & identifier) + identifier) , number_literal , (binary_expression "unaff_EDI + 0x248c13" identifier + number_literal) , identifier ))) ;) })) (expression_statement "iVar3 = local_3c;" (assignment_expression "iVar3 = local_3c" identifier = identifier) ;) (if_statement "if ((local_3c == 0) && (iVar3 = local_38, local_38 == 0)) {\n    return uVar5;\n  }" if (parenthesized_expression "((local_3c == 0) && (iVar3 = local_38, local_38 == 0))" ( (binary_expression "(local_3c == 0) && (iVar3 = local_38, local_38 == 0)" (parenthesized_expression "(local_3c == 0)" ( (binary_expression "local_3c == 0" identifier == number_literal) )) && (parenthesized_expression "(iVar3 = local_38, local_38 == 0)" ( (comma_expression "iVar3 = local_38, local_38 == 0" (assignment_expression "iVar3 = local_38" identifier = identifier) , (binary_expression "local_38 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    return uVar5;\n  }" { (return_statement "return uVar5;" return identifier ;) })) comment (expression_statement "FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x2c,unaff_EDI + 0x248c07,iVar3);" (call_expression "FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x2c,unaff_EDI + 0x248c07,iVar3)" identifier (argument_list "(&UNK_002485c4 + unaff_EDI,0x2c,unaff_EDI + 0x248c07,iVar3)" ( (binary_expression "&UNK_002485c4 + unaff_EDI" (pointer_expression "&UNK_002485c4" & identifier) + identifier) , number_literal , (binary_expression "unaff_EDI + 0x248c07" identifier + number_literal) , identifier ))) ;) })))
(translation_unit "/* DWARF original prototype: Relobj * make_object(Dwo_file * this, Dwp_output_file * output_file) */\n\nRelobj * __thiscall gold::Dwo_file::make_object(Dwo_file *this,Dwp_output_file *output_file)\n\n{\n  char *pcVar1;\n  _Alloc_hider _Var2;\n  bool bVar3;\n  Input_file *this_00;\n  int iVar4;\n  Elf_recognizer *this_01;\n  Relobj *pRVar5;\n  char *pcVar6;\n  int unaff_EDI;\n  string *error_00;\n  uchar *local_60;\n  bool big_endian;\n  int index;\n  int size;\n  Dirsearch dirpath;\n  string error;\n  \n  __x86_get_pc_thunk_di();\n  this_00 = (Input_file *)operator_new(0x94);\n                    /* try { // try from 0003801a to 0003801e has its CatchHandler @ 000382a8 */\n  Input_file::Input_file(this_00,this->name_);\n  dirpath.token_.is_blocker_ = true;\n  dirpath.directories_ = (Dir_list *)0x0;\n  this->input_file_ = this_00;\n  dirpath.token_.blockers_ = 0;\n  dirpath.token_.writer_ = (Task *)0x0;\n  dirpath.token_.waiting_.head_ = (Task *)0x0;\n  dirpath.token_.waiting_.tail_ = (Task *)0x0;\n                    /* try { // try from 0003805a to 000380a5 has its CatchHandler @ 000382a3 */\n  iVar4 = Input_file::open(this_00,(char *)&dirpath,0,&index);\n  if ((char)iVar4 == '\0') {\n    pcVar1 = this->name_;\n    pcVar6 = (char *)gettext(unaff_EDI + 0x24859a);\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003822a to 0003822e has its CatchHandler @ 000382a3 */\n    gold_fatal(pcVar6,pcVar1);\n  }\n  local_60 = *(uchar **)&(this_00->file_).size_;\n  if (-*(int *)((int)&(this_00->file_).size_ + 4) < (int)(uint)((uchar *)0x3f < local_60)) {\n    local_60 = (uchar *)0x40;\n  }\n  error_00 = (string *)0x1;\n  this_01 = (Elf_recognizer *)\n            File_read::get_view(&this_00->file_,0,0,(section_size_type)local_60,true,false);\n  if (((int)local_60 < 4) || (*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *(int *)this_01))\n  {\n    pcVar1 = this->name_;\n    pcVar6 = (char *)gettext(unaff_EDI + 0x2485a9);\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000381aa to 000381ae has its CatchHandler @ 000382a3 */\n    gold_fatal(pcVar6,pcVar1);\n  }\n  error._M_string_length = 0;\n  error.field_2._M_local_buf[0] = '\0';\n  error._M_dataplus._M_p = (pointer)&error.field_2;\n                    /* try { // try from 000380ed to 00038128 has its CatchHandler @ 000382b0 */\n  bVar3 = elfcpp::Elf_recognizer::is_valid_header\n                    (this_01,local_60,CONCAT44(&size,(int)local_60 >> 0x1f),(int *)&big_endian,\n                     (bool *)&error,error_00);\n  _Var2._M_p = error._M_dataplus._M_p;\n  if (!bVar3) {\n    pcVar1 = this->name_;\n    pcVar6 = (char *)gettext(unaff_EDI + 0x253e5c);\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003826b to 0003826f has its CatchHandler @ 000382b0 */\n    gold_fatal(pcVar6,pcVar1,_Var2._M_p);\n  }\n  if (size == 0x20) {\n    if (big_endian == false) {\n      pRVar5 = sized_make_object<32,_false>(this,(uchar *)this_01,this_00,output_file);\n    }\n    else {\n                    /* try { // try from 000381be to 000381f4 has its CatchHandler @ 000382b0 */\n      pRVar5 = sized_make_object<32,_true>(this,(uchar *)this_01,this_00,output_file);\n    }\n  }\n  else {\n    if (size != 0x40) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003829e to 000382a2 has its CatchHandler @ 000382b0 */\n      do_gold_unreachable((char *)(unaff_EDI + 0x24800f),0x444,(char *)(unaff_EDI + 0x248c1f));\n    }\n    if (big_endian == false) {\n      pRVar5 = sized_make_object<64,_false>(this,(uchar *)this_01,this_00,output_file);\n    }\n    else {\n      pRVar5 = sized_make_object<64,_true>(this,(uchar *)this_01,this_00,output_file);\n    }\n  }\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)error._M_dataplus._M_p != &error.field_2) {\n    operator_delete(error._M_dataplus._M_p);\n  }\n  if (dirpath.token_.blockers_ != 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + 0x2485c4),100,(char *)(unaff_EDI + 0x248c13));\n  }\n  if (dirpath.token_.writer_ != (Task *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + 0x2485c4),0x65,(char *)(unaff_EDI + 0x248c13));\n  }\n  if ((dirpath.token_.waiting_.head_ == (Task *)0x0) &&\n     (dirpath.token_.waiting_.tail_ == (Task *)0x0)) {\n    return pRVar5;\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable((char *)(unaff_EDI + 0x2485c4),0x2c,(char *)(unaff_EDI + 0x248c07));\n}\n\n" comment (ERROR "Relobj * __thiscall gold::Dwo_file::make_object(Dwo_file *this,Dwp_output_file *output_file)" (binary_expression "Relobj * __thiscall gold::Dwo_file::make_object(Dwo_file *this,Dwp_output_file *output_file" (binary_expression "Relobj * __thiscall gold::Dwo_file::make_object(Dwo_file *this" (binary_expression "Relobj * __thiscall" identifier * identifier) (ERROR "gold::Dwo_file::make_object(Dwo_file" identifier : : identifier : : identifier ( identifier) * identifier) (ERROR ",Dwp_output_file" , identifier) * identifier) )) (compound_statement "{\n  char *pcVar1;\n  _Alloc_hider _Var2;\n  bool bVar3;\n  Input_file *this_00;\n  int iVar4;\n  Elf_recognizer *this_01;\n  Relobj *pRVar5;\n  char *pcVar6;\n  int unaff_EDI;\n  string *error_00;\n  uchar *local_60;\n  bool big_endian;\n  int index;\n  int size;\n  Dirsearch dirpath;\n  string error;\n  \n  __x86_get_pc_thunk_di();\n  this_00 = (Input_file *)operator_new(0x94);\n                    /* try { // try from 0003801a to 0003801e has its CatchHandler @ 000382a8 */\n  Input_file::Input_file(this_00,this->name_);\n  dirpath.token_.is_blocker_ = true;\n  dirpath.directories_ = (Dir_list *)0x0;\n  this->input_file_ = this_00;\n  dirpath.token_.blockers_ = 0;\n  dirpath.token_.writer_ = (Task *)0x0;\n  dirpath.token_.waiting_.head_ = (Task *)0x0;\n  dirpath.token_.waiting_.tail_ = (Task *)0x0;\n                    /* try { // try from 0003805a to 000380a5 has its CatchHandler @ 000382a3 */\n  iVar4 = Input_file::open(this_00,(char *)&dirpath,0,&index);\n  if ((char)iVar4 == '\0') {\n    pcVar1 = this->name_;\n    pcVar6 = (char *)gettext(unaff_EDI + 0x24859a);\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003822a to 0003822e has its CatchHandler @ 000382a3 */\n    gold_fatal(pcVar6,pcVar1);\n  }\n  local_60 = *(uchar **)&(this_00->file_).size_;\n  if (-*(int *)((int)&(this_00->file_).size_ + 4) < (int)(uint)((uchar *)0x3f < local_60)) {\n    local_60 = (uchar *)0x40;\n  }\n  error_00 = (string *)0x1;\n  this_01 = (Elf_recognizer *)\n            File_read::get_view(&this_00->file_,0,0,(section_size_type)local_60,true,false);\n  if (((int)local_60 < 4) || (*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *(int *)this_01))\n  {\n    pcVar1 = this->name_;\n    pcVar6 = (char *)gettext(unaff_EDI + 0x2485a9);\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000381aa to 000381ae has its CatchHandler @ 000382a3 */\n    gold_fatal(pcVar6,pcVar1);\n  }\n  error._M_string_length = 0;\n  error.field_2._M_local_buf[0] = '\0';\n  error._M_dataplus._M_p = (pointer)&error.field_2;\n                    /* try { // try from 000380ed to 00038128 has its CatchHandler @ 000382b0 */\n  bVar3 = elfcpp::Elf_recognizer::is_valid_header\n                    (this_01,local_60,CONCAT44(&size,(int)local_60 >> 0x1f),(int *)&big_endian,\n                     (bool *)&error,error_00);\n  _Var2._M_p = error._M_dataplus._M_p;\n  if (!bVar3) {\n    pcVar1 = this->name_;\n    pcVar6 = (char *)gettext(unaff_EDI + 0x253e5c);\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003826b to 0003826f has its CatchHandler @ 000382b0 */\n    gold_fatal(pcVar6,pcVar1,_Var2._M_p);\n  }\n  if (size == 0x20) {\n    if (big_endian == false) {\n      pRVar5 = sized_make_object<32,_false>(this,(uchar *)this_01,this_00,output_file);\n    }\n    else {\n                    /* try { // try from 000381be to 000381f4 has its CatchHandler @ 000382b0 */\n      pRVar5 = sized_make_object<32,_true>(this,(uchar *)this_01,this_00,output_file);\n    }\n  }\n  else {\n    if (size != 0x40) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003829e to 000382a2 has its CatchHandler @ 000382b0 */\n      do_gold_unreachable((char *)(unaff_EDI + 0x24800f),0x444,(char *)(unaff_EDI + 0x248c1f));\n    }\n    if (big_endian == false) {\n      pRVar5 = sized_make_object<64,_false>(this,(uchar *)this_01,this_00,output_file);\n    }\n    else {\n      pRVar5 = sized_make_object<64,_true>(this,(uchar *)this_01,this_00,output_file);\n    }\n  }\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)error._M_dataplus._M_p != &error.field_2) {\n    operator_delete(error._M_dataplus._M_p);\n  }\n  if (dirpath.token_.blockers_ != 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + 0x2485c4),100,(char *)(unaff_EDI + 0x248c13));\n  }\n  if (dirpath.token_.writer_ != (Task *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + 0x2485c4),0x65,(char *)(unaff_EDI + 0x248c13));\n  }\n  if ((dirpath.token_.waiting_.head_ == (Task *)0x0) &&\n     (dirpath.token_.waiting_.tail_ == (Task *)0x0)) {\n    return pRVar5;\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable((char *)(unaff_EDI + 0x2485c4),0x2c,(char *)(unaff_EDI + 0x248c07));\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "_Alloc_hider _Var2;" type_identifier identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "Input_file *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "Elf_recognizer *this_01;" type_identifier (pointer_declarator "*this_01" * identifier) ;) (declaration "Relobj *pRVar5;" type_identifier (pointer_declarator "*pRVar5" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "string *error_00;" type_identifier (pointer_declarator "*error_00" * identifier) ;) (declaration "uchar *local_60;" type_identifier (pointer_declarator "*local_60" * identifier) ;) (declaration "bool big_endian;" primitive_type identifier ;) (declaration "int index;" primitive_type identifier ;) (declaration "int size;" primitive_type identifier ;) (declaration "Dirsearch dirpath;" type_identifier identifier ;) (declaration "string error;" type_identifier identifier ;) (expression_statement "__x86_get_pc_thunk_di();" (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( ))) ;) (expression_statement "this_00 = (Input_file *)operator_new(0x94);" (assignment_expression "this_00 = (Input_file *)operator_new(0x94)" identifier = (cast_expression "(Input_file *)operator_new(0x94)" ( (type_descriptor "Input_file *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x94)" identifier (argument_list "(0x94)" ( number_literal ))))) ;) comment (labeled_statement "Input_file::Input_file(this_00,this->name_);" statement_identifier : (ERROR ":" :) (expression_statement "Input_file(this_00,this->name_);" (call_expression "Input_file(this_00,this->name_)" identifier (argument_list "(this_00,this->name_)" ( identifier , (field_expression "this->name_" identifier -> field_identifier) ))) ;)) (expression_statement "dirpath.token_.is_blocker_ = true;" (assignment_expression "dirpath.token_.is_blocker_ = true" (field_expression "dirpath.token_.is_blocker_" (field_expression "dirpath.token_" identifier . field_identifier) . field_identifier) = true) ;) (expression_statement "dirpath.directories_ = (Dir_list *)0x0;" (assignment_expression "dirpath.directories_ = (Dir_list *)0x0" (field_expression "dirpath.directories_" identifier . field_identifier) = (cast_expression "(Dir_list *)0x0" ( (type_descriptor "Dir_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "this->input_file_ = this_00;" (assignment_expression "this->input_file_ = this_00" (field_expression "this->input_file_" identifier -> field_identifier) = identifier) ;) (expression_statement "dirpath.token_.blockers_ = 0;" (assignment_expression "dirpath.token_.blockers_ = 0" (field_expression "dirpath.token_.blockers_" (field_expression "dirpath.token_" identifier . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "dirpath.token_.writer_ = (Task *)0x0;" (assignment_expression "dirpath.token_.writer_ = (Task *)0x0" (field_expression "dirpath.token_.writer_" (field_expression "dirpath.token_" identifier . field_identifier) . field_identifier) = (cast_expression "(Task *)0x0" ( (type_descriptor "Task *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "dirpath.token_.waiting_.head_ = (Task *)0x0;" (assignment_expression "dirpath.token_.waiting_.head_ = (Task *)0x0" (field_expression "dirpath.token_.waiting_.head_" (field_expression "dirpath.token_.waiting_" (field_expression "dirpath.token_" identifier . field_identifier) . field_identifier) . field_identifier) = (cast_expression "(Task *)0x0" ( (type_descriptor "Task *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "dirpath.token_.waiting_.tail_ = (Task *)0x0;" (assignment_expression "dirpath.token_.waiting_.tail_ = (Task *)0x0" (field_expression "dirpath.token_.waiting_.tail_" (field_expression "dirpath.token_.waiting_" (field_expression "dirpath.token_" identifier . field_identifier) . field_identifier) . field_identifier) = (cast_expression "(Task *)0x0" ( (type_descriptor "Task *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) comment (ERROR "iVar4 = Input_file::" (assignment_expression "iVar4 = Input_file" identifier = identifier) : :) (expression_statement "open(this_00,(char *)&dirpath,0,&index);" (call_expression "open(this_00,(char *)&dirpath,0,&index)" identifier (argument_list "(this_00,(char *)&dirpath,0,&index)" ( identifier , (cast_expression "(char *)&dirpath" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&dirpath" & identifier)) , number_literal , (pointer_expression "&index" & identifier) ))) ;) (if_statement "if ((char)iVar4 == '\0') {\n    pcVar1 = this->name_;\n    pcVar6 = (char *)gettext(unaff_EDI + 0x24859a);\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003822a to 0003822e has its CatchHandler @ 000382a3 */\n    gold_fatal(pcVar6,pcVar1);\n  }" if (parenthesized_expression "((char)iVar4 == '\0')" ( (binary_expression "(char)iVar4 == '\0'" (cast_expression "(char)iVar4" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    pcVar1 = this->name_;\n    pcVar6 = (char *)gettext(unaff_EDI + 0x24859a);\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003822a to 0003822e has its CatchHandler @ 000382a3 */\n    gold_fatal(pcVar6,pcVar1);\n  }" { (expression_statement "pcVar1 = this->name_;" (assignment_expression "pcVar1 = this->name_" identifier = (field_expression "this->name_" identifier -> field_identifier)) ;) (expression_statement "pcVar6 = (char *)gettext(unaff_EDI + 0x24859a);" (assignment_expression "pcVar6 = (char *)gettext(unaff_EDI + 0x24859a)" identifier = (cast_expression "(char *)gettext(unaff_EDI + 0x24859a)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext(unaff_EDI + 0x24859a)" identifier (argument_list "(unaff_EDI + 0x24859a)" ( (binary_expression "unaff_EDI + 0x24859a" identifier + number_literal) ))))) ;) comment comment (expression_statement "gold_fatal(pcVar6,pcVar1);" (call_expression "gold_fatal(pcVar6,pcVar1)" identifier (argument_list "(pcVar6,pcVar1)" ( identifier , identifier ))) ;) })) (expression_statement "local_60 = *(uchar **)&(this_00->file_).size_;" (assignment_expression "local_60 = *(uchar **)&(this_00->file_).size_" identifier = (pointer_expression "*(uchar **)&(this_00->file_).size_" * (cast_expression "(uchar **)&(this_00->file_).size_" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&(this_00->file_).size_" & (field_expression "(this_00->file_).size_" (parenthesized_expression "(this_00->file_)" ( (field_expression "this_00->file_" identifier -> field_identifier) )) . field_identifier))))) ;) (if_statement "if (-*(int *)((int)&(this_00->file_).size_ + 4) < (int)(uint)((uchar *)0x3f < local_60)) {\n    local_60 = (uchar *)0x40;\n  }" if (parenthesized_expression "(-*(int *)((int)&(this_00->file_).size_ + 4) < (int)(uint)((uchar *)0x3f < local_60))" ( (binary_expression "-*(int *)((int)&(this_00->file_).size_ + 4) < (int)(uint)((uchar *)0x3f < local_60)" (unary_expression "-*(int *)((int)&(this_00->file_).size_ + 4)" - (pointer_expression "*(int *)((int)&(this_00->file_).size_ + 4)" * (cast_expression "(int *)((int)&(this_00->file_).size_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(this_00->file_).size_ + 4)" ( (binary_expression "(int)&(this_00->file_).size_ + 4" (cast_expression "(int)&(this_00->file_).size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(this_00->file_).size_" & (field_expression "(this_00->file_).size_" (parenthesized_expression "(this_00->file_)" ( (field_expression "this_00->file_" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) < (cast_expression "(int)(uint)((uchar *)0x3f < local_60)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)((uchar *)0x3f < local_60)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uchar *)0x3f < local_60)" ( (binary_expression "(uchar *)0x3f < local_60" (cast_expression "(uchar *)0x3f" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) < identifier) ))))) )) (compound_statement "{\n    local_60 = (uchar *)0x40;\n  }" { (expression_statement "local_60 = (uchar *)0x40;" (assignment_expression "local_60 = (uchar *)0x40" identifier = (cast_expression "(uchar *)0x40" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "error_00 = (string *)0x1;" (assignment_expression "error_00 = (string *)0x1" identifier = (cast_expression "(string *)0x1" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (ERROR "this_01 = (Elf_recognizer *)\n            File_read::" (assignment_expression "this_01 = (Elf_recognizer *)\n            File_read" identifier = (cast_expression "(Elf_recognizer *)\n            File_read" ( (type_descriptor "Elf_recognizer *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) : :) (expression_statement "get_view(&this_00->file_,0,0,(section_size_type)local_60,true,false);" (call_expression "get_view(&this_00->file_,0,0,(section_size_type)local_60,true,false)" identifier (argument_list "(&this_00->file_,0,0,(section_size_type)local_60,true,false)" ( (pointer_expression "&this_00->file_" & (field_expression "this_00->file_" identifier -> field_identifier)) , number_literal , number_literal , (cast_expression "(section_size_type)local_60" ( (type_descriptor "section_size_type" type_identifier) ) identifier) , true , false ))) ;) (if_statement "if (((int)local_60 < 4) || (*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *(int *)this_01))\n  {\n    pcVar1 = this->name_;\n    pcVar6 = (char *)gettext(unaff_EDI + 0x2485a9);\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000381aa to 000381ae has its CatchHandler @ 000382a3 */\n    gold_fatal(pcVar6,pcVar1);\n  }" if (parenthesized_expression "(((int)local_60 < 4) || (*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *(int *)this_01))" ( (binary_expression "((int)local_60 < 4) || (*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *(int *)this_01)" (parenthesized_expression "((int)local_60 < 4)" ( (binary_expression "(int)local_60 < 4" (cast_expression "(int)local_60" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) || (parenthesized_expression "(*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *(int *)this_01)" ( (binary_expression "*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *(int *)this_01" (pointer_expression "*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22)" * (cast_expression "(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(BYTE_ARRAY_00357355 + unaff_EDI + 0x22)" ( (binary_expression "BYTE_ARRAY_00357355 + unaff_EDI + 0x22" (binary_expression "BYTE_ARRAY_00357355 + unaff_EDI" identifier + identifier) + number_literal) )))) != (pointer_expression "*(int *)this_01" * (cast_expression "(int *)this_01" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ))) )) (compound_statement "{\n    pcVar1 = this->name_;\n    pcVar6 = (char *)gettext(unaff_EDI + 0x2485a9);\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 000381aa to 000381ae has its CatchHandler @ 000382a3 */\n    gold_fatal(pcVar6,pcVar1);\n  }" { (expression_statement "pcVar1 = this->name_;" (assignment_expression "pcVar1 = this->name_" identifier = (field_expression "this->name_" identifier -> field_identifier)) ;) (expression_statement "pcVar6 = (char *)gettext(unaff_EDI + 0x2485a9);" (assignment_expression "pcVar6 = (char *)gettext(unaff_EDI + 0x2485a9)" identifier = (cast_expression "(char *)gettext(unaff_EDI + 0x2485a9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext(unaff_EDI + 0x2485a9)" identifier (argument_list "(unaff_EDI + 0x2485a9)" ( (binary_expression "unaff_EDI + 0x2485a9" identifier + number_literal) ))))) ;) comment comment (expression_statement "gold_fatal(pcVar6,pcVar1);" (call_expression "gold_fatal(pcVar6,pcVar1)" identifier (argument_list "(pcVar6,pcVar1)" ( identifier , identifier ))) ;) })) (expression_statement "error._M_string_length = 0;" (assignment_expression "error._M_string_length = 0" (field_expression "error._M_string_length" identifier . field_identifier) = number_literal) ;) (expression_statement "error.field_2._M_local_buf[0] = '\0';" (assignment_expression "error.field_2._M_local_buf[0] = '\0'" (subscript_expression "error.field_2._M_local_buf[0]" (field_expression "error.field_2._M_local_buf" (field_expression "error.field_2" identifier . field_identifier) . field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "error._M_dataplus._M_p = (pointer)&error.field_2;" (assignment_expression "error._M_dataplus._M_p = (pointer)&error.field_2" (field_expression "error._M_dataplus._M_p" (field_expression "error._M_dataplus" identifier . field_identifier) . field_identifier) = (binary_expression "(pointer)&error.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "error.field_2" identifier . field_identifier))) ;) comment (ERROR "bVar3 = elfcpp::" (assignment_expression "bVar3 = elfcpp" identifier = identifier) : :) (labeled_statement "Elf_recognizer::is_valid_header\n                    (this_01,local_60,CONCAT44(&size,(int)local_60 >> 0x1f),(int *)&big_endian,\n                     (bool *)&error,error_00);" statement_identifier : (ERROR ":" :) (expression_statement "is_valid_header\n                    (this_01,local_60,CONCAT44(&size,(int)local_60 >> 0x1f),(int *)&big_endian,\n                     (bool *)&error,error_00);" (call_expression "is_valid_header\n                    (this_01,local_60,CONCAT44(&size,(int)local_60 >> 0x1f),(int *)&big_endian,\n                     (bool *)&error,error_00)" identifier (argument_list "(this_01,local_60,CONCAT44(&size,(int)local_60 >> 0x1f),(int *)&big_endian,\n                     (bool *)&error,error_00)" ( identifier , identifier , (call_expression "CONCAT44(&size,(int)local_60 >> 0x1f)" identifier (argument_list "(&size,(int)local_60 >> 0x1f)" ( (pointer_expression "&size" & identifier) , (binary_expression "(int)local_60 >> 0x1f" (cast_expression "(int)local_60" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) , (cast_expression "(int *)&big_endian" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&big_endian" & identifier)) , (cast_expression "(bool *)&error" ( (type_descriptor "bool *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&error" & identifier)) , identifier ))) ;)) (expression_statement "_Var2._M_p = error._M_dataplus._M_p;" (assignment_expression "_Var2._M_p = error._M_dataplus._M_p" (field_expression "_Var2._M_p" identifier . field_identifier) = (field_expression "error._M_dataplus._M_p" (field_expression "error._M_dataplus" identifier . field_identifier) . field_identifier)) ;) (if_statement "if (!bVar3) {\n    pcVar1 = this->name_;\n    pcVar6 = (char *)gettext(unaff_EDI + 0x253e5c);\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003826b to 0003826f has its CatchHandler @ 000382b0 */\n    gold_fatal(pcVar6,pcVar1,_Var2._M_p);\n  }" if (parenthesized_expression "(!bVar3)" ( (unary_expression "!bVar3" ! identifier) )) (compound_statement "{\n    pcVar1 = this->name_;\n    pcVar6 = (char *)gettext(unaff_EDI + 0x253e5c);\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003826b to 0003826f has its CatchHandler @ 000382b0 */\n    gold_fatal(pcVar6,pcVar1,_Var2._M_p);\n  }" { (expression_statement "pcVar1 = this->name_;" (assignment_expression "pcVar1 = this->name_" identifier = (field_expression "this->name_" identifier -> field_identifier)) ;) (expression_statement "pcVar6 = (char *)gettext(unaff_EDI + 0x253e5c);" (assignment_expression "pcVar6 = (char *)gettext(unaff_EDI + 0x253e5c)" identifier = (cast_expression "(char *)gettext(unaff_EDI + 0x253e5c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext(unaff_EDI + 0x253e5c)" identifier (argument_list "(unaff_EDI + 0x253e5c)" ( (binary_expression "unaff_EDI + 0x253e5c" identifier + number_literal) ))))) ;) comment comment (expression_statement "gold_fatal(pcVar6,pcVar1,_Var2._M_p);" (call_expression "gold_fatal(pcVar6,pcVar1,_Var2._M_p)" identifier (argument_list "(pcVar6,pcVar1,_Var2._M_p)" ( identifier , identifier , (field_expression "_Var2._M_p" identifier . field_identifier) ))) ;) })) (if_statement "if (size == 0x20) {\n    if (big_endian == false) {\n      pRVar5 = sized_make_object<32,_false>(this,(uchar *)this_01,this_00,output_file);\n    }\n    else {\n                    /* try { // try from 000381be to 000381f4 has its CatchHandler @ 000382b0 */\n      pRVar5 = sized_make_object<32,_true>(this,(uchar *)this_01,this_00,output_file);\n    }\n  }\n  else {\n    if (size != 0x40) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003829e to 000382a2 has its CatchHandler @ 000382b0 */\n      do_gold_unreachable((char *)(unaff_EDI + 0x24800f),0x444,(char *)(unaff_EDI + 0x248c1f));\n    }\n    if (big_endian == false) {\n      pRVar5 = sized_make_object<64,_false>(this,(uchar *)this_01,this_00,output_file);\n    }\n    else {\n      pRVar5 = sized_make_object<64,_true>(this,(uchar *)this_01,this_00,output_file);\n    }\n  }" if (parenthesized_expression "(size == 0x20)" ( (binary_expression "size == 0x20" identifier == number_literal) )) (compound_statement "{\n    if (big_endian == false) {\n      pRVar5 = sized_make_object<32,_false>(this,(uchar *)this_01,this_00,output_file);\n    }\n    else {\n                    /* try { // try from 000381be to 000381f4 has its CatchHandler @ 000382b0 */\n      pRVar5 = sized_make_object<32,_true>(this,(uchar *)this_01,this_00,output_file);\n    }\n  }" { (if_statement "if (big_endian == false) {\n      pRVar5 = sized_make_object<32,_false>(this,(uchar *)this_01,this_00,output_file);\n    }\n    else {\n                    /* try { // try from 000381be to 000381f4 has its CatchHandler @ 000382b0 */\n      pRVar5 = sized_make_object<32,_true>(this,(uchar *)this_01,this_00,output_file);\n    }" if (parenthesized_expression "(big_endian == false)" ( (binary_expression "big_endian == false" identifier == false) )) (compound_statement "{\n      pRVar5 = sized_make_object<32,_false>(this,(uchar *)this_01,this_00,output_file);\n    }" { (expression_statement "pRVar5 = sized_make_object<32,_false>(this,(uchar *)this_01,this_00,output_file);" (comma_expression "pRVar5 = sized_make_object<32,_false>(this,(uchar *)this_01,this_00,output_file)" (assignment_expression "pRVar5 = sized_make_object<32" identifier = (binary_expression "sized_make_object<32" identifier < number_literal)) , (binary_expression "_false>(this,(uchar *)this_01,this_00,output_file)" identifier > (parenthesized_expression "(this,(uchar *)this_01,this_00,output_file)" ( (comma_expression "this,(uchar *)this_01,this_00,output_file" identifier , (comma_expression "(uchar *)this_01,this_00,output_file" (cast_expression "(uchar *)this_01" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (comma_expression "this_00,output_file" identifier , identifier))) )))) ;) }) (else_clause "else {\n                    /* try { // try from 000381be to 000381f4 has its CatchHandler @ 000382b0 */\n      pRVar5 = sized_make_object<32,_true>(this,(uchar *)this_01,this_00,output_file);\n    }" else (compound_statement "{\n                    /* try { // try from 000381be to 000381f4 has its CatchHandler @ 000382b0 */\n      pRVar5 = sized_make_object<32,_true>(this,(uchar *)this_01,this_00,output_file);\n    }" { comment (expression_statement "pRVar5 = sized_make_object<32,_true>(this,(uchar *)this_01,this_00,output_file);" (comma_expression "pRVar5 = sized_make_object<32,_true>(this,(uchar *)this_01,this_00,output_file)" (assignment_expression "pRVar5 = sized_make_object<32" identifier = (binary_expression "sized_make_object<32" identifier < number_literal)) , (binary_expression "_true>(this,(uchar *)this_01,this_00,output_file)" identifier > (parenthesized_expression "(this,(uchar *)this_01,this_00,output_file)" ( (comma_expression "this,(uchar *)this_01,this_00,output_file" identifier , (comma_expression "(uchar *)this_01,this_00,output_file" (cast_expression "(uchar *)this_01" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (comma_expression "this_00,output_file" identifier , identifier))) )))) ;) }))) }) (else_clause "else {\n    if (size != 0x40) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003829e to 000382a2 has its CatchHandler @ 000382b0 */\n      do_gold_unreachable((char *)(unaff_EDI + 0x24800f),0x444,(char *)(unaff_EDI + 0x248c1f));\n    }\n    if (big_endian == false) {\n      pRVar5 = sized_make_object<64,_false>(this,(uchar *)this_01,this_00,output_file);\n    }\n    else {\n      pRVar5 = sized_make_object<64,_true>(this,(uchar *)this_01,this_00,output_file);\n    }\n  }" else (compound_statement "{\n    if (size != 0x40) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003829e to 000382a2 has its CatchHandler @ 000382b0 */\n      do_gold_unreachable((char *)(unaff_EDI + 0x24800f),0x444,(char *)(unaff_EDI + 0x248c1f));\n    }\n    if (big_endian == false) {\n      pRVar5 = sized_make_object<64,_false>(this,(uchar *)this_01,this_00,output_file);\n    }\n    else {\n      pRVar5 = sized_make_object<64,_true>(this,(uchar *)this_01,this_00,output_file);\n    }\n  }" { (if_statement "if (size != 0x40) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003829e to 000382a2 has its CatchHandler @ 000382b0 */\n      do_gold_unreachable((char *)(unaff_EDI + 0x24800f),0x444,(char *)(unaff_EDI + 0x248c1f));\n    }" if (parenthesized_expression "(size != 0x40)" ( (binary_expression "size != 0x40" identifier != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0003829e to 000382a2 has its CatchHandler @ 000382b0 */\n      do_gold_unreachable((char *)(unaff_EDI + 0x24800f),0x444,(char *)(unaff_EDI + 0x248c1f));\n    }" { comment comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x24800f),0x444,(char *)(unaff_EDI + 0x248c1f));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x24800f),0x444,(char *)(unaff_EDI + 0x248c1f))" identifier (argument_list "((char *)(unaff_EDI + 0x24800f),0x444,(char *)(unaff_EDI + 0x248c1f))" ( (cast_expression "(char *)(unaff_EDI + 0x24800f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x24800f)" ( (binary_expression "unaff_EDI + 0x24800f" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x248c1f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x248c1f)" ( (binary_expression "unaff_EDI + 0x248c1f" identifier + number_literal) ))) ))) ;) })) (if_statement "if (big_endian == false) {\n      pRVar5 = sized_make_object<64,_false>(this,(uchar *)this_01,this_00,output_file);\n    }\n    else {\n      pRVar5 = sized_make_object<64,_true>(this,(uchar *)this_01,this_00,output_file);\n    }" if (parenthesized_expression "(big_endian == false)" ( (binary_expression "big_endian == false" identifier == false) )) (compound_statement "{\n      pRVar5 = sized_make_object<64,_false>(this,(uchar *)this_01,this_00,output_file);\n    }" { (expression_statement "pRVar5 = sized_make_object<64,_false>(this,(uchar *)this_01,this_00,output_file);" (comma_expression "pRVar5 = sized_make_object<64,_false>(this,(uchar *)this_01,this_00,output_file)" (assignment_expression "pRVar5 = sized_make_object<64" identifier = (binary_expression "sized_make_object<64" identifier < number_literal)) , (binary_expression "_false>(this,(uchar *)this_01,this_00,output_file)" identifier > (parenthesized_expression "(this,(uchar *)this_01,this_00,output_file)" ( (comma_expression "this,(uchar *)this_01,this_00,output_file" identifier , (comma_expression "(uchar *)this_01,this_00,output_file" (cast_expression "(uchar *)this_01" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (comma_expression "this_00,output_file" identifier , identifier))) )))) ;) }) (else_clause "else {\n      pRVar5 = sized_make_object<64,_true>(this,(uchar *)this_01,this_00,output_file);\n    }" else (compound_statement "{\n      pRVar5 = sized_make_object<64,_true>(this,(uchar *)this_01,this_00,output_file);\n    }" { (expression_statement "pRVar5 = sized_make_object<64,_true>(this,(uchar *)this_01,this_00,output_file);" (comma_expression "pRVar5 = sized_make_object<64,_true>(this,(uchar *)this_01,this_00,output_file)" (assignment_expression "pRVar5 = sized_make_object<64" identifier = (binary_expression "sized_make_object<64" identifier < number_literal)) , (binary_expression "_true>(this,(uchar *)this_01,this_00,output_file)" identifier > (parenthesized_expression "(this,(uchar *)this_01,this_00,output_file)" ( (comma_expression "this,(uchar *)this_01,this_00,output_file" identifier , (comma_expression "(uchar *)this_01,this_00,output_file" (cast_expression "(uchar *)this_01" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (comma_expression "this_00,output_file" identifier , identifier))) )))) ;) }))) }))) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)error._M_dataplus._M_p != &error.field_2) {\n    operator_delete(error._M_dataplus._M_p);\n  }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)error._M_dataplus._M_p != &error.field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)error._M_dataplus._M_p != &error.field_2)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n       *)error._M_dataplus._M_p != &error.field_2" (binary_expression "allocator<char>_>_9\n       *)error._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n       *)error._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "error._M_dataplus._M_p" (field_expression "error._M_dataplus" identifier . field_identifier) . field_identifier))) != (pointer_expression "&error.field_2" & (field_expression "error.field_2" identifier . field_identifier))) )) )) (compound_statement "{\n    operator_delete(error._M_dataplus._M_p);\n  }" { (expression_statement "operator_delete(error._M_dataplus._M_p);" (call_expression "operator_delete(error._M_dataplus._M_p)" identifier (argument_list "(error._M_dataplus._M_p)" ( (field_expression "error._M_dataplus._M_p" (field_expression "error._M_dataplus" identifier . field_identifier) . field_identifier) ))) ;) })) (if_statement "if (dirpath.token_.blockers_ != 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + 0x2485c4),100,(char *)(unaff_EDI + 0x248c13));\n  }" if (parenthesized_expression "(dirpath.token_.blockers_ != 0)" ( (binary_expression "dirpath.token_.blockers_ != 0" (field_expression "dirpath.token_.blockers_" (field_expression "dirpath.token_" identifier . field_identifier) . field_identifier) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + 0x2485c4),100,(char *)(unaff_EDI + 0x248c13));\n  }" { comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x2485c4),100,(char *)(unaff_EDI + 0x248c13));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x2485c4),100,(char *)(unaff_EDI + 0x248c13))" identifier (argument_list "((char *)(unaff_EDI + 0x2485c4),100,(char *)(unaff_EDI + 0x248c13))" ( (cast_expression "(char *)(unaff_EDI + 0x2485c4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x2485c4)" ( (binary_expression "unaff_EDI + 0x2485c4" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x248c13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x248c13)" ( (binary_expression "unaff_EDI + 0x248c13" identifier + number_literal) ))) ))) ;) })) (if_statement "if (dirpath.token_.writer_ != (Task *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + 0x2485c4),0x65,(char *)(unaff_EDI + 0x248c13));\n  }" if (parenthesized_expression "(dirpath.token_.writer_ != (Task *)0x0)" ( (binary_expression "dirpath.token_.writer_ != (Task *)0x0" (field_expression "dirpath.token_.writer_" (field_expression "dirpath.token_" identifier . field_identifier) . field_identifier) != (cast_expression "(Task *)0x0" ( (type_descriptor "Task *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + 0x2485c4),0x65,(char *)(unaff_EDI + 0x248c13));\n  }" { comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x2485c4),0x65,(char *)(unaff_EDI + 0x248c13));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x2485c4),0x65,(char *)(unaff_EDI + 0x248c13))" identifier (argument_list "((char *)(unaff_EDI + 0x2485c4),0x65,(char *)(unaff_EDI + 0x248c13))" ( (cast_expression "(char *)(unaff_EDI + 0x2485c4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x2485c4)" ( (binary_expression "unaff_EDI + 0x2485c4" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x248c13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x248c13)" ( (binary_expression "unaff_EDI + 0x248c13" identifier + number_literal) ))) ))) ;) })) (if_statement "if ((dirpath.token_.waiting_.head_ == (Task *)0x0) &&\n     (dirpath.token_.waiting_.tail_ == (Task *)0x0)) {\n    return pRVar5;\n  }" if (parenthesized_expression "((dirpath.token_.waiting_.head_ == (Task *)0x0) &&\n     (dirpath.token_.waiting_.tail_ == (Task *)0x0))" ( (binary_expression "(dirpath.token_.waiting_.head_ == (Task *)0x0) &&\n     (dirpath.token_.waiting_.tail_ == (Task *)0x0)" (parenthesized_expression "(dirpath.token_.waiting_.head_ == (Task *)0x0)" ( (binary_expression "dirpath.token_.waiting_.head_ == (Task *)0x0" (field_expression "dirpath.token_.waiting_.head_" (field_expression "dirpath.token_.waiting_" (field_expression "dirpath.token_" identifier . field_identifier) . field_identifier) . field_identifier) == (cast_expression "(Task *)0x0" ( (type_descriptor "Task *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(dirpath.token_.waiting_.tail_ == (Task *)0x0)" ( (binary_expression "dirpath.token_.waiting_.tail_ == (Task *)0x0" (field_expression "dirpath.token_.waiting_.tail_" (field_expression "dirpath.token_.waiting_" (field_expression "dirpath.token_" identifier . field_identifier) . field_identifier) . field_identifier) == (cast_expression "(Task *)0x0" ( (type_descriptor "Task *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n    return pRVar5;\n  }" { (return_statement "return pRVar5;" return identifier ;) })) comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x2485c4),0x2c,(char *)(unaff_EDI + 0x248c07));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x2485c4),0x2c,(char *)(unaff_EDI + 0x248c07))" identifier (argument_list "((char *)(unaff_EDI + 0x2485c4),0x2c,(char *)(unaff_EDI + 0x248c07))" ( (cast_expression "(char *)(unaff_EDI + 0x2485c4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x2485c4)" ( (binary_expression "unaff_EDI + 0x2485c4" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x248c07)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x248c07)" ( (binary_expression "unaff_EDI + 0x248c07" identifier + number_literal) ))) ))) ;) }))
(translation_unit "undefined4 FUN_00037ff0(undefined4 *param_1,undefined4 param_2)\n\n{\n  undefined1 *puVar1;\n  char cVar2;\n  int iVar3;\n  int *piVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 extraout_ECX;\n  int unaff_EDI;\n  uint local_60;\n  char local_55;\n  undefined1 local_54 [4];\n  int local_50 [2];\n  undefined1 local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_38;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  FUN_000559ee();\n  iVar3 = FUN_001e5200(0x94);\n                    \n  FUN_000688d0(iVar3,*param_1);\n  local_48 = 1;\n  local_50[1] = 0;\n  param_1[2] = iVar3;\n  local_44 = 0;\n  local_40 = 0;\n  local_3c = 0;\n  local_38 = 0;\n                    \n  cVar2 = FUN_00069870(iVar3,local_50 + 1,0,local_54);\n  if (cVar2 == '\0') {\n    uVar5 = *param_1;\n    uVar6 = gettext(&UNK_0024859a + unaff_EDI);\n                    \n                    \n    FUN_00065450(uVar6,uVar5);\n  }\n  local_60 = *(uint *)(iVar3 + 0x40);\n  if (-*(int *)(iVar3 + 0x44) < (int)(uint)(0x3f < local_60)) {\n    local_60 = 0x40;\n  }\n  piVar4 = (int *)FUN_000687f0(iVar3 + 0x1c,0,0,0,0,local_60,1,0);\n  if (((int)local_60 < 4) || (*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *piVar4)) {\n    uVar5 = *param_1;\n    uVar6 = gettext(&UNK_002485a9 + unaff_EDI);\n                    \n                    \n    FUN_00065450(uVar6,uVar5);\n  }\n  local_30 = 0;\n  local_2c[0] = 0;\n  local_34 = local_2c;\n                    \n  cVar2 = FUN_00050f10(piVar4,local_60,(int)local_60 >> 0x1f,local_50,&local_55,&local_34);\n  puVar1 = local_34;\n  if (cVar2 == '\0') {\n    uVar5 = *param_1;\n    uVar6 = gettext(unaff_EDI + 0x253e5c);\n                    \n                    \n    FUN_00065450(uVar6,uVar5,puVar1);\n  }\n  if (local_50[0] == 0x20) {\n    if (local_55 == '\0') {\n      uVar5 = FUN_000522b0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n                    \n      uVar5 = FUN_00051c40(param_1,piVar4,iVar3,param_2);\n    }\n  }\n  else {\n    if (local_50[0] != 0x40) {\n                    \n                    \n      FUN_00069d00(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX);\n    }\n    if (local_55 == '\0') {\n      uVar5 = FUN_000530f0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n      uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2);\n    }\n  }\n  uVar6 = uVar5;\n  if (local_34 != local_2c) {\n    uVar6 = FUN_001e6db0(local_34);\n  }\n  if (local_44 != 0) {\n                    \n    FUN_00069d00(&UNK_002485c4 + unaff_EDI,100,unaff_EDI + 0x248c13,uVar6);\n  }\n  if (local_40 != 0) {\n                    \n    FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x65,unaff_EDI + 0x248c13,local_40);\n  }\n  iVar3 = local_3c;\n  if ((local_3c == 0) && (iVar3 = local_38, local_38 == 0)) {\n    return uVar5;\n  }\n                    \n  FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x2c,unaff_EDI + 0x248c07,iVar3);\n}\n\n" (function_definition "undefined4 FUN_00037ff0(undefined4 *param_1,undefined4 param_2)\n\n{\n  undefined1 *puVar1;\n  char cVar2;\n  int iVar3;\n  int *piVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 extraout_ECX;\n  int unaff_EDI;\n  uint local_60;\n  char local_55;\n  undefined1 local_54 [4];\n  int local_50 [2];\n  undefined1 local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_38;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  FUN_000559ee();\n  iVar3 = FUN_001e5200(0x94);\n                    \n  FUN_000688d0(iVar3,*param_1);\n  local_48 = 1;\n  local_50[1] = 0;\n  param_1[2] = iVar3;\n  local_44 = 0;\n  local_40 = 0;\n  local_3c = 0;\n  local_38 = 0;\n                    \n  cVar2 = FUN_00069870(iVar3,local_50 + 1,0,local_54);\n  if (cVar2 == '\0') {\n    uVar5 = *param_1;\n    uVar6 = gettext(&UNK_0024859a + unaff_EDI);\n                    \n                    \n    FUN_00065450(uVar6,uVar5);\n  }\n  local_60 = *(uint *)(iVar3 + 0x40);\n  if (-*(int *)(iVar3 + 0x44) < (int)(uint)(0x3f < local_60)) {\n    local_60 = 0x40;\n  }\n  piVar4 = (int *)FUN_000687f0(iVar3 + 0x1c,0,0,0,0,local_60,1,0);\n  if (((int)local_60 < 4) || (*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *piVar4)) {\n    uVar5 = *param_1;\n    uVar6 = gettext(&UNK_002485a9 + unaff_EDI);\n                    \n                    \n    FUN_00065450(uVar6,uVar5);\n  }\n  local_30 = 0;\n  local_2c[0] = 0;\n  local_34 = local_2c;\n                    \n  cVar2 = FUN_00050f10(piVar4,local_60,(int)local_60 >> 0x1f,local_50,&local_55,&local_34);\n  puVar1 = local_34;\n  if (cVar2 == '\0') {\n    uVar5 = *param_1;\n    uVar6 = gettext(unaff_EDI + 0x253e5c);\n                    \n                    \n    FUN_00065450(uVar6,uVar5,puVar1);\n  }\n  if (local_50[0] == 0x20) {\n    if (local_55 == '\0') {\n      uVar5 = FUN_000522b0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n                    \n      uVar5 = FUN_00051c40(param_1,piVar4,iVar3,param_2);\n    }\n  }\n  else {\n    if (local_50[0] != 0x40) {\n                    \n                    \n      FUN_00069d00(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX);\n    }\n    if (local_55 == '\0') {\n      uVar5 = FUN_000530f0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n      uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2);\n    }\n  }\n  uVar6 = uVar5;\n  if (local_34 != local_2c) {\n    uVar6 = FUN_001e6db0(local_34);\n  }\n  if (local_44 != 0) {\n                    \n    FUN_00069d00(&UNK_002485c4 + unaff_EDI,100,unaff_EDI + 0x248c13,uVar6);\n  }\n  if (local_40 != 0) {\n                    \n    FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x65,unaff_EDI + 0x248c13,local_40);\n  }\n  iVar3 = local_3c;\n  if ((local_3c == 0) && (iVar3 = local_38, local_38 == 0)) {\n    return uVar5;\n  }\n                    \n  FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x2c,unaff_EDI + 0x248c07,iVar3);\n}" type_identifier (function_declarator "FUN_00037ff0(undefined4 *param_1,undefined4 param_2)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  undefined1 *puVar1;\n  char cVar2;\n  int iVar3;\n  int *piVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 extraout_ECX;\n  int unaff_EDI;\n  uint local_60;\n  char local_55;\n  undefined1 local_54 [4];\n  int local_50 [2];\n  undefined1 local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_38;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  FUN_000559ee();\n  iVar3 = FUN_001e5200(0x94);\n                    \n  FUN_000688d0(iVar3,*param_1);\n  local_48 = 1;\n  local_50[1] = 0;\n  param_1[2] = iVar3;\n  local_44 = 0;\n  local_40 = 0;\n  local_3c = 0;\n  local_38 = 0;\n                    \n  cVar2 = FUN_00069870(iVar3,local_50 + 1,0,local_54);\n  if (cVar2 == '\0') {\n    uVar5 = *param_1;\n    uVar6 = gettext(&UNK_0024859a + unaff_EDI);\n                    \n                    \n    FUN_00065450(uVar6,uVar5);\n  }\n  local_60 = *(uint *)(iVar3 + 0x40);\n  if (-*(int *)(iVar3 + 0x44) < (int)(uint)(0x3f < local_60)) {\n    local_60 = 0x40;\n  }\n  piVar4 = (int *)FUN_000687f0(iVar3 + 0x1c,0,0,0,0,local_60,1,0);\n  if (((int)local_60 < 4) || (*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *piVar4)) {\n    uVar5 = *param_1;\n    uVar6 = gettext(&UNK_002485a9 + unaff_EDI);\n                    \n                    \n    FUN_00065450(uVar6,uVar5);\n  }\n  local_30 = 0;\n  local_2c[0] = 0;\n  local_34 = local_2c;\n                    \n  cVar2 = FUN_00050f10(piVar4,local_60,(int)local_60 >> 0x1f,local_50,&local_55,&local_34);\n  puVar1 = local_34;\n  if (cVar2 == '\0') {\n    uVar5 = *param_1;\n    uVar6 = gettext(unaff_EDI + 0x253e5c);\n                    \n                    \n    FUN_00065450(uVar6,uVar5,puVar1);\n  }\n  if (local_50[0] == 0x20) {\n    if (local_55 == '\0') {\n      uVar5 = FUN_000522b0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n                    \n      uVar5 = FUN_00051c40(param_1,piVar4,iVar3,param_2);\n    }\n  }\n  else {\n    if (local_50[0] != 0x40) {\n                    \n                    \n      FUN_00069d00(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX);\n    }\n    if (local_55 == '\0') {\n      uVar5 = FUN_000530f0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n      uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2);\n    }\n  }\n  uVar6 = uVar5;\n  if (local_34 != local_2c) {\n    uVar6 = FUN_001e6db0(local_34);\n  }\n  if (local_44 != 0) {\n                    \n    FUN_00069d00(&UNK_002485c4 + unaff_EDI,100,unaff_EDI + 0x248c13,uVar6);\n  }\n  if (local_40 != 0) {\n                    \n    FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x65,unaff_EDI + 0x248c13,local_40);\n  }\n  iVar3 = local_3c;\n  if ((local_3c == 0) && (iVar3 = local_38, local_38 == 0)) {\n    return uVar5;\n  }\n                    \n  FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x2c,unaff_EDI + 0x248c07,iVar3);\n}" { (declaration "undefined1 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 extraout_ECX;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "uint local_60;" type_identifier identifier ;) (declaration "char local_55;" primitive_type identifier ;) (declaration "undefined1 local_54 [4];" type_identifier (array_declarator "local_54 [4]" identifier [ number_literal ]) ;) (declaration "int local_50 [2];" primitive_type (array_declarator "local_50 [2]" identifier [ number_literal ]) ;) (declaration "undefined1 local_48;" type_identifier identifier ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "undefined1 *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "undefined1 local_2c [28];" type_identifier (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "FUN_000559ee();" (call_expression "FUN_000559ee()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar3 = FUN_001e5200(0x94);" (assignment_expression "iVar3 = FUN_001e5200(0x94)" identifier = (call_expression "FUN_001e5200(0x94)" identifier (argument_list "(0x94)" ( number_literal )))) ;) (expression_statement "FUN_000688d0(iVar3,*param_1);" (call_expression "FUN_000688d0(iVar3,*param_1)" identifier (argument_list "(iVar3,*param_1)" ( identifier , (pointer_expression "*param_1" * identifier) ))) ;) (expression_statement "local_48 = 1;" (assignment_expression "local_48 = 1" identifier = number_literal) ;) (expression_statement "local_50[1] = 0;" (assignment_expression "local_50[1] = 0" (subscript_expression "local_50[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[2] = iVar3;" (assignment_expression "param_1[2] = iVar3" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "cVar2 = FUN_00069870(iVar3,local_50 + 1,0,local_54);" (assignment_expression "cVar2 = FUN_00069870(iVar3,local_50 + 1,0,local_54)" identifier = (call_expression "FUN_00069870(iVar3,local_50 + 1,0,local_54)" identifier (argument_list "(iVar3,local_50 + 1,0,local_54)" ( identifier , (binary_expression "local_50 + 1" identifier + number_literal) , number_literal , identifier )))) ;) (if_statement "if (cVar2 == '\0') {\n    uVar5 = *param_1;\n    uVar6 = gettext(&UNK_0024859a + unaff_EDI);\n                    \n                    \n    FUN_00065450(uVar6,uVar5);\n  }" if (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar5 = *param_1;\n    uVar6 = gettext(&UNK_0024859a + unaff_EDI);\n                    \n                    \n    FUN_00065450(uVar6,uVar5);\n  }" { (expression_statement "uVar5 = *param_1;" (assignment_expression "uVar5 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar6 = gettext(&UNK_0024859a + unaff_EDI);" (assignment_expression "uVar6 = gettext(&UNK_0024859a + unaff_EDI)" identifier = (call_expression "gettext(&UNK_0024859a + unaff_EDI)" identifier (argument_list "(&UNK_0024859a + unaff_EDI)" ( (binary_expression "&UNK_0024859a + unaff_EDI" (pointer_expression "&UNK_0024859a" & identifier) + identifier) )))) ;) (expression_statement "FUN_00065450(uVar6,uVar5);" (call_expression "FUN_00065450(uVar6,uVar5)" identifier (argument_list "(uVar6,uVar5)" ( identifier , identifier ))) ;) })) (expression_statement "local_60 = *(uint *)(iVar3 + 0x40);" (assignment_expression "local_60 = *(uint *)(iVar3 + 0x40)" identifier = (pointer_expression "*(uint *)(iVar3 + 0x40)" * (cast_expression "(uint *)(iVar3 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x40)" ( (binary_expression "iVar3 + 0x40" identifier + number_literal) ))))) ;) (if_statement "if (-*(int *)(iVar3 + 0x44) < (int)(uint)(0x3f < local_60)) {\n    local_60 = 0x40;\n  }" if (parenthesized_expression "(-*(int *)(iVar3 + 0x44) < (int)(uint)(0x3f < local_60))" ( (binary_expression "-*(int *)(iVar3 + 0x44) < (int)(uint)(0x3f < local_60)" (unary_expression "-*(int *)(iVar3 + 0x44)" - (pointer_expression "*(int *)(iVar3 + 0x44)" * (cast_expression "(int *)(iVar3 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x44)" ( (binary_expression "iVar3 + 0x44" identifier + number_literal) ))))) < (cast_expression "(int)(uint)(0x3f < local_60)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(0x3f < local_60)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x3f < local_60)" ( (binary_expression "0x3f < local_60" number_literal < identifier) ))))) )) (compound_statement "{\n    local_60 = 0x40;\n  }" { (expression_statement "local_60 = 0x40;" (assignment_expression "local_60 = 0x40" identifier = number_literal) ;) })) (expression_statement "piVar4 = (int *)FUN_000687f0(iVar3 + 0x1c,0,0,0,0,local_60,1,0);" (assignment_expression "piVar4 = (int *)FUN_000687f0(iVar3 + 0x1c,0,0,0,0,local_60,1,0)" identifier = (cast_expression "(int *)FUN_000687f0(iVar3 + 0x1c,0,0,0,0,local_60,1,0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000687f0(iVar3 + 0x1c,0,0,0,0,local_60,1,0)" identifier (argument_list "(iVar3 + 0x1c,0,0,0,0,local_60,1,0)" ( (binary_expression "iVar3 + 0x1c" identifier + number_literal) , number_literal , number_literal , number_literal , number_literal , identifier , number_literal , number_literal ))))) ;) (if_statement "if (((int)local_60 < 4) || (*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *piVar4)) {\n    uVar5 = *param_1;\n    uVar6 = gettext(&UNK_002485a9 + unaff_EDI);\n                    \n                    \n    FUN_00065450(uVar6,uVar5);\n  }" if (parenthesized_expression "(((int)local_60 < 4) || (*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *piVar4))" ( (binary_expression "((int)local_60 < 4) || (*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *piVar4)" (parenthesized_expression "((int)local_60 < 4)" ( (binary_expression "(int)local_60 < 4" (cast_expression "(int)local_60" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) || (parenthesized_expression "(*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *piVar4)" ( (binary_expression "*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *piVar4" (pointer_expression "*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22)" * (cast_expression "(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(BYTE_ARRAY_00357355 + unaff_EDI + 0x22)" ( (binary_expression "BYTE_ARRAY_00357355 + unaff_EDI + 0x22" (binary_expression "BYTE_ARRAY_00357355 + unaff_EDI" identifier + identifier) + number_literal) )))) != (pointer_expression "*piVar4" * identifier)) ))) )) (compound_statement "{\n    uVar5 = *param_1;\n    uVar6 = gettext(&UNK_002485a9 + unaff_EDI);\n                    \n                    \n    FUN_00065450(uVar6,uVar5);\n  }" { (expression_statement "uVar5 = *param_1;" (assignment_expression "uVar5 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar6 = gettext(&UNK_002485a9 + unaff_EDI);" (assignment_expression "uVar6 = gettext(&UNK_002485a9 + unaff_EDI)" identifier = (call_expression "gettext(&UNK_002485a9 + unaff_EDI)" identifier (argument_list "(&UNK_002485a9 + unaff_EDI)" ( (binary_expression "&UNK_002485a9 + unaff_EDI" (pointer_expression "&UNK_002485a9" & identifier) + identifier) )))) ;) (expression_statement "FUN_00065450(uVar6,uVar5);" (call_expression "FUN_00065450(uVar6,uVar5)" identifier (argument_list "(uVar6,uVar5)" ( identifier , identifier ))) ;) })) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c[0] = 0;" (assignment_expression "local_2c[0] = 0" (subscript_expression "local_2c[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" identifier = identifier) ;) (expression_statement "cVar2 = FUN_00050f10(piVar4,local_60,(int)local_60 >> 0x1f,local_50,&local_55,&local_34);" (assignment_expression "cVar2 = FUN_00050f10(piVar4,local_60,(int)local_60 >> 0x1f,local_50,&local_55,&local_34)" identifier = (call_expression "FUN_00050f10(piVar4,local_60,(int)local_60 >> 0x1f,local_50,&local_55,&local_34)" identifier (argument_list "(piVar4,local_60,(int)local_60 >> 0x1f,local_50,&local_55,&local_34)" ( identifier , identifier , (binary_expression "(int)local_60 >> 0x1f" (cast_expression "(int)local_60" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) , identifier , (pointer_expression "&local_55" & identifier) , (pointer_expression "&local_34" & identifier) )))) ;) (expression_statement "puVar1 = local_34;" (assignment_expression "puVar1 = local_34" identifier = identifier) ;) (if_statement "if (cVar2 == '\0') {\n    uVar5 = *param_1;\n    uVar6 = gettext(unaff_EDI + 0x253e5c);\n                    \n                    \n    FUN_00065450(uVar6,uVar5,puVar1);\n  }" if (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar5 = *param_1;\n    uVar6 = gettext(unaff_EDI + 0x253e5c);\n                    \n                    \n    FUN_00065450(uVar6,uVar5,puVar1);\n  }" { (expression_statement "uVar5 = *param_1;" (assignment_expression "uVar5 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar6 = gettext(unaff_EDI + 0x253e5c);" (assignment_expression "uVar6 = gettext(unaff_EDI + 0x253e5c)" identifier = (call_expression "gettext(unaff_EDI + 0x253e5c)" identifier (argument_list "(unaff_EDI + 0x253e5c)" ( (binary_expression "unaff_EDI + 0x253e5c" identifier + number_literal) )))) ;) (expression_statement "FUN_00065450(uVar6,uVar5,puVar1);" (call_expression "FUN_00065450(uVar6,uVar5,puVar1)" identifier (argument_list "(uVar6,uVar5,puVar1)" ( identifier , identifier , identifier ))) ;) })) (if_statement "if (local_50[0] == 0x20) {\n    if (local_55 == '\0') {\n      uVar5 = FUN_000522b0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n                    \n      uVar5 = FUN_00051c40(param_1,piVar4,iVar3,param_2);\n    }\n  }\n  else {\n    if (local_50[0] != 0x40) {\n                    \n                    \n      FUN_00069d00(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX);\n    }\n    if (local_55 == '\0') {\n      uVar5 = FUN_000530f0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n      uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2);\n    }\n  }" if (parenthesized_expression "(local_50[0] == 0x20)" ( (binary_expression "local_50[0] == 0x20" (subscript_expression "local_50[0]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    if (local_55 == '\0') {\n      uVar5 = FUN_000522b0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n                    \n      uVar5 = FUN_00051c40(param_1,piVar4,iVar3,param_2);\n    }\n  }" { (if_statement "if (local_55 == '\0') {\n      uVar5 = FUN_000522b0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n                    \n      uVar5 = FUN_00051c40(param_1,piVar4,iVar3,param_2);\n    }" if (parenthesized_expression "(local_55 == '\0')" ( (binary_expression "local_55 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar5 = FUN_000522b0(param_1,piVar4,iVar3,param_2);\n    }" { (expression_statement "uVar5 = FUN_000522b0(param_1,piVar4,iVar3,param_2);" (assignment_expression "uVar5 = FUN_000522b0(param_1,piVar4,iVar3,param_2)" identifier = (call_expression "FUN_000522b0(param_1,piVar4,iVar3,param_2)" identifier (argument_list "(param_1,piVar4,iVar3,param_2)" ( identifier , identifier , identifier , identifier )))) ;) }) (else_clause "else {\n                    \n      uVar5 = FUN_00051c40(param_1,piVar4,iVar3,param_2);\n    }" else (compound_statement "{\n                    \n      uVar5 = FUN_00051c40(param_1,piVar4,iVar3,param_2);\n    }" { (expression_statement "uVar5 = FUN_00051c40(param_1,piVar4,iVar3,param_2);" (assignment_expression "uVar5 = FUN_00051c40(param_1,piVar4,iVar3,param_2)" identifier = (call_expression "FUN_00051c40(param_1,piVar4,iVar3,param_2)" identifier (argument_list "(param_1,piVar4,iVar3,param_2)" ( identifier , identifier , identifier , identifier )))) ;) }))) }) (else_clause "else {\n    if (local_50[0] != 0x40) {\n                    \n                    \n      FUN_00069d00(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX);\n    }\n    if (local_55 == '\0') {\n      uVar5 = FUN_000530f0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n      uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2);\n    }\n  }" else (compound_statement "{\n    if (local_50[0] != 0x40) {\n                    \n                    \n      FUN_00069d00(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX);\n    }\n    if (local_55 == '\0') {\n      uVar5 = FUN_000530f0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n      uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2);\n    }\n  }" { (if_statement "if (local_50[0] != 0x40) {\n                    \n                    \n      FUN_00069d00(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX);\n    }" if (parenthesized_expression "(local_50[0] != 0x40)" ( (binary_expression "local_50[0] != 0x40" (subscript_expression "local_50[0]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                    \n                    \n      FUN_00069d00(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX);\n    }" { (expression_statement "FUN_00069d00(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX);" (call_expression "FUN_00069d00(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX)" identifier (argument_list "(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX)" ( (binary_expression "unaff_EDI + 0x24800f" identifier + number_literal) , number_literal , (binary_expression "&UNK_00248c1f + unaff_EDI" (pointer_expression "&UNK_00248c1f" & identifier) + identifier) , identifier ))) ;) })) (if_statement "if (local_55 == '\0') {\n      uVar5 = FUN_000530f0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n      uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2);\n    }" if (parenthesized_expression "(local_55 == '\0')" ( (binary_expression "local_55 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar5 = FUN_000530f0(param_1,piVar4,iVar3,param_2);\n    }" { (expression_statement "uVar5 = FUN_000530f0(param_1,piVar4,iVar3,param_2);" (assignment_expression "uVar5 = FUN_000530f0(param_1,piVar4,iVar3,param_2)" identifier = (call_expression "FUN_000530f0(param_1,piVar4,iVar3,param_2)" identifier (argument_list "(param_1,piVar4,iVar3,param_2)" ( identifier , identifier , identifier , identifier )))) ;) }) (else_clause "else {\n      uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2);\n    }" else (compound_statement "{\n      uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2);\n    }" { (expression_statement "uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2);" (assignment_expression "uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2)" identifier = (call_expression "FUN_00052a80(param_1,piVar4,iVar3,param_2)" identifier (argument_list "(param_1,piVar4,iVar3,param_2)" ( identifier , identifier , identifier , identifier )))) ;) }))) }))) (expression_statement "uVar6 = uVar5;" (assignment_expression "uVar6 = uVar5" identifier = identifier) ;) (if_statement "if (local_34 != local_2c) {\n    uVar6 = FUN_001e6db0(local_34);\n  }" if (parenthesized_expression "(local_34 != local_2c)" ( (binary_expression "local_34 != local_2c" identifier != identifier) )) (compound_statement "{\n    uVar6 = FUN_001e6db0(local_34);\n  }" { (expression_statement "uVar6 = FUN_001e6db0(local_34);" (assignment_expression "uVar6 = FUN_001e6db0(local_34)" identifier = (call_expression "FUN_001e6db0(local_34)" identifier (argument_list "(local_34)" ( identifier )))) ;) })) (if_statement "if (local_44 != 0) {\n                    \n    FUN_00069d00(&UNK_002485c4 + unaff_EDI,100,unaff_EDI + 0x248c13,uVar6);\n  }" if (parenthesized_expression "(local_44 != 0)" ( (binary_expression "local_44 != 0" identifier != number_literal) )) (compound_statement "{\n                    \n    FUN_00069d00(&UNK_002485c4 + unaff_EDI,100,unaff_EDI + 0x248c13,uVar6);\n  }" { (expression_statement "FUN_00069d00(&UNK_002485c4 + unaff_EDI,100,unaff_EDI + 0x248c13,uVar6);" (call_expression "FUN_00069d00(&UNK_002485c4 + unaff_EDI,100,unaff_EDI + 0x248c13,uVar6)" identifier (argument_list "(&UNK_002485c4 + unaff_EDI,100,unaff_EDI + 0x248c13,uVar6)" ( (binary_expression "&UNK_002485c4 + unaff_EDI" (pointer_expression "&UNK_002485c4" & identifier) + identifier) , number_literal , (binary_expression "unaff_EDI + 0x248c13" identifier + number_literal) , identifier ))) ;) })) (if_statement "if (local_40 != 0) {\n                    \n    FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x65,unaff_EDI + 0x248c13,local_40);\n  }" if (parenthesized_expression "(local_40 != 0)" ( (binary_expression "local_40 != 0" identifier != number_literal) )) (compound_statement "{\n                    \n    FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x65,unaff_EDI + 0x248c13,local_40);\n  }" { (expression_statement "FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x65,unaff_EDI + 0x248c13,local_40);" (call_expression "FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x65,unaff_EDI + 0x248c13,local_40)" identifier (argument_list "(&UNK_002485c4 + unaff_EDI,0x65,unaff_EDI + 0x248c13,local_40)" ( (binary_expression "&UNK_002485c4 + unaff_EDI" (pointer_expression "&UNK_002485c4" & identifier) + identifier) , number_literal , (binary_expression "unaff_EDI + 0x248c13" identifier + number_literal) , identifier ))) ;) })) (expression_statement "iVar3 = local_3c;" (assignment_expression "iVar3 = local_3c" identifier = identifier) ;) (if_statement "if ((local_3c == 0) && (iVar3 = local_38, local_38 == 0)) {\n    return uVar5;\n  }" if (parenthesized_expression "((local_3c == 0) && (iVar3 = local_38, local_38 == 0))" ( (binary_expression "(local_3c == 0) && (iVar3 = local_38, local_38 == 0)" (parenthesized_expression "(local_3c == 0)" ( (binary_expression "local_3c == 0" identifier == number_literal) )) && (parenthesized_expression "(iVar3 = local_38, local_38 == 0)" ( (comma_expression "iVar3 = local_38, local_38 == 0" (assignment_expression "iVar3 = local_38" identifier = identifier) , (binary_expression "local_38 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    return uVar5;\n  }" { (return_statement "return uVar5;" return identifier ;) })) (expression_statement "FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x2c,unaff_EDI + 0x248c07,iVar3);" (call_expression "FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x2c,unaff_EDI + 0x248c07,iVar3)" identifier (argument_list "(&UNK_002485c4 + unaff_EDI,0x2c,unaff_EDI + 0x248c07,iVar3)" ( (binary_expression "&UNK_002485c4 + unaff_EDI" (pointer_expression "&UNK_002485c4" & identifier) + identifier) , number_literal , (binary_expression "unaff_EDI + 0x248c07" identifier + number_literal) , identifier ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) (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 (unary_expression - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) < (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < IDENT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , LIT , LIT , LIT , IDENT , LIT , LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) != (pointer_expression * IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) , IDENT , (pointer_expression & IDENT) , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) }))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression (pointer_expression & IDENT) + IDENT) , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) }))) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression (pointer_expression & IDENT) + IDENT) , LIT , (binary_expression IDENT + LIT) , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression (pointer_expression & IDENT) + IDENT) , LIT , (binary_expression IDENT + LIT) , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (pointer_expression & IDENT) + IDENT) , LIT , (binary_expression IDENT + LIT) , IDENT ))) ;) })))
(function_definition "undefined4 FUN_00037ff0(undefined4 *param_1,undefined4 param_2)\n\n{\n  undefined1 *puVar1;\n  char cVar2;\n  int iVar3;\n  int *piVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 extraout_ECX;\n  int unaff_EDI;\n  uint local_60;\n  char local_55;\n  undefined1 local_54 [4];\n  int local_50 [2];\n  undefined1 local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_38;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  FUN_000559ee();\n  iVar3 = FUN_001e5200(0x94);\n                    \n  FUN_000688d0(iVar3,*param_1);\n  local_48 = 1;\n  local_50[1] = 0;\n  param_1[2] = iVar3;\n  local_44 = 0;\n  local_40 = 0;\n  local_3c = 0;\n  local_38 = 0;\n                    \n  cVar2 = FUN_00069870(iVar3,local_50 + 1,0,local_54);\n  if (cVar2 == '\0') {\n    uVar5 = *param_1;\n    uVar6 = gettext(&UNK_0024859a + unaff_EDI);\n                    \n                    \n    FUN_00065450(uVar6,uVar5);\n  }\n  local_60 = *(uint *)(iVar3 + 0x40);\n  if (-*(int *)(iVar3 + 0x44) < (int)(uint)(0x3f < local_60)) {\n    local_60 = 0x40;\n  }\n  piVar4 = (int *)FUN_000687f0(iVar3 + 0x1c,0,0,0,0,local_60,1,0);\n  if (((int)local_60 < 4) || (*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *piVar4)) {\n    uVar5 = *param_1;\n    uVar6 = gettext(&UNK_002485a9 + unaff_EDI);\n                    \n                    \n    FUN_00065450(uVar6,uVar5);\n  }\n  local_30 = 0;\n  local_2c[0] = 0;\n  local_34 = local_2c;\n                    \n  cVar2 = FUN_00050f10(piVar4,local_60,(int)local_60 >> 0x1f,local_50,&local_55,&local_34);\n  puVar1 = local_34;\n  if (cVar2 == '\0') {\n    uVar5 = *param_1;\n    uVar6 = gettext(unaff_EDI + 0x253e5c);\n                    \n                    \n    FUN_00065450(uVar6,uVar5,puVar1);\n  }\n  if (local_50[0] == 0x20) {\n    if (local_55 == '\0') {\n      uVar5 = FUN_000522b0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n                    \n      uVar5 = FUN_00051c40(param_1,piVar4,iVar3,param_2);\n    }\n  }\n  else {\n    if (local_50[0] != 0x40) {\n                    \n                    \n      FUN_00069d00(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX);\n    }\n    if (local_55 == '\0') {\n      uVar5 = FUN_000530f0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n      uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2);\n    }\n  }\n  uVar6 = uVar5;\n  if (local_34 != local_2c) {\n    uVar6 = FUN_001e6db0(local_34);\n  }\n  if (local_44 != 0) {\n                    \n    FUN_00069d00(&UNK_002485c4 + unaff_EDI,100,unaff_EDI + 0x248c13,uVar6);\n  }\n  if (local_40 != 0) {\n                    \n    FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x65,unaff_EDI + 0x248c13,local_40);\n  }\n  iVar3 = local_3c;\n  if ((local_3c == 0) && (iVar3 = local_38, local_38 == 0)) {\n    return uVar5;\n  }\n                    \n  FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x2c,unaff_EDI + 0x248c07,iVar3);\n}" (type_identifier "undefined4") (function_declarator "FUN_00037ff0(undefined4 *param_1,undefined4 param_2)" (identifier "FUN_00037ff0") (parameter_list "(undefined4 *param_1,undefined4 param_2)" (( "(") (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")) () ")"))) (compound_statement "{\n  undefined1 *puVar1;\n  char cVar2;\n  int iVar3;\n  int *piVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 extraout_ECX;\n  int unaff_EDI;\n  uint local_60;\n  char local_55;\n  undefined1 local_54 [4];\n  int local_50 [2];\n  undefined1 local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_38;\n  undefined1 *local_34;\n  undefined4 local_30;\n  undefined1 local_2c [28];\n  \n  FUN_000559ee();\n  iVar3 = FUN_001e5200(0x94);\n                    \n  FUN_000688d0(iVar3,*param_1);\n  local_48 = 1;\n  local_50[1] = 0;\n  param_1[2] = iVar3;\n  local_44 = 0;\n  local_40 = 0;\n  local_3c = 0;\n  local_38 = 0;\n                    \n  cVar2 = FUN_00069870(iVar3,local_50 + 1,0,local_54);\n  if (cVar2 == '\0') {\n    uVar5 = *param_1;\n    uVar6 = gettext(&UNK_0024859a + unaff_EDI);\n                    \n                    \n    FUN_00065450(uVar6,uVar5);\n  }\n  local_60 = *(uint *)(iVar3 + 0x40);\n  if (-*(int *)(iVar3 + 0x44) < (int)(uint)(0x3f < local_60)) {\n    local_60 = 0x40;\n  }\n  piVar4 = (int *)FUN_000687f0(iVar3 + 0x1c,0,0,0,0,local_60,1,0);\n  if (((int)local_60 < 4) || (*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *piVar4)) {\n    uVar5 = *param_1;\n    uVar6 = gettext(&UNK_002485a9 + unaff_EDI);\n                    \n                    \n    FUN_00065450(uVar6,uVar5);\n  }\n  local_30 = 0;\n  local_2c[0] = 0;\n  local_34 = local_2c;\n                    \n  cVar2 = FUN_00050f10(piVar4,local_60,(int)local_60 >> 0x1f,local_50,&local_55,&local_34);\n  puVar1 = local_34;\n  if (cVar2 == '\0') {\n    uVar5 = *param_1;\n    uVar6 = gettext(unaff_EDI + 0x253e5c);\n                    \n                    \n    FUN_00065450(uVar6,uVar5,puVar1);\n  }\n  if (local_50[0] == 0x20) {\n    if (local_55 == '\0') {\n      uVar5 = FUN_000522b0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n                    \n      uVar5 = FUN_00051c40(param_1,piVar4,iVar3,param_2);\n    }\n  }\n  else {\n    if (local_50[0] != 0x40) {\n                    \n                    \n      FUN_00069d00(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX);\n    }\n    if (local_55 == '\0') {\n      uVar5 = FUN_000530f0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n      uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2);\n    }\n  }\n  uVar6 = uVar5;\n  if (local_34 != local_2c) {\n    uVar6 = FUN_001e6db0(local_34);\n  }\n  if (local_44 != 0) {\n                    \n    FUN_00069d00(&UNK_002485c4 + unaff_EDI,100,unaff_EDI + 0x248c13,uVar6);\n  }\n  if (local_40 != 0) {\n                    \n    FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x65,unaff_EDI + 0x248c13,local_40);\n  }\n  iVar3 = local_3c;\n  if ((local_3c == 0) && (iVar3 = local_38, local_38 == 0)) {\n    return uVar5;\n  }\n                    \n  FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x2c,unaff_EDI + 0x248c07,iVar3);\n}" ({ "{") (declaration "undefined1 *puVar1;" (type_identifier "undefined1") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "undefined4 extraout_ECX;" (type_identifier "undefined4") (identifier "extraout_ECX") (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "uint local_60;" (type_identifier "uint") (identifier "local_60") (; ";")) (declaration "char local_55;" (primitive_type "char") (identifier "local_55") (; ";")) (declaration "undefined1 local_54 [4];" (type_identifier "undefined1") (array_declarator "local_54 [4]" (identifier "local_54") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "int local_50 [2];" (primitive_type "int") (array_declarator "local_50 [2]" (identifier "local_50") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "undefined1 local_48;" (type_identifier "undefined1") (identifier "local_48") (; ";")) (declaration "int local_44;" (primitive_type "int") (identifier "local_44") (; ";")) (declaration "int local_40;" (primitive_type "int") (identifier "local_40") (; ";")) (declaration "int local_3c;" (primitive_type "int") (identifier "local_3c") (; ";")) (declaration "int local_38;" (primitive_type "int") (identifier "local_38") (; ";")) (declaration "undefined1 *local_34;" (type_identifier "undefined1") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (declaration "undefined4 local_30;" (type_identifier "undefined4") (identifier "local_30") (; ";")) (declaration "undefined1 local_2c [28];" (type_identifier "undefined1") (array_declarator "local_2c [28]" (identifier "local_2c") ([ "[") (number_literal "28") (] "]")) (; ";")) (expression_statement "FUN_000559ee();" (call_expression "FUN_000559ee()" (identifier "FUN_000559ee") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar3 = FUN_001e5200(0x94);" (assignment_expression "iVar3 = FUN_001e5200(0x94)" (identifier "iVar3") (= "=") (call_expression "FUN_001e5200(0x94)" (identifier "FUN_001e5200") (argument_list "(0x94)" (( "(") (number_literal "0x94") () ")")))) (; ";")) (expression_statement "FUN_000688d0(iVar3,*param_1);" (call_expression "FUN_000688d0(iVar3,*param_1)" (identifier "FUN_000688d0") (argument_list "(iVar3,*param_1)" (( "(") (identifier "iVar3") (, ",") (pointer_expression "*param_1" (* "*") (identifier "param_1")) () ")"))) (; ";")) (expression_statement "local_48 = 1;" (assignment_expression "local_48 = 1" (identifier "local_48") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_50[1] = 0;" (assignment_expression "local_50[1] = 0" (subscript_expression "local_50[1]" (identifier "local_50") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[2] = iVar3;" (assignment_expression "param_1[2] = iVar3" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" (identifier "local_44") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" (identifier "local_40") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" (identifier "local_38") (= "=") (number_literal "0")) (; ";")) (expression_statement "cVar2 = FUN_00069870(iVar3,local_50 + 1,0,local_54);" (assignment_expression "cVar2 = FUN_00069870(iVar3,local_50 + 1,0,local_54)" (identifier "cVar2") (= "=") (call_expression "FUN_00069870(iVar3,local_50 + 1,0,local_54)" (identifier "FUN_00069870") (argument_list "(iVar3,local_50 + 1,0,local_54)" (( "(") (identifier "iVar3") (, ",") (binary_expression "local_50 + 1" (identifier "local_50") (+ "+") (number_literal "1")) (, ",") (number_literal "0") (, ",") (identifier "local_54") () ")")))) (; ";")) (if_statement "if (cVar2 == '\0') {\n    uVar5 = *param_1;\n    uVar6 = gettext(&UNK_0024859a + unaff_EDI);\n                    \n                    \n    FUN_00065450(uVar6,uVar5);\n  }" (if "if") (parenthesized_expression "(cVar2 == '\0')" (( "(") (binary_expression "cVar2 == '\0'" (identifier "cVar2") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    uVar5 = *param_1;\n    uVar6 = gettext(&UNK_0024859a + unaff_EDI);\n                    \n                    \n    FUN_00065450(uVar6,uVar5);\n  }" ({ "{") (expression_statement "uVar5 = *param_1;" (assignment_expression "uVar5 = *param_1" (identifier "uVar5") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uVar6 = gettext(&UNK_0024859a + unaff_EDI);" (assignment_expression "uVar6 = gettext(&UNK_0024859a + unaff_EDI)" (identifier "uVar6") (= "=") (call_expression "gettext(&UNK_0024859a + unaff_EDI)" (identifier "gettext") (argument_list "(&UNK_0024859a + unaff_EDI)" (( "(") (binary_expression "&UNK_0024859a + unaff_EDI" (pointer_expression "&UNK_0024859a" (& "&") (identifier "UNK_0024859a")) (+ "+") (identifier "unaff_EDI")) () ")")))) (; ";")) (expression_statement "FUN_00065450(uVar6,uVar5);" (call_expression "FUN_00065450(uVar6,uVar5)" (identifier "FUN_00065450") (argument_list "(uVar6,uVar5)" (( "(") (identifier "uVar6") (, ",") (identifier "uVar5") () ")"))) (; ";")) (} "}"))) (expression_statement "local_60 = *(uint *)(iVar3 + 0x40);" (assignment_expression "local_60 = *(uint *)(iVar3 + 0x40)" (identifier "local_60") (= "=") (pointer_expression "*(uint *)(iVar3 + 0x40)" (* "*") (cast_expression "(uint *)(iVar3 + 0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x40)" (( "(") (binary_expression "iVar3 + 0x40" (identifier "iVar3") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (if_statement "if (-*(int *)(iVar3 + 0x44) < (int)(uint)(0x3f < local_60)) {\n    local_60 = 0x40;\n  }" (if "if") (parenthesized_expression "(-*(int *)(iVar3 + 0x44) < (int)(uint)(0x3f < local_60))" (( "(") (binary_expression "-*(int *)(iVar3 + 0x44) < (int)(uint)(0x3f < local_60)" (unary_expression "-*(int *)(iVar3 + 0x44)" (- "-") (pointer_expression "*(int *)(iVar3 + 0x44)" (* "*") (cast_expression "(int *)(iVar3 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x44)" (( "(") (binary_expression "iVar3 + 0x44" (identifier "iVar3") (+ "+") (number_literal "0x44")) () ")"))))) (< "<") (cast_expression "(int)(uint)(0x3f < local_60)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (call_expression "(uint)(0x3f < local_60)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(0x3f < local_60)" (( "(") (binary_expression "0x3f < local_60" (number_literal "0x3f") (< "<") (identifier "local_60")) () ")"))))) () ")")) (compound_statement "{\n    local_60 = 0x40;\n  }" ({ "{") (expression_statement "local_60 = 0x40;" (assignment_expression "local_60 = 0x40" (identifier "local_60") (= "=") (number_literal "0x40")) (; ";")) (} "}"))) (expression_statement "piVar4 = (int *)FUN_000687f0(iVar3 + 0x1c,0,0,0,0,local_60,1,0);" (assignment_expression "piVar4 = (int *)FUN_000687f0(iVar3 + 0x1c,0,0,0,0,local_60,1,0)" (identifier "piVar4") (= "=") (cast_expression "(int *)FUN_000687f0(iVar3 + 0x1c,0,0,0,0,local_60,1,0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000687f0(iVar3 + 0x1c,0,0,0,0,local_60,1,0)" (identifier "FUN_000687f0") (argument_list "(iVar3 + 0x1c,0,0,0,0,local_60,1,0)" (( "(") (binary_expression "iVar3 + 0x1c" (identifier "iVar3") (+ "+") (number_literal "0x1c")) (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "local_60") (, ",") (number_literal "1") (, ",") (number_literal "0") () ")"))))) (; ";")) (if_statement "if (((int)local_60 < 4) || (*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *piVar4)) {\n    uVar5 = *param_1;\n    uVar6 = gettext(&UNK_002485a9 + unaff_EDI);\n                    \n                    \n    FUN_00065450(uVar6,uVar5);\n  }" (if "if") (parenthesized_expression "(((int)local_60 < 4) || (*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *piVar4))" (( "(") (binary_expression "((int)local_60 < 4) || (*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *piVar4)" (parenthesized_expression "((int)local_60 < 4)" (( "(") (binary_expression "(int)local_60 < 4" (cast_expression "(int)local_60" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_60")) (< "<") (number_literal "4")) () ")")) (|| "||") (parenthesized_expression "(*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *piVar4)" (( "(") (binary_expression "*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *piVar4" (pointer_expression "*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22)" (* "*") (cast_expression "(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(BYTE_ARRAY_00357355 + unaff_EDI + 0x22)" (( "(") (binary_expression "BYTE_ARRAY_00357355 + unaff_EDI + 0x22" (binary_expression "BYTE_ARRAY_00357355 + unaff_EDI" (identifier "BYTE_ARRAY_00357355") (+ "+") (identifier "unaff_EDI")) (+ "+") (number_literal "0x22")) () ")")))) (!= "!=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) () ")"))) () ")")) (compound_statement "{\n    uVar5 = *param_1;\n    uVar6 = gettext(&UNK_002485a9 + unaff_EDI);\n                    \n                    \n    FUN_00065450(uVar6,uVar5);\n  }" ({ "{") (expression_statement "uVar5 = *param_1;" (assignment_expression "uVar5 = *param_1" (identifier "uVar5") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uVar6 = gettext(&UNK_002485a9 + unaff_EDI);" (assignment_expression "uVar6 = gettext(&UNK_002485a9 + unaff_EDI)" (identifier "uVar6") (= "=") (call_expression "gettext(&UNK_002485a9 + unaff_EDI)" (identifier "gettext") (argument_list "(&UNK_002485a9 + unaff_EDI)" (( "(") (binary_expression "&UNK_002485a9 + unaff_EDI" (pointer_expression "&UNK_002485a9" (& "&") (identifier "UNK_002485a9")) (+ "+") (identifier "unaff_EDI")) () ")")))) (; ";")) (expression_statement "FUN_00065450(uVar6,uVar5);" (call_expression "FUN_00065450(uVar6,uVar5)" (identifier "FUN_00065450") (argument_list "(uVar6,uVar5)" (( "(") (identifier "uVar6") (, ",") (identifier "uVar5") () ")"))) (; ";")) (} "}"))) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_2c[0] = 0;" (assignment_expression "local_2c[0] = 0" (subscript_expression "local_2c[0]" (identifier "local_2c") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_34 = local_2c;" (assignment_expression "local_34 = local_2c" (identifier "local_34") (= "=") (identifier "local_2c")) (; ";")) (expression_statement "cVar2 = FUN_00050f10(piVar4,local_60,(int)local_60 >> 0x1f,local_50,&local_55,&local_34);" (assignment_expression "cVar2 = FUN_00050f10(piVar4,local_60,(int)local_60 >> 0x1f,local_50,&local_55,&local_34)" (identifier "cVar2") (= "=") (call_expression "FUN_00050f10(piVar4,local_60,(int)local_60 >> 0x1f,local_50,&local_55,&local_34)" (identifier "FUN_00050f10") (argument_list "(piVar4,local_60,(int)local_60 >> 0x1f,local_50,&local_55,&local_34)" (( "(") (identifier "piVar4") (, ",") (identifier "local_60") (, ",") (binary_expression "(int)local_60 >> 0x1f" (cast_expression "(int)local_60" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_60")) (>> ">>") (number_literal "0x1f")) (, ",") (identifier "local_50") (, ",") (pointer_expression "&local_55" (& "&") (identifier "local_55")) (, ",") (pointer_expression "&local_34" (& "&") (identifier "local_34")) () ")")))) (; ";")) (expression_statement "puVar1 = local_34;" (assignment_expression "puVar1 = local_34" (identifier "puVar1") (= "=") (identifier "local_34")) (; ";")) (if_statement "if (cVar2 == '\0') {\n    uVar5 = *param_1;\n    uVar6 = gettext(unaff_EDI + 0x253e5c);\n                    \n                    \n    FUN_00065450(uVar6,uVar5,puVar1);\n  }" (if "if") (parenthesized_expression "(cVar2 == '\0')" (( "(") (binary_expression "cVar2 == '\0'" (identifier "cVar2") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    uVar5 = *param_1;\n    uVar6 = gettext(unaff_EDI + 0x253e5c);\n                    \n                    \n    FUN_00065450(uVar6,uVar5,puVar1);\n  }" ({ "{") (expression_statement "uVar5 = *param_1;" (assignment_expression "uVar5 = *param_1" (identifier "uVar5") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uVar6 = gettext(unaff_EDI + 0x253e5c);" (assignment_expression "uVar6 = gettext(unaff_EDI + 0x253e5c)" (identifier "uVar6") (= "=") (call_expression "gettext(unaff_EDI + 0x253e5c)" (identifier "gettext") (argument_list "(unaff_EDI + 0x253e5c)" (( "(") (binary_expression "unaff_EDI + 0x253e5c" (identifier "unaff_EDI") (+ "+") (number_literal "0x253e5c")) () ")")))) (; ";")) (expression_statement "FUN_00065450(uVar6,uVar5,puVar1);" (call_expression "FUN_00065450(uVar6,uVar5,puVar1)" (identifier "FUN_00065450") (argument_list "(uVar6,uVar5,puVar1)" (( "(") (identifier "uVar6") (, ",") (identifier "uVar5") (, ",") (identifier "puVar1") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_50[0] == 0x20) {\n    if (local_55 == '\0') {\n      uVar5 = FUN_000522b0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n                    \n      uVar5 = FUN_00051c40(param_1,piVar4,iVar3,param_2);\n    }\n  }\n  else {\n    if (local_50[0] != 0x40) {\n                    \n                    \n      FUN_00069d00(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX);\n    }\n    if (local_55 == '\0') {\n      uVar5 = FUN_000530f0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n      uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2);\n    }\n  }" (if "if") (parenthesized_expression "(local_50[0] == 0x20)" (( "(") (binary_expression "local_50[0] == 0x20" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (== "==") (number_literal "0x20")) () ")")) (compound_statement "{\n    if (local_55 == '\0') {\n      uVar5 = FUN_000522b0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n                    \n      uVar5 = FUN_00051c40(param_1,piVar4,iVar3,param_2);\n    }\n  }" ({ "{") (if_statement "if (local_55 == '\0') {\n      uVar5 = FUN_000522b0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n                    \n      uVar5 = FUN_00051c40(param_1,piVar4,iVar3,param_2);\n    }" (if "if") (parenthesized_expression "(local_55 == '\0')" (( "(") (binary_expression "local_55 == '\0'" (identifier "local_55") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      uVar5 = FUN_000522b0(param_1,piVar4,iVar3,param_2);\n    }" ({ "{") (expression_statement "uVar5 = FUN_000522b0(param_1,piVar4,iVar3,param_2);" (assignment_expression "uVar5 = FUN_000522b0(param_1,piVar4,iVar3,param_2)" (identifier "uVar5") (= "=") (call_expression "FUN_000522b0(param_1,piVar4,iVar3,param_2)" (identifier "FUN_000522b0") (argument_list "(param_1,piVar4,iVar3,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "piVar4") (, ",") (identifier "iVar3") (, ",") (identifier "param_2") () ")")))) (; ";")) (} "}")) (else_clause "else {\n                    \n      uVar5 = FUN_00051c40(param_1,piVar4,iVar3,param_2);\n    }" (else "else") (compound_statement "{\n                    \n      uVar5 = FUN_00051c40(param_1,piVar4,iVar3,param_2);\n    }" ({ "{") (expression_statement "uVar5 = FUN_00051c40(param_1,piVar4,iVar3,param_2);" (assignment_expression "uVar5 = FUN_00051c40(param_1,piVar4,iVar3,param_2)" (identifier "uVar5") (= "=") (call_expression "FUN_00051c40(param_1,piVar4,iVar3,param_2)" (identifier "FUN_00051c40") (argument_list "(param_1,piVar4,iVar3,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "piVar4") (, ",") (identifier "iVar3") (, ",") (identifier "param_2") () ")")))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    if (local_50[0] != 0x40) {\n                    \n                    \n      FUN_00069d00(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX);\n    }\n    if (local_55 == '\0') {\n      uVar5 = FUN_000530f0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n      uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2);\n    }\n  }" (else "else") (compound_statement "{\n    if (local_50[0] != 0x40) {\n                    \n                    \n      FUN_00069d00(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX);\n    }\n    if (local_55 == '\0') {\n      uVar5 = FUN_000530f0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n      uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2);\n    }\n  }" ({ "{") (if_statement "if (local_50[0] != 0x40) {\n                    \n                    \n      FUN_00069d00(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX);\n    }" (if "if") (parenthesized_expression "(local_50[0] != 0x40)" (( "(") (binary_expression "local_50[0] != 0x40" (subscript_expression "local_50[0]" (identifier "local_50") ([ "[") (number_literal "0") (] "]")) (!= "!=") (number_literal "0x40")) () ")")) (compound_statement "{\n                    \n                    \n      FUN_00069d00(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX);\n    }" ({ "{") (expression_statement "FUN_00069d00(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX);" (call_expression "FUN_00069d00(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX)" (identifier "FUN_00069d00") (argument_list "(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX)" (( "(") (binary_expression "unaff_EDI + 0x24800f" (identifier "unaff_EDI") (+ "+") (number_literal "0x24800f")) (, ",") (number_literal "0x444") (, ",") (binary_expression "&UNK_00248c1f + unaff_EDI" (pointer_expression "&UNK_00248c1f" (& "&") (identifier "UNK_00248c1f")) (+ "+") (identifier "unaff_EDI")) (, ",") (identifier "extraout_ECX") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_55 == '\0') {\n      uVar5 = FUN_000530f0(param_1,piVar4,iVar3,param_2);\n    }\n    else {\n      uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2);\n    }" (if "if") (parenthesized_expression "(local_55 == '\0')" (( "(") (binary_expression "local_55 == '\0'" (identifier "local_55") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      uVar5 = FUN_000530f0(param_1,piVar4,iVar3,param_2);\n    }" ({ "{") (expression_statement "uVar5 = FUN_000530f0(param_1,piVar4,iVar3,param_2);" (assignment_expression "uVar5 = FUN_000530f0(param_1,piVar4,iVar3,param_2)" (identifier "uVar5") (= "=") (call_expression "FUN_000530f0(param_1,piVar4,iVar3,param_2)" (identifier "FUN_000530f0") (argument_list "(param_1,piVar4,iVar3,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "piVar4") (, ",") (identifier "iVar3") (, ",") (identifier "param_2") () ")")))) (; ";")) (} "}")) (else_clause "else {\n      uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2);\n    }" (else "else") (compound_statement "{\n      uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2);\n    }" ({ "{") (expression_statement "uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2);" (assignment_expression "uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2)" (identifier "uVar5") (= "=") (call_expression "FUN_00052a80(param_1,piVar4,iVar3,param_2)" (identifier "FUN_00052a80") (argument_list "(param_1,piVar4,iVar3,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "piVar4") (, ",") (identifier "iVar3") (, ",") (identifier "param_2") () ")")))) (; ";")) (} "}")))) (} "}")))) (expression_statement "uVar6 = uVar5;" (assignment_expression "uVar6 = uVar5" (identifier "uVar6") (= "=") (identifier "uVar5")) (; ";")) (if_statement "if (local_34 != local_2c) {\n    uVar6 = FUN_001e6db0(local_34);\n  }" (if "if") (parenthesized_expression "(local_34 != local_2c)" (( "(") (binary_expression "local_34 != local_2c" (identifier "local_34") (!= "!=") (identifier "local_2c")) () ")")) (compound_statement "{\n    uVar6 = FUN_001e6db0(local_34);\n  }" ({ "{") (expression_statement "uVar6 = FUN_001e6db0(local_34);" (assignment_expression "uVar6 = FUN_001e6db0(local_34)" (identifier "uVar6") (= "=") (call_expression "FUN_001e6db0(local_34)" (identifier "FUN_001e6db0") (argument_list "(local_34)" (( "(") (identifier "local_34") () ")")))) (; ";")) (} "}"))) (if_statement "if (local_44 != 0) {\n                    \n    FUN_00069d00(&UNK_002485c4 + unaff_EDI,100,unaff_EDI + 0x248c13,uVar6);\n  }" (if "if") (parenthesized_expression "(local_44 != 0)" (( "(") (binary_expression "local_44 != 0" (identifier "local_44") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_00069d00(&UNK_002485c4 + unaff_EDI,100,unaff_EDI + 0x248c13,uVar6);\n  }" ({ "{") (expression_statement "FUN_00069d00(&UNK_002485c4 + unaff_EDI,100,unaff_EDI + 0x248c13,uVar6);" (call_expression "FUN_00069d00(&UNK_002485c4 + unaff_EDI,100,unaff_EDI + 0x248c13,uVar6)" (identifier "FUN_00069d00") (argument_list "(&UNK_002485c4 + unaff_EDI,100,unaff_EDI + 0x248c13,uVar6)" (( "(") (binary_expression "&UNK_002485c4 + unaff_EDI" (pointer_expression "&UNK_002485c4" (& "&") (identifier "UNK_002485c4")) (+ "+") (identifier "unaff_EDI")) (, ",") (number_literal "100") (, ",") (binary_expression "unaff_EDI + 0x248c13" (identifier "unaff_EDI") (+ "+") (number_literal "0x248c13")) (, ",") (identifier "uVar6") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_40 != 0) {\n                    \n    FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x65,unaff_EDI + 0x248c13,local_40);\n  }" (if "if") (parenthesized_expression "(local_40 != 0)" (( "(") (binary_expression "local_40 != 0" (identifier "local_40") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x65,unaff_EDI + 0x248c13,local_40);\n  }" ({ "{") (expression_statement "FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x65,unaff_EDI + 0x248c13,local_40);" (call_expression "FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x65,unaff_EDI + 0x248c13,local_40)" (identifier "FUN_00069d00") (argument_list "(&UNK_002485c4 + unaff_EDI,0x65,unaff_EDI + 0x248c13,local_40)" (( "(") (binary_expression "&UNK_002485c4 + unaff_EDI" (pointer_expression "&UNK_002485c4" (& "&") (identifier "UNK_002485c4")) (+ "+") (identifier "unaff_EDI")) (, ",") (number_literal "0x65") (, ",") (binary_expression "unaff_EDI + 0x248c13" (identifier "unaff_EDI") (+ "+") (number_literal "0x248c13")) (, ",") (identifier "local_40") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar3 = local_3c;" (assignment_expression "iVar3 = local_3c" (identifier "iVar3") (= "=") (identifier "local_3c")) (; ";")) (if_statement "if ((local_3c == 0) && (iVar3 = local_38, local_38 == 0)) {\n    return uVar5;\n  }" (if "if") (parenthesized_expression "((local_3c == 0) && (iVar3 = local_38, local_38 == 0))" (( "(") (binary_expression "(local_3c == 0) && (iVar3 = local_38, local_38 == 0)" (parenthesized_expression "(local_3c == 0)" (( "(") (binary_expression "local_3c == 0" (identifier "local_3c") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar3 = local_38, local_38 == 0)" (( "(") (comma_expression "iVar3 = local_38, local_38 == 0" (assignment_expression "iVar3 = local_38" (identifier "iVar3") (= "=") (identifier "local_38")) (, ",") (binary_expression "local_38 == 0" (identifier "local_38") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    return uVar5;\n  }" ({ "{") (return_statement "return uVar5;" (return "return") (identifier "uVar5") (; ";")) (} "}"))) (expression_statement "FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x2c,unaff_EDI + 0x248c07,iVar3);" (call_expression "FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x2c,unaff_EDI + 0x248c07,iVar3)" (identifier "FUN_00069d00") (argument_list "(&UNK_002485c4 + unaff_EDI,0x2c,unaff_EDI + 0x248c07,iVar3)" (( "(") (binary_expression "&UNK_002485c4 + unaff_EDI" (pointer_expression "&UNK_002485c4" (& "&") (identifier "UNK_002485c4")) (+ "+") (identifier "unaff_EDI")) (, ",") (number_literal "0x2c") (, ",") (binary_expression "unaff_EDI + 0x248c07" (identifier "unaff_EDI") (+ "+") (number_literal "0x248c07")) (, ",") (identifier "iVar3") () ")"))) (; ";")) (} "}")))

/* DWARF original prototype: Relobj * make_object(Dwo_file * this, Dwp_output_file * output_file) */

type_4 * __thiscall gold::Dwo_file::make_object(Dwo_file *this,Dwp_output_file *output_file)

{
  char *pcVar1;
  type_1 _Var2;
  bool bVar3;
  type_2 *this_00;
  int iVar4;
  type_3 *this_01;
  type_4 *pRVar5;
  char *pcVar6;
  int var_5;
  type_5 *error_00;
  type_6 *var_7;
  bool var_13;
  int index;
  int var_12;
  type_7 dirpath;
  type_5 error;
  
  var_1();
  this_00 = (type_2 *)var_2(0x94);
                    /* try { // try from 0003801a to 0003801e has its CatchHandler @ 000382a8 */
  Input_file::type_2(this_00,this->name_);
  dirpath.token_.is_blocker_ = true;
  dirpath.directories_ = (type_8 *)0x0;
  this->input_file_ = this_00;
  dirpath.token_.blockers_ = 0;
  dirpath.token_.writer_ = (type_9 *)0x0;
  dirpath.token_.waiting_.head_ = (type_9 *)0x0;
  dirpath.token_.waiting_.tail_ = (type_9 *)0x0;
                    /* try { // try from 0003805a to 000380a5 has its CatchHandler @ 000382a3 */
  iVar4 = type_2::var_3(this_00,(char *)&dirpath,0,&index);
  if ((char)iVar4 == '\0') {
    pcVar1 = this->name_;
    pcVar6 = (char *)var_4(var_5 + 0x24859a);
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0003822a to 0003822e has its CatchHandler @ 000382a3 */
    var_6(pcVar6,pcVar1);
  }
  var_7 = *(type_6 **)&(this_00->file_).size_;
  if (-*(int *)((int)&(this_00->file_).size_ + 4) < (int)(uint)((type_6 *)0x3f < var_7)) {
    var_7 = (type_6 *)0x40;
  }
  error_00 = (type_5 *)0x1;
  this_01 = (type_3 *)
            File_read::var_8(&this_00->file_,0,0,(type_10)var_7,true,false);
  if (((int)var_7 < 4) || (*(int *)(var_9 + var_5 + 0x22) != *(int *)this_01))
  {
    pcVar1 = this->name_;
    pcVar6 = (char *)var_4(var_5 + 0x2485a9);
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 000381aa to 000381ae has its CatchHandler @ 000382a3 */
    var_6(pcVar6,pcVar1);
  }
  error._M_string_length = 0;
  error.field_2._M_local_buf[0] = '\0';
  error._M_dataplus._M_p = (pointer)&error.field_2;
                    /* try { // try from 000380ed to 00038128 has its CatchHandler @ 000382b0 */
  bVar3 = elfcpp::Elf_recognizer::var_10
                    (this_01,var_7,var_11(&var_12,(int)var_7 >> 0x1f),(int *)&var_13,
                     (bool *)&error,error_00);
  _Var2._M_p = error._M_dataplus._M_p;
  if (!bVar3) {
    pcVar1 = this->name_;
    pcVar6 = (char *)var_4(var_5 + 0x253e5c);
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0003826b to 0003826f has its CatchHandler @ 000382b0 */
    var_6(pcVar6,pcVar1,_Var2._M_p);
  }
  if (var_12 == 0x20) {
    if (var_13 == false) {
      pRVar5 = var_14<32,var_15>(this,(type_6 *)this_01,this_00,output_file);
    }
    else {
                    /* try { // try from 000381be to 000381f4 has its CatchHandler @ 000382b0 */
      pRVar5 = var_14<32,var_16>(this,(type_6 *)this_01,this_00,output_file);
    }
  }
  else {
    if (var_12 != 0x40) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0003829e to 000382a2 has its CatchHandler @ 000382b0 */
      var_17((char *)(var_5 + 0x24800f),0x444,(char *)(var_5 + 0x248c1f));
    }
    if (var_13 == false) {
      pRVar5 = var_14<64,var_15>(this,(type_6 *)this_01,this_00,output_file);
    }
    else {
      pRVar5 = var_14<64,var_16>(this,(type_6 *)this_01,this_00,output_file);
    }
  }
  if ((anon_union_16_2_edb7204a_for_basic_string<var_19,_std::char_traits<var_19>,_std::var_18<var_19>var_20>var_21
       *)error._M_dataplus._M_p != &error.field_2) {
    var_22(error._M_dataplus._M_p);
  }
  if (dirpath.token_.blockers_ != 0) {
                    /* WARNING: Subroutine does not return */
    var_17((char *)(var_5 + 0x2485c4),100,(char *)(var_5 + 0x248c13));
  }
  if (dirpath.token_.writer_ != (type_9 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_17((char *)(var_5 + 0x2485c4),0x65,(char *)(var_5 + 0x248c13));
  }
  if ((dirpath.token_.waiting_.head_ == (type_9 *)0x0) &&
     (dirpath.token_.waiting_.tail_ == (type_9 *)0x0)) {
    return pRVar5;
  }
                    /* WARNING: Subroutine does not return */
  var_17((char *)(var_5 + 0x2485c4),0x2c,(char *)(var_5 + 0x248c07));
}


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

/* WARNING: Type propagation algorithm not settling */

undefined4 MASKED(undefined4 *param_1,undefined4 param_2)

{
  undefined1 *puVar1;
  char cVar2;
  int iVar3;
  int *piVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 extraout_ECX;
  int unaff_EDI;
  uint local_60;
  char local_55;
  undefined1 local_54 [4];
  int local_50 [2];
  undefined1 local_48;
  int local_44;
  int local_40;
  int local_3c;
  int local_38;
  undefined1 *local_34;
  undefined4 local_30;
  undefined1 local_2c [28];
  
  FUN_000559ee();
  iVar3 = FUN_001e5200(0x94);
                    /* try { // try from 0003801a to 0003801e has its CatchHandler @ 000382a8 */
  FUN_000688d0(iVar3,*param_1);
  local_48 = 1;
  local_50[1] = 0;
  param_1[2] = iVar3;
  local_44 = 0;
  local_40 = 0;
  local_3c = 0;
  local_38 = 0;
                    /* try { // try from 0003805a to 000380a5 has its CatchHandler @ 000382a3 */
  cVar2 = FUN_00069870(iVar3,local_50 + 1,0,local_54);
  if (cVar2 == '\0') {
    uVar5 = *param_1;
    uVar6 = gettext(&UNK_0024859a + unaff_EDI);
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0003822a to 0003822e has its CatchHandler @ 000382a3 */
    FUN_00065450(uVar6,uVar5);
  }
  local_60 = *(uint *)(iVar3 + 0x40);
  if (-*(int *)(iVar3 + 0x44) < (int)(uint)(0x3f < local_60)) {
    local_60 = 0x40;
  }
  piVar4 = (int *)FUN_000687f0(iVar3 + 0x1c,0,0,0,0,local_60,1,0);
  if (((int)local_60 < 4) || (*(int *)(BYTE_ARRAY_00357355 + unaff_EDI + 0x22) != *piVar4)) {
    uVar5 = *param_1;
    uVar6 = gettext(&UNK_002485a9 + unaff_EDI);
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 000381aa to 000381ae has its CatchHandler @ 000382a3 */
    FUN_00065450(uVar6,uVar5);
  }
  local_30 = 0;
  local_2c[0] = 0;
  local_34 = local_2c;
                    /* try { // try from 000380ed to 00038128 has its CatchHandler @ 000382b0 */
  cVar2 = FUN_00050f10(piVar4,local_60,(int)local_60 >> 0x1f,local_50,&local_55,&local_34);
  puVar1 = local_34;
  if (cVar2 == '\0') {
    uVar5 = *param_1;
    uVar6 = gettext(unaff_EDI + 0x253e5c);
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0003826b to 0003826f has its CatchHandler @ 000382b0 */
    FUN_00065450(uVar6,uVar5,puVar1);
  }
  if (local_50[0] == 0x20) {
    if (local_55 == '\0') {
      uVar5 = FUN_000522b0(param_1,piVar4,iVar3,param_2);
    }
    else {
                    /* try { // try from 000381be to 000381f4 has its CatchHandler @ 000382b0 */
      uVar5 = FUN_00051c40(param_1,piVar4,iVar3,param_2);
    }
  }
  else {
    if (local_50[0] != 0x40) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0003829e to 000382a2 has its CatchHandler @ 000382b0 */
      FUN_00069d00(unaff_EDI + 0x24800f,0x444,&UNK_00248c1f + unaff_EDI,extraout_ECX);
    }
    if (local_55 == '\0') {
      uVar5 = FUN_000530f0(param_1,piVar4,iVar3,param_2);
    }
    else {
      uVar5 = FUN_00052a80(param_1,piVar4,iVar3,param_2);
    }
  }
  uVar6 = uVar5;
  if (local_34 != local_2c) {
    uVar6 = FUN_001e6db0(local_34);
  }
  if (local_44 != 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00069d00(&UNK_002485c4 + unaff_EDI,100,unaff_EDI + 0x248c13,uVar6);
  }
  if (local_40 != 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x65,unaff_EDI + 0x248c13,local_40);
  }
  iVar3 = local_3c;
  if ((local_3c == 0) && (iVar3 = local_38, local_38 == 0)) {
    return uVar5;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00069d00(&UNK_002485c4 + unaff_EDI,0x2c,unaff_EDI + 0x248c07,iVar3);
}

