
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original name: layout_reloc<64, false>
   DWARF original prototype: Output_section * layout_reloc<64,_false>(Layout * this,
   Sized_relobj_file<64,_false> * param_3, uint param_4, Shdr<64,_false> * shdr, Output_section *
   data_section, Relocatable_relocs * rr) */

Output_section * __thiscall
gold::Layout::layout_reloc<64,_false>
          (Layout *this,Sized_relobj_file<64,_false> *param_1,uint param_2,Shdr<64,_false> *shdr,
          Output_section *data_section,Relocatable_relocs *rr)

{
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *paVar1;
  undefined1 *puVar2;
  int iVar3;
  Elf_Word type;
  size_t sVar4;
  Output_section_data *posd;
  char *pcVar5;
  int unaff_EDI;
  uint64_t uVar6;
  uint uVar7;
  Output_section *local_40;
  string name;
  
  __x86_get_pc_thunk_di();
  iVar3 = *(int *)(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8);
  if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable(&UNK_00196157 + unaff_EDI,0x5c,(char *)(unaff_EDI + 0x199b8f));
  }
  if ((*(char *)(iVar3 + 0x318d) == '\0') && (*(char *)(iVar3 + 0x3095) == '\0')) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable((char *)(unaff_EDI + 0x1986df),0x52d,(char *)(unaff_EDI + 0x1995d7));
  }
  type = shdr->p_->sh_type;
  name._M_string_length = 0;
  paVar1 = &name.field_2;
  name.field_2._M_local_buf[0] = '\0';
  name._M_dataplus._M_p = (pointer)paVar1;
  if (type == 9) {
    pcVar5 = &LAB_0019938e + unaff_EDI;
    uVar7 = 4;
  }
  else {
    if (type != 4) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable((char *)(unaff_EDI + 0x1986df),0x537,(char *)(unaff_EDI + 0x1995d7));
    }
    pcVar5 = (char *)(unaff_EDI + 0x199393);
    uVar7 = 5;
  }
                    /* try { // try from 0008a88d to 0008a90f has its CatchHandler @ 0008abd6 */
  std::string::_M_replace((string *)&name,0,0,pcVar5,uVar7);
  pcVar5 = data_section->name_;
  sVar4 = strlen(pcVar5);
  if (sVar4 <= 0x7fffffff - name._M_string_length) {
    std::string::_M_append((string *)&name,pcVar5,sVar4);
    local_40 = data_section->reloc_section_;
    if (local_40 == (Output_section *)0x0) {
                    /* try { // try from 0008aa7e to 0008ab38 has its CatchHandler @ 0008abd6 */
      pcVar5 = Stringpool_template<char>::add
                         (&this->namepool_,name._M_dataplus._M_p,true,(Key *)0x0);
      local_40 = make_output_section(this,pcVar5,type,shdr->p_->sh_flags,ORDER_INVALID,false);
      if (((local_40->link_section_ != (Output_data *)0x0) || (local_40->link_ != 0)) ||
         ((local_40->field_0x90 & 8) != 0)) {
                    /* WARNING: Subroutine does not return */
        do_gold_unreachable((char *)(unaff_EDI + 0x196df3),0xd1b,&UNK_0019960b + unaff_EDI);
      }
      local_40->field_0x90 = local_40->field_0x90 | 4;
      if ((((local_40->info_section_ != (Output_section *)0x0) &&
           ((data_section != local_40->info_section_ || ((local_40->field_0x91 & 1) == 0)))) ||
          (local_40->info_symndx_ != (Symbol *)0x0)) || (local_40->info_ != 0)) {
                    /* WARNING: Subroutine does not return */
        do_gold_unreachable((char *)(unaff_EDI + 0x196df3),0xd3a,(char *)(unaff_EDI + 0x1995f7));
      }
      local_40->field_0x91 = local_40->field_0x91 | 1;
      local_40->info_section_ = data_section;
      data_section->reloc_section_ = local_40;
    }
    if (type == 9) {
                    /* try { // try from 0008a9fc to 0008aa0c has its CatchHandler @ 0008abd6 */
      Output_section::set_entsize(local_40,0x10);
      posd = (Output_section_data *)operator_new(0x30);
                    /* try { // try from 0008aa16 to 0008aa1a has its CatchHandler @ 0008abda */
      uVar6 = Output_data::default_alignment_for_size(0x40);
      *(int *)&posd->addralign_ = (int)uVar6;
      (posd->super_Output_data)._vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x273047);
      *(undefined4 *)&(posd->super_Output_data).address_ = 0;
      *(undefined4 *)((int)&(posd->super_Output_data).address_ + 4) = 0;
      *(undefined4 *)&(posd->super_Output_data).data_size_ = 0;
      *(undefined4 *)((int)&(posd->super_Output_data).data_size_ + 4) = 0;
      *(undefined4 *)&(posd->super_Output_data).offset_ = 0xffffffff;
      *(undefined4 *)((int)&(posd->super_Output_data).offset_ + 4) = 0xffffffff;
      puVar2 = &(posd->super_Output_data).field_0x1c;
      *puVar2 = *puVar2 & 0xe0;
      posd->output_section_ = (Output_section *)0x0;
      *(int *)((int)&posd->addralign_ + 4) = (int)(uVar6 >> 0x20);
      posd[1].super_Output_data._vptr_Output_data = (_func_int_varargs **)rr;
    }
    else {
      if (type != 4) {
                    /* WARNING: Subroutine does not return */
        do_gold_unreachable((char *)(unaff_EDI + 0x1986df),0x557,(char *)(unaff_EDI + 0x1995d7));
      }
      Output_section::set_entsize(local_40,0x18);
      posd = (Output_section_data *)operator_new(0x30);
                    /* try { // try from 0008a919 to 0008a91d has its CatchHandler @ 0008abdf */
      uVar6 = Output_data::default_alignment_for_size(0x40);
      *(int *)&posd->addralign_ = (int)uVar6;
      (posd->super_Output_data)._vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x2730b3);
      puVar2 = &(posd->super_Output_data).field_0x1c;
      *puVar2 = *puVar2 & 0xe0;
      *(undefined4 *)&(posd->super_Output_data).address_ = 0;
      *(undefined4 *)((int)&(posd->super_Output_data).address_ + 4) = 0;
      *(undefined4 *)&(posd->super_Output_data).data_size_ = 0;
      *(undefined4 *)((int)&(posd->super_Output_data).data_size_ + 4) = 0;
      *(undefined4 *)&(posd->super_Output_data).offset_ = 0xffffffff;
      *(undefined4 *)((int)&(posd->super_Output_data).offset_ + 4) = 0xffffffff;
      posd->output_section_ = (Output_section *)0x0;
      *(int *)((int)&posd->addralign_ + 4) = (int)(uVar6 >> 0x20);
      posd[1].super_Output_data._vptr_Output_data = (_func_int_varargs **)rr;
    }
                    /* try { // try from 0008a973 to 0008a977 has its CatchHandler @ 0008abd6 */
    Output_section::add_output_section_data(local_40,posd);
    if (rr->posd_ == (Output_data *)0x0) {
      rr->posd_ = &posd->super_Output_data;
      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
           *)name._M_dataplus._M_p != paVar1) {
        operator_delete(name._M_dataplus._M_p);
      }
      return local_40;
    }
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0008ab65 to 0008abd5 has its CatchHandler @ 0008abd6 */
    do_gold_unreachable((char *)(unaff_EDI + 0x199399),0x11a,(char *)(unaff_EDI + 0x1995e7));
  }
                    /* WARNING: Subroutine does not return */
  std::__throw_length_error((char *)(unaff_EDI + 0x195d29));
}



int FUN_0008a810(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,int param_5,
                int param_6)

{
  int iVar1;
  char *__s;
  undefined1 *puVar2;
  size_t sVar3;
  int *piVar4;
  undefined4 extraout_ECX;
  undefined4 extraout_ECX_00;
  undefined4 extraout_EDX;
  int unaff_EDI;
  int iVar5;
  undefined8 uVar6;
  undefined4 uVar7;
  int local_40;
  undefined1 *local_34;
  int local_30;
  undefined1 local_2c [28];
  
  FUN_0004fb7e();
  iVar5 = unaff_EDI + 0x2777e7;
  iVar1 = *(int *)(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8);
  if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0005f0b0(&UNK_00196157 + unaff_EDI,0x5c,unaff_EDI + 0x199b8f);
  }
  if ((*(char *)(iVar1 + 0x318d) == '\0') && (*(char *)(iVar1 + 0x3095) == '\0')) {
                    /* WARNING: Subroutine does not return */
    FUN_0005f0b0(unaff_EDI + 0x1986df,0x52d,unaff_EDI + 0x1995d7);
  }
  iVar1 = *(int *)(*param_4 + 4);
  local_30 = 0;
  local_2c[0] = 0;
  local_34 = local_2c;
  if (iVar1 == 9) {
    puVar2 = &LAB_0019938e + unaff_EDI;
    uVar7 = 4;
  }
  else {
    if (iVar1 != 4) {
                    /* WARNING: Subroutine does not return */
      FUN_0005f0b0(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX);
    }
    puVar2 = (undefined1 *)(unaff_EDI + 0x199393);
    uVar7 = 5;
  }
                    /* try { // try from 0008a88d to 0008a90f has its CatchHandler @ 0008abd6 */
  FUN_001893e0(&local_34,0,0,puVar2,uVar7);
  __s = *(char **)(param_5 + 0x20);
  sVar3 = strlen(__s);
  if (sVar3 <= 0x7fffffffU - local_30) {
    FUN_00189fb0(&local_34,__s,sVar3);
    local_40 = *(int *)(param_5 + 0xe4);
    if (local_40 == 0) {
                    /* try { // try from 0008aa7e to 0008ab38 has its CatchHandler @ 0008abd6 */
      uVar7 = FUN_001200e0(param_1 + 8,local_34,1,0);
      local_40 = FUN_0007fe90(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),
                              *(undefined4 *)(*param_4 + 0xc),0,0);
      if (((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)) ||
         ((*(byte *)(local_40 + 0x90) & 8) != 0)) {
                    /* WARNING: Subroutine does not return */
        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00);
      }
      *(byte *)(local_40 + 0x90) = *(byte *)(local_40 + 0x90) | 4;
      if ((((*(int *)(local_40 + 0x44) != 0) &&
           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||
          (*(int *)(local_40 + 0x48) != 0)) || (*(int *)(local_40 + 0x4c) != 0)) {
                    /* WARNING: Subroutine does not return */
        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1);
      }
      *(byte *)(local_40 + 0x91) = *(byte *)(local_40 + 0x91) | 1;
      *(int *)(local_40 + 0x44) = param_5;
      *(int *)(param_5 + 0xe4) = local_40;
      iVar5 = 0;
    }
    if (iVar1 == 9) {
                    /* try { // try from 0008a9fc to 0008aa0c has its CatchHandler @ 0008abd6 */
      FUN_000bb100(local_40,0x10,0);
      piVar4 = (int *)FUN_0017ebf0(0x30);
                    /* try { // try from 0008aa16 to 0008aa1a has its CatchHandler @ 0008abda */
      uVar6 = FUN_000ba570(0x40);
      piVar4[9] = (int)uVar6;
      *piVar4 = unaff_EDI + 0x273047;
      piVar4[1] = 0;
      piVar4[2] = 0;
      piVar4[3] = 0;
      piVar4[4] = 0;
      piVar4[5] = -1;
      piVar4[6] = -1;
      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;
      piVar4[8] = 0;
      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);
      piVar4[0xb] = param_6;
    }
    else {
      if (iVar1 != 4) {
                    /* WARNING: Subroutine does not return */
        FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);
      }
      FUN_000bb100(local_40,0x18,0);
      piVar4 = (int *)FUN_0017ebf0(0x30);
                    /* try { // try from 0008a919 to 0008a91d has its CatchHandler @ 0008abdf */
      uVar6 = FUN_000ba570(0x40);
      piVar4[9] = (int)uVar6;
      *piVar4 = unaff_EDI + 0x2730b3;
      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;
      piVar4[1] = 0;
      piVar4[2] = 0;
      piVar4[3] = 0;
      piVar4[4] = 0;
      piVar4[5] = -1;
      piVar4[6] = -1;
      piVar4[8] = 0;
      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);
      piVar4[0xb] = param_6;
    }
                    /* try { // try from 0008a973 to 0008a977 has its CatchHandler @ 0008abd6 */
    FUN_000bf250(local_40,piVar4);
    if (*(int *)(param_6 + 0x10) == 0) {
      *(int **)(param_6 + 0x10) = piVar4;
      if (local_34 != local_2c) {
        FUN_001807a0(local_34);
      }
      return local_40;
    }
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0008ab65 to 0008abd5 has its CatchHandler @ 0008abd6 */
    FUN_0005f0b0(unaff_EDI + 0x199399,0x11a,unaff_EDI + 0x1995e7,extraout_EDX);
  }
                    /* WARNING: Subroutine does not return */
  FUN_001c6190(unaff_EDI + 0x195d29);
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
CALL 0x0004fb7e
ADD EDI,0x2777e7
PUSH ESI
PUSH EBX
SUB ESP,0x3c
LEA EAX,[EDI + 0x378]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JZ 0x0008ab39
CMP byte ptr [EAX + 0x318d],0x0
JZ 0x0008a9b0
MOV EAX,dword ptr [EBP + 0x14]
MOV EAX,dword ptr [EAX]
MOV ESI,dword ptr [EAX + 0x4]
LEA EAX,[EBP + -0x30]
MOV dword ptr [EBP + -0x2c],0x0
MOV dword ptr [EBP + -0x3c],EAX
LEA EAX,[EBP + -0x28]
MOV dword ptr [EBP + -0x44],EAX
MOV dword ptr [EBP + -0x30],EAX
MOV byte ptr [EBP + -0x28],0x0
CMP ESI,0x9
JZ 0x0008a9e0
CMP ESI,0x4
JNZ 0x0008ab6a
SUB ESP,0xc
LEA EAX,[EDI + 0xfff21bac]
PUSH 0x5
PUSH EAX
MOV EBX,EDI
PUSH 0x0
PUSH 0x0
PUSH dword ptr [EBP + -0x3c]
CALL 0x001893e0
MOV EAX,dword ptr [EBP + 0x18]
ADD ESP,0x20
SUB ESP,0xc
MOV ECX,dword ptr [EAX + 0x20]
PUSH ECX
MOV dword ptr [EBP + -0x40],ECX
CALL 0x000265f0
MOV EDX,0x7fffffff
SUB EDX,dword ptr [EBP + -0x2c]
ADD ESP,0x10
CMP EAX,EDX
MOV ECX,dword ptr [EBP + -0x40]
JA 0x0008ab2a
SUB ESP,0x4
PUSH EAX
PUSH ECX
PUSH dword ptr [EBP + -0x3c]
CALL 0x00189fb0
MOV EAX,dword ptr [EBP + 0x18]
ADD ESP,0x10
MOV EAX,dword ptr [EAX + 0xe4]
MOV dword ptr [EBP + -0x3c],EAX
TEST EAX,EAX
JZ 0x0008aa70
CMP ESI,0x9
JZ 0x0008a9f0
CMP ESI,0x4
JNZ 0x0008ab85
SUB ESP,0x4
MOV EBX,EDI
PUSH 0x0
PUSH 0x18
PUSH dword ptr [EBP + -0x3c]
CALL 0x000bb100
MOV dword ptr [ESP],0x30
CALL 0x0017ebf0
MOV ESI,EAX
MOV dword ptr [ESP],0x40
CALL 0x000ba570
MOV dword ptr [ESI + 0x24],EAX
LEA EAX,[EDI + 0xffffb8cc]
ADD ESP,0x10
MOV dword ptr [ESI],EAX
MOV EAX,dword ptr [EBP + 0x1c]
AND byte ptr [ESI + 0x1c],0xe0
MOV dword ptr [ESI + 0x4],0x0
MOV dword ptr [ESI + 0x8],0x0
MOV dword ptr [ESI + 0xc],0x0
MOV dword ptr [ESI + 0x10],0x0
MOV dword ptr [ESI + 0x14],0xffffffff
MOV dword ptr [ESI + 0x18],0xffffffff
MOV dword ptr [ESI + 0x20],0x0
MOV dword ptr [ESI + 0x28],EDX
MOV dword ptr [ESI + 0x2c],EAX
SUB ESP,0x8
MOV EBX,EDI
PUSH ESI
PUSH dword ptr [EBP + -0x3c]
CALL 0x000bf250
MOV EAX,dword ptr [EBP + 0x1c]
ADD ESP,0x10
MOV ECX,dword ptr [EAX + 0x10]
TEST ECX,ECX
JNZ 0x0008ab51
MOV EAX,dword ptr [EBP + 0x1c]
MOV dword ptr [EAX + 0x10],ESI
MOV EAX,dword ptr [EBP + -0x30]
CMP EAX,dword ptr [EBP + -0x44]
JZ 0x0008a9a3
SUB ESP,0xc
PUSH EAX
CALL 0x001807a0
ADD ESP,0x10
MOV EAX,dword ptr [EBP + -0x3c]
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP byte ptr [EAX + 0x3095],0x0
JNZ 0x0008a844
LEA EAX,[EDI + 0xfff21df0]
PUSH EBX
MOV EBX,EDI
PUSH EAX
LEA EAX,[EDI + 0xfff20ef8]
PUSH 0x52d
PUSH EAX
CALL 0x0005f0b0
SUB ESP,0xc
LEA EAX,[EDI + 0xfff21ba7]
PUSH 0x4
JMP 0x0008a883
SUB ESP,0x4
MOV EBX,EDI
PUSH 0x0
PUSH 0x10
PUSH dword ptr [EBP + -0x3c]
CALL 0x000bb100
MOV dword ptr [ESP],0x30
CALL 0x0017ebf0
MOV ESI,EAX
MOV dword ptr [ESP],0x40
CALL 0x000ba570
MOV dword ptr [ESI + 0x24],EAX
LEA EAX,[EDI + 0xffffb860]
ADD ESP,0x10
MOV dword ptr [ESI],EAX
MOV EAX,dword ptr [EBP + 0x1c]
MOV dword ptr [ESI + 0x4],0x0
MOV dword ptr [ESI + 0x8],0x0
MOV dword ptr [ESI + 0xc],0x0
MOV dword ptr [ESI + 0x10],0x0
MOV dword ptr [ESI + 0x14],0xffffffff
MOV dword ptr [ESI + 0x18],0xffffffff
AND byte ptr [ESI + 0x1c],0xe0
MOV dword ptr [ESI + 0x20],0x0
MOV dword ptr [ESI + 0x28],EDX
MOV dword ptr [ESI + 0x2c],EAX
JMP 0x0008a96a
MOV EAX,dword ptr [EBP + 0x8]
PUSH 0x0
PUSH 0x1
ADD EAX,0x8
PUSH dword ptr [EBP + -0x30]
PUSH EAX
CALL 0x001200e0
MOV EDX,dword ptr [EBP + 0x14]
ADD ESP,0xc
PUSH 0x0
MOV EDX,dword ptr [EDX]
PUSH 0x0
PUSH dword ptr [EDX + 0xc]
PUSH dword ptr [EDX + 0x8]
PUSH ESI
PUSH EAX
PUSH dword ptr [EBP + 0x8]
CALL 0x0007fe90
MOV EDX,dword ptr [EAX + 0x3c]
MOV dword ptr [EBP + -0x3c],EAX
ADD ESP,0x20
TEST EDX,EDX
JNZ 0x0008abbb
MOV EBX,dword ptr [EAX + 0x40]
TEST EBX,EBX
JNZ 0x0008abbb
MOVZX EAX,byte ptr [EAX + 0x90]
TEST AL,0x8
JNZ 0x0008abbb
MOV ECX,dword ptr [EBP + -0x3c]
OR EAX,0x4
MOV byte ptr [ECX + 0x90],AL
MOV EAX,dword ptr [ECX + 0x44]
TEST EAX,EAX
JZ 0x0008aaf3
CMP dword ptr [EBP + 0x18],EAX
JNZ 0x0008aba0
TEST byte ptr [ECX + 0x91],0x1
JZ 0x0008aba0
MOV EAX,dword ptr [EBP + -0x3c]
MOV EDX,dword ptr [EAX + 0x48]
TEST EDX,EDX
JNZ 0x0008aba0
MOV EAX,dword ptr [EAX + 0x4c]
TEST EAX,EAX
JNZ 0x0008aba0
MOV EAX,dword ptr [EBP + -0x3c]
MOV EDX,dword ptr [EBP + 0x18]
OR byte ptr [EAX + 0x91],0x1
MOV ECX,dword ptr [EBP + 0x18]
MOV dword ptr [EAX + 0x44],EDX
MOV dword ptr [ECX + 0xe4],EAX
JMP 0x0008a8e1
SUB ESP,0xc
LEA EAX,[EDI + 0xfff1e542]
PUSH EAX
CALL 0x001c6190
LEA EAX,[EDI + 0xfff223a8]
PUSH ESI
MOV EBX,EDI
PUSH EAX
LEA EAX,[EDI + 0xfff1e970]
PUSH 0x5c
PUSH EAX
CALL 0x0005f0b0
LEA EAX,[EDI + 0xfff21e00]
PUSH EDX
PUSH EAX
LEA EAX,[EDI + 0xfff21bb2]
PUSH 0x11a
PUSH EAX
CALL 0x0005f0b0
LEA EAX,[EDI + 0xfff21df0]
PUSH ECX
MOV EBX,EDI
PUSH EAX
LEA EAX,[EDI + 0xfff20ef8]
PUSH 0x537
PUSH EAX
CALL 0x0005f0b0
LEA EAX,[EDI + 0xfff21df0]
PUSH EBX
MOV EBX,EDI
PUSH EAX
LEA EAX,[EDI + 0xfff20ef8]
PUSH 0x557
PUSH EAX
CALL 0x0005f0b0
LEA EAX,[EDI + 0xfff21e10]
PUSH ESI
MOV EBX,EDI
PUSH EAX
LEA EAX,[EDI + 0xfff1f60c]
PUSH 0xd3a
PUSH EAX
CALL 0x0005f0b0
LEA EAX,[EDI + 0xfff21e24]
PUSH ECX
MOV EBX,EDI
PUSH EAX
LEA EAX,[EDI + 0xfff1f60c]
PUSH 0xd1b
PUSH EAX
CALL 0x0005f0b0
(translation_unit "int FUN_0008a810(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,int param_5,\n                int param_6)\n\n{\n  int iVar1;\n  char *__s;\n  undefined1 *puVar2;\n  size_t sVar3;\n  int *piVar4;\n  undefined4 extraout_ECX;\n  undefined4 extraout_ECX_00;\n  undefined4 extraout_EDX;\n  int unaff_EDI;\n  int iVar5;\n  undefined8 uVar6;\n  undefined4 uVar7;\n  int local_40;\n  undefined1 *local_34;\n  int local_30;\n  undefined1 local_2c [28];\n  \n  FUN_0004fb7e();\n  iVar5 = unaff_EDI + 0x2777e7;\n  iVar1 = *(int *)(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8);\n  if (iVar1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0(&UNK_00196157 + unaff_EDI,0x5c,unaff_EDI + 0x199b8f);\n  }\n  if ((*(char *)(iVar1 + 0x318d) == '\0') && (*(char *)(iVar1 + 0x3095) == '\0')) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0(unaff_EDI + 0x1986df,0x52d,unaff_EDI + 0x1995d7);\n  }\n  iVar1 = *(int *)(*param_4 + 4);\n  local_30 = 0;\n  local_2c[0] = 0;\n  local_34 = local_2c;\n  if (iVar1 == 9) {\n    puVar2 = &LAB_0019938e + unaff_EDI;\n    uVar7 = 4;\n  }\n  else {\n    if (iVar1 != 4) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX);\n    }\n    puVar2 = (undefined1 *)(unaff_EDI + 0x199393);\n    uVar7 = 5;\n  }\n                    /* try { // try from 0008a88d to 0008a90f has its CatchHandler @ 0008abd6 */\n  FUN_001893e0(&local_34,0,0,puVar2,uVar7);\n  __s = *(char **)(param_5 + 0x20);\n  sVar3 = strlen(__s);\n  if (sVar3 <= 0x7fffffffU - local_30) {\n    FUN_00189fb0(&local_34,__s,sVar3);\n    local_40 = *(int *)(param_5 + 0xe4);\n    if (local_40 == 0) {\n                    /* try { // try from 0008aa7e to 0008ab38 has its CatchHandler @ 0008abd6 */\n      uVar7 = FUN_001200e0(param_1 + 8,local_34,1,0);\n      local_40 = FUN_0007fe90(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0);\n      if (((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)) ||\n         ((*(byte *)(local_40 + 0x90) & 8) != 0)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00);\n      }\n      *(byte *)(local_40 + 0x90) = *(byte *)(local_40 + 0x90) | 4;\n      if ((((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)) || (*(int *)(local_40 + 0x4c) != 0)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1);\n      }\n      *(byte *)(local_40 + 0x91) = *(byte *)(local_40 + 0x91) | 1;\n      *(int *)(local_40 + 0x44) = param_5;\n      *(int *)(param_5 + 0xe4) = local_40;\n      iVar5 = 0;\n    }\n    if (iVar1 == 9) {\n                    /* try { // try from 0008a9fc to 0008aa0c has its CatchHandler @ 0008abd6 */\n      FUN_000bb100(local_40,0x10,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    /* try { // try from 0008aa16 to 0008aa1a has its CatchHandler @ 0008abda */\n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x273047;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }\n    else {\n      if (iVar1 != 4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);\n      }\n      FUN_000bb100(local_40,0x18,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    /* try { // try from 0008a919 to 0008a91d has its CatchHandler @ 0008abdf */\n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x2730b3;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }\n                    /* try { // try from 0008a973 to 0008a977 has its CatchHandler @ 0008abd6 */\n    FUN_000bf250(local_40,piVar4);\n    if (*(int *)(param_6 + 0x10) == 0) {\n      *(int **)(param_6 + 0x10) = piVar4;\n      if (local_34 != local_2c) {\n        FUN_001807a0(local_34);\n      }\n      return local_40;\n    }\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0008ab65 to 0008abd5 has its CatchHandler @ 0008abd6 */\n    FUN_0005f0b0(unaff_EDI + 0x199399,0x11a,unaff_EDI + 0x1995e7,extraout_EDX);\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_001c6190(unaff_EDI + 0x195d29);\n}\n\n" (function_definition "int FUN_0008a810(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,int param_5,\n                int param_6)\n\n{\n  int iVar1;\n  char *__s;\n  undefined1 *puVar2;\n  size_t sVar3;\n  int *piVar4;\n  undefined4 extraout_ECX;\n  undefined4 extraout_ECX_00;\n  undefined4 extraout_EDX;\n  int unaff_EDI;\n  int iVar5;\n  undefined8 uVar6;\n  undefined4 uVar7;\n  int local_40;\n  undefined1 *local_34;\n  int local_30;\n  undefined1 local_2c [28];\n  \n  FUN_0004fb7e();\n  iVar5 = unaff_EDI + 0x2777e7;\n  iVar1 = *(int *)(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8);\n  if (iVar1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0(&UNK_00196157 + unaff_EDI,0x5c,unaff_EDI + 0x199b8f);\n  }\n  if ((*(char *)(iVar1 + 0x318d) == '\0') && (*(char *)(iVar1 + 0x3095) == '\0')) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0(unaff_EDI + 0x1986df,0x52d,unaff_EDI + 0x1995d7);\n  }\n  iVar1 = *(int *)(*param_4 + 4);\n  local_30 = 0;\n  local_2c[0] = 0;\n  local_34 = local_2c;\n  if (iVar1 == 9) {\n    puVar2 = &LAB_0019938e + unaff_EDI;\n    uVar7 = 4;\n  }\n  else {\n    if (iVar1 != 4) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX);\n    }\n    puVar2 = (undefined1 *)(unaff_EDI + 0x199393);\n    uVar7 = 5;\n  }\n                    /* try { // try from 0008a88d to 0008a90f has its CatchHandler @ 0008abd6 */\n  FUN_001893e0(&local_34,0,0,puVar2,uVar7);\n  __s = *(char **)(param_5 + 0x20);\n  sVar3 = strlen(__s);\n  if (sVar3 <= 0x7fffffffU - local_30) {\n    FUN_00189fb0(&local_34,__s,sVar3);\n    local_40 = *(int *)(param_5 + 0xe4);\n    if (local_40 == 0) {\n                    /* try { // try from 0008aa7e to 0008ab38 has its CatchHandler @ 0008abd6 */\n      uVar7 = FUN_001200e0(param_1 + 8,local_34,1,0);\n      local_40 = FUN_0007fe90(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0);\n      if (((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)) ||\n         ((*(byte *)(local_40 + 0x90) & 8) != 0)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00);\n      }\n      *(byte *)(local_40 + 0x90) = *(byte *)(local_40 + 0x90) | 4;\n      if ((((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)) || (*(int *)(local_40 + 0x4c) != 0)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1);\n      }\n      *(byte *)(local_40 + 0x91) = *(byte *)(local_40 + 0x91) | 1;\n      *(int *)(local_40 + 0x44) = param_5;\n      *(int *)(param_5 + 0xe4) = local_40;\n      iVar5 = 0;\n    }\n    if (iVar1 == 9) {\n                    /* try { // try from 0008a9fc to 0008aa0c has its CatchHandler @ 0008abd6 */\n      FUN_000bb100(local_40,0x10,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    /* try { // try from 0008aa16 to 0008aa1a has its CatchHandler @ 0008abda */\n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x273047;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }\n    else {\n      if (iVar1 != 4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);\n      }\n      FUN_000bb100(local_40,0x18,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    /* try { // try from 0008a919 to 0008a91d has its CatchHandler @ 0008abdf */\n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x2730b3;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }\n                    /* try { // try from 0008a973 to 0008a977 has its CatchHandler @ 0008abd6 */\n    FUN_000bf250(local_40,piVar4);\n    if (*(int *)(param_6 + 0x10) == 0) {\n      *(int **)(param_6 + 0x10) = piVar4;\n      if (local_34 != local_2c) {\n        FUN_001807a0(local_34);\n      }\n      return local_40;\n    }\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0008ab65 to 0008abd5 has its CatchHandler @ 0008abd6 */\n    FUN_0005f0b0(unaff_EDI + 0x199399,0x11a,unaff_EDI + 0x1995e7,extraout_EDX);\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_001c6190(unaff_EDI + 0x195d29);\n}" primitive_type (function_declarator "FUN_0008a810(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,int param_5,\n                int param_6)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,int param_5,\n                int param_6)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "int param_6" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  char *__s;\n  undefined1 *puVar2;\n  size_t sVar3;\n  int *piVar4;\n  undefined4 extraout_ECX;\n  undefined4 extraout_ECX_00;\n  undefined4 extraout_EDX;\n  int unaff_EDI;\n  int iVar5;\n  undefined8 uVar6;\n  undefined4 uVar7;\n  int local_40;\n  undefined1 *local_34;\n  int local_30;\n  undefined1 local_2c [28];\n  \n  FUN_0004fb7e();\n  iVar5 = unaff_EDI + 0x2777e7;\n  iVar1 = *(int *)(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8);\n  if (iVar1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0(&UNK_00196157 + unaff_EDI,0x5c,unaff_EDI + 0x199b8f);\n  }\n  if ((*(char *)(iVar1 + 0x318d) == '\0') && (*(char *)(iVar1 + 0x3095) == '\0')) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0(unaff_EDI + 0x1986df,0x52d,unaff_EDI + 0x1995d7);\n  }\n  iVar1 = *(int *)(*param_4 + 4);\n  local_30 = 0;\n  local_2c[0] = 0;\n  local_34 = local_2c;\n  if (iVar1 == 9) {\n    puVar2 = &LAB_0019938e + unaff_EDI;\n    uVar7 = 4;\n  }\n  else {\n    if (iVar1 != 4) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX);\n    }\n    puVar2 = (undefined1 *)(unaff_EDI + 0x199393);\n    uVar7 = 5;\n  }\n                    /* try { // try from 0008a88d to 0008a90f has its CatchHandler @ 0008abd6 */\n  FUN_001893e0(&local_34,0,0,puVar2,uVar7);\n  __s = *(char **)(param_5 + 0x20);\n  sVar3 = strlen(__s);\n  if (sVar3 <= 0x7fffffffU - local_30) {\n    FUN_00189fb0(&local_34,__s,sVar3);\n    local_40 = *(int *)(param_5 + 0xe4);\n    if (local_40 == 0) {\n                    /* try { // try from 0008aa7e to 0008ab38 has its CatchHandler @ 0008abd6 */\n      uVar7 = FUN_001200e0(param_1 + 8,local_34,1,0);\n      local_40 = FUN_0007fe90(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0);\n      if (((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)) ||\n         ((*(byte *)(local_40 + 0x90) & 8) != 0)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00);\n      }\n      *(byte *)(local_40 + 0x90) = *(byte *)(local_40 + 0x90) | 4;\n      if ((((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)) || (*(int *)(local_40 + 0x4c) != 0)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1);\n      }\n      *(byte *)(local_40 + 0x91) = *(byte *)(local_40 + 0x91) | 1;\n      *(int *)(local_40 + 0x44) = param_5;\n      *(int *)(param_5 + 0xe4) = local_40;\n      iVar5 = 0;\n    }\n    if (iVar1 == 9) {\n                    /* try { // try from 0008a9fc to 0008aa0c has its CatchHandler @ 0008abd6 */\n      FUN_000bb100(local_40,0x10,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    /* try { // try from 0008aa16 to 0008aa1a has its CatchHandler @ 0008abda */\n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x273047;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }\n    else {\n      if (iVar1 != 4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);\n      }\n      FUN_000bb100(local_40,0x18,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    /* try { // try from 0008a919 to 0008a91d has its CatchHandler @ 0008abdf */\n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x2730b3;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }\n                    /* try { // try from 0008a973 to 0008a977 has its CatchHandler @ 0008abd6 */\n    FUN_000bf250(local_40,piVar4);\n    if (*(int *)(param_6 + 0x10) == 0) {\n      *(int **)(param_6 + 0x10) = piVar4;\n      if (local_34 != local_2c) {\n        FUN_001807a0(local_34);\n      }\n      return local_40;\n    }\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0008ab65 to 0008abd5 has its CatchHandler @ 0008abd6 */\n    FUN_0005f0b0(unaff_EDI + 0x199399,0x11a,unaff_EDI + 0x1995e7,extraout_EDX);\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_001c6190(unaff_EDI + 0x195d29);\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "undefined1 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "undefined4 extraout_ECX;" type_identifier identifier ;) (declaration "undefined4 extraout_ECX_00;" type_identifier identifier ;) (declaration "undefined4 extraout_EDX;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "undefined1 *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "undefined1 local_2c [28];" type_identifier (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "FUN_0004fb7e();" (call_expression "FUN_0004fb7e()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar5 = unaff_EDI + 0x2777e7;" (assignment_expression "iVar5 = unaff_EDI + 0x2777e7" identifier = (binary_expression "unaff_EDI + 0x2777e7" identifier + number_literal)) ;) (expression_statement "iVar1 = *(int *)(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8);" (assignment_expression "iVar1 = *(int *)(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8)" identifier = (pointer_expression "*(int *)(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8)" * (cast_expression "(int *)(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8)" ( (binary_expression "*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8" (pointer_expression "*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72)" * (cast_expression "(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(BYTE_ARRAY_00277aed + unaff_EDI + 0x72)" ( (binary_expression "BYTE_ARRAY_00277aed + unaff_EDI + 0x72" (binary_expression "BYTE_ARRAY_00277aed + unaff_EDI" identifier + identifier) + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (iVar1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0(&UNK_00196157 + unaff_EDI,0x5c,unaff_EDI + 0x199b8f);\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0(&UNK_00196157 + unaff_EDI,0x5c,unaff_EDI + 0x199b8f);\n  }" { comment (expression_statement "FUN_0005f0b0(&UNK_00196157 + unaff_EDI,0x5c,unaff_EDI + 0x199b8f);" (call_expression "FUN_0005f0b0(&UNK_00196157 + unaff_EDI,0x5c,unaff_EDI + 0x199b8f)" identifier (argument_list "(&UNK_00196157 + unaff_EDI,0x5c,unaff_EDI + 0x199b8f)" ( (binary_expression "&UNK_00196157 + unaff_EDI" (pointer_expression "&UNK_00196157" & identifier) + identifier) , number_literal , (binary_expression "unaff_EDI + 0x199b8f" identifier + number_literal) ))) ;) })) (if_statement "if ((*(char *)(iVar1 + 0x318d) == '\0') && (*(char *)(iVar1 + 0x3095) == '\0')) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0(unaff_EDI + 0x1986df,0x52d,unaff_EDI + 0x1995d7);\n  }" if (parenthesized_expression "((*(char *)(iVar1 + 0x318d) == '\0') && (*(char *)(iVar1 + 0x3095) == '\0'))" ( (binary_expression "(*(char *)(iVar1 + 0x318d) == '\0') && (*(char *)(iVar1 + 0x3095) == '\0')" (parenthesized_expression "(*(char *)(iVar1 + 0x318d) == '\0')" ( (binary_expression "*(char *)(iVar1 + 0x318d) == '\0'" (pointer_expression "*(char *)(iVar1 + 0x318d)" * (cast_expression "(char *)(iVar1 + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x318d)" ( (binary_expression "iVar1 + 0x318d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(char *)(iVar1 + 0x3095) == '\0')" ( (binary_expression "*(char *)(iVar1 + 0x3095) == '\0'" (pointer_expression "*(char *)(iVar1 + 0x3095)" * (cast_expression "(char *)(iVar1 + 0x3095)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3095)" ( (binary_expression "iVar1 + 0x3095" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0(unaff_EDI + 0x1986df,0x52d,unaff_EDI + 0x1995d7);\n  }" { comment (expression_statement "FUN_0005f0b0(unaff_EDI + 0x1986df,0x52d,unaff_EDI + 0x1995d7);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x1986df,0x52d,unaff_EDI + 0x1995d7)" identifier (argument_list "(unaff_EDI + 0x1986df,0x52d,unaff_EDI + 0x1995d7)" ( (binary_expression "unaff_EDI + 0x1986df" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x1995d7" identifier + number_literal) ))) ;) })) (expression_statement "iVar1 = *(int *)(*param_4 + 4);" (assignment_expression "iVar1 = *(int *)(*param_4 + 4)" identifier = (pointer_expression "*(int *)(*param_4 + 4)" * (cast_expression "(int *)(*param_4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_4 + 4)" ( (binary_expression "*param_4 + 4" (pointer_expression "*param_4" * identifier) + number_literal) ))))) ;) (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) ;) (if_statement "if (iVar1 == 9) {\n    puVar2 = &LAB_0019938e + unaff_EDI;\n    uVar7 = 4;\n  }\n  else {\n    if (iVar1 != 4) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX);\n    }\n    puVar2 = (undefined1 *)(unaff_EDI + 0x199393);\n    uVar7 = 5;\n  }" if (parenthesized_expression "(iVar1 == 9)" ( (binary_expression "iVar1 == 9" identifier == number_literal) )) (compound_statement "{\n    puVar2 = &LAB_0019938e + unaff_EDI;\n    uVar7 = 4;\n  }" { (expression_statement "puVar2 = &LAB_0019938e + unaff_EDI;" (assignment_expression "puVar2 = &LAB_0019938e + unaff_EDI" identifier = (binary_expression "&LAB_0019938e + unaff_EDI" (pointer_expression "&LAB_0019938e" & identifier) + identifier)) ;) (expression_statement "uVar7 = 4;" (assignment_expression "uVar7 = 4" identifier = number_literal) ;) }) (else_clause "else {\n    if (iVar1 != 4) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX);\n    }\n    puVar2 = (undefined1 *)(unaff_EDI + 0x199393);\n    uVar7 = 5;\n  }" else (compound_statement "{\n    if (iVar1 != 4) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX);\n    }\n    puVar2 = (undefined1 *)(unaff_EDI + 0x199393);\n    uVar7 = 5;\n  }" { (if_statement "if (iVar1 != 4) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX);\n    }" if (parenthesized_expression "(iVar1 != 4)" ( (binary_expression "iVar1 != 4" identifier != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX);\n    }" { comment (expression_statement "FUN_0005f0b0(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX)" identifier (argument_list "(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX)" ( (binary_expression "unaff_EDI + 0x1986df" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x1995d7" identifier + number_literal) , identifier ))) ;) })) (expression_statement "puVar2 = (undefined1 *)(unaff_EDI + 0x199393);" (assignment_expression "puVar2 = (undefined1 *)(unaff_EDI + 0x199393)" identifier = (cast_expression "(undefined1 *)(unaff_EDI + 0x199393)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x199393)" ( (binary_expression "unaff_EDI + 0x199393" identifier + number_literal) )))) ;) (expression_statement "uVar7 = 5;" (assignment_expression "uVar7 = 5" identifier = number_literal) ;) }))) comment (expression_statement "FUN_001893e0(&local_34,0,0,puVar2,uVar7);" (call_expression "FUN_001893e0(&local_34,0,0,puVar2,uVar7)" identifier (argument_list "(&local_34,0,0,puVar2,uVar7)" ( (pointer_expression "&local_34" & identifier) , number_literal , number_literal , identifier , identifier ))) ;) (expression_statement "__s = *(char **)(param_5 + 0x20);" (assignment_expression "__s = *(char **)(param_5 + 0x20)" identifier = (pointer_expression "*(char **)(param_5 + 0x20)" * (cast_expression "(char **)(param_5 + 0x20)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_5 + 0x20)" ( (binary_expression "param_5 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "sVar3 = strlen(__s);" (assignment_expression "sVar3 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (if_statement "if (sVar3 <= 0x7fffffffU - local_30) {\n    FUN_00189fb0(&local_34,__s,sVar3);\n    local_40 = *(int *)(param_5 + 0xe4);\n    if (local_40 == 0) {\n                    /* try { // try from 0008aa7e to 0008ab38 has its CatchHandler @ 0008abd6 */\n      uVar7 = FUN_001200e0(param_1 + 8,local_34,1,0);\n      local_40 = FUN_0007fe90(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0);\n      if (((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)) ||\n         ((*(byte *)(local_40 + 0x90) & 8) != 0)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00);\n      }\n      *(byte *)(local_40 + 0x90) = *(byte *)(local_40 + 0x90) | 4;\n      if ((((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)) || (*(int *)(local_40 + 0x4c) != 0)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1);\n      }\n      *(byte *)(local_40 + 0x91) = *(byte *)(local_40 + 0x91) | 1;\n      *(int *)(local_40 + 0x44) = param_5;\n      *(int *)(param_5 + 0xe4) = local_40;\n      iVar5 = 0;\n    }\n    if (iVar1 == 9) {\n                    /* try { // try from 0008a9fc to 0008aa0c has its CatchHandler @ 0008abd6 */\n      FUN_000bb100(local_40,0x10,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    /* try { // try from 0008aa16 to 0008aa1a has its CatchHandler @ 0008abda */\n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x273047;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }\n    else {\n      if (iVar1 != 4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);\n      }\n      FUN_000bb100(local_40,0x18,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    /* try { // try from 0008a919 to 0008a91d has its CatchHandler @ 0008abdf */\n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x2730b3;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }\n                    /* try { // try from 0008a973 to 0008a977 has its CatchHandler @ 0008abd6 */\n    FUN_000bf250(local_40,piVar4);\n    if (*(int *)(param_6 + 0x10) == 0) {\n      *(int **)(param_6 + 0x10) = piVar4;\n      if (local_34 != local_2c) {\n        FUN_001807a0(local_34);\n      }\n      return local_40;\n    }\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0008ab65 to 0008abd5 has its CatchHandler @ 0008abd6 */\n    FUN_0005f0b0(unaff_EDI + 0x199399,0x11a,unaff_EDI + 0x1995e7,extraout_EDX);\n  }" if (parenthesized_expression "(sVar3 <= 0x7fffffffU - local_30)" ( (binary_expression "sVar3 <= 0x7fffffffU - local_30" identifier <= (binary_expression "0x7fffffffU - local_30" number_literal - identifier)) )) (compound_statement "{\n    FUN_00189fb0(&local_34,__s,sVar3);\n    local_40 = *(int *)(param_5 + 0xe4);\n    if (local_40 == 0) {\n                    /* try { // try from 0008aa7e to 0008ab38 has its CatchHandler @ 0008abd6 */\n      uVar7 = FUN_001200e0(param_1 + 8,local_34,1,0);\n      local_40 = FUN_0007fe90(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0);\n      if (((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)) ||\n         ((*(byte *)(local_40 + 0x90) & 8) != 0)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00);\n      }\n      *(byte *)(local_40 + 0x90) = *(byte *)(local_40 + 0x90) | 4;\n      if ((((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)) || (*(int *)(local_40 + 0x4c) != 0)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1);\n      }\n      *(byte *)(local_40 + 0x91) = *(byte *)(local_40 + 0x91) | 1;\n      *(int *)(local_40 + 0x44) = param_5;\n      *(int *)(param_5 + 0xe4) = local_40;\n      iVar5 = 0;\n    }\n    if (iVar1 == 9) {\n                    /* try { // try from 0008a9fc to 0008aa0c has its CatchHandler @ 0008abd6 */\n      FUN_000bb100(local_40,0x10,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    /* try { // try from 0008aa16 to 0008aa1a has its CatchHandler @ 0008abda */\n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x273047;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }\n    else {\n      if (iVar1 != 4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);\n      }\n      FUN_000bb100(local_40,0x18,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    /* try { // try from 0008a919 to 0008a91d has its CatchHandler @ 0008abdf */\n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x2730b3;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }\n                    /* try { // try from 0008a973 to 0008a977 has its CatchHandler @ 0008abd6 */\n    FUN_000bf250(local_40,piVar4);\n    if (*(int *)(param_6 + 0x10) == 0) {\n      *(int **)(param_6 + 0x10) = piVar4;\n      if (local_34 != local_2c) {\n        FUN_001807a0(local_34);\n      }\n      return local_40;\n    }\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0008ab65 to 0008abd5 has its CatchHandler @ 0008abd6 */\n    FUN_0005f0b0(unaff_EDI + 0x199399,0x11a,unaff_EDI + 0x1995e7,extraout_EDX);\n  }" { (expression_statement "FUN_00189fb0(&local_34,__s,sVar3);" (call_expression "FUN_00189fb0(&local_34,__s,sVar3)" identifier (argument_list "(&local_34,__s,sVar3)" ( (pointer_expression "&local_34" & identifier) , identifier , identifier ))) ;) (expression_statement "local_40 = *(int *)(param_5 + 0xe4);" (assignment_expression "local_40 = *(int *)(param_5 + 0xe4)" identifier = (pointer_expression "*(int *)(param_5 + 0xe4)" * (cast_expression "(int *)(param_5 + 0xe4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0xe4)" ( (binary_expression "param_5 + 0xe4" identifier + number_literal) ))))) ;) (if_statement "if (local_40 == 0) {\n                    /* try { // try from 0008aa7e to 0008ab38 has its CatchHandler @ 0008abd6 */\n      uVar7 = FUN_001200e0(param_1 + 8,local_34,1,0);\n      local_40 = FUN_0007fe90(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0);\n      if (((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)) ||\n         ((*(byte *)(local_40 + 0x90) & 8) != 0)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00);\n      }\n      *(byte *)(local_40 + 0x90) = *(byte *)(local_40 + 0x90) | 4;\n      if ((((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)) || (*(int *)(local_40 + 0x4c) != 0)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1);\n      }\n      *(byte *)(local_40 + 0x91) = *(byte *)(local_40 + 0x91) | 1;\n      *(int *)(local_40 + 0x44) = param_5;\n      *(int *)(param_5 + 0xe4) = local_40;\n      iVar5 = 0;\n    }" if (parenthesized_expression "(local_40 == 0)" ( (binary_expression "local_40 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* try { // try from 0008aa7e to 0008ab38 has its CatchHandler @ 0008abd6 */\n      uVar7 = FUN_001200e0(param_1 + 8,local_34,1,0);\n      local_40 = FUN_0007fe90(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0);\n      if (((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)) ||\n         ((*(byte *)(local_40 + 0x90) & 8) != 0)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00);\n      }\n      *(byte *)(local_40 + 0x90) = *(byte *)(local_40 + 0x90) | 4;\n      if ((((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)) || (*(int *)(local_40 + 0x4c) != 0)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1);\n      }\n      *(byte *)(local_40 + 0x91) = *(byte *)(local_40 + 0x91) | 1;\n      *(int *)(local_40 + 0x44) = param_5;\n      *(int *)(param_5 + 0xe4) = local_40;\n      iVar5 = 0;\n    }" { comment (expression_statement "uVar7 = FUN_001200e0(param_1 + 8,local_34,1,0);" (assignment_expression "uVar7 = FUN_001200e0(param_1 + 8,local_34,1,0)" identifier = (call_expression "FUN_001200e0(param_1 + 8,local_34,1,0)" identifier (argument_list "(param_1 + 8,local_34,1,0)" ( (binary_expression "param_1 + 8" identifier + number_literal) , identifier , number_literal , number_literal )))) ;) (expression_statement "local_40 = FUN_0007fe90(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0);" (assignment_expression "local_40 = FUN_0007fe90(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0)" identifier = (call_expression "FUN_0007fe90(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0)" identifier (argument_list "(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0)" ( identifier , identifier , identifier , (pointer_expression "*(undefined4 *)(*param_4 + 8)" * (cast_expression "(undefined4 *)(*param_4 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_4 + 8)" ( (binary_expression "*param_4 + 8" (pointer_expression "*param_4" * identifier) + number_literal) )))) , (pointer_expression "*(undefined4 *)(*param_4 + 0xc)" * (cast_expression "(undefined4 *)(*param_4 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_4 + 0xc)" ( (binary_expression "*param_4 + 0xc" (pointer_expression "*param_4" * identifier) + number_literal) )))) , number_literal , number_literal )))) ;) (if_statement "if (((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)) ||\n         ((*(byte *)(local_40 + 0x90) & 8) != 0)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00);\n      }" if (parenthesized_expression "(((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)) ||\n         ((*(byte *)(local_40 + 0x90) & 8) != 0))" ( (binary_expression "((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)) ||\n         ((*(byte *)(local_40 + 0x90) & 8) != 0)" (parenthesized_expression "((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0))" ( (binary_expression "(*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)" (parenthesized_expression "(*(int *)(local_40 + 0x3c) != 0)" ( (binary_expression "*(int *)(local_40 + 0x3c) != 0" (pointer_expression "*(int *)(local_40 + 0x3c)" * (cast_expression "(int *)(local_40 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x3c)" ( (binary_expression "local_40 + 0x3c" identifier + number_literal) )))) != number_literal) )) || (parenthesized_expression "(*(int *)(local_40 + 0x40) != 0)" ( (binary_expression "*(int *)(local_40 + 0x40) != 0" (pointer_expression "*(int *)(local_40 + 0x40)" * (cast_expression "(int *)(local_40 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x40)" ( (binary_expression "local_40 + 0x40" identifier + number_literal) )))) != number_literal) ))) )) || (parenthesized_expression "((*(byte *)(local_40 + 0x90) & 8) != 0)" ( (binary_expression "(*(byte *)(local_40 + 0x90) & 8) != 0" (parenthesized_expression "(*(byte *)(local_40 + 0x90) & 8)" ( (binary_expression "*(byte *)(local_40 + 0x90) & 8" (pointer_expression "*(byte *)(local_40 + 0x90)" * (cast_expression "(byte *)(local_40 + 0x90)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x90)" ( (binary_expression "local_40 + 0x90" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00);\n      }" { comment (expression_statement "FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00)" identifier (argument_list "(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00)" ( (binary_expression "unaff_EDI + 0x196df3" identifier + number_literal) , number_literal , (binary_expression "&UNK_0019960b + unaff_EDI" (pointer_expression "&UNK_0019960b" & identifier) + identifier) , identifier ))) ;) })) (expression_statement "*(byte *)(local_40 + 0x90) = *(byte *)(local_40 + 0x90) | 4;" (assignment_expression "*(byte *)(local_40 + 0x90) = *(byte *)(local_40 + 0x90) | 4" (pointer_expression "*(byte *)(local_40 + 0x90)" * (cast_expression "(byte *)(local_40 + 0x90)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x90)" ( (binary_expression "local_40 + 0x90" identifier + number_literal) )))) = (binary_expression "*(byte *)(local_40 + 0x90) | 4" (pointer_expression "*(byte *)(local_40 + 0x90)" * (cast_expression "(byte *)(local_40 + 0x90)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x90)" ( (binary_expression "local_40 + 0x90" identifier + number_literal) )))) | number_literal)) ;) (if_statement "if ((((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)) || (*(int *)(local_40 + 0x4c) != 0)) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1);\n      }" if (parenthesized_expression "((((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)) || (*(int *)(local_40 + 0x4c) != 0))" ( (binary_expression "(((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)) || (*(int *)(local_40 + 0x4c) != 0)" (parenthesized_expression "(((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0))" ( (binary_expression "((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)" (parenthesized_expression "((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0))))" ( (binary_expression "(*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))" (parenthesized_expression "(*(int *)(local_40 + 0x44) != 0)" ( (binary_expression "*(int *)(local_40 + 0x44) != 0" (pointer_expression "*(int *)(local_40 + 0x44)" * (cast_expression "(int *)(local_40 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x44)" ( (binary_expression "local_40 + 0x44" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))" ( (parenthesized_expression "(param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0))" ( (binary_expression "param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)" (binary_expression "param_5 != *(int *)(local_40 + 0x44)" identifier != (pointer_expression "*(int *)(local_40 + 0x44)" * (cast_expression "(int *)(local_40 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x44)" ( (binary_expression "local_40 + 0x44" identifier + number_literal) ))))) || (parenthesized_expression "((*(byte *)(local_40 + 0x91) & 1) == 0)" ( (binary_expression "(*(byte *)(local_40 + 0x91) & 1) == 0" (parenthesized_expression "(*(byte *)(local_40 + 0x91) & 1)" ( (binary_expression "*(byte *)(local_40 + 0x91) & 1" (pointer_expression "*(byte *)(local_40 + 0x91)" * (cast_expression "(byte *)(local_40 + 0x91)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x91)" ( (binary_expression "local_40 + 0x91" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) ))) )) || (parenthesized_expression "(*(int *)(local_40 + 0x48) != 0)" ( (binary_expression "*(int *)(local_40 + 0x48) != 0" (pointer_expression "*(int *)(local_40 + 0x48)" * (cast_expression "(int *)(local_40 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x48)" ( (binary_expression "local_40 + 0x48" identifier + number_literal) )))) != number_literal) ))) )) || (parenthesized_expression "(*(int *)(local_40 + 0x4c) != 0)" ( (binary_expression "*(int *)(local_40 + 0x4c) != 0" (pointer_expression "*(int *)(local_40 + 0x4c)" * (cast_expression "(int *)(local_40 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x4c)" ( (binary_expression "local_40 + 0x4c" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1);\n      }" { comment (expression_statement "FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1)" identifier (argument_list "(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1)" ( (binary_expression "unaff_EDI + 0x196df3" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x1995f7" identifier + number_literal) , identifier ))) ;) })) (expression_statement "*(byte *)(local_40 + 0x91) = *(byte *)(local_40 + 0x91) | 1;" (assignment_expression "*(byte *)(local_40 + 0x91) = *(byte *)(local_40 + 0x91) | 1" (pointer_expression "*(byte *)(local_40 + 0x91)" * (cast_expression "(byte *)(local_40 + 0x91)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x91)" ( (binary_expression "local_40 + 0x91" identifier + number_literal) )))) = (binary_expression "*(byte *)(local_40 + 0x91) | 1" (pointer_expression "*(byte *)(local_40 + 0x91)" * (cast_expression "(byte *)(local_40 + 0x91)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x91)" ( (binary_expression "local_40 + 0x91" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "*(int *)(local_40 + 0x44) = param_5;" (assignment_expression "*(int *)(local_40 + 0x44) = param_5" (pointer_expression "*(int *)(local_40 + 0x44)" * (cast_expression "(int *)(local_40 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x44)" ( (binary_expression "local_40 + 0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_5 + 0xe4) = local_40;" (assignment_expression "*(int *)(param_5 + 0xe4) = local_40" (pointer_expression "*(int *)(param_5 + 0xe4)" * (cast_expression "(int *)(param_5 + 0xe4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0xe4)" ( (binary_expression "param_5 + 0xe4" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) })) (if_statement "if (iVar1 == 9) {\n                    /* try { // try from 0008a9fc to 0008aa0c has its CatchHandler @ 0008abd6 */\n      FUN_000bb100(local_40,0x10,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    /* try { // try from 0008aa16 to 0008aa1a has its CatchHandler @ 0008abda */\n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x273047;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }\n    else {\n      if (iVar1 != 4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);\n      }\n      FUN_000bb100(local_40,0x18,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    /* try { // try from 0008a919 to 0008a91d has its CatchHandler @ 0008abdf */\n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x2730b3;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }" if (parenthesized_expression "(iVar1 == 9)" ( (binary_expression "iVar1 == 9" identifier == number_literal) )) (compound_statement "{\n                    /* try { // try from 0008a9fc to 0008aa0c has its CatchHandler @ 0008abd6 */\n      FUN_000bb100(local_40,0x10,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    /* try { // try from 0008aa16 to 0008aa1a has its CatchHandler @ 0008abda */\n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x273047;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }" { comment (expression_statement "FUN_000bb100(local_40,0x10,0);" (call_expression "FUN_000bb100(local_40,0x10,0)" identifier (argument_list "(local_40,0x10,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "piVar4 = (int *)FUN_0017ebf0(0x30);" (assignment_expression "piVar4 = (int *)FUN_0017ebf0(0x30)" identifier = (cast_expression "(int *)FUN_0017ebf0(0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017ebf0(0x30)" identifier (argument_list "(0x30)" ( number_literal ))))) ;) comment (expression_statement "uVar6 = FUN_000ba570(0x40);" (assignment_expression "uVar6 = FUN_000ba570(0x40)" identifier = (call_expression "FUN_000ba570(0x40)" identifier (argument_list "(0x40)" ( number_literal )))) ;) (expression_statement "piVar4[9] = (int)uVar6;" (assignment_expression "piVar4[9] = (int)uVar6" (subscript_expression "piVar4[9]" identifier [ number_literal ]) = (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*piVar4 = unaff_EDI + 0x273047;" (assignment_expression "*piVar4 = unaff_EDI + 0x273047" (pointer_expression "*piVar4" * identifier) = (binary_expression "unaff_EDI + 0x273047" identifier + number_literal)) ;) (expression_statement "piVar4[1] = 0;" (assignment_expression "piVar4[1] = 0" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[2] = 0;" (assignment_expression "piVar4[2] = 0" (subscript_expression "piVar4[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[3] = 0;" (assignment_expression "piVar4[3] = 0" (subscript_expression "piVar4[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[4] = 0;" (assignment_expression "piVar4[4] = 0" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[5] = -1;" (assignment_expression "piVar4[5] = -1" (subscript_expression "piVar4[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[6] = -1;" (assignment_expression "piVar4[6] = -1" (subscript_expression "piVar4[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;" (assignment_expression "*(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0" (pointer_expression "*(byte *)(piVar4 + 7)" * (cast_expression "(byte *)(piVar4 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + 7)" ( (binary_expression "piVar4 + 7" identifier + number_literal) )))) = (binary_expression "*(byte *)(piVar4 + 7) & 0xe0" (pointer_expression "*(byte *)(piVar4 + 7)" * (cast_expression "(byte *)(piVar4 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + 7)" ( (binary_expression "piVar4 + 7" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "piVar4[8] = 0;" (assignment_expression "piVar4[8] = 0" (subscript_expression "piVar4[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);" (assignment_expression "piVar4[10] = (int)((ulonglong)uVar6 >> 0x20)" (subscript_expression "piVar4[10]" identifier [ number_literal ]) = (cast_expression "(int)((ulonglong)uVar6 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar6 >> 0x20)" ( (binary_expression "(ulonglong)uVar6 >> 0x20" (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "piVar4[0xb] = param_6;" (assignment_expression "piVar4[0xb] = param_6" (subscript_expression "piVar4[0xb]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n      if (iVar1 != 4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);\n      }\n      FUN_000bb100(local_40,0x18,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    /* try { // try from 0008a919 to 0008a91d has its CatchHandler @ 0008abdf */\n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x2730b3;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }" else (compound_statement "{\n      if (iVar1 != 4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);\n      }\n      FUN_000bb100(local_40,0x18,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    /* try { // try from 0008a919 to 0008a91d has its CatchHandler @ 0008abdf */\n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x2730b3;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }" { (if_statement "if (iVar1 != 4) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);\n      }" if (parenthesized_expression "(iVar1 != 4)" ( (binary_expression "iVar1 != 4" identifier != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);\n      }" { comment (expression_statement "FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5)" identifier (argument_list "(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5)" ( (binary_expression "unaff_EDI + 0x1986df" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x1995d7" identifier + number_literal) , identifier ))) ;) })) (expression_statement "FUN_000bb100(local_40,0x18,0);" (call_expression "FUN_000bb100(local_40,0x18,0)" identifier (argument_list "(local_40,0x18,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "piVar4 = (int *)FUN_0017ebf0(0x30);" (assignment_expression "piVar4 = (int *)FUN_0017ebf0(0x30)" identifier = (cast_expression "(int *)FUN_0017ebf0(0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017ebf0(0x30)" identifier (argument_list "(0x30)" ( number_literal ))))) ;) comment (expression_statement "uVar6 = FUN_000ba570(0x40);" (assignment_expression "uVar6 = FUN_000ba570(0x40)" identifier = (call_expression "FUN_000ba570(0x40)" identifier (argument_list "(0x40)" ( number_literal )))) ;) (expression_statement "piVar4[9] = (int)uVar6;" (assignment_expression "piVar4[9] = (int)uVar6" (subscript_expression "piVar4[9]" identifier [ number_literal ]) = (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*piVar4 = unaff_EDI + 0x2730b3;" (assignment_expression "*piVar4 = unaff_EDI + 0x2730b3" (pointer_expression "*piVar4" * identifier) = (binary_expression "unaff_EDI + 0x2730b3" identifier + number_literal)) ;) (expression_statement "*(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;" (assignment_expression "*(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0" (pointer_expression "*(byte *)(piVar4 + 7)" * (cast_expression "(byte *)(piVar4 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + 7)" ( (binary_expression "piVar4 + 7" identifier + number_literal) )))) = (binary_expression "*(byte *)(piVar4 + 7) & 0xe0" (pointer_expression "*(byte *)(piVar4 + 7)" * (cast_expression "(byte *)(piVar4 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + 7)" ( (binary_expression "piVar4 + 7" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "piVar4[1] = 0;" (assignment_expression "piVar4[1] = 0" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[2] = 0;" (assignment_expression "piVar4[2] = 0" (subscript_expression "piVar4[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[3] = 0;" (assignment_expression "piVar4[3] = 0" (subscript_expression "piVar4[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[4] = 0;" (assignment_expression "piVar4[4] = 0" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[5] = -1;" (assignment_expression "piVar4[5] = -1" (subscript_expression "piVar4[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[6] = -1;" (assignment_expression "piVar4[6] = -1" (subscript_expression "piVar4[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[8] = 0;" (assignment_expression "piVar4[8] = 0" (subscript_expression "piVar4[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);" (assignment_expression "piVar4[10] = (int)((ulonglong)uVar6 >> 0x20)" (subscript_expression "piVar4[10]" identifier [ number_literal ]) = (cast_expression "(int)((ulonglong)uVar6 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar6 >> 0x20)" ( (binary_expression "(ulonglong)uVar6 >> 0x20" (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "piVar4[0xb] = param_6;" (assignment_expression "piVar4[0xb] = param_6" (subscript_expression "piVar4[0xb]" identifier [ number_literal ]) = identifier) ;) }))) comment (expression_statement "FUN_000bf250(local_40,piVar4);" (call_expression "FUN_000bf250(local_40,piVar4)" identifier (argument_list "(local_40,piVar4)" ( identifier , identifier ))) ;) (if_statement "if (*(int *)(param_6 + 0x10) == 0) {\n      *(int **)(param_6 + 0x10) = piVar4;\n      if (local_34 != local_2c) {\n        FUN_001807a0(local_34);\n      }\n      return local_40;\n    }" if (parenthesized_expression "(*(int *)(param_6 + 0x10) == 0)" ( (binary_expression "*(int *)(param_6 + 0x10) == 0" (pointer_expression "*(int *)(param_6 + 0x10)" * (cast_expression "(int *)(param_6 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + 0x10)" ( (binary_expression "param_6 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      *(int **)(param_6 + 0x10) = piVar4;\n      if (local_34 != local_2c) {\n        FUN_001807a0(local_34);\n      }\n      return local_40;\n    }" { (expression_statement "*(int **)(param_6 + 0x10) = piVar4;" (assignment_expression "*(int **)(param_6 + 0x10) = piVar4" (pointer_expression "*(int **)(param_6 + 0x10)" * (cast_expression "(int **)(param_6 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_6 + 0x10)" ( (binary_expression "param_6 + 0x10" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_34 != local_2c) {\n        FUN_001807a0(local_34);\n      }" if (parenthesized_expression "(local_34 != local_2c)" ( (binary_expression "local_34 != local_2c" identifier != identifier) )) (compound_statement "{\n        FUN_001807a0(local_34);\n      }" { (expression_statement "FUN_001807a0(local_34);" (call_expression "FUN_001807a0(local_34)" identifier (argument_list "(local_34)" ( identifier ))) ;) })) (return_statement "return local_40;" return identifier ;) })) comment comment (expression_statement "FUN_0005f0b0(unaff_EDI + 0x199399,0x11a,unaff_EDI + 0x1995e7,extraout_EDX);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x199399,0x11a,unaff_EDI + 0x1995e7,extraout_EDX)" identifier (argument_list "(unaff_EDI + 0x199399,0x11a,unaff_EDI + 0x1995e7,extraout_EDX)" ( (binary_expression "unaff_EDI + 0x199399" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x1995e7" identifier + number_literal) , identifier ))) ;) })) comment (expression_statement "FUN_001c6190(unaff_EDI + 0x195d29);" (call_expression "FUN_001c6190(unaff_EDI + 0x195d29)" identifier (argument_list "(unaff_EDI + 0x195d29)" ( (binary_expression "unaff_EDI + 0x195d29" identifier + number_literal) ))) ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original name: layout_reloc<64, false>\n   DWARF original prototype: Output_section * layout_reloc<64,_false>(Layout * this,\n   Sized_relobj_file<64,_false> * param_3, uint param_4, Shdr<64,_false> * shdr, Output_section *\n   data_section, Relocatable_relocs * rr) */\n\nOutput_section * __thiscall\ngold::Layout::layout_reloc<64,_false>\n          (Layout *this,Sized_relobj_file<64,_false> *param_1,uint param_2,Shdr<64,_false> *shdr,\n          Output_section *data_section,Relocatable_relocs *rr)\n\n{\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar1;\n  undefined1 *puVar2;\n  int iVar3;\n  Elf_Word type;\n  size_t sVar4;\n  Output_section_data *posd;\n  char *pcVar5;\n  int unaff_EDI;\n  uint64_t uVar6;\n  uint uVar7;\n  Output_section *local_40;\n  string name;\n  \n  __x86_get_pc_thunk_di();\n  iVar3 = *(int *)(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8);\n  if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable(&UNK_00196157 + unaff_EDI,0x5c,(char *)(unaff_EDI + 0x199b8f));\n  }\n  if ((*(char *)(iVar3 + 0x318d) == '\0') && (*(char *)(iVar3 + 0x3095) == '\0')) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + 0x1986df),0x52d,(char *)(unaff_EDI + 0x1995d7));\n  }\n  type = shdr->p_->sh_type;\n  name._M_string_length = 0;\n  paVar1 = &name.field_2;\n  name.field_2._M_local_buf[0] = '\0';\n  name._M_dataplus._M_p = (pointer)paVar1;\n  if (type == 9) {\n    pcVar5 = &LAB_0019938e + unaff_EDI;\n    uVar7 = 4;\n  }\n  else {\n    if (type != 4) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x1986df),0x537,(char *)(unaff_EDI + 0x1995d7));\n    }\n    pcVar5 = (char *)(unaff_EDI + 0x199393);\n    uVar7 = 5;\n  }\n                    /* try { // try from 0008a88d to 0008a90f has its CatchHandler @ 0008abd6 */\n  std::string::_M_replace((string *)&name,0,0,pcVar5,uVar7);\n  pcVar5 = data_section->name_;\n  sVar4 = strlen(pcVar5);\n  if (sVar4 <= 0x7fffffff - name._M_string_length) {\n    std::string::_M_append((string *)&name,pcVar5,sVar4);\n    local_40 = data_section->reloc_section_;\n    if (local_40 == (Output_section *)0x0) {\n                    /* try { // try from 0008aa7e to 0008ab38 has its CatchHandler @ 0008abd6 */\n      pcVar5 = Stringpool_template<char>::add\n                         (&this->namepool_,name._M_dataplus._M_p,true,(Key *)0x0);\n      local_40 = make_output_section(this,pcVar5,type,shdr->p_->sh_flags,ORDER_INVALID,false);\n      if (((local_40->link_section_ != (Output_data *)0x0) || (local_40->link_ != 0)) ||\n         ((local_40->field_0x90 & 8) != 0)) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x196df3),0xd1b,&UNK_0019960b + unaff_EDI);\n      }\n      local_40->field_0x90 = local_40->field_0x90 | 4;\n      if ((((local_40->info_section_ != (Output_section *)0x0) &&\n           ((data_section != local_40->info_section_ || ((local_40->field_0x91 & 1) == 0)))) ||\n          (local_40->info_symndx_ != (Symbol *)0x0)) || (local_40->info_ != 0)) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x196df3),0xd3a,(char *)(unaff_EDI + 0x1995f7));\n      }\n      local_40->field_0x91 = local_40->field_0x91 | 1;\n      local_40->info_section_ = data_section;\n      data_section->reloc_section_ = local_40;\n    }\n    if (type == 9) {\n                    /* try { // try from 0008a9fc to 0008aa0c has its CatchHandler @ 0008abd6 */\n      Output_section::set_entsize(local_40,0x10);\n      posd = (Output_section_data *)operator_new(0x30);\n                    /* try { // try from 0008aa16 to 0008aa1a has its CatchHandler @ 0008abda */\n      uVar6 = Output_data::default_alignment_for_size(0x40);\n      *(int *)&posd->addralign_ = (int)uVar6;\n      (posd->super_Output_data)._vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x273047);\n      *(undefined4 *)&(posd->super_Output_data).address_ = 0;\n      *(undefined4 *)((int)&(posd->super_Output_data).address_ + 4) = 0;\n      *(undefined4 *)&(posd->super_Output_data).data_size_ = 0;\n      *(undefined4 *)((int)&(posd->super_Output_data).data_size_ + 4) = 0;\n      *(undefined4 *)&(posd->super_Output_data).offset_ = 0xffffffff;\n      *(undefined4 *)((int)&(posd->super_Output_data).offset_ + 4) = 0xffffffff;\n      puVar2 = &(posd->super_Output_data).field_0x1c;\n      *puVar2 = *puVar2 & 0xe0;\n      posd->output_section_ = (Output_section *)0x0;\n      *(int *)((int)&posd->addralign_ + 4) = (int)(uVar6 >> 0x20);\n      posd[1].super_Output_data._vptr_Output_data = (_func_int_varargs **)rr;\n    }\n    else {\n      if (type != 4) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x1986df),0x557,(char *)(unaff_EDI + 0x1995d7));\n      }\n      Output_section::set_entsize(local_40,0x18);\n      posd = (Output_section_data *)operator_new(0x30);\n                    /* try { // try from 0008a919 to 0008a91d has its CatchHandler @ 0008abdf */\n      uVar6 = Output_data::default_alignment_for_size(0x40);\n      *(int *)&posd->addralign_ = (int)uVar6;\n      (posd->super_Output_data)._vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x2730b3);\n      puVar2 = &(posd->super_Output_data).field_0x1c;\n      *puVar2 = *puVar2 & 0xe0;\n      *(undefined4 *)&(posd->super_Output_data).address_ = 0;\n      *(undefined4 *)((int)&(posd->super_Output_data).address_ + 4) = 0;\n      *(undefined4 *)&(posd->super_Output_data).data_size_ = 0;\n      *(undefined4 *)((int)&(posd->super_Output_data).data_size_ + 4) = 0;\n      *(undefined4 *)&(posd->super_Output_data).offset_ = 0xffffffff;\n      *(undefined4 *)((int)&(posd->super_Output_data).offset_ + 4) = 0xffffffff;\n      posd->output_section_ = (Output_section *)0x0;\n      *(int *)((int)&posd->addralign_ + 4) = (int)(uVar6 >> 0x20);\n      posd[1].super_Output_data._vptr_Output_data = (_func_int_varargs **)rr;\n    }\n                    /* try { // try from 0008a973 to 0008a977 has its CatchHandler @ 0008abd6 */\n    Output_section::add_output_section_data(local_40,posd);\n    if (rr->posd_ == (Output_data *)0x0) {\n      rr->posd_ = &posd->super_Output_data;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)name._M_dataplus._M_p != paVar1) {\n        operator_delete(name._M_dataplus._M_p);\n      }\n      return local_40;\n    }\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0008ab65 to 0008abd5 has its CatchHandler @ 0008abd6 */\n    do_gold_unreachable((char *)(unaff_EDI + 0x199399),0x11a,(char *)(unaff_EDI + 0x1995e7));\n  }\n                    /* WARNING: Subroutine does not return */\n  std::__throw_length_error((char *)(unaff_EDI + 0x195d29));\n}\n\n" comment comment (ERROR "Output_section * __thiscall\ngold::Layout::layout_reloc<64,_false>\n          (Layout *this,Sized_relobj_file<64,_false> *param_1,uint param_2,Shdr<64,_false> *shdr,\n          Output_section *data_section,Relocatable_relocs *rr)" (binary_expression "Output_section * __thiscall\ngold::Layout::layout_reloc<64,_false>\n          (Layout *this,Sized_relobj_file<64,_false> *param_1,uint param_2,Shdr<64,_false> *shdr,\n          Output_section *data_section,Relocatable_relocs *rr)" (binary_expression "Output_section * __thiscall\ngold::Layout::layout_reloc<64" (binary_expression "Output_section * __thiscall" identifier * identifier) (ERROR "gold::Layout::layout_reloc" identifier : : identifier : : identifier) < number_literal) (ERROR ",_false" , identifier) > (parenthesized_expression "(Layout *this,Sized_relobj_file<64,_false> *param_1,uint param_2,Shdr<64,_false> *shdr,\n          Output_section *data_section,Relocatable_relocs *rr)" ( (comma_expression "Layout *this,Sized_relobj_file<64,_false> *param_1,uint param_2,Shdr<64,_false> *shdr,\n          Output_section *data_section,Relocatable_relocs *rr" (binary_expression "Layout *this" identifier * identifier) , (comma_expression "Sized_relobj_file<64,_false> *param_1,uint param_2,Shdr<64,_false> *shdr,\n          Output_section *data_section,Relocatable_relocs *rr" (binary_expression "Sized_relobj_file<64" identifier < number_literal) , (comma_expression "_false> *param_1,uint param_2,Shdr<64,_false> *shdr,\n          Output_section *data_section,Relocatable_relocs *rr" (binary_expression "_false> *param_1" identifier > (pointer_expression "*param_1" * identifier)) , (ERROR "uint" identifier) (comma_expression "param_2,Shdr<64,_false> *shdr,\n          Output_section *data_section,Relocatable_relocs *rr" identifier , (comma_expression "Shdr<64,_false> *shdr,\n          Output_section *data_section,Relocatable_relocs *rr" (binary_expression "Shdr<64" identifier < number_literal) , (comma_expression "_false> *shdr,\n          Output_section *data_section,Relocatable_relocs *rr" (binary_expression "_false> *shdr" identifier > (pointer_expression "*shdr" * identifier)) , (comma_expression "Output_section *data_section,Relocatable_relocs *rr" (binary_expression "Output_section *data_section" identifier * identifier) , (binary_expression "Relocatable_relocs *rr" identifier * identifier)))))))) )))) (compound_statement "{\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar1;\n  undefined1 *puVar2;\n  int iVar3;\n  Elf_Word type;\n  size_t sVar4;\n  Output_section_data *posd;\n  char *pcVar5;\n  int unaff_EDI;\n  uint64_t uVar6;\n  uint uVar7;\n  Output_section *local_40;\n  string name;\n  \n  __x86_get_pc_thunk_di();\n  iVar3 = *(int *)(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8);\n  if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable(&UNK_00196157 + unaff_EDI,0x5c,(char *)(unaff_EDI + 0x199b8f));\n  }\n  if ((*(char *)(iVar3 + 0x318d) == '\0') && (*(char *)(iVar3 + 0x3095) == '\0')) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + 0x1986df),0x52d,(char *)(unaff_EDI + 0x1995d7));\n  }\n  type = shdr->p_->sh_type;\n  name._M_string_length = 0;\n  paVar1 = &name.field_2;\n  name.field_2._M_local_buf[0] = '\0';\n  name._M_dataplus._M_p = (pointer)paVar1;\n  if (type == 9) {\n    pcVar5 = &LAB_0019938e + unaff_EDI;\n    uVar7 = 4;\n  }\n  else {\n    if (type != 4) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x1986df),0x537,(char *)(unaff_EDI + 0x1995d7));\n    }\n    pcVar5 = (char *)(unaff_EDI + 0x199393);\n    uVar7 = 5;\n  }\n                    /* try { // try from 0008a88d to 0008a90f has its CatchHandler @ 0008abd6 */\n  std::string::_M_replace((string *)&name,0,0,pcVar5,uVar7);\n  pcVar5 = data_section->name_;\n  sVar4 = strlen(pcVar5);\n  if (sVar4 <= 0x7fffffff - name._M_string_length) {\n    std::string::_M_append((string *)&name,pcVar5,sVar4);\n    local_40 = data_section->reloc_section_;\n    if (local_40 == (Output_section *)0x0) {\n                    /* try { // try from 0008aa7e to 0008ab38 has its CatchHandler @ 0008abd6 */\n      pcVar5 = Stringpool_template<char>::add\n                         (&this->namepool_,name._M_dataplus._M_p,true,(Key *)0x0);\n      local_40 = make_output_section(this,pcVar5,type,shdr->p_->sh_flags,ORDER_INVALID,false);\n      if (((local_40->link_section_ != (Output_data *)0x0) || (local_40->link_ != 0)) ||\n         ((local_40->field_0x90 & 8) != 0)) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x196df3),0xd1b,&UNK_0019960b + unaff_EDI);\n      }\n      local_40->field_0x90 = local_40->field_0x90 | 4;\n      if ((((local_40->info_section_ != (Output_section *)0x0) &&\n           ((data_section != local_40->info_section_ || ((local_40->field_0x91 & 1) == 0)))) ||\n          (local_40->info_symndx_ != (Symbol *)0x0)) || (local_40->info_ != 0)) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x196df3),0xd3a,(char *)(unaff_EDI + 0x1995f7));\n      }\n      local_40->field_0x91 = local_40->field_0x91 | 1;\n      local_40->info_section_ = data_section;\n      data_section->reloc_section_ = local_40;\n    }\n    if (type == 9) {\n                    /* try { // try from 0008a9fc to 0008aa0c has its CatchHandler @ 0008abd6 */\n      Output_section::set_entsize(local_40,0x10);\n      posd = (Output_section_data *)operator_new(0x30);\n                    /* try { // try from 0008aa16 to 0008aa1a has its CatchHandler @ 0008abda */\n      uVar6 = Output_data::default_alignment_for_size(0x40);\n      *(int *)&posd->addralign_ = (int)uVar6;\n      (posd->super_Output_data)._vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x273047);\n      *(undefined4 *)&(posd->super_Output_data).address_ = 0;\n      *(undefined4 *)((int)&(posd->super_Output_data).address_ + 4) = 0;\n      *(undefined4 *)&(posd->super_Output_data).data_size_ = 0;\n      *(undefined4 *)((int)&(posd->super_Output_data).data_size_ + 4) = 0;\n      *(undefined4 *)&(posd->super_Output_data).offset_ = 0xffffffff;\n      *(undefined4 *)((int)&(posd->super_Output_data).offset_ + 4) = 0xffffffff;\n      puVar2 = &(posd->super_Output_data).field_0x1c;\n      *puVar2 = *puVar2 & 0xe0;\n      posd->output_section_ = (Output_section *)0x0;\n      *(int *)((int)&posd->addralign_ + 4) = (int)(uVar6 >> 0x20);\n      posd[1].super_Output_data._vptr_Output_data = (_func_int_varargs **)rr;\n    }\n    else {\n      if (type != 4) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x1986df),0x557,(char *)(unaff_EDI + 0x1995d7));\n      }\n      Output_section::set_entsize(local_40,0x18);\n      posd = (Output_section_data *)operator_new(0x30);\n                    /* try { // try from 0008a919 to 0008a91d has its CatchHandler @ 0008abdf */\n      uVar6 = Output_data::default_alignment_for_size(0x40);\n      *(int *)&posd->addralign_ = (int)uVar6;\n      (posd->super_Output_data)._vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x2730b3);\n      puVar2 = &(posd->super_Output_data).field_0x1c;\n      *puVar2 = *puVar2 & 0xe0;\n      *(undefined4 *)&(posd->super_Output_data).address_ = 0;\n      *(undefined4 *)((int)&(posd->super_Output_data).address_ + 4) = 0;\n      *(undefined4 *)&(posd->super_Output_data).data_size_ = 0;\n      *(undefined4 *)((int)&(posd->super_Output_data).data_size_ + 4) = 0;\n      *(undefined4 *)&(posd->super_Output_data).offset_ = 0xffffffff;\n      *(undefined4 *)((int)&(posd->super_Output_data).offset_ + 4) = 0xffffffff;\n      posd->output_section_ = (Output_section *)0x0;\n      *(int *)((int)&posd->addralign_ + 4) = (int)(uVar6 >> 0x20);\n      posd[1].super_Output_data._vptr_Output_data = (_func_int_varargs **)rr;\n    }\n                    /* try { // try from 0008a973 to 0008a977 has its CatchHandler @ 0008abd6 */\n    Output_section::add_output_section_data(local_40,posd);\n    if (rr->posd_ == (Output_data *)0x0) {\n      rr->posd_ = &posd->super_Output_data;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)name._M_dataplus._M_p != paVar1) {\n        operator_delete(name._M_dataplus._M_p);\n      }\n      return local_40;\n    }\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0008ab65 to 0008abd5 has its CatchHandler @ 0008abd6 */\n    do_gold_unreachable((char *)(unaff_EDI + 0x199399),0x11a,(char *)(unaff_EDI + 0x1995e7));\n  }\n                    /* WARNING: Subroutine does not return */\n  std::__throw_length_error((char *)(unaff_EDI + 0x195d29));\n}" { (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) : :) (expression_statement "allocator<char>_>_9\n  *paVar1;" (binary_expression "allocator<char>_>_9\n  *paVar1" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *paVar1" identifier * identifier)) ;) (declaration "undefined1 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "Elf_Word type;" type_identifier identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "Output_section_data *posd;" type_identifier (pointer_declarator "*posd" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "uint64_t uVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "Output_section *local_40;" type_identifier (pointer_declarator "*local_40" * identifier) ;) (declaration "string name;" type_identifier identifier ;) (expression_statement "__x86_get_pc_thunk_di();" (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar3 = *(int *)(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8);" (assignment_expression "iVar3 = *(int *)(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8)" identifier = (pointer_expression "*(int *)(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8)" * (cast_expression "(int *)(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8)" ( (binary_expression "*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8" (pointer_expression "*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72)" * (cast_expression "(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(BYTE_ARRAY_00277aed + unaff_EDI + 0x72)" ( (binary_expression "BYTE_ARRAY_00277aed + unaff_EDI + 0x72" (binary_expression "BYTE_ARRAY_00277aed + unaff_EDI" identifier + identifier) + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable(&UNK_00196157 + unaff_EDI,0x5c,(char *)(unaff_EDI + 0x199b8f));\n  }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable(&UNK_00196157 + unaff_EDI,0x5c,(char *)(unaff_EDI + 0x199b8f));\n  }" { comment (expression_statement "do_gold_unreachable(&UNK_00196157 + unaff_EDI,0x5c,(char *)(unaff_EDI + 0x199b8f));" (call_expression "do_gold_unreachable(&UNK_00196157 + unaff_EDI,0x5c,(char *)(unaff_EDI + 0x199b8f))" identifier (argument_list "(&UNK_00196157 + unaff_EDI,0x5c,(char *)(unaff_EDI + 0x199b8f))" ( (binary_expression "&UNK_00196157 + unaff_EDI" (pointer_expression "&UNK_00196157" & identifier) + identifier) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x199b8f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x199b8f)" ( (binary_expression "unaff_EDI + 0x199b8f" identifier + number_literal) ))) ))) ;) })) (if_statement "if ((*(char *)(iVar3 + 0x318d) == '\0') && (*(char *)(iVar3 + 0x3095) == '\0')) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + 0x1986df),0x52d,(char *)(unaff_EDI + 0x1995d7));\n  }" if (parenthesized_expression "((*(char *)(iVar3 + 0x318d) == '\0') && (*(char *)(iVar3 + 0x3095) == '\0'))" ( (binary_expression "(*(char *)(iVar3 + 0x318d) == '\0') && (*(char *)(iVar3 + 0x3095) == '\0')" (parenthesized_expression "(*(char *)(iVar3 + 0x318d) == '\0')" ( (binary_expression "*(char *)(iVar3 + 0x318d) == '\0'" (pointer_expression "*(char *)(iVar3 + 0x318d)" * (cast_expression "(char *)(iVar3 + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x318d)" ( (binary_expression "iVar3 + 0x318d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(char *)(iVar3 + 0x3095) == '\0')" ( (binary_expression "*(char *)(iVar3 + 0x3095) == '\0'" (pointer_expression "*(char *)(iVar3 + 0x3095)" * (cast_expression "(char *)(iVar3 + 0x3095)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x3095)" ( (binary_expression "iVar3 + 0x3095" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + 0x1986df),0x52d,(char *)(unaff_EDI + 0x1995d7));\n  }" { comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x1986df),0x52d,(char *)(unaff_EDI + 0x1995d7));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x1986df),0x52d,(char *)(unaff_EDI + 0x1995d7))" identifier (argument_list "((char *)(unaff_EDI + 0x1986df),0x52d,(char *)(unaff_EDI + 0x1995d7))" ( (cast_expression "(char *)(unaff_EDI + 0x1986df)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1986df)" ( (binary_expression "unaff_EDI + 0x1986df" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x1995d7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1995d7)" ( (binary_expression "unaff_EDI + 0x1995d7" identifier + number_literal) ))) ))) ;) })) (expression_statement "type = shdr->p_->sh_type;" (assignment_expression "type = shdr->p_->sh_type" identifier = (field_expression "shdr->p_->sh_type" (field_expression "shdr->p_" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "name._M_string_length = 0;" (assignment_expression "name._M_string_length = 0" (field_expression "name._M_string_length" identifier . field_identifier) = number_literal) ;) (expression_statement "paVar1 = &name.field_2;" (assignment_expression "paVar1 = &name.field_2" identifier = (pointer_expression "&name.field_2" & (field_expression "name.field_2" identifier . field_identifier))) ;) (expression_statement "name.field_2._M_local_buf[0] = '\0';" (assignment_expression "name.field_2._M_local_buf[0] = '\0'" (subscript_expression "name.field_2._M_local_buf[0]" (field_expression "name.field_2._M_local_buf" (field_expression "name.field_2" identifier . field_identifier) . field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "name._M_dataplus._M_p = (pointer)paVar1;" (assignment_expression "name._M_dataplus._M_p = (pointer)paVar1" (field_expression "name._M_dataplus._M_p" (field_expression "name._M_dataplus" identifier . field_identifier) . field_identifier) = (cast_expression "(pointer)paVar1" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (if_statement "if (type == 9) {\n    pcVar5 = &LAB_0019938e + unaff_EDI;\n    uVar7 = 4;\n  }\n  else {\n    if (type != 4) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x1986df),0x537,(char *)(unaff_EDI + 0x1995d7));\n    }\n    pcVar5 = (char *)(unaff_EDI + 0x199393);\n    uVar7 = 5;\n  }" if (parenthesized_expression "(type == 9)" ( (binary_expression "type == 9" identifier == number_literal) )) (compound_statement "{\n    pcVar5 = &LAB_0019938e + unaff_EDI;\n    uVar7 = 4;\n  }" { (expression_statement "pcVar5 = &LAB_0019938e + unaff_EDI;" (assignment_expression "pcVar5 = &LAB_0019938e + unaff_EDI" identifier = (binary_expression "&LAB_0019938e + unaff_EDI" (pointer_expression "&LAB_0019938e" & identifier) + identifier)) ;) (expression_statement "uVar7 = 4;" (assignment_expression "uVar7 = 4" identifier = number_literal) ;) }) (else_clause "else {\n    if (type != 4) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x1986df),0x537,(char *)(unaff_EDI + 0x1995d7));\n    }\n    pcVar5 = (char *)(unaff_EDI + 0x199393);\n    uVar7 = 5;\n  }" else (compound_statement "{\n    if (type != 4) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x1986df),0x537,(char *)(unaff_EDI + 0x1995d7));\n    }\n    pcVar5 = (char *)(unaff_EDI + 0x199393);\n    uVar7 = 5;\n  }" { (if_statement "if (type != 4) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x1986df),0x537,(char *)(unaff_EDI + 0x1995d7));\n    }" if (parenthesized_expression "(type != 4)" ( (binary_expression "type != 4" identifier != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable((char *)(unaff_EDI + 0x1986df),0x537,(char *)(unaff_EDI + 0x1995d7));\n    }" { comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x1986df),0x537,(char *)(unaff_EDI + 0x1995d7));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x1986df),0x537,(char *)(unaff_EDI + 0x1995d7))" identifier (argument_list "((char *)(unaff_EDI + 0x1986df),0x537,(char *)(unaff_EDI + 0x1995d7))" ( (cast_expression "(char *)(unaff_EDI + 0x1986df)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1986df)" ( (binary_expression "unaff_EDI + 0x1986df" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x1995d7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1995d7)" ( (binary_expression "unaff_EDI + 0x1995d7" identifier + number_literal) ))) ))) ;) })) (expression_statement "pcVar5 = (char *)(unaff_EDI + 0x199393);" (assignment_expression "pcVar5 = (char *)(unaff_EDI + 0x199393)" identifier = (cast_expression "(char *)(unaff_EDI + 0x199393)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x199393)" ( (binary_expression "unaff_EDI + 0x199393" identifier + number_literal) )))) ;) (expression_statement "uVar7 = 5;" (assignment_expression "uVar7 = 5" identifier = number_literal) ;) }))) comment (labeled_statement "std::string::_M_replace((string *)&name,0,0,pcVar5,uVar7);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_replace((string *)&name,0,0,pcVar5,uVar7);" statement_identifier : (ERROR ":" :) (expression_statement "_M_replace((string *)&name,0,0,pcVar5,uVar7);" (call_expression "_M_replace((string *)&name,0,0,pcVar5,uVar7)" identifier (argument_list "((string *)&name,0,0,pcVar5,uVar7)" ( (cast_expression "(string *)&name" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&name" & identifier)) , number_literal , number_literal , identifier , identifier ))) ;))) (expression_statement "pcVar5 = data_section->name_;" (assignment_expression "pcVar5 = data_section->name_" identifier = (field_expression "data_section->name_" identifier -> field_identifier)) ;) (expression_statement "sVar4 = strlen(pcVar5);" (assignment_expression "sVar4 = strlen(pcVar5)" identifier = (call_expression "strlen(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier )))) ;) (if_statement "if (sVar4 <= 0x7fffffff - name._M_string_length) {\n    std::string::_M_append((string *)&name,pcVar5,sVar4);\n    local_40 = data_section->reloc_section_;\n    if (local_40 == (Output_section *)0x0) {\n                    /* try { // try from 0008aa7e to 0008ab38 has its CatchHandler @ 0008abd6 */\n      pcVar5 = Stringpool_template<char>::add\n                         (&this->namepool_,name._M_dataplus._M_p,true,(Key *)0x0);\n      local_40 = make_output_section(this,pcVar5,type,shdr->p_->sh_flags,ORDER_INVALID,false);\n      if (((local_40->link_section_ != (Output_data *)0x0) || (local_40->link_ != 0)) ||\n         ((local_40->field_0x90 & 8) != 0)) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x196df3),0xd1b,&UNK_0019960b + unaff_EDI);\n      }\n      local_40->field_0x90 = local_40->field_0x90 | 4;\n      if ((((local_40->info_section_ != (Output_section *)0x0) &&\n           ((data_section != local_40->info_section_ || ((local_40->field_0x91 & 1) == 0)))) ||\n          (local_40->info_symndx_ != (Symbol *)0x0)) || (local_40->info_ != 0)) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x196df3),0xd3a,(char *)(unaff_EDI + 0x1995f7));\n      }\n      local_40->field_0x91 = local_40->field_0x91 | 1;\n      local_40->info_section_ = data_section;\n      data_section->reloc_section_ = local_40;\n    }\n    if (type == 9) {\n                    /* try { // try from 0008a9fc to 0008aa0c has its CatchHandler @ 0008abd6 */\n      Output_section::set_entsize(local_40,0x10);\n      posd = (Output_section_data *)operator_new(0x30);\n                    /* try { // try from 0008aa16 to 0008aa1a has its CatchHandler @ 0008abda */\n      uVar6 = Output_data::default_alignment_for_size(0x40);\n      *(int *)&posd->addralign_ = (int)uVar6;\n      (posd->super_Output_data)._vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x273047);\n      *(undefined4 *)&(posd->super_Output_data).address_ = 0;\n      *(undefined4 *)((int)&(posd->super_Output_data).address_ + 4) = 0;\n      *(undefined4 *)&(posd->super_Output_data).data_size_ = 0;\n      *(undefined4 *)((int)&(posd->super_Output_data).data_size_ + 4) = 0;\n      *(undefined4 *)&(posd->super_Output_data).offset_ = 0xffffffff;\n      *(undefined4 *)((int)&(posd->super_Output_data).offset_ + 4) = 0xffffffff;\n      puVar2 = &(posd->super_Output_data).field_0x1c;\n      *puVar2 = *puVar2 & 0xe0;\n      posd->output_section_ = (Output_section *)0x0;\n      *(int *)((int)&posd->addralign_ + 4) = (int)(uVar6 >> 0x20);\n      posd[1].super_Output_data._vptr_Output_data = (_func_int_varargs **)rr;\n    }\n    else {\n      if (type != 4) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x1986df),0x557,(char *)(unaff_EDI + 0x1995d7));\n      }\n      Output_section::set_entsize(local_40,0x18);\n      posd = (Output_section_data *)operator_new(0x30);\n                    /* try { // try from 0008a919 to 0008a91d has its CatchHandler @ 0008abdf */\n      uVar6 = Output_data::default_alignment_for_size(0x40);\n      *(int *)&posd->addralign_ = (int)uVar6;\n      (posd->super_Output_data)._vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x2730b3);\n      puVar2 = &(posd->super_Output_data).field_0x1c;\n      *puVar2 = *puVar2 & 0xe0;\n      *(undefined4 *)&(posd->super_Output_data).address_ = 0;\n      *(undefined4 *)((int)&(posd->super_Output_data).address_ + 4) = 0;\n      *(undefined4 *)&(posd->super_Output_data).data_size_ = 0;\n      *(undefined4 *)((int)&(posd->super_Output_data).data_size_ + 4) = 0;\n      *(undefined4 *)&(posd->super_Output_data).offset_ = 0xffffffff;\n      *(undefined4 *)((int)&(posd->super_Output_data).offset_ + 4) = 0xffffffff;\n      posd->output_section_ = (Output_section *)0x0;\n      *(int *)((int)&posd->addralign_ + 4) = (int)(uVar6 >> 0x20);\n      posd[1].super_Output_data._vptr_Output_data = (_func_int_varargs **)rr;\n    }\n                    /* try { // try from 0008a973 to 0008a977 has its CatchHandler @ 0008abd6 */\n    Output_section::add_output_section_data(local_40,posd);\n    if (rr->posd_ == (Output_data *)0x0) {\n      rr->posd_ = &posd->super_Output_data;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)name._M_dataplus._M_p != paVar1) {\n        operator_delete(name._M_dataplus._M_p);\n      }\n      return local_40;\n    }\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0008ab65 to 0008abd5 has its CatchHandler @ 0008abd6 */\n    do_gold_unreachable((char *)(unaff_EDI + 0x199399),0x11a,(char *)(unaff_EDI + 0x1995e7));\n  }" if (parenthesized_expression "(sVar4 <= 0x7fffffff - name._M_string_length)" ( (binary_expression "sVar4 <= 0x7fffffff - name._M_string_length" identifier <= (binary_expression "0x7fffffff - name._M_string_length" number_literal - (field_expression "name._M_string_length" identifier . field_identifier))) )) (compound_statement "{\n    std::string::_M_append((string *)&name,pcVar5,sVar4);\n    local_40 = data_section->reloc_section_;\n    if (local_40 == (Output_section *)0x0) {\n                    /* try { // try from 0008aa7e to 0008ab38 has its CatchHandler @ 0008abd6 */\n      pcVar5 = Stringpool_template<char>::add\n                         (&this->namepool_,name._M_dataplus._M_p,true,(Key *)0x0);\n      local_40 = make_output_section(this,pcVar5,type,shdr->p_->sh_flags,ORDER_INVALID,false);\n      if (((local_40->link_section_ != (Output_data *)0x0) || (local_40->link_ != 0)) ||\n         ((local_40->field_0x90 & 8) != 0)) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x196df3),0xd1b,&UNK_0019960b + unaff_EDI);\n      }\n      local_40->field_0x90 = local_40->field_0x90 | 4;\n      if ((((local_40->info_section_ != (Output_section *)0x0) &&\n           ((data_section != local_40->info_section_ || ((local_40->field_0x91 & 1) == 0)))) ||\n          (local_40->info_symndx_ != (Symbol *)0x0)) || (local_40->info_ != 0)) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x196df3),0xd3a,(char *)(unaff_EDI + 0x1995f7));\n      }\n      local_40->field_0x91 = local_40->field_0x91 | 1;\n      local_40->info_section_ = data_section;\n      data_section->reloc_section_ = local_40;\n    }\n    if (type == 9) {\n                    /* try { // try from 0008a9fc to 0008aa0c has its CatchHandler @ 0008abd6 */\n      Output_section::set_entsize(local_40,0x10);\n      posd = (Output_section_data *)operator_new(0x30);\n                    /* try { // try from 0008aa16 to 0008aa1a has its CatchHandler @ 0008abda */\n      uVar6 = Output_data::default_alignment_for_size(0x40);\n      *(int *)&posd->addralign_ = (int)uVar6;\n      (posd->super_Output_data)._vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x273047);\n      *(undefined4 *)&(posd->super_Output_data).address_ = 0;\n      *(undefined4 *)((int)&(posd->super_Output_data).address_ + 4) = 0;\n      *(undefined4 *)&(posd->super_Output_data).data_size_ = 0;\n      *(undefined4 *)((int)&(posd->super_Output_data).data_size_ + 4) = 0;\n      *(undefined4 *)&(posd->super_Output_data).offset_ = 0xffffffff;\n      *(undefined4 *)((int)&(posd->super_Output_data).offset_ + 4) = 0xffffffff;\n      puVar2 = &(posd->super_Output_data).field_0x1c;\n      *puVar2 = *puVar2 & 0xe0;\n      posd->output_section_ = (Output_section *)0x0;\n      *(int *)((int)&posd->addralign_ + 4) = (int)(uVar6 >> 0x20);\n      posd[1].super_Output_data._vptr_Output_data = (_func_int_varargs **)rr;\n    }\n    else {\n      if (type != 4) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x1986df),0x557,(char *)(unaff_EDI + 0x1995d7));\n      }\n      Output_section::set_entsize(local_40,0x18);\n      posd = (Output_section_data *)operator_new(0x30);\n                    /* try { // try from 0008a919 to 0008a91d has its CatchHandler @ 0008abdf */\n      uVar6 = Output_data::default_alignment_for_size(0x40);\n      *(int *)&posd->addralign_ = (int)uVar6;\n      (posd->super_Output_data)._vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x2730b3);\n      puVar2 = &(posd->super_Output_data).field_0x1c;\n      *puVar2 = *puVar2 & 0xe0;\n      *(undefined4 *)&(posd->super_Output_data).address_ = 0;\n      *(undefined4 *)((int)&(posd->super_Output_data).address_ + 4) = 0;\n      *(undefined4 *)&(posd->super_Output_data).data_size_ = 0;\n      *(undefined4 *)((int)&(posd->super_Output_data).data_size_ + 4) = 0;\n      *(undefined4 *)&(posd->super_Output_data).offset_ = 0xffffffff;\n      *(undefined4 *)((int)&(posd->super_Output_data).offset_ + 4) = 0xffffffff;\n      posd->output_section_ = (Output_section *)0x0;\n      *(int *)((int)&posd->addralign_ + 4) = (int)(uVar6 >> 0x20);\n      posd[1].super_Output_data._vptr_Output_data = (_func_int_varargs **)rr;\n    }\n                    /* try { // try from 0008a973 to 0008a977 has its CatchHandler @ 0008abd6 */\n    Output_section::add_output_section_data(local_40,posd);\n    if (rr->posd_ == (Output_data *)0x0) {\n      rr->posd_ = &posd->super_Output_data;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)name._M_dataplus._M_p != paVar1) {\n        operator_delete(name._M_dataplus._M_p);\n      }\n      return local_40;\n    }\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0008ab65 to 0008abd5 has its CatchHandler @ 0008abd6 */\n    do_gold_unreachable((char *)(unaff_EDI + 0x199399),0x11a,(char *)(unaff_EDI + 0x1995e7));\n  }" { (labeled_statement "std::string::_M_append((string *)&name,pcVar5,sVar4);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_append((string *)&name,pcVar5,sVar4);" statement_identifier : (ERROR ":" :) (expression_statement "_M_append((string *)&name,pcVar5,sVar4);" (call_expression "_M_append((string *)&name,pcVar5,sVar4)" identifier (argument_list "((string *)&name,pcVar5,sVar4)" ( (cast_expression "(string *)&name" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&name" & identifier)) , identifier , identifier ))) ;))) (expression_statement "local_40 = data_section->reloc_section_;" (assignment_expression "local_40 = data_section->reloc_section_" identifier = (field_expression "data_section->reloc_section_" identifier -> field_identifier)) ;) (if_statement "if (local_40 == (Output_section *)0x0) {\n                    /* try { // try from 0008aa7e to 0008ab38 has its CatchHandler @ 0008abd6 */\n      pcVar5 = Stringpool_template<char>::add\n                         (&this->namepool_,name._M_dataplus._M_p,true,(Key *)0x0);\n      local_40 = make_output_section(this,pcVar5,type,shdr->p_->sh_flags,ORDER_INVALID,false);\n      if (((local_40->link_section_ != (Output_data *)0x0) || (local_40->link_ != 0)) ||\n         ((local_40->field_0x90 & 8) != 0)) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x196df3),0xd1b,&UNK_0019960b + unaff_EDI);\n      }\n      local_40->field_0x90 = local_40->field_0x90 | 4;\n      if ((((local_40->info_section_ != (Output_section *)0x0) &&\n           ((data_section != local_40->info_section_ || ((local_40->field_0x91 & 1) == 0)))) ||\n          (local_40->info_symndx_ != (Symbol *)0x0)) || (local_40->info_ != 0)) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x196df3),0xd3a,(char *)(unaff_EDI + 0x1995f7));\n      }\n      local_40->field_0x91 = local_40->field_0x91 | 1;\n      local_40->info_section_ = data_section;\n      data_section->reloc_section_ = local_40;\n    }" if (parenthesized_expression "(local_40 == (Output_section *)0x0)" ( (binary_expression "local_40 == (Output_section *)0x0" identifier == (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* try { // try from 0008aa7e to 0008ab38 has its CatchHandler @ 0008abd6 */\n      pcVar5 = Stringpool_template<char>::add\n                         (&this->namepool_,name._M_dataplus._M_p,true,(Key *)0x0);\n      local_40 = make_output_section(this,pcVar5,type,shdr->p_->sh_flags,ORDER_INVALID,false);\n      if (((local_40->link_section_ != (Output_data *)0x0) || (local_40->link_ != 0)) ||\n         ((local_40->field_0x90 & 8) != 0)) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x196df3),0xd1b,&UNK_0019960b + unaff_EDI);\n      }\n      local_40->field_0x90 = local_40->field_0x90 | 4;\n      if ((((local_40->info_section_ != (Output_section *)0x0) &&\n           ((data_section != local_40->info_section_ || ((local_40->field_0x91 & 1) == 0)))) ||\n          (local_40->info_symndx_ != (Symbol *)0x0)) || (local_40->info_ != 0)) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x196df3),0xd3a,(char *)(unaff_EDI + 0x1995f7));\n      }\n      local_40->field_0x91 = local_40->field_0x91 | 1;\n      local_40->info_section_ = data_section;\n      data_section->reloc_section_ = local_40;\n    }" { comment (expression_statement "pcVar5 = Stringpool_template<char>::add\n                         (&this->namepool_,name._M_dataplus._M_p,true,(Key *)0x0);" (assignment_expression "pcVar5 = Stringpool_template<char>::add\n                         (&this->namepool_,name._M_dataplus._M_p,true,(Key *)0x0)" identifier = (binary_expression "Stringpool_template<char>::add\n                         (&this->namepool_,name._M_dataplus._M_p,true,(Key *)0x0)" (binary_expression "Stringpool_template<char" identifier < identifier) > (ERROR "::" : :) (call_expression "add\n                         (&this->namepool_,name._M_dataplus._M_p,true,(Key *)0x0)" identifier (argument_list "(&this->namepool_,name._M_dataplus._M_p,true,(Key *)0x0)" ( (pointer_expression "&this->namepool_" & (field_expression "this->namepool_" identifier -> field_identifier)) , (field_expression "name._M_dataplus._M_p" (field_expression "name._M_dataplus" identifier . field_identifier) . field_identifier) , true , (cast_expression "(Key *)0x0" ( (type_descriptor "Key *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ))))) ;) (expression_statement "local_40 = make_output_section(this,pcVar5,type,shdr->p_->sh_flags,ORDER_INVALID,false);" (assignment_expression "local_40 = make_output_section(this,pcVar5,type,shdr->p_->sh_flags,ORDER_INVALID,false)" identifier = (call_expression "make_output_section(this,pcVar5,type,shdr->p_->sh_flags,ORDER_INVALID,false)" identifier (argument_list "(this,pcVar5,type,shdr->p_->sh_flags,ORDER_INVALID,false)" ( identifier , identifier , identifier , (field_expression "shdr->p_->sh_flags" (field_expression "shdr->p_" identifier -> field_identifier) -> field_identifier) , identifier , false )))) ;) (if_statement "if (((local_40->link_section_ != (Output_data *)0x0) || (local_40->link_ != 0)) ||\n         ((local_40->field_0x90 & 8) != 0)) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x196df3),0xd1b,&UNK_0019960b + unaff_EDI);\n      }" if (parenthesized_expression "(((local_40->link_section_ != (Output_data *)0x0) || (local_40->link_ != 0)) ||\n         ((local_40->field_0x90 & 8) != 0))" ( (binary_expression "((local_40->link_section_ != (Output_data *)0x0) || (local_40->link_ != 0)) ||\n         ((local_40->field_0x90 & 8) != 0)" (parenthesized_expression "((local_40->link_section_ != (Output_data *)0x0) || (local_40->link_ != 0))" ( (binary_expression "(local_40->link_section_ != (Output_data *)0x0) || (local_40->link_ != 0)" (parenthesized_expression "(local_40->link_section_ != (Output_data *)0x0)" ( (binary_expression "local_40->link_section_ != (Output_data *)0x0" (field_expression "local_40->link_section_" identifier -> field_identifier) != (cast_expression "(Output_data *)0x0" ( (type_descriptor "Output_data *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(local_40->link_ != 0)" ( (binary_expression "local_40->link_ != 0" (field_expression "local_40->link_" identifier -> field_identifier) != number_literal) ))) )) || (parenthesized_expression "((local_40->field_0x90 & 8) != 0)" ( (binary_expression "(local_40->field_0x90 & 8) != 0" (parenthesized_expression "(local_40->field_0x90 & 8)" ( (binary_expression "local_40->field_0x90 & 8" (field_expression "local_40->field_0x90" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x196df3),0xd1b,&UNK_0019960b + unaff_EDI);\n      }" { comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x196df3),0xd1b,&UNK_0019960b + unaff_EDI);" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x196df3),0xd1b,&UNK_0019960b + unaff_EDI)" identifier (argument_list "((char *)(unaff_EDI + 0x196df3),0xd1b,&UNK_0019960b + unaff_EDI)" ( (cast_expression "(char *)(unaff_EDI + 0x196df3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x196df3)" ( (binary_expression "unaff_EDI + 0x196df3" identifier + number_literal) ))) , number_literal , (binary_expression "&UNK_0019960b + unaff_EDI" (pointer_expression "&UNK_0019960b" & identifier) + identifier) ))) ;) })) (expression_statement "local_40->field_0x90 = local_40->field_0x90 | 4;" (assignment_expression "local_40->field_0x90 = local_40->field_0x90 | 4" (field_expression "local_40->field_0x90" identifier -> field_identifier) = (binary_expression "local_40->field_0x90 | 4" (field_expression "local_40->field_0x90" identifier -> field_identifier) | number_literal)) ;) (if_statement "if ((((local_40->info_section_ != (Output_section *)0x0) &&\n           ((data_section != local_40->info_section_ || ((local_40->field_0x91 & 1) == 0)))) ||\n          (local_40->info_symndx_ != (Symbol *)0x0)) || (local_40->info_ != 0)) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x196df3),0xd3a,(char *)(unaff_EDI + 0x1995f7));\n      }" if (parenthesized_expression "((((local_40->info_section_ != (Output_section *)0x0) &&\n           ((data_section != local_40->info_section_ || ((local_40->field_0x91 & 1) == 0)))) ||\n          (local_40->info_symndx_ != (Symbol *)0x0)) || (local_40->info_ != 0))" ( (binary_expression "(((local_40->info_section_ != (Output_section *)0x0) &&\n           ((data_section != local_40->info_section_ || ((local_40->field_0x91 & 1) == 0)))) ||\n          (local_40->info_symndx_ != (Symbol *)0x0)) || (local_40->info_ != 0)" (parenthesized_expression "(((local_40->info_section_ != (Output_section *)0x0) &&\n           ((data_section != local_40->info_section_ || ((local_40->field_0x91 & 1) == 0)))) ||\n          (local_40->info_symndx_ != (Symbol *)0x0))" ( (binary_expression "((local_40->info_section_ != (Output_section *)0x0) &&\n           ((data_section != local_40->info_section_ || ((local_40->field_0x91 & 1) == 0)))) ||\n          (local_40->info_symndx_ != (Symbol *)0x0)" (parenthesized_expression "((local_40->info_section_ != (Output_section *)0x0) &&\n           ((data_section != local_40->info_section_ || ((local_40->field_0x91 & 1) == 0))))" ( (binary_expression "(local_40->info_section_ != (Output_section *)0x0) &&\n           ((data_section != local_40->info_section_ || ((local_40->field_0x91 & 1) == 0)))" (parenthesized_expression "(local_40->info_section_ != (Output_section *)0x0)" ( (binary_expression "local_40->info_section_ != (Output_section *)0x0" (field_expression "local_40->info_section_" identifier -> field_identifier) != (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((data_section != local_40->info_section_ || ((local_40->field_0x91 & 1) == 0)))" ( (parenthesized_expression "(data_section != local_40->info_section_ || ((local_40->field_0x91 & 1) == 0))" ( (binary_expression "data_section != local_40->info_section_ || ((local_40->field_0x91 & 1) == 0)" (binary_expression "data_section != local_40->info_section_" identifier != (field_expression "local_40->info_section_" identifier -> field_identifier)) || (parenthesized_expression "((local_40->field_0x91 & 1) == 0)" ( (binary_expression "(local_40->field_0x91 & 1) == 0" (parenthesized_expression "(local_40->field_0x91 & 1)" ( (binary_expression "local_40->field_0x91 & 1" (field_expression "local_40->field_0x91" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) ))) )) || (parenthesized_expression "(local_40->info_symndx_ != (Symbol *)0x0)" ( (binary_expression "local_40->info_symndx_ != (Symbol *)0x0" (field_expression "local_40->info_symndx_" identifier -> field_identifier) != (cast_expression "(Symbol *)0x0" ( (type_descriptor "Symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) || (parenthesized_expression "(local_40->info_ != 0)" ( (binary_expression "local_40->info_ != 0" (field_expression "local_40->info_" identifier -> field_identifier) != number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x196df3),0xd3a,(char *)(unaff_EDI + 0x1995f7));\n      }" { comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x196df3),0xd3a,(char *)(unaff_EDI + 0x1995f7));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x196df3),0xd3a,(char *)(unaff_EDI + 0x1995f7))" identifier (argument_list "((char *)(unaff_EDI + 0x196df3),0xd3a,(char *)(unaff_EDI + 0x1995f7))" ( (cast_expression "(char *)(unaff_EDI + 0x196df3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x196df3)" ( (binary_expression "unaff_EDI + 0x196df3" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x1995f7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1995f7)" ( (binary_expression "unaff_EDI + 0x1995f7" identifier + number_literal) ))) ))) ;) })) (expression_statement "local_40->field_0x91 = local_40->field_0x91 | 1;" (assignment_expression "local_40->field_0x91 = local_40->field_0x91 | 1" (field_expression "local_40->field_0x91" identifier -> field_identifier) = (binary_expression "local_40->field_0x91 | 1" (field_expression "local_40->field_0x91" identifier -> field_identifier) | number_literal)) ;) (expression_statement "local_40->info_section_ = data_section;" (assignment_expression "local_40->info_section_ = data_section" (field_expression "local_40->info_section_" identifier -> field_identifier) = identifier) ;) (expression_statement "data_section->reloc_section_ = local_40;" (assignment_expression "data_section->reloc_section_ = local_40" (field_expression "data_section->reloc_section_" identifier -> field_identifier) = identifier) ;) })) (if_statement "if (type == 9) {\n                    /* try { // try from 0008a9fc to 0008aa0c has its CatchHandler @ 0008abd6 */\n      Output_section::set_entsize(local_40,0x10);\n      posd = (Output_section_data *)operator_new(0x30);\n                    /* try { // try from 0008aa16 to 0008aa1a has its CatchHandler @ 0008abda */\n      uVar6 = Output_data::default_alignment_for_size(0x40);\n      *(int *)&posd->addralign_ = (int)uVar6;\n      (posd->super_Output_data)._vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x273047);\n      *(undefined4 *)&(posd->super_Output_data).address_ = 0;\n      *(undefined4 *)((int)&(posd->super_Output_data).address_ + 4) = 0;\n      *(undefined4 *)&(posd->super_Output_data).data_size_ = 0;\n      *(undefined4 *)((int)&(posd->super_Output_data).data_size_ + 4) = 0;\n      *(undefined4 *)&(posd->super_Output_data).offset_ = 0xffffffff;\n      *(undefined4 *)((int)&(posd->super_Output_data).offset_ + 4) = 0xffffffff;\n      puVar2 = &(posd->super_Output_data).field_0x1c;\n      *puVar2 = *puVar2 & 0xe0;\n      posd->output_section_ = (Output_section *)0x0;\n      *(int *)((int)&posd->addralign_ + 4) = (int)(uVar6 >> 0x20);\n      posd[1].super_Output_data._vptr_Output_data = (_func_int_varargs **)rr;\n    }\n    else {\n      if (type != 4) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x1986df),0x557,(char *)(unaff_EDI + 0x1995d7));\n      }\n      Output_section::set_entsize(local_40,0x18);\n      posd = (Output_section_data *)operator_new(0x30);\n                    /* try { // try from 0008a919 to 0008a91d has its CatchHandler @ 0008abdf */\n      uVar6 = Output_data::default_alignment_for_size(0x40);\n      *(int *)&posd->addralign_ = (int)uVar6;\n      (posd->super_Output_data)._vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x2730b3);\n      puVar2 = &(posd->super_Output_data).field_0x1c;\n      *puVar2 = *puVar2 & 0xe0;\n      *(undefined4 *)&(posd->super_Output_data).address_ = 0;\n      *(undefined4 *)((int)&(posd->super_Output_data).address_ + 4) = 0;\n      *(undefined4 *)&(posd->super_Output_data).data_size_ = 0;\n      *(undefined4 *)((int)&(posd->super_Output_data).data_size_ + 4) = 0;\n      *(undefined4 *)&(posd->super_Output_data).offset_ = 0xffffffff;\n      *(undefined4 *)((int)&(posd->super_Output_data).offset_ + 4) = 0xffffffff;\n      posd->output_section_ = (Output_section *)0x0;\n      *(int *)((int)&posd->addralign_ + 4) = (int)(uVar6 >> 0x20);\n      posd[1].super_Output_data._vptr_Output_data = (_func_int_varargs **)rr;\n    }" if (parenthesized_expression "(type == 9)" ( (binary_expression "type == 9" identifier == number_literal) )) (compound_statement "{\n                    /* try { // try from 0008a9fc to 0008aa0c has its CatchHandler @ 0008abd6 */\n      Output_section::set_entsize(local_40,0x10);\n      posd = (Output_section_data *)operator_new(0x30);\n                    /* try { // try from 0008aa16 to 0008aa1a has its CatchHandler @ 0008abda */\n      uVar6 = Output_data::default_alignment_for_size(0x40);\n      *(int *)&posd->addralign_ = (int)uVar6;\n      (posd->super_Output_data)._vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x273047);\n      *(undefined4 *)&(posd->super_Output_data).address_ = 0;\n      *(undefined4 *)((int)&(posd->super_Output_data).address_ + 4) = 0;\n      *(undefined4 *)&(posd->super_Output_data).data_size_ = 0;\n      *(undefined4 *)((int)&(posd->super_Output_data).data_size_ + 4) = 0;\n      *(undefined4 *)&(posd->super_Output_data).offset_ = 0xffffffff;\n      *(undefined4 *)((int)&(posd->super_Output_data).offset_ + 4) = 0xffffffff;\n      puVar2 = &(posd->super_Output_data).field_0x1c;\n      *puVar2 = *puVar2 & 0xe0;\n      posd->output_section_ = (Output_section *)0x0;\n      *(int *)((int)&posd->addralign_ + 4) = (int)(uVar6 >> 0x20);\n      posd[1].super_Output_data._vptr_Output_data = (_func_int_varargs **)rr;\n    }" { comment (labeled_statement "Output_section::set_entsize(local_40,0x10);" statement_identifier : (ERROR ":" :) (expression_statement "set_entsize(local_40,0x10);" (call_expression "set_entsize(local_40,0x10)" identifier (argument_list "(local_40,0x10)" ( identifier , number_literal ))) ;)) (expression_statement "posd = (Output_section_data *)operator_new(0x30);" (assignment_expression "posd = (Output_section_data *)operator_new(0x30)" identifier = (cast_expression "(Output_section_data *)operator_new(0x30)" ( (type_descriptor "Output_section_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x30)" identifier (argument_list "(0x30)" ( number_literal ))))) ;) comment (ERROR "uVar6 = Output_data::" (assignment_expression "uVar6 = Output_data" identifier = identifier) : :) (expression_statement "default_alignment_for_size(0x40);" (call_expression "default_alignment_for_size(0x40)" identifier (argument_list "(0x40)" ( number_literal ))) ;) (expression_statement "*(int *)&posd->addralign_ = (int)uVar6;" (assignment_expression "*(int *)&posd->addralign_ = (int)uVar6" (pointer_expression "*(int *)&posd->addralign_" * (cast_expression "(int *)&posd->addralign_" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&posd->addralign_" & (field_expression "posd->addralign_" identifier -> field_identifier)))) = (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "(posd->super_Output_data)._vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x273047);" (assignment_expression "(posd->super_Output_data)._vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x273047)" (field_expression "(posd->super_Output_data)._vptr_Output_data" (parenthesized_expression "(posd->super_Output_data)" ( (field_expression "posd->super_Output_data" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(_func_int_varargs **)(unaff_EDI + 0x273047)" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EDI + 0x273047)" ( (binary_expression "unaff_EDI + 0x273047" identifier + number_literal) )))) ;) (expression_statement "*(undefined4 *)&(posd->super_Output_data).address_ = 0;" (assignment_expression "*(undefined4 *)&(posd->super_Output_data).address_ = 0" (pointer_expression "*(undefined4 *)&(posd->super_Output_data).address_" * (cast_expression "(undefined4 *)&(posd->super_Output_data).address_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(posd->super_Output_data).address_" & (field_expression "(posd->super_Output_data).address_" (parenthesized_expression "(posd->super_Output_data)" ( (field_expression "posd->super_Output_data" identifier -> field_identifier) )) . field_identifier)))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)&(posd->super_Output_data).address_ + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&(posd->super_Output_data).address_ + 4) = 0" (pointer_expression "*(undefined4 *)((int)&(posd->super_Output_data).address_ + 4)" * (cast_expression "(undefined4 *)((int)&(posd->super_Output_data).address_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(posd->super_Output_data).address_ + 4)" ( (binary_expression "(int)&(posd->super_Output_data).address_ + 4" (cast_expression "(int)&(posd->super_Output_data).address_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(posd->super_Output_data).address_" & (field_expression "(posd->super_Output_data).address_" (parenthesized_expression "(posd->super_Output_data)" ( (field_expression "posd->super_Output_data" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)&(posd->super_Output_data).data_size_ = 0;" (assignment_expression "*(undefined4 *)&(posd->super_Output_data).data_size_ = 0" (pointer_expression "*(undefined4 *)&(posd->super_Output_data).data_size_" * (cast_expression "(undefined4 *)&(posd->super_Output_data).data_size_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(posd->super_Output_data).data_size_" & (field_expression "(posd->super_Output_data).data_size_" (parenthesized_expression "(posd->super_Output_data)" ( (field_expression "posd->super_Output_data" identifier -> field_identifier) )) . field_identifier)))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)&(posd->super_Output_data).data_size_ + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&(posd->super_Output_data).data_size_ + 4) = 0" (pointer_expression "*(undefined4 *)((int)&(posd->super_Output_data).data_size_ + 4)" * (cast_expression "(undefined4 *)((int)&(posd->super_Output_data).data_size_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(posd->super_Output_data).data_size_ + 4)" ( (binary_expression "(int)&(posd->super_Output_data).data_size_ + 4" (cast_expression "(int)&(posd->super_Output_data).data_size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(posd->super_Output_data).data_size_" & (field_expression "(posd->super_Output_data).data_size_" (parenthesized_expression "(posd->super_Output_data)" ( (field_expression "posd->super_Output_data" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)&(posd->super_Output_data).offset_ = 0xffffffff;" (assignment_expression "*(undefined4 *)&(posd->super_Output_data).offset_ = 0xffffffff" (pointer_expression "*(undefined4 *)&(posd->super_Output_data).offset_" * (cast_expression "(undefined4 *)&(posd->super_Output_data).offset_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(posd->super_Output_data).offset_" & (field_expression "(posd->super_Output_data).offset_" (parenthesized_expression "(posd->super_Output_data)" ( (field_expression "posd->super_Output_data" identifier -> field_identifier) )) . field_identifier)))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)&(posd->super_Output_data).offset_ + 4) = 0xffffffff;" (assignment_expression "*(undefined4 *)((int)&(posd->super_Output_data).offset_ + 4) = 0xffffffff" (pointer_expression "*(undefined4 *)((int)&(posd->super_Output_data).offset_ + 4)" * (cast_expression "(undefined4 *)((int)&(posd->super_Output_data).offset_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(posd->super_Output_data).offset_ + 4)" ( (binary_expression "(int)&(posd->super_Output_data).offset_ + 4" (cast_expression "(int)&(posd->super_Output_data).offset_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(posd->super_Output_data).offset_" & (field_expression "(posd->super_Output_data).offset_" (parenthesized_expression "(posd->super_Output_data)" ( (field_expression "posd->super_Output_data" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "puVar2 = &(posd->super_Output_data).field_0x1c;" (assignment_expression "puVar2 = &(posd->super_Output_data).field_0x1c" identifier = (pointer_expression "&(posd->super_Output_data).field_0x1c" & (field_expression "(posd->super_Output_data).field_0x1c" (parenthesized_expression "(posd->super_Output_data)" ( (field_expression "posd->super_Output_data" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*puVar2 = *puVar2 & 0xe0;" (assignment_expression "*puVar2 = *puVar2 & 0xe0" (pointer_expression "*puVar2" * identifier) = (binary_expression "*puVar2 & 0xe0" (pointer_expression "*puVar2" * identifier) & number_literal)) ;) (expression_statement "posd->output_section_ = (Output_section *)0x0;" (assignment_expression "posd->output_section_ = (Output_section *)0x0" (field_expression "posd->output_section_" identifier -> field_identifier) = (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(int *)((int)&posd->addralign_ + 4) = (int)(uVar6 >> 0x20);" (assignment_expression "*(int *)((int)&posd->addralign_ + 4) = (int)(uVar6 >> 0x20)" (pointer_expression "*(int *)((int)&posd->addralign_ + 4)" * (cast_expression "(int *)((int)&posd->addralign_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&posd->addralign_ + 4)" ( (binary_expression "(int)&posd->addralign_ + 4" (cast_expression "(int)&posd->addralign_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&posd->addralign_" & (field_expression "posd->addralign_" identifier -> field_identifier))) + number_literal) )))) = (cast_expression "(int)(uVar6 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar6 >> 0x20)" ( (binary_expression "uVar6 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "posd[1].super_Output_data._vptr_Output_data = (_func_int_varargs **)rr;" (assignment_expression "posd[1].super_Output_data._vptr_Output_data = (_func_int_varargs **)rr" (field_expression "posd[1].super_Output_data._vptr_Output_data" (field_expression "posd[1].super_Output_data" (subscript_expression "posd[1]" identifier [ number_literal ]) . field_identifier) . field_identifier) = (cast_expression "(_func_int_varargs **)rr" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) }) (else_clause "else {\n      if (type != 4) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x1986df),0x557,(char *)(unaff_EDI + 0x1995d7));\n      }\n      Output_section::set_entsize(local_40,0x18);\n      posd = (Output_section_data *)operator_new(0x30);\n                    /* try { // try from 0008a919 to 0008a91d has its CatchHandler @ 0008abdf */\n      uVar6 = Output_data::default_alignment_for_size(0x40);\n      *(int *)&posd->addralign_ = (int)uVar6;\n      (posd->super_Output_data)._vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x2730b3);\n      puVar2 = &(posd->super_Output_data).field_0x1c;\n      *puVar2 = *puVar2 & 0xe0;\n      *(undefined4 *)&(posd->super_Output_data).address_ = 0;\n      *(undefined4 *)((int)&(posd->super_Output_data).address_ + 4) = 0;\n      *(undefined4 *)&(posd->super_Output_data).data_size_ = 0;\n      *(undefined4 *)((int)&(posd->super_Output_data).data_size_ + 4) = 0;\n      *(undefined4 *)&(posd->super_Output_data).offset_ = 0xffffffff;\n      *(undefined4 *)((int)&(posd->super_Output_data).offset_ + 4) = 0xffffffff;\n      posd->output_section_ = (Output_section *)0x0;\n      *(int *)((int)&posd->addralign_ + 4) = (int)(uVar6 >> 0x20);\n      posd[1].super_Output_data._vptr_Output_data = (_func_int_varargs **)rr;\n    }" else (compound_statement "{\n      if (type != 4) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x1986df),0x557,(char *)(unaff_EDI + 0x1995d7));\n      }\n      Output_section::set_entsize(local_40,0x18);\n      posd = (Output_section_data *)operator_new(0x30);\n                    /* try { // try from 0008a919 to 0008a91d has its CatchHandler @ 0008abdf */\n      uVar6 = Output_data::default_alignment_for_size(0x40);\n      *(int *)&posd->addralign_ = (int)uVar6;\n      (posd->super_Output_data)._vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x2730b3);\n      puVar2 = &(posd->super_Output_data).field_0x1c;\n      *puVar2 = *puVar2 & 0xe0;\n      *(undefined4 *)&(posd->super_Output_data).address_ = 0;\n      *(undefined4 *)((int)&(posd->super_Output_data).address_ + 4) = 0;\n      *(undefined4 *)&(posd->super_Output_data).data_size_ = 0;\n      *(undefined4 *)((int)&(posd->super_Output_data).data_size_ + 4) = 0;\n      *(undefined4 *)&(posd->super_Output_data).offset_ = 0xffffffff;\n      *(undefined4 *)((int)&(posd->super_Output_data).offset_ + 4) = 0xffffffff;\n      posd->output_section_ = (Output_section *)0x0;\n      *(int *)((int)&posd->addralign_ + 4) = (int)(uVar6 >> 0x20);\n      posd[1].super_Output_data._vptr_Output_data = (_func_int_varargs **)rr;\n    }" { (if_statement "if (type != 4) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x1986df),0x557,(char *)(unaff_EDI + 0x1995d7));\n      }" if (parenthesized_expression "(type != 4)" ( (binary_expression "type != 4" identifier != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable((char *)(unaff_EDI + 0x1986df),0x557,(char *)(unaff_EDI + 0x1995d7));\n      }" { comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x1986df),0x557,(char *)(unaff_EDI + 0x1995d7));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x1986df),0x557,(char *)(unaff_EDI + 0x1995d7))" identifier (argument_list "((char *)(unaff_EDI + 0x1986df),0x557,(char *)(unaff_EDI + 0x1995d7))" ( (cast_expression "(char *)(unaff_EDI + 0x1986df)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1986df)" ( (binary_expression "unaff_EDI + 0x1986df" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x1995d7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1995d7)" ( (binary_expression "unaff_EDI + 0x1995d7" identifier + number_literal) ))) ))) ;) })) (labeled_statement "Output_section::set_entsize(local_40,0x18);" statement_identifier : (ERROR ":" :) (expression_statement "set_entsize(local_40,0x18);" (call_expression "set_entsize(local_40,0x18)" identifier (argument_list "(local_40,0x18)" ( identifier , number_literal ))) ;)) (expression_statement "posd = (Output_section_data *)operator_new(0x30);" (assignment_expression "posd = (Output_section_data *)operator_new(0x30)" identifier = (cast_expression "(Output_section_data *)operator_new(0x30)" ( (type_descriptor "Output_section_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x30)" identifier (argument_list "(0x30)" ( number_literal ))))) ;) comment (ERROR "uVar6 = Output_data::" (assignment_expression "uVar6 = Output_data" identifier = identifier) : :) (expression_statement "default_alignment_for_size(0x40);" (call_expression "default_alignment_for_size(0x40)" identifier (argument_list "(0x40)" ( number_literal ))) ;) (expression_statement "*(int *)&posd->addralign_ = (int)uVar6;" (assignment_expression "*(int *)&posd->addralign_ = (int)uVar6" (pointer_expression "*(int *)&posd->addralign_" * (cast_expression "(int *)&posd->addralign_" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&posd->addralign_" & (field_expression "posd->addralign_" identifier -> field_identifier)))) = (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "(posd->super_Output_data)._vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x2730b3);" (assignment_expression "(posd->super_Output_data)._vptr_Output_data = (_func_int_varargs **)(unaff_EDI + 0x2730b3)" (field_expression "(posd->super_Output_data)._vptr_Output_data" (parenthesized_expression "(posd->super_Output_data)" ( (field_expression "posd->super_Output_data" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(_func_int_varargs **)(unaff_EDI + 0x2730b3)" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EDI + 0x2730b3)" ( (binary_expression "unaff_EDI + 0x2730b3" identifier + number_literal) )))) ;) (expression_statement "puVar2 = &(posd->super_Output_data).field_0x1c;" (assignment_expression "puVar2 = &(posd->super_Output_data).field_0x1c" identifier = (pointer_expression "&(posd->super_Output_data).field_0x1c" & (field_expression "(posd->super_Output_data).field_0x1c" (parenthesized_expression "(posd->super_Output_data)" ( (field_expression "posd->super_Output_data" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*puVar2 = *puVar2 & 0xe0;" (assignment_expression "*puVar2 = *puVar2 & 0xe0" (pointer_expression "*puVar2" * identifier) = (binary_expression "*puVar2 & 0xe0" (pointer_expression "*puVar2" * identifier) & number_literal)) ;) (expression_statement "*(undefined4 *)&(posd->super_Output_data).address_ = 0;" (assignment_expression "*(undefined4 *)&(posd->super_Output_data).address_ = 0" (pointer_expression "*(undefined4 *)&(posd->super_Output_data).address_" * (cast_expression "(undefined4 *)&(posd->super_Output_data).address_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(posd->super_Output_data).address_" & (field_expression "(posd->super_Output_data).address_" (parenthesized_expression "(posd->super_Output_data)" ( (field_expression "posd->super_Output_data" identifier -> field_identifier) )) . field_identifier)))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)&(posd->super_Output_data).address_ + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&(posd->super_Output_data).address_ + 4) = 0" (pointer_expression "*(undefined4 *)((int)&(posd->super_Output_data).address_ + 4)" * (cast_expression "(undefined4 *)((int)&(posd->super_Output_data).address_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(posd->super_Output_data).address_ + 4)" ( (binary_expression "(int)&(posd->super_Output_data).address_ + 4" (cast_expression "(int)&(posd->super_Output_data).address_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(posd->super_Output_data).address_" & (field_expression "(posd->super_Output_data).address_" (parenthesized_expression "(posd->super_Output_data)" ( (field_expression "posd->super_Output_data" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)&(posd->super_Output_data).data_size_ = 0;" (assignment_expression "*(undefined4 *)&(posd->super_Output_data).data_size_ = 0" (pointer_expression "*(undefined4 *)&(posd->super_Output_data).data_size_" * (cast_expression "(undefined4 *)&(posd->super_Output_data).data_size_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(posd->super_Output_data).data_size_" & (field_expression "(posd->super_Output_data).data_size_" (parenthesized_expression "(posd->super_Output_data)" ( (field_expression "posd->super_Output_data" identifier -> field_identifier) )) . field_identifier)))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)&(posd->super_Output_data).data_size_ + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&(posd->super_Output_data).data_size_ + 4) = 0" (pointer_expression "*(undefined4 *)((int)&(posd->super_Output_data).data_size_ + 4)" * (cast_expression "(undefined4 *)((int)&(posd->super_Output_data).data_size_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(posd->super_Output_data).data_size_ + 4)" ( (binary_expression "(int)&(posd->super_Output_data).data_size_ + 4" (cast_expression "(int)&(posd->super_Output_data).data_size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(posd->super_Output_data).data_size_" & (field_expression "(posd->super_Output_data).data_size_" (parenthesized_expression "(posd->super_Output_data)" ( (field_expression "posd->super_Output_data" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)&(posd->super_Output_data).offset_ = 0xffffffff;" (assignment_expression "*(undefined4 *)&(posd->super_Output_data).offset_ = 0xffffffff" (pointer_expression "*(undefined4 *)&(posd->super_Output_data).offset_" * (cast_expression "(undefined4 *)&(posd->super_Output_data).offset_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(posd->super_Output_data).offset_" & (field_expression "(posd->super_Output_data).offset_" (parenthesized_expression "(posd->super_Output_data)" ( (field_expression "posd->super_Output_data" identifier -> field_identifier) )) . field_identifier)))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)&(posd->super_Output_data).offset_ + 4) = 0xffffffff;" (assignment_expression "*(undefined4 *)((int)&(posd->super_Output_data).offset_ + 4) = 0xffffffff" (pointer_expression "*(undefined4 *)((int)&(posd->super_Output_data).offset_ + 4)" * (cast_expression "(undefined4 *)((int)&(posd->super_Output_data).offset_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(posd->super_Output_data).offset_ + 4)" ( (binary_expression "(int)&(posd->super_Output_data).offset_ + 4" (cast_expression "(int)&(posd->super_Output_data).offset_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(posd->super_Output_data).offset_" & (field_expression "(posd->super_Output_data).offset_" (parenthesized_expression "(posd->super_Output_data)" ( (field_expression "posd->super_Output_data" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "posd->output_section_ = (Output_section *)0x0;" (assignment_expression "posd->output_section_ = (Output_section *)0x0" (field_expression "posd->output_section_" identifier -> field_identifier) = (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(int *)((int)&posd->addralign_ + 4) = (int)(uVar6 >> 0x20);" (assignment_expression "*(int *)((int)&posd->addralign_ + 4) = (int)(uVar6 >> 0x20)" (pointer_expression "*(int *)((int)&posd->addralign_ + 4)" * (cast_expression "(int *)((int)&posd->addralign_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&posd->addralign_ + 4)" ( (binary_expression "(int)&posd->addralign_ + 4" (cast_expression "(int)&posd->addralign_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&posd->addralign_" & (field_expression "posd->addralign_" identifier -> field_identifier))) + number_literal) )))) = (cast_expression "(int)(uVar6 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar6 >> 0x20)" ( (binary_expression "uVar6 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "posd[1].super_Output_data._vptr_Output_data = (_func_int_varargs **)rr;" (assignment_expression "posd[1].super_Output_data._vptr_Output_data = (_func_int_varargs **)rr" (field_expression "posd[1].super_Output_data._vptr_Output_data" (field_expression "posd[1].super_Output_data" (subscript_expression "posd[1]" identifier [ number_literal ]) . field_identifier) . field_identifier) = (cast_expression "(_func_int_varargs **)rr" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) }))) comment (labeled_statement "Output_section::add_output_section_data(local_40,posd);" statement_identifier : (ERROR ":" :) (expression_statement "add_output_section_data(local_40,posd);" (call_expression "add_output_section_data(local_40,posd)" identifier (argument_list "(local_40,posd)" ( identifier , identifier ))) ;)) (if_statement "if (rr->posd_ == (Output_data *)0x0) {\n      rr->posd_ = &posd->super_Output_data;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)name._M_dataplus._M_p != paVar1) {\n        operator_delete(name._M_dataplus._M_p);\n      }\n      return local_40;\n    }" if (parenthesized_expression "(rr->posd_ == (Output_data *)0x0)" ( (binary_expression "rr->posd_ == (Output_data *)0x0" (field_expression "rr->posd_" identifier -> field_identifier) == (cast_expression "(Output_data *)0x0" ( (type_descriptor "Output_data *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      rr->posd_ = &posd->super_Output_data;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)name._M_dataplus._M_p != paVar1) {\n        operator_delete(name._M_dataplus._M_p);\n      }\n      return local_40;\n    }" { (expression_statement "rr->posd_ = &posd->super_Output_data;" (assignment_expression "rr->posd_ = &posd->super_Output_data" (field_expression "rr->posd_" identifier -> field_identifier) = (pointer_expression "&posd->super_Output_data" & (field_expression "posd->super_Output_data" identifier -> field_identifier))) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)name._M_dataplus._M_p != paVar1) {\n        operator_delete(name._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           *)name._M_dataplus._M_p != paVar1)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)name._M_dataplus._M_p != paVar1)" ( (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           *)name._M_dataplus._M_p != paVar1" (binary_expression "allocator<char>_>_9\n           *)name._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n           *)name._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "name._M_dataplus._M_p" (field_expression "name._M_dataplus" identifier . field_identifier) . field_identifier))) != identifier) )) )) (compound_statement "{\n        operator_delete(name._M_dataplus._M_p);\n      }" { (expression_statement "operator_delete(name._M_dataplus._M_p);" (call_expression "operator_delete(name._M_dataplus._M_p)" identifier (argument_list "(name._M_dataplus._M_p)" ( (field_expression "name._M_dataplus._M_p" (field_expression "name._M_dataplus" identifier . field_identifier) . field_identifier) ))) ;) })) (return_statement "return local_40;" return identifier ;) })) comment comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0x199399),0x11a,(char *)(unaff_EDI + 0x1995e7));" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0x199399),0x11a,(char *)(unaff_EDI + 0x1995e7))" identifier (argument_list "((char *)(unaff_EDI + 0x199399),0x11a,(char *)(unaff_EDI + 0x1995e7))" ( (cast_expression "(char *)(unaff_EDI + 0x199399)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x199399)" ( (binary_expression "unaff_EDI + 0x199399" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x1995e7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1995e7)" ( (binary_expression "unaff_EDI + 0x1995e7" identifier + number_literal) ))) ))) ;) })) comment (labeled_statement "std::__throw_length_error((char *)(unaff_EDI + 0x195d29));" statement_identifier : (ERROR ":" :) (expression_statement "__throw_length_error((char *)(unaff_EDI + 0x195d29));" (call_expression "__throw_length_error((char *)(unaff_EDI + 0x195d29))" identifier (argument_list "((char *)(unaff_EDI + 0x195d29))" ( (cast_expression "(char *)(unaff_EDI + 0x195d29)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x195d29)" ( (binary_expression "unaff_EDI + 0x195d29" identifier + number_literal) ))) ))) ;)) }))
(translation_unit "int FUN_0008a810(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,int param_5,\n                int param_6)\n\n{\n  int iVar1;\n  char *__s;\n  undefined1 *puVar2;\n  size_t sVar3;\n  int *piVar4;\n  undefined4 extraout_ECX;\n  undefined4 extraout_ECX_00;\n  undefined4 extraout_EDX;\n  int unaff_EDI;\n  int iVar5;\n  undefined8 uVar6;\n  undefined4 uVar7;\n  int local_40;\n  undefined1 *local_34;\n  int local_30;\n  undefined1 local_2c [28];\n  \n  FUN_0004fb7e();\n  iVar5 = unaff_EDI + 0x2777e7;\n  iVar1 = *(int *)(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8);\n  if (iVar1 == 0) {\n                    \n    FUN_0005f0b0(&UNK_00196157 + unaff_EDI,0x5c,unaff_EDI + 0x199b8f);\n  }\n  if ((*(char *)(iVar1 + 0x318d) == '\0') && (*(char *)(iVar1 + 0x3095) == '\0')) {\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1986df,0x52d,unaff_EDI + 0x1995d7);\n  }\n  iVar1 = *(int *)(*param_4 + 4);\n  local_30 = 0;\n  local_2c[0] = 0;\n  local_34 = local_2c;\n  if (iVar1 == 9) {\n    puVar2 = &LAB_0019938e + unaff_EDI;\n    uVar7 = 4;\n  }\n  else {\n    if (iVar1 != 4) {\n                    \n      FUN_0005f0b0(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX);\n    }\n    puVar2 = (undefined1 *)(unaff_EDI + 0x199393);\n    uVar7 = 5;\n  }\n                    \n  FUN_001893e0(&local_34,0,0,puVar2,uVar7);\n  __s = *(char **)(param_5 + 0x20);\n  sVar3 = strlen(__s);\n  if (sVar3 <= 0x7fffffffU - local_30) {\n    FUN_00189fb0(&local_34,__s,sVar3);\n    local_40 = *(int *)(param_5 + 0xe4);\n    if (local_40 == 0) {\n                    \n      uVar7 = FUN_001200e0(param_1 + 8,local_34,1,0);\n      local_40 = FUN_0007fe90(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0);\n      if (((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)) ||\n         ((*(byte *)(local_40 + 0x90) & 8) != 0)) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00);\n      }\n      *(byte *)(local_40 + 0x90) = *(byte *)(local_40 + 0x90) | 4;\n      if ((((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)) || (*(int *)(local_40 + 0x4c) != 0)) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1);\n      }\n      *(byte *)(local_40 + 0x91) = *(byte *)(local_40 + 0x91) | 1;\n      *(int *)(local_40 + 0x44) = param_5;\n      *(int *)(param_5 + 0xe4) = local_40;\n      iVar5 = 0;\n    }\n    if (iVar1 == 9) {\n                    \n      FUN_000bb100(local_40,0x10,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    \n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x273047;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }\n    else {\n      if (iVar1 != 4) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);\n      }\n      FUN_000bb100(local_40,0x18,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    \n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x2730b3;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }\n                    \n    FUN_000bf250(local_40,piVar4);\n    if (*(int *)(param_6 + 0x10) == 0) {\n      *(int **)(param_6 + 0x10) = piVar4;\n      if (local_34 != local_2c) {\n        FUN_001807a0(local_34);\n      }\n      return local_40;\n    }\n                    \n                    \n    FUN_0005f0b0(unaff_EDI + 0x199399,0x11a,unaff_EDI + 0x1995e7,extraout_EDX);\n  }\n                    \n  FUN_001c6190(unaff_EDI + 0x195d29);\n}\n\n" (function_definition "int FUN_0008a810(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,int param_5,\n                int param_6)\n\n{\n  int iVar1;\n  char *__s;\n  undefined1 *puVar2;\n  size_t sVar3;\n  int *piVar4;\n  undefined4 extraout_ECX;\n  undefined4 extraout_ECX_00;\n  undefined4 extraout_EDX;\n  int unaff_EDI;\n  int iVar5;\n  undefined8 uVar6;\n  undefined4 uVar7;\n  int local_40;\n  undefined1 *local_34;\n  int local_30;\n  undefined1 local_2c [28];\n  \n  FUN_0004fb7e();\n  iVar5 = unaff_EDI + 0x2777e7;\n  iVar1 = *(int *)(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8);\n  if (iVar1 == 0) {\n                    \n    FUN_0005f0b0(&UNK_00196157 + unaff_EDI,0x5c,unaff_EDI + 0x199b8f);\n  }\n  if ((*(char *)(iVar1 + 0x318d) == '\0') && (*(char *)(iVar1 + 0x3095) == '\0')) {\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1986df,0x52d,unaff_EDI + 0x1995d7);\n  }\n  iVar1 = *(int *)(*param_4 + 4);\n  local_30 = 0;\n  local_2c[0] = 0;\n  local_34 = local_2c;\n  if (iVar1 == 9) {\n    puVar2 = &LAB_0019938e + unaff_EDI;\n    uVar7 = 4;\n  }\n  else {\n    if (iVar1 != 4) {\n                    \n      FUN_0005f0b0(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX);\n    }\n    puVar2 = (undefined1 *)(unaff_EDI + 0x199393);\n    uVar7 = 5;\n  }\n                    \n  FUN_001893e0(&local_34,0,0,puVar2,uVar7);\n  __s = *(char **)(param_5 + 0x20);\n  sVar3 = strlen(__s);\n  if (sVar3 <= 0x7fffffffU - local_30) {\n    FUN_00189fb0(&local_34,__s,sVar3);\n    local_40 = *(int *)(param_5 + 0xe4);\n    if (local_40 == 0) {\n                    \n      uVar7 = FUN_001200e0(param_1 + 8,local_34,1,0);\n      local_40 = FUN_0007fe90(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0);\n      if (((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)) ||\n         ((*(byte *)(local_40 + 0x90) & 8) != 0)) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00);\n      }\n      *(byte *)(local_40 + 0x90) = *(byte *)(local_40 + 0x90) | 4;\n      if ((((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)) || (*(int *)(local_40 + 0x4c) != 0)) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1);\n      }\n      *(byte *)(local_40 + 0x91) = *(byte *)(local_40 + 0x91) | 1;\n      *(int *)(local_40 + 0x44) = param_5;\n      *(int *)(param_5 + 0xe4) = local_40;\n      iVar5 = 0;\n    }\n    if (iVar1 == 9) {\n                    \n      FUN_000bb100(local_40,0x10,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    \n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x273047;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }\n    else {\n      if (iVar1 != 4) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);\n      }\n      FUN_000bb100(local_40,0x18,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    \n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x2730b3;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }\n                    \n    FUN_000bf250(local_40,piVar4);\n    if (*(int *)(param_6 + 0x10) == 0) {\n      *(int **)(param_6 + 0x10) = piVar4;\n      if (local_34 != local_2c) {\n        FUN_001807a0(local_34);\n      }\n      return local_40;\n    }\n                    \n                    \n    FUN_0005f0b0(unaff_EDI + 0x199399,0x11a,unaff_EDI + 0x1995e7,extraout_EDX);\n  }\n                    \n  FUN_001c6190(unaff_EDI + 0x195d29);\n}" primitive_type (function_declarator "FUN_0008a810(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,int param_5,\n                int param_6)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,int param_5,\n                int param_6)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "int param_6" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  char *__s;\n  undefined1 *puVar2;\n  size_t sVar3;\n  int *piVar4;\n  undefined4 extraout_ECX;\n  undefined4 extraout_ECX_00;\n  undefined4 extraout_EDX;\n  int unaff_EDI;\n  int iVar5;\n  undefined8 uVar6;\n  undefined4 uVar7;\n  int local_40;\n  undefined1 *local_34;\n  int local_30;\n  undefined1 local_2c [28];\n  \n  FUN_0004fb7e();\n  iVar5 = unaff_EDI + 0x2777e7;\n  iVar1 = *(int *)(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8);\n  if (iVar1 == 0) {\n                    \n    FUN_0005f0b0(&UNK_00196157 + unaff_EDI,0x5c,unaff_EDI + 0x199b8f);\n  }\n  if ((*(char *)(iVar1 + 0x318d) == '\0') && (*(char *)(iVar1 + 0x3095) == '\0')) {\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1986df,0x52d,unaff_EDI + 0x1995d7);\n  }\n  iVar1 = *(int *)(*param_4 + 4);\n  local_30 = 0;\n  local_2c[0] = 0;\n  local_34 = local_2c;\n  if (iVar1 == 9) {\n    puVar2 = &LAB_0019938e + unaff_EDI;\n    uVar7 = 4;\n  }\n  else {\n    if (iVar1 != 4) {\n                    \n      FUN_0005f0b0(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX);\n    }\n    puVar2 = (undefined1 *)(unaff_EDI + 0x199393);\n    uVar7 = 5;\n  }\n                    \n  FUN_001893e0(&local_34,0,0,puVar2,uVar7);\n  __s = *(char **)(param_5 + 0x20);\n  sVar3 = strlen(__s);\n  if (sVar3 <= 0x7fffffffU - local_30) {\n    FUN_00189fb0(&local_34,__s,sVar3);\n    local_40 = *(int *)(param_5 + 0xe4);\n    if (local_40 == 0) {\n                    \n      uVar7 = FUN_001200e0(param_1 + 8,local_34,1,0);\n      local_40 = FUN_0007fe90(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0);\n      if (((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)) ||\n         ((*(byte *)(local_40 + 0x90) & 8) != 0)) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00);\n      }\n      *(byte *)(local_40 + 0x90) = *(byte *)(local_40 + 0x90) | 4;\n      if ((((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)) || (*(int *)(local_40 + 0x4c) != 0)) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1);\n      }\n      *(byte *)(local_40 + 0x91) = *(byte *)(local_40 + 0x91) | 1;\n      *(int *)(local_40 + 0x44) = param_5;\n      *(int *)(param_5 + 0xe4) = local_40;\n      iVar5 = 0;\n    }\n    if (iVar1 == 9) {\n                    \n      FUN_000bb100(local_40,0x10,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    \n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x273047;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }\n    else {\n      if (iVar1 != 4) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);\n      }\n      FUN_000bb100(local_40,0x18,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    \n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x2730b3;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }\n                    \n    FUN_000bf250(local_40,piVar4);\n    if (*(int *)(param_6 + 0x10) == 0) {\n      *(int **)(param_6 + 0x10) = piVar4;\n      if (local_34 != local_2c) {\n        FUN_001807a0(local_34);\n      }\n      return local_40;\n    }\n                    \n                    \n    FUN_0005f0b0(unaff_EDI + 0x199399,0x11a,unaff_EDI + 0x1995e7,extraout_EDX);\n  }\n                    \n  FUN_001c6190(unaff_EDI + 0x195d29);\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "undefined1 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "undefined4 extraout_ECX;" type_identifier identifier ;) (declaration "undefined4 extraout_ECX_00;" type_identifier identifier ;) (declaration "undefined4 extraout_EDX;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "undefined1 *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "undefined1 local_2c [28];" type_identifier (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "FUN_0004fb7e();" (call_expression "FUN_0004fb7e()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar5 = unaff_EDI + 0x2777e7;" (assignment_expression "iVar5 = unaff_EDI + 0x2777e7" identifier = (binary_expression "unaff_EDI + 0x2777e7" identifier + number_literal)) ;) (expression_statement "iVar1 = *(int *)(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8);" (assignment_expression "iVar1 = *(int *)(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8)" identifier = (pointer_expression "*(int *)(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8)" * (cast_expression "(int *)(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8)" ( (binary_expression "*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8" (pointer_expression "*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72)" * (cast_expression "(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(BYTE_ARRAY_00277aed + unaff_EDI + 0x72)" ( (binary_expression "BYTE_ARRAY_00277aed + unaff_EDI + 0x72" (binary_expression "BYTE_ARRAY_00277aed + unaff_EDI" identifier + identifier) + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (iVar1 == 0) {\n                    \n    FUN_0005f0b0(&UNK_00196157 + unaff_EDI,0x5c,unaff_EDI + 0x199b8f);\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    FUN_0005f0b0(&UNK_00196157 + unaff_EDI,0x5c,unaff_EDI + 0x199b8f);\n  }" { (expression_statement "FUN_0005f0b0(&UNK_00196157 + unaff_EDI,0x5c,unaff_EDI + 0x199b8f);" (call_expression "FUN_0005f0b0(&UNK_00196157 + unaff_EDI,0x5c,unaff_EDI + 0x199b8f)" identifier (argument_list "(&UNK_00196157 + unaff_EDI,0x5c,unaff_EDI + 0x199b8f)" ( (binary_expression "&UNK_00196157 + unaff_EDI" (pointer_expression "&UNK_00196157" & identifier) + identifier) , number_literal , (binary_expression "unaff_EDI + 0x199b8f" identifier + number_literal) ))) ;) })) (if_statement "if ((*(char *)(iVar1 + 0x318d) == '\0') && (*(char *)(iVar1 + 0x3095) == '\0')) {\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1986df,0x52d,unaff_EDI + 0x1995d7);\n  }" if (parenthesized_expression "((*(char *)(iVar1 + 0x318d) == '\0') && (*(char *)(iVar1 + 0x3095) == '\0'))" ( (binary_expression "(*(char *)(iVar1 + 0x318d) == '\0') && (*(char *)(iVar1 + 0x3095) == '\0')" (parenthesized_expression "(*(char *)(iVar1 + 0x318d) == '\0')" ( (binary_expression "*(char *)(iVar1 + 0x318d) == '\0'" (pointer_expression "*(char *)(iVar1 + 0x318d)" * (cast_expression "(char *)(iVar1 + 0x318d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x318d)" ( (binary_expression "iVar1 + 0x318d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(char *)(iVar1 + 0x3095) == '\0')" ( (binary_expression "*(char *)(iVar1 + 0x3095) == '\0'" (pointer_expression "*(char *)(iVar1 + 0x3095)" * (cast_expression "(char *)(iVar1 + 0x3095)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3095)" ( (binary_expression "iVar1 + 0x3095" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1986df,0x52d,unaff_EDI + 0x1995d7);\n  }" { (expression_statement "FUN_0005f0b0(unaff_EDI + 0x1986df,0x52d,unaff_EDI + 0x1995d7);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x1986df,0x52d,unaff_EDI + 0x1995d7)" identifier (argument_list "(unaff_EDI + 0x1986df,0x52d,unaff_EDI + 0x1995d7)" ( (binary_expression "unaff_EDI + 0x1986df" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x1995d7" identifier + number_literal) ))) ;) })) (expression_statement "iVar1 = *(int *)(*param_4 + 4);" (assignment_expression "iVar1 = *(int *)(*param_4 + 4)" identifier = (pointer_expression "*(int *)(*param_4 + 4)" * (cast_expression "(int *)(*param_4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_4 + 4)" ( (binary_expression "*param_4 + 4" (pointer_expression "*param_4" * identifier) + number_literal) ))))) ;) (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) ;) (if_statement "if (iVar1 == 9) {\n    puVar2 = &LAB_0019938e + unaff_EDI;\n    uVar7 = 4;\n  }\n  else {\n    if (iVar1 != 4) {\n                    \n      FUN_0005f0b0(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX);\n    }\n    puVar2 = (undefined1 *)(unaff_EDI + 0x199393);\n    uVar7 = 5;\n  }" if (parenthesized_expression "(iVar1 == 9)" ( (binary_expression "iVar1 == 9" identifier == number_literal) )) (compound_statement "{\n    puVar2 = &LAB_0019938e + unaff_EDI;\n    uVar7 = 4;\n  }" { (expression_statement "puVar2 = &LAB_0019938e + unaff_EDI;" (assignment_expression "puVar2 = &LAB_0019938e + unaff_EDI" identifier = (binary_expression "&LAB_0019938e + unaff_EDI" (pointer_expression "&LAB_0019938e" & identifier) + identifier)) ;) (expression_statement "uVar7 = 4;" (assignment_expression "uVar7 = 4" identifier = number_literal) ;) }) (else_clause "else {\n    if (iVar1 != 4) {\n                    \n      FUN_0005f0b0(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX);\n    }\n    puVar2 = (undefined1 *)(unaff_EDI + 0x199393);\n    uVar7 = 5;\n  }" else (compound_statement "{\n    if (iVar1 != 4) {\n                    \n      FUN_0005f0b0(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX);\n    }\n    puVar2 = (undefined1 *)(unaff_EDI + 0x199393);\n    uVar7 = 5;\n  }" { (if_statement "if (iVar1 != 4) {\n                    \n      FUN_0005f0b0(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX);\n    }" if (parenthesized_expression "(iVar1 != 4)" ( (binary_expression "iVar1 != 4" identifier != number_literal) )) (compound_statement "{\n                    \n      FUN_0005f0b0(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX);\n    }" { (expression_statement "FUN_0005f0b0(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX)" identifier (argument_list "(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX)" ( (binary_expression "unaff_EDI + 0x1986df" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x1995d7" identifier + number_literal) , identifier ))) ;) })) (expression_statement "puVar2 = (undefined1 *)(unaff_EDI + 0x199393);" (assignment_expression "puVar2 = (undefined1 *)(unaff_EDI + 0x199393)" identifier = (cast_expression "(undefined1 *)(unaff_EDI + 0x199393)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x199393)" ( (binary_expression "unaff_EDI + 0x199393" identifier + number_literal) )))) ;) (expression_statement "uVar7 = 5;" (assignment_expression "uVar7 = 5" identifier = number_literal) ;) }))) (expression_statement "FUN_001893e0(&local_34,0,0,puVar2,uVar7);" (call_expression "FUN_001893e0(&local_34,0,0,puVar2,uVar7)" identifier (argument_list "(&local_34,0,0,puVar2,uVar7)" ( (pointer_expression "&local_34" & identifier) , number_literal , number_literal , identifier , identifier ))) ;) (expression_statement "__s = *(char **)(param_5 + 0x20);" (assignment_expression "__s = *(char **)(param_5 + 0x20)" identifier = (pointer_expression "*(char **)(param_5 + 0x20)" * (cast_expression "(char **)(param_5 + 0x20)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_5 + 0x20)" ( (binary_expression "param_5 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "sVar3 = strlen(__s);" (assignment_expression "sVar3 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (if_statement "if (sVar3 <= 0x7fffffffU - local_30) {\n    FUN_00189fb0(&local_34,__s,sVar3);\n    local_40 = *(int *)(param_5 + 0xe4);\n    if (local_40 == 0) {\n                    \n      uVar7 = FUN_001200e0(param_1 + 8,local_34,1,0);\n      local_40 = FUN_0007fe90(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0);\n      if (((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)) ||\n         ((*(byte *)(local_40 + 0x90) & 8) != 0)) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00);\n      }\n      *(byte *)(local_40 + 0x90) = *(byte *)(local_40 + 0x90) | 4;\n      if ((((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)) || (*(int *)(local_40 + 0x4c) != 0)) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1);\n      }\n      *(byte *)(local_40 + 0x91) = *(byte *)(local_40 + 0x91) | 1;\n      *(int *)(local_40 + 0x44) = param_5;\n      *(int *)(param_5 + 0xe4) = local_40;\n      iVar5 = 0;\n    }\n    if (iVar1 == 9) {\n                    \n      FUN_000bb100(local_40,0x10,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    \n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x273047;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }\n    else {\n      if (iVar1 != 4) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);\n      }\n      FUN_000bb100(local_40,0x18,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    \n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x2730b3;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }\n                    \n    FUN_000bf250(local_40,piVar4);\n    if (*(int *)(param_6 + 0x10) == 0) {\n      *(int **)(param_6 + 0x10) = piVar4;\n      if (local_34 != local_2c) {\n        FUN_001807a0(local_34);\n      }\n      return local_40;\n    }\n                    \n                    \n    FUN_0005f0b0(unaff_EDI + 0x199399,0x11a,unaff_EDI + 0x1995e7,extraout_EDX);\n  }" if (parenthesized_expression "(sVar3 <= 0x7fffffffU - local_30)" ( (binary_expression "sVar3 <= 0x7fffffffU - local_30" identifier <= (binary_expression "0x7fffffffU - local_30" number_literal - identifier)) )) (compound_statement "{\n    FUN_00189fb0(&local_34,__s,sVar3);\n    local_40 = *(int *)(param_5 + 0xe4);\n    if (local_40 == 0) {\n                    \n      uVar7 = FUN_001200e0(param_1 + 8,local_34,1,0);\n      local_40 = FUN_0007fe90(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0);\n      if (((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)) ||\n         ((*(byte *)(local_40 + 0x90) & 8) != 0)) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00);\n      }\n      *(byte *)(local_40 + 0x90) = *(byte *)(local_40 + 0x90) | 4;\n      if ((((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)) || (*(int *)(local_40 + 0x4c) != 0)) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1);\n      }\n      *(byte *)(local_40 + 0x91) = *(byte *)(local_40 + 0x91) | 1;\n      *(int *)(local_40 + 0x44) = param_5;\n      *(int *)(param_5 + 0xe4) = local_40;\n      iVar5 = 0;\n    }\n    if (iVar1 == 9) {\n                    \n      FUN_000bb100(local_40,0x10,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    \n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x273047;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }\n    else {\n      if (iVar1 != 4) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);\n      }\n      FUN_000bb100(local_40,0x18,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    \n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x2730b3;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }\n                    \n    FUN_000bf250(local_40,piVar4);\n    if (*(int *)(param_6 + 0x10) == 0) {\n      *(int **)(param_6 + 0x10) = piVar4;\n      if (local_34 != local_2c) {\n        FUN_001807a0(local_34);\n      }\n      return local_40;\n    }\n                    \n                    \n    FUN_0005f0b0(unaff_EDI + 0x199399,0x11a,unaff_EDI + 0x1995e7,extraout_EDX);\n  }" { (expression_statement "FUN_00189fb0(&local_34,__s,sVar3);" (call_expression "FUN_00189fb0(&local_34,__s,sVar3)" identifier (argument_list "(&local_34,__s,sVar3)" ( (pointer_expression "&local_34" & identifier) , identifier , identifier ))) ;) (expression_statement "local_40 = *(int *)(param_5 + 0xe4);" (assignment_expression "local_40 = *(int *)(param_5 + 0xe4)" identifier = (pointer_expression "*(int *)(param_5 + 0xe4)" * (cast_expression "(int *)(param_5 + 0xe4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0xe4)" ( (binary_expression "param_5 + 0xe4" identifier + number_literal) ))))) ;) (if_statement "if (local_40 == 0) {\n                    \n      uVar7 = FUN_001200e0(param_1 + 8,local_34,1,0);\n      local_40 = FUN_0007fe90(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0);\n      if (((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)) ||\n         ((*(byte *)(local_40 + 0x90) & 8) != 0)) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00);\n      }\n      *(byte *)(local_40 + 0x90) = *(byte *)(local_40 + 0x90) | 4;\n      if ((((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)) || (*(int *)(local_40 + 0x4c) != 0)) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1);\n      }\n      *(byte *)(local_40 + 0x91) = *(byte *)(local_40 + 0x91) | 1;\n      *(int *)(local_40 + 0x44) = param_5;\n      *(int *)(param_5 + 0xe4) = local_40;\n      iVar5 = 0;\n    }" if (parenthesized_expression "(local_40 == 0)" ( (binary_expression "local_40 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n      uVar7 = FUN_001200e0(param_1 + 8,local_34,1,0);\n      local_40 = FUN_0007fe90(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0);\n      if (((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)) ||\n         ((*(byte *)(local_40 + 0x90) & 8) != 0)) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00);\n      }\n      *(byte *)(local_40 + 0x90) = *(byte *)(local_40 + 0x90) | 4;\n      if ((((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)) || (*(int *)(local_40 + 0x4c) != 0)) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1);\n      }\n      *(byte *)(local_40 + 0x91) = *(byte *)(local_40 + 0x91) | 1;\n      *(int *)(local_40 + 0x44) = param_5;\n      *(int *)(param_5 + 0xe4) = local_40;\n      iVar5 = 0;\n    }" { (expression_statement "uVar7 = FUN_001200e0(param_1 + 8,local_34,1,0);" (assignment_expression "uVar7 = FUN_001200e0(param_1 + 8,local_34,1,0)" identifier = (call_expression "FUN_001200e0(param_1 + 8,local_34,1,0)" identifier (argument_list "(param_1 + 8,local_34,1,0)" ( (binary_expression "param_1 + 8" identifier + number_literal) , identifier , number_literal , number_literal )))) ;) (expression_statement "local_40 = FUN_0007fe90(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0);" (assignment_expression "local_40 = FUN_0007fe90(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0)" identifier = (call_expression "FUN_0007fe90(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0)" identifier (argument_list "(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0)" ( identifier , identifier , identifier , (pointer_expression "*(undefined4 *)(*param_4 + 8)" * (cast_expression "(undefined4 *)(*param_4 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_4 + 8)" ( (binary_expression "*param_4 + 8" (pointer_expression "*param_4" * identifier) + number_literal) )))) , (pointer_expression "*(undefined4 *)(*param_4 + 0xc)" * (cast_expression "(undefined4 *)(*param_4 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_4 + 0xc)" ( (binary_expression "*param_4 + 0xc" (pointer_expression "*param_4" * identifier) + number_literal) )))) , number_literal , number_literal )))) ;) (if_statement "if (((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)) ||\n         ((*(byte *)(local_40 + 0x90) & 8) != 0)) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00);\n      }" if (parenthesized_expression "(((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)) ||\n         ((*(byte *)(local_40 + 0x90) & 8) != 0))" ( (binary_expression "((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)) ||\n         ((*(byte *)(local_40 + 0x90) & 8) != 0)" (parenthesized_expression "((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0))" ( (binary_expression "(*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)" (parenthesized_expression "(*(int *)(local_40 + 0x3c) != 0)" ( (binary_expression "*(int *)(local_40 + 0x3c) != 0" (pointer_expression "*(int *)(local_40 + 0x3c)" * (cast_expression "(int *)(local_40 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x3c)" ( (binary_expression "local_40 + 0x3c" identifier + number_literal) )))) != number_literal) )) || (parenthesized_expression "(*(int *)(local_40 + 0x40) != 0)" ( (binary_expression "*(int *)(local_40 + 0x40) != 0" (pointer_expression "*(int *)(local_40 + 0x40)" * (cast_expression "(int *)(local_40 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x40)" ( (binary_expression "local_40 + 0x40" identifier + number_literal) )))) != number_literal) ))) )) || (parenthesized_expression "((*(byte *)(local_40 + 0x90) & 8) != 0)" ( (binary_expression "(*(byte *)(local_40 + 0x90) & 8) != 0" (parenthesized_expression "(*(byte *)(local_40 + 0x90) & 8)" ( (binary_expression "*(byte *)(local_40 + 0x90) & 8" (pointer_expression "*(byte *)(local_40 + 0x90)" * (cast_expression "(byte *)(local_40 + 0x90)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x90)" ( (binary_expression "local_40 + 0x90" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00);\n      }" { (expression_statement "FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00)" identifier (argument_list "(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00)" ( (binary_expression "unaff_EDI + 0x196df3" identifier + number_literal) , number_literal , (binary_expression "&UNK_0019960b + unaff_EDI" (pointer_expression "&UNK_0019960b" & identifier) + identifier) , identifier ))) ;) })) (expression_statement "*(byte *)(local_40 + 0x90) = *(byte *)(local_40 + 0x90) | 4;" (assignment_expression "*(byte *)(local_40 + 0x90) = *(byte *)(local_40 + 0x90) | 4" (pointer_expression "*(byte *)(local_40 + 0x90)" * (cast_expression "(byte *)(local_40 + 0x90)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x90)" ( (binary_expression "local_40 + 0x90" identifier + number_literal) )))) = (binary_expression "*(byte *)(local_40 + 0x90) | 4" (pointer_expression "*(byte *)(local_40 + 0x90)" * (cast_expression "(byte *)(local_40 + 0x90)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x90)" ( (binary_expression "local_40 + 0x90" identifier + number_literal) )))) | number_literal)) ;) (if_statement "if ((((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)) || (*(int *)(local_40 + 0x4c) != 0)) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1);\n      }" if (parenthesized_expression "((((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)) || (*(int *)(local_40 + 0x4c) != 0))" ( (binary_expression "(((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)) || (*(int *)(local_40 + 0x4c) != 0)" (parenthesized_expression "(((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0))" ( (binary_expression "((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)" (parenthesized_expression "((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0))))" ( (binary_expression "(*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))" (parenthesized_expression "(*(int *)(local_40 + 0x44) != 0)" ( (binary_expression "*(int *)(local_40 + 0x44) != 0" (pointer_expression "*(int *)(local_40 + 0x44)" * (cast_expression "(int *)(local_40 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x44)" ( (binary_expression "local_40 + 0x44" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))" ( (parenthesized_expression "(param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0))" ( (binary_expression "param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)" (binary_expression "param_5 != *(int *)(local_40 + 0x44)" identifier != (pointer_expression "*(int *)(local_40 + 0x44)" * (cast_expression "(int *)(local_40 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x44)" ( (binary_expression "local_40 + 0x44" identifier + number_literal) ))))) || (parenthesized_expression "((*(byte *)(local_40 + 0x91) & 1) == 0)" ( (binary_expression "(*(byte *)(local_40 + 0x91) & 1) == 0" (parenthesized_expression "(*(byte *)(local_40 + 0x91) & 1)" ( (binary_expression "*(byte *)(local_40 + 0x91) & 1" (pointer_expression "*(byte *)(local_40 + 0x91)" * (cast_expression "(byte *)(local_40 + 0x91)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x91)" ( (binary_expression "local_40 + 0x91" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) ))) )) || (parenthesized_expression "(*(int *)(local_40 + 0x48) != 0)" ( (binary_expression "*(int *)(local_40 + 0x48) != 0" (pointer_expression "*(int *)(local_40 + 0x48)" * (cast_expression "(int *)(local_40 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x48)" ( (binary_expression "local_40 + 0x48" identifier + number_literal) )))) != number_literal) ))) )) || (parenthesized_expression "(*(int *)(local_40 + 0x4c) != 0)" ( (binary_expression "*(int *)(local_40 + 0x4c) != 0" (pointer_expression "*(int *)(local_40 + 0x4c)" * (cast_expression "(int *)(local_40 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x4c)" ( (binary_expression "local_40 + 0x4c" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1);\n      }" { (expression_statement "FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1)" identifier (argument_list "(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1)" ( (binary_expression "unaff_EDI + 0x196df3" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x1995f7" identifier + number_literal) , identifier ))) ;) })) (expression_statement "*(byte *)(local_40 + 0x91) = *(byte *)(local_40 + 0x91) | 1;" (assignment_expression "*(byte *)(local_40 + 0x91) = *(byte *)(local_40 + 0x91) | 1" (pointer_expression "*(byte *)(local_40 + 0x91)" * (cast_expression "(byte *)(local_40 + 0x91)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x91)" ( (binary_expression "local_40 + 0x91" identifier + number_literal) )))) = (binary_expression "*(byte *)(local_40 + 0x91) | 1" (pointer_expression "*(byte *)(local_40 + 0x91)" * (cast_expression "(byte *)(local_40 + 0x91)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x91)" ( (binary_expression "local_40 + 0x91" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "*(int *)(local_40 + 0x44) = param_5;" (assignment_expression "*(int *)(local_40 + 0x44) = param_5" (pointer_expression "*(int *)(local_40 + 0x44)" * (cast_expression "(int *)(local_40 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x44)" ( (binary_expression "local_40 + 0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_5 + 0xe4) = local_40;" (assignment_expression "*(int *)(param_5 + 0xe4) = local_40" (pointer_expression "*(int *)(param_5 + 0xe4)" * (cast_expression "(int *)(param_5 + 0xe4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + 0xe4)" ( (binary_expression "param_5 + 0xe4" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) })) (if_statement "if (iVar1 == 9) {\n                    \n      FUN_000bb100(local_40,0x10,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    \n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x273047;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }\n    else {\n      if (iVar1 != 4) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);\n      }\n      FUN_000bb100(local_40,0x18,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    \n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x2730b3;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }" if (parenthesized_expression "(iVar1 == 9)" ( (binary_expression "iVar1 == 9" identifier == number_literal) )) (compound_statement "{\n                    \n      FUN_000bb100(local_40,0x10,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    \n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x273047;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }" { (expression_statement "FUN_000bb100(local_40,0x10,0);" (call_expression "FUN_000bb100(local_40,0x10,0)" identifier (argument_list "(local_40,0x10,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "piVar4 = (int *)FUN_0017ebf0(0x30);" (assignment_expression "piVar4 = (int *)FUN_0017ebf0(0x30)" identifier = (cast_expression "(int *)FUN_0017ebf0(0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017ebf0(0x30)" identifier (argument_list "(0x30)" ( number_literal ))))) ;) (expression_statement "uVar6 = FUN_000ba570(0x40);" (assignment_expression "uVar6 = FUN_000ba570(0x40)" identifier = (call_expression "FUN_000ba570(0x40)" identifier (argument_list "(0x40)" ( number_literal )))) ;) (expression_statement "piVar4[9] = (int)uVar6;" (assignment_expression "piVar4[9] = (int)uVar6" (subscript_expression "piVar4[9]" identifier [ number_literal ]) = (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*piVar4 = unaff_EDI + 0x273047;" (assignment_expression "*piVar4 = unaff_EDI + 0x273047" (pointer_expression "*piVar4" * identifier) = (binary_expression "unaff_EDI + 0x273047" identifier + number_literal)) ;) (expression_statement "piVar4[1] = 0;" (assignment_expression "piVar4[1] = 0" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[2] = 0;" (assignment_expression "piVar4[2] = 0" (subscript_expression "piVar4[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[3] = 0;" (assignment_expression "piVar4[3] = 0" (subscript_expression "piVar4[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[4] = 0;" (assignment_expression "piVar4[4] = 0" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[5] = -1;" (assignment_expression "piVar4[5] = -1" (subscript_expression "piVar4[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[6] = -1;" (assignment_expression "piVar4[6] = -1" (subscript_expression "piVar4[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;" (assignment_expression "*(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0" (pointer_expression "*(byte *)(piVar4 + 7)" * (cast_expression "(byte *)(piVar4 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + 7)" ( (binary_expression "piVar4 + 7" identifier + number_literal) )))) = (binary_expression "*(byte *)(piVar4 + 7) & 0xe0" (pointer_expression "*(byte *)(piVar4 + 7)" * (cast_expression "(byte *)(piVar4 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + 7)" ( (binary_expression "piVar4 + 7" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "piVar4[8] = 0;" (assignment_expression "piVar4[8] = 0" (subscript_expression "piVar4[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);" (assignment_expression "piVar4[10] = (int)((ulonglong)uVar6 >> 0x20)" (subscript_expression "piVar4[10]" identifier [ number_literal ]) = (cast_expression "(int)((ulonglong)uVar6 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar6 >> 0x20)" ( (binary_expression "(ulonglong)uVar6 >> 0x20" (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "piVar4[0xb] = param_6;" (assignment_expression "piVar4[0xb] = param_6" (subscript_expression "piVar4[0xb]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n      if (iVar1 != 4) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);\n      }\n      FUN_000bb100(local_40,0x18,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    \n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x2730b3;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }" else (compound_statement "{\n      if (iVar1 != 4) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);\n      }\n      FUN_000bb100(local_40,0x18,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    \n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x2730b3;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }" { (if_statement "if (iVar1 != 4) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);\n      }" if (parenthesized_expression "(iVar1 != 4)" ( (binary_expression "iVar1 != 4" identifier != number_literal) )) (compound_statement "{\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);\n      }" { (expression_statement "FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5)" identifier (argument_list "(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5)" ( (binary_expression "unaff_EDI + 0x1986df" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x1995d7" identifier + number_literal) , identifier ))) ;) })) (expression_statement "FUN_000bb100(local_40,0x18,0);" (call_expression "FUN_000bb100(local_40,0x18,0)" identifier (argument_list "(local_40,0x18,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "piVar4 = (int *)FUN_0017ebf0(0x30);" (assignment_expression "piVar4 = (int *)FUN_0017ebf0(0x30)" identifier = (cast_expression "(int *)FUN_0017ebf0(0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017ebf0(0x30)" identifier (argument_list "(0x30)" ( number_literal ))))) ;) (expression_statement "uVar6 = FUN_000ba570(0x40);" (assignment_expression "uVar6 = FUN_000ba570(0x40)" identifier = (call_expression "FUN_000ba570(0x40)" identifier (argument_list "(0x40)" ( number_literal )))) ;) (expression_statement "piVar4[9] = (int)uVar6;" (assignment_expression "piVar4[9] = (int)uVar6" (subscript_expression "piVar4[9]" identifier [ number_literal ]) = (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*piVar4 = unaff_EDI + 0x2730b3;" (assignment_expression "*piVar4 = unaff_EDI + 0x2730b3" (pointer_expression "*piVar4" * identifier) = (binary_expression "unaff_EDI + 0x2730b3" identifier + number_literal)) ;) (expression_statement "*(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;" (assignment_expression "*(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0" (pointer_expression "*(byte *)(piVar4 + 7)" * (cast_expression "(byte *)(piVar4 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + 7)" ( (binary_expression "piVar4 + 7" identifier + number_literal) )))) = (binary_expression "*(byte *)(piVar4 + 7) & 0xe0" (pointer_expression "*(byte *)(piVar4 + 7)" * (cast_expression "(byte *)(piVar4 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar4 + 7)" ( (binary_expression "piVar4 + 7" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "piVar4[1] = 0;" (assignment_expression "piVar4[1] = 0" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[2] = 0;" (assignment_expression "piVar4[2] = 0" (subscript_expression "piVar4[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[3] = 0;" (assignment_expression "piVar4[3] = 0" (subscript_expression "piVar4[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[4] = 0;" (assignment_expression "piVar4[4] = 0" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[5] = -1;" (assignment_expression "piVar4[5] = -1" (subscript_expression "piVar4[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[6] = -1;" (assignment_expression "piVar4[6] = -1" (subscript_expression "piVar4[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[8] = 0;" (assignment_expression "piVar4[8] = 0" (subscript_expression "piVar4[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);" (assignment_expression "piVar4[10] = (int)((ulonglong)uVar6 >> 0x20)" (subscript_expression "piVar4[10]" identifier [ number_literal ]) = (cast_expression "(int)((ulonglong)uVar6 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar6 >> 0x20)" ( (binary_expression "(ulonglong)uVar6 >> 0x20" (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "piVar4[0xb] = param_6;" (assignment_expression "piVar4[0xb] = param_6" (subscript_expression "piVar4[0xb]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "FUN_000bf250(local_40,piVar4);" (call_expression "FUN_000bf250(local_40,piVar4)" identifier (argument_list "(local_40,piVar4)" ( identifier , identifier ))) ;) (if_statement "if (*(int *)(param_6 + 0x10) == 0) {\n      *(int **)(param_6 + 0x10) = piVar4;\n      if (local_34 != local_2c) {\n        FUN_001807a0(local_34);\n      }\n      return local_40;\n    }" if (parenthesized_expression "(*(int *)(param_6 + 0x10) == 0)" ( (binary_expression "*(int *)(param_6 + 0x10) == 0" (pointer_expression "*(int *)(param_6 + 0x10)" * (cast_expression "(int *)(param_6 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + 0x10)" ( (binary_expression "param_6 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      *(int **)(param_6 + 0x10) = piVar4;\n      if (local_34 != local_2c) {\n        FUN_001807a0(local_34);\n      }\n      return local_40;\n    }" { (expression_statement "*(int **)(param_6 + 0x10) = piVar4;" (assignment_expression "*(int **)(param_6 + 0x10) = piVar4" (pointer_expression "*(int **)(param_6 + 0x10)" * (cast_expression "(int **)(param_6 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_6 + 0x10)" ( (binary_expression "param_6 + 0x10" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_34 != local_2c) {\n        FUN_001807a0(local_34);\n      }" if (parenthesized_expression "(local_34 != local_2c)" ( (binary_expression "local_34 != local_2c" identifier != identifier) )) (compound_statement "{\n        FUN_001807a0(local_34);\n      }" { (expression_statement "FUN_001807a0(local_34);" (call_expression "FUN_001807a0(local_34)" identifier (argument_list "(local_34)" ( identifier ))) ;) })) (return_statement "return local_40;" return identifier ;) })) (expression_statement "FUN_0005f0b0(unaff_EDI + 0x199399,0x11a,unaff_EDI + 0x1995e7,extraout_EDX);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x199399,0x11a,unaff_EDI + 0x1995e7,extraout_EDX)" identifier (argument_list "(unaff_EDI + 0x199399,0x11a,unaff_EDI + 0x1995e7,extraout_EDX)" ( (binary_expression "unaff_EDI + 0x199399" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x1995e7" identifier + number_literal) , identifier ))) ;) })) (expression_statement "FUN_001c6190(unaff_EDI + 0x195d29);" (call_expression "FUN_001c6190(unaff_EDI + 0x195d29)" identifier (argument_list "(unaff_EDI + 0x195d29)" ( (binary_expression "unaff_EDI + 0x195d29" identifier + number_literal) ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * 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 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 = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) + LIT) ))))) ;) (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) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression & IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , LIT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression LIT - IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , 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 IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression (pointer_expression & IDENT) + IDENT) , IDENT ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) ))) )) ))) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) , IDENT ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) , IDENT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) , IDENT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) })))
(function_definition "int FUN_0008a810(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,int param_5,\n                int param_6)\n\n{\n  int iVar1;\n  char *__s;\n  undefined1 *puVar2;\n  size_t sVar3;\n  int *piVar4;\n  undefined4 extraout_ECX;\n  undefined4 extraout_ECX_00;\n  undefined4 extraout_EDX;\n  int unaff_EDI;\n  int iVar5;\n  undefined8 uVar6;\n  undefined4 uVar7;\n  int local_40;\n  undefined1 *local_34;\n  int local_30;\n  undefined1 local_2c [28];\n  \n  FUN_0004fb7e();\n  iVar5 = unaff_EDI + 0x2777e7;\n  iVar1 = *(int *)(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8);\n  if (iVar1 == 0) {\n                    \n    FUN_0005f0b0(&UNK_00196157 + unaff_EDI,0x5c,unaff_EDI + 0x199b8f);\n  }\n  if ((*(char *)(iVar1 + 0x318d) == '\0') && (*(char *)(iVar1 + 0x3095) == '\0')) {\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1986df,0x52d,unaff_EDI + 0x1995d7);\n  }\n  iVar1 = *(int *)(*param_4 + 4);\n  local_30 = 0;\n  local_2c[0] = 0;\n  local_34 = local_2c;\n  if (iVar1 == 9) {\n    puVar2 = &LAB_0019938e + unaff_EDI;\n    uVar7 = 4;\n  }\n  else {\n    if (iVar1 != 4) {\n                    \n      FUN_0005f0b0(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX);\n    }\n    puVar2 = (undefined1 *)(unaff_EDI + 0x199393);\n    uVar7 = 5;\n  }\n                    \n  FUN_001893e0(&local_34,0,0,puVar2,uVar7);\n  __s = *(char **)(param_5 + 0x20);\n  sVar3 = strlen(__s);\n  if (sVar3 <= 0x7fffffffU - local_30) {\n    FUN_00189fb0(&local_34,__s,sVar3);\n    local_40 = *(int *)(param_5 + 0xe4);\n    if (local_40 == 0) {\n                    \n      uVar7 = FUN_001200e0(param_1 + 8,local_34,1,0);\n      local_40 = FUN_0007fe90(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0);\n      if (((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)) ||\n         ((*(byte *)(local_40 + 0x90) & 8) != 0)) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00);\n      }\n      *(byte *)(local_40 + 0x90) = *(byte *)(local_40 + 0x90) | 4;\n      if ((((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)) || (*(int *)(local_40 + 0x4c) != 0)) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1);\n      }\n      *(byte *)(local_40 + 0x91) = *(byte *)(local_40 + 0x91) | 1;\n      *(int *)(local_40 + 0x44) = param_5;\n      *(int *)(param_5 + 0xe4) = local_40;\n      iVar5 = 0;\n    }\n    if (iVar1 == 9) {\n                    \n      FUN_000bb100(local_40,0x10,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    \n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x273047;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }\n    else {\n      if (iVar1 != 4) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);\n      }\n      FUN_000bb100(local_40,0x18,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    \n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x2730b3;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }\n                    \n    FUN_000bf250(local_40,piVar4);\n    if (*(int *)(param_6 + 0x10) == 0) {\n      *(int **)(param_6 + 0x10) = piVar4;\n      if (local_34 != local_2c) {\n        FUN_001807a0(local_34);\n      }\n      return local_40;\n    }\n                    \n                    \n    FUN_0005f0b0(unaff_EDI + 0x199399,0x11a,unaff_EDI + 0x1995e7,extraout_EDX);\n  }\n                    \n  FUN_001c6190(unaff_EDI + 0x195d29);\n}" (primitive_type "int") (function_declarator "FUN_0008a810(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,int param_5,\n                int param_6)" (identifier "FUN_0008a810") (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,int param_5,\n                int param_6)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "int *param_4" (primitive_type "int") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) (, ",") (parameter_declaration "int param_6" (primitive_type "int") (identifier "param_6")) () ")"))) (compound_statement "{\n  int iVar1;\n  char *__s;\n  undefined1 *puVar2;\n  size_t sVar3;\n  int *piVar4;\n  undefined4 extraout_ECX;\n  undefined4 extraout_ECX_00;\n  undefined4 extraout_EDX;\n  int unaff_EDI;\n  int iVar5;\n  undefined8 uVar6;\n  undefined4 uVar7;\n  int local_40;\n  undefined1 *local_34;\n  int local_30;\n  undefined1 local_2c [28];\n  \n  FUN_0004fb7e();\n  iVar5 = unaff_EDI + 0x2777e7;\n  iVar1 = *(int *)(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8);\n  if (iVar1 == 0) {\n                    \n    FUN_0005f0b0(&UNK_00196157 + unaff_EDI,0x5c,unaff_EDI + 0x199b8f);\n  }\n  if ((*(char *)(iVar1 + 0x318d) == '\0') && (*(char *)(iVar1 + 0x3095) == '\0')) {\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1986df,0x52d,unaff_EDI + 0x1995d7);\n  }\n  iVar1 = *(int *)(*param_4 + 4);\n  local_30 = 0;\n  local_2c[0] = 0;\n  local_34 = local_2c;\n  if (iVar1 == 9) {\n    puVar2 = &LAB_0019938e + unaff_EDI;\n    uVar7 = 4;\n  }\n  else {\n    if (iVar1 != 4) {\n                    \n      FUN_0005f0b0(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX);\n    }\n    puVar2 = (undefined1 *)(unaff_EDI + 0x199393);\n    uVar7 = 5;\n  }\n                    \n  FUN_001893e0(&local_34,0,0,puVar2,uVar7);\n  __s = *(char **)(param_5 + 0x20);\n  sVar3 = strlen(__s);\n  if (sVar3 <= 0x7fffffffU - local_30) {\n    FUN_00189fb0(&local_34,__s,sVar3);\n    local_40 = *(int *)(param_5 + 0xe4);\n    if (local_40 == 0) {\n                    \n      uVar7 = FUN_001200e0(param_1 + 8,local_34,1,0);\n      local_40 = FUN_0007fe90(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0);\n      if (((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)) ||\n         ((*(byte *)(local_40 + 0x90) & 8) != 0)) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00);\n      }\n      *(byte *)(local_40 + 0x90) = *(byte *)(local_40 + 0x90) | 4;\n      if ((((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)) || (*(int *)(local_40 + 0x4c) != 0)) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1);\n      }\n      *(byte *)(local_40 + 0x91) = *(byte *)(local_40 + 0x91) | 1;\n      *(int *)(local_40 + 0x44) = param_5;\n      *(int *)(param_5 + 0xe4) = local_40;\n      iVar5 = 0;\n    }\n    if (iVar1 == 9) {\n                    \n      FUN_000bb100(local_40,0x10,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    \n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x273047;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }\n    else {\n      if (iVar1 != 4) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);\n      }\n      FUN_000bb100(local_40,0x18,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    \n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x2730b3;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }\n                    \n    FUN_000bf250(local_40,piVar4);\n    if (*(int *)(param_6 + 0x10) == 0) {\n      *(int **)(param_6 + 0x10) = piVar4;\n      if (local_34 != local_2c) {\n        FUN_001807a0(local_34);\n      }\n      return local_40;\n    }\n                    \n                    \n    FUN_0005f0b0(unaff_EDI + 0x199399,0x11a,unaff_EDI + 0x1995e7,extraout_EDX);\n  }\n                    \n  FUN_001c6190(unaff_EDI + 0x195d29);\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "undefined1 *puVar2;" (type_identifier "undefined1") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "size_t sVar3;" (primitive_type "size_t") (identifier "sVar3") (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "undefined4 extraout_ECX;" (type_identifier "undefined4") (identifier "extraout_ECX") (; ";")) (declaration "undefined4 extraout_ECX_00;" (type_identifier "undefined4") (identifier "extraout_ECX_00") (; ";")) (declaration "undefined4 extraout_EDX;" (type_identifier "undefined4") (identifier "extraout_EDX") (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "undefined8 uVar6;" (type_identifier "undefined8") (identifier "uVar6") (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "int local_40;" (primitive_type "int") (identifier "local_40") (; ";")) (declaration "undefined1 *local_34;" (type_identifier "undefined1") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (declaration "int local_30;" (primitive_type "int") (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_0004fb7e();" (call_expression "FUN_0004fb7e()" (identifier "FUN_0004fb7e") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar5 = unaff_EDI + 0x2777e7;" (assignment_expression "iVar5 = unaff_EDI + 0x2777e7" (identifier "iVar5") (= "=") (binary_expression "unaff_EDI + 0x2777e7" (identifier "unaff_EDI") (+ "+") (number_literal "0x2777e7"))) (; ";")) (expression_statement "iVar1 = *(int *)(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8);" (assignment_expression "iVar1 = *(int *)(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8)" (* "*") (cast_expression "(int *)(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8)" (( "(") (binary_expression "*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8" (pointer_expression "*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72)" (* "*") (cast_expression "(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(BYTE_ARRAY_00277aed + unaff_EDI + 0x72)" (( "(") (binary_expression "BYTE_ARRAY_00277aed + unaff_EDI + 0x72" (binary_expression "BYTE_ARRAY_00277aed + unaff_EDI" (identifier "BYTE_ARRAY_00277aed") (+ "+") (identifier "unaff_EDI")) (+ "+") (number_literal "0x72")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar1 == 0) {\n                    \n    FUN_0005f0b0(&UNK_00196157 + unaff_EDI,0x5c,unaff_EDI + 0x199b8f);\n  }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_0005f0b0(&UNK_00196157 + unaff_EDI,0x5c,unaff_EDI + 0x199b8f);\n  }" ({ "{") (expression_statement "FUN_0005f0b0(&UNK_00196157 + unaff_EDI,0x5c,unaff_EDI + 0x199b8f);" (call_expression "FUN_0005f0b0(&UNK_00196157 + unaff_EDI,0x5c,unaff_EDI + 0x199b8f)" (identifier "FUN_0005f0b0") (argument_list "(&UNK_00196157 + unaff_EDI,0x5c,unaff_EDI + 0x199b8f)" (( "(") (binary_expression "&UNK_00196157 + unaff_EDI" (pointer_expression "&UNK_00196157" (& "&") (identifier "UNK_00196157")) (+ "+") (identifier "unaff_EDI")) (, ",") (number_literal "0x5c") (, ",") (binary_expression "unaff_EDI + 0x199b8f" (identifier "unaff_EDI") (+ "+") (number_literal "0x199b8f")) () ")"))) (; ";")) (} "}"))) (if_statement "if ((*(char *)(iVar1 + 0x318d) == '\0') && (*(char *)(iVar1 + 0x3095) == '\0')) {\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1986df,0x52d,unaff_EDI + 0x1995d7);\n  }" (if "if") (parenthesized_expression "((*(char *)(iVar1 + 0x318d) == '\0') && (*(char *)(iVar1 + 0x3095) == '\0'))" (( "(") (binary_expression "(*(char *)(iVar1 + 0x318d) == '\0') && (*(char *)(iVar1 + 0x3095) == '\0')" (parenthesized_expression "(*(char *)(iVar1 + 0x318d) == '\0')" (( "(") (binary_expression "*(char *)(iVar1 + 0x318d) == '\0'" (pointer_expression "*(char *)(iVar1 + 0x318d)" (* "*") (cast_expression "(char *)(iVar1 + 0x318d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x318d)" (( "(") (binary_expression "iVar1 + 0x318d" (identifier "iVar1") (+ "+") (number_literal "0x318d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(iVar1 + 0x3095) == '\0')" (( "(") (binary_expression "*(char *)(iVar1 + 0x3095) == '\0'" (pointer_expression "*(char *)(iVar1 + 0x3095)" (* "*") (cast_expression "(char *)(iVar1 + 0x3095)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x3095)" (( "(") (binary_expression "iVar1 + 0x3095" (identifier "iVar1") (+ "+") (number_literal "0x3095")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n                    \n    FUN_0005f0b0(unaff_EDI + 0x1986df,0x52d,unaff_EDI + 0x1995d7);\n  }" ({ "{") (expression_statement "FUN_0005f0b0(unaff_EDI + 0x1986df,0x52d,unaff_EDI + 0x1995d7);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x1986df,0x52d,unaff_EDI + 0x1995d7)" (identifier "FUN_0005f0b0") (argument_list "(unaff_EDI + 0x1986df,0x52d,unaff_EDI + 0x1995d7)" (( "(") (binary_expression "unaff_EDI + 0x1986df" (identifier "unaff_EDI") (+ "+") (number_literal "0x1986df")) (, ",") (number_literal "0x52d") (, ",") (binary_expression "unaff_EDI + 0x1995d7" (identifier "unaff_EDI") (+ "+") (number_literal "0x1995d7")) () ")"))) (; ";")) (} "}"))) (expression_statement "iVar1 = *(int *)(*param_4 + 4);" (assignment_expression "iVar1 = *(int *)(*param_4 + 4)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(*param_4 + 4)" (* "*") (cast_expression "(int *)(*param_4 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_4 + 4)" (( "(") (binary_expression "*param_4 + 4" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (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")) (; ";")) (if_statement "if (iVar1 == 9) {\n    puVar2 = &LAB_0019938e + unaff_EDI;\n    uVar7 = 4;\n  }\n  else {\n    if (iVar1 != 4) {\n                    \n      FUN_0005f0b0(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX);\n    }\n    puVar2 = (undefined1 *)(unaff_EDI + 0x199393);\n    uVar7 = 5;\n  }" (if "if") (parenthesized_expression "(iVar1 == 9)" (( "(") (binary_expression "iVar1 == 9" (identifier "iVar1") (== "==") (number_literal "9")) () ")")) (compound_statement "{\n    puVar2 = &LAB_0019938e + unaff_EDI;\n    uVar7 = 4;\n  }" ({ "{") (expression_statement "puVar2 = &LAB_0019938e + unaff_EDI;" (assignment_expression "puVar2 = &LAB_0019938e + unaff_EDI" (identifier "puVar2") (= "=") (binary_expression "&LAB_0019938e + unaff_EDI" (pointer_expression "&LAB_0019938e" (& "&") (identifier "LAB_0019938e")) (+ "+") (identifier "unaff_EDI"))) (; ";")) (expression_statement "uVar7 = 4;" (assignment_expression "uVar7 = 4" (identifier "uVar7") (= "=") (number_literal "4")) (; ";")) (} "}")) (else_clause "else {\n    if (iVar1 != 4) {\n                    \n      FUN_0005f0b0(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX);\n    }\n    puVar2 = (undefined1 *)(unaff_EDI + 0x199393);\n    uVar7 = 5;\n  }" (else "else") (compound_statement "{\n    if (iVar1 != 4) {\n                    \n      FUN_0005f0b0(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX);\n    }\n    puVar2 = (undefined1 *)(unaff_EDI + 0x199393);\n    uVar7 = 5;\n  }" ({ "{") (if_statement "if (iVar1 != 4) {\n                    \n      FUN_0005f0b0(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX);\n    }" (if "if") (parenthesized_expression "(iVar1 != 4)" (( "(") (binary_expression "iVar1 != 4" (identifier "iVar1") (!= "!=") (number_literal "4")) () ")")) (compound_statement "{\n                    \n      FUN_0005f0b0(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX);\n    }" ({ "{") (expression_statement "FUN_0005f0b0(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX)" (identifier "FUN_0005f0b0") (argument_list "(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX)" (( "(") (binary_expression "unaff_EDI + 0x1986df" (identifier "unaff_EDI") (+ "+") (number_literal "0x1986df")) (, ",") (number_literal "0x537") (, ",") (binary_expression "unaff_EDI + 0x1995d7" (identifier "unaff_EDI") (+ "+") (number_literal "0x1995d7")) (, ",") (identifier "extraout_ECX") () ")"))) (; ";")) (} "}"))) (expression_statement "puVar2 = (undefined1 *)(unaff_EDI + 0x199393);" (assignment_expression "puVar2 = (undefined1 *)(unaff_EDI + 0x199393)" (identifier "puVar2") (= "=") (cast_expression "(undefined1 *)(unaff_EDI + 0x199393)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x199393)" (( "(") (binary_expression "unaff_EDI + 0x199393" (identifier "unaff_EDI") (+ "+") (number_literal "0x199393")) () ")")))) (; ";")) (expression_statement "uVar7 = 5;" (assignment_expression "uVar7 = 5" (identifier "uVar7") (= "=") (number_literal "5")) (; ";")) (} "}")))) (expression_statement "FUN_001893e0(&local_34,0,0,puVar2,uVar7);" (call_expression "FUN_001893e0(&local_34,0,0,puVar2,uVar7)" (identifier "FUN_001893e0") (argument_list "(&local_34,0,0,puVar2,uVar7)" (( "(") (pointer_expression "&local_34" (& "&") (identifier "local_34")) (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "puVar2") (, ",") (identifier "uVar7") () ")"))) (; ";")) (expression_statement "__s = *(char **)(param_5 + 0x20);" (assignment_expression "__s = *(char **)(param_5 + 0x20)" (identifier "__s") (= "=") (pointer_expression "*(char **)(param_5 + 0x20)" (* "*") (cast_expression "(char **)(param_5 + 0x20)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_5 + 0x20)" (( "(") (binary_expression "param_5 + 0x20" (identifier "param_5") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "sVar3 = strlen(__s);" (assignment_expression "sVar3 = strlen(__s)" (identifier "sVar3") (= "=") (call_expression "strlen(__s)" (identifier "strlen") (argument_list "(__s)" (( "(") (identifier "__s") () ")")))) (; ";")) (if_statement "if (sVar3 <= 0x7fffffffU - local_30) {\n    FUN_00189fb0(&local_34,__s,sVar3);\n    local_40 = *(int *)(param_5 + 0xe4);\n    if (local_40 == 0) {\n                    \n      uVar7 = FUN_001200e0(param_1 + 8,local_34,1,0);\n      local_40 = FUN_0007fe90(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0);\n      if (((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)) ||\n         ((*(byte *)(local_40 + 0x90) & 8) != 0)) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00);\n      }\n      *(byte *)(local_40 + 0x90) = *(byte *)(local_40 + 0x90) | 4;\n      if ((((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)) || (*(int *)(local_40 + 0x4c) != 0)) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1);\n      }\n      *(byte *)(local_40 + 0x91) = *(byte *)(local_40 + 0x91) | 1;\n      *(int *)(local_40 + 0x44) = param_5;\n      *(int *)(param_5 + 0xe4) = local_40;\n      iVar5 = 0;\n    }\n    if (iVar1 == 9) {\n                    \n      FUN_000bb100(local_40,0x10,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    \n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x273047;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }\n    else {\n      if (iVar1 != 4) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);\n      }\n      FUN_000bb100(local_40,0x18,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    \n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x2730b3;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }\n                    \n    FUN_000bf250(local_40,piVar4);\n    if (*(int *)(param_6 + 0x10) == 0) {\n      *(int **)(param_6 + 0x10) = piVar4;\n      if (local_34 != local_2c) {\n        FUN_001807a0(local_34);\n      }\n      return local_40;\n    }\n                    \n                    \n    FUN_0005f0b0(unaff_EDI + 0x199399,0x11a,unaff_EDI + 0x1995e7,extraout_EDX);\n  }" (if "if") (parenthesized_expression "(sVar3 <= 0x7fffffffU - local_30)" (( "(") (binary_expression "sVar3 <= 0x7fffffffU - local_30" (identifier "sVar3") (<= "<=") (binary_expression "0x7fffffffU - local_30" (number_literal "0x7fffffffU") (- "-") (identifier "local_30"))) () ")")) (compound_statement "{\n    FUN_00189fb0(&local_34,__s,sVar3);\n    local_40 = *(int *)(param_5 + 0xe4);\n    if (local_40 == 0) {\n                    \n      uVar7 = FUN_001200e0(param_1 + 8,local_34,1,0);\n      local_40 = FUN_0007fe90(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0);\n      if (((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)) ||\n         ((*(byte *)(local_40 + 0x90) & 8) != 0)) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00);\n      }\n      *(byte *)(local_40 + 0x90) = *(byte *)(local_40 + 0x90) | 4;\n      if ((((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)) || (*(int *)(local_40 + 0x4c) != 0)) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1);\n      }\n      *(byte *)(local_40 + 0x91) = *(byte *)(local_40 + 0x91) | 1;\n      *(int *)(local_40 + 0x44) = param_5;\n      *(int *)(param_5 + 0xe4) = local_40;\n      iVar5 = 0;\n    }\n    if (iVar1 == 9) {\n                    \n      FUN_000bb100(local_40,0x10,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    \n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x273047;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }\n    else {\n      if (iVar1 != 4) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);\n      }\n      FUN_000bb100(local_40,0x18,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    \n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x2730b3;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }\n                    \n    FUN_000bf250(local_40,piVar4);\n    if (*(int *)(param_6 + 0x10) == 0) {\n      *(int **)(param_6 + 0x10) = piVar4;\n      if (local_34 != local_2c) {\n        FUN_001807a0(local_34);\n      }\n      return local_40;\n    }\n                    \n                    \n    FUN_0005f0b0(unaff_EDI + 0x199399,0x11a,unaff_EDI + 0x1995e7,extraout_EDX);\n  }" ({ "{") (expression_statement "FUN_00189fb0(&local_34,__s,sVar3);" (call_expression "FUN_00189fb0(&local_34,__s,sVar3)" (identifier "FUN_00189fb0") (argument_list "(&local_34,__s,sVar3)" (( "(") (pointer_expression "&local_34" (& "&") (identifier "local_34")) (, ",") (identifier "__s") (, ",") (identifier "sVar3") () ")"))) (; ";")) (expression_statement "local_40 = *(int *)(param_5 + 0xe4);" (assignment_expression "local_40 = *(int *)(param_5 + 0xe4)" (identifier "local_40") (= "=") (pointer_expression "*(int *)(param_5 + 0xe4)" (* "*") (cast_expression "(int *)(param_5 + 0xe4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0xe4)" (( "(") (binary_expression "param_5 + 0xe4" (identifier "param_5") (+ "+") (number_literal "0xe4")) () ")"))))) (; ";")) (if_statement "if (local_40 == 0) {\n                    \n      uVar7 = FUN_001200e0(param_1 + 8,local_34,1,0);\n      local_40 = FUN_0007fe90(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0);\n      if (((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)) ||\n         ((*(byte *)(local_40 + 0x90) & 8) != 0)) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00);\n      }\n      *(byte *)(local_40 + 0x90) = *(byte *)(local_40 + 0x90) | 4;\n      if ((((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)) || (*(int *)(local_40 + 0x4c) != 0)) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1);\n      }\n      *(byte *)(local_40 + 0x91) = *(byte *)(local_40 + 0x91) | 1;\n      *(int *)(local_40 + 0x44) = param_5;\n      *(int *)(param_5 + 0xe4) = local_40;\n      iVar5 = 0;\n    }" (if "if") (parenthesized_expression "(local_40 == 0)" (( "(") (binary_expression "local_40 == 0" (identifier "local_40") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n      uVar7 = FUN_001200e0(param_1 + 8,local_34,1,0);\n      local_40 = FUN_0007fe90(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0);\n      if (((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)) ||\n         ((*(byte *)(local_40 + 0x90) & 8) != 0)) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00);\n      }\n      *(byte *)(local_40 + 0x90) = *(byte *)(local_40 + 0x90) | 4;\n      if ((((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)) || (*(int *)(local_40 + 0x4c) != 0)) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1);\n      }\n      *(byte *)(local_40 + 0x91) = *(byte *)(local_40 + 0x91) | 1;\n      *(int *)(local_40 + 0x44) = param_5;\n      *(int *)(param_5 + 0xe4) = local_40;\n      iVar5 = 0;\n    }" ({ "{") (expression_statement "uVar7 = FUN_001200e0(param_1 + 8,local_34,1,0);" (assignment_expression "uVar7 = FUN_001200e0(param_1 + 8,local_34,1,0)" (identifier "uVar7") (= "=") (call_expression "FUN_001200e0(param_1 + 8,local_34,1,0)" (identifier "FUN_001200e0") (argument_list "(param_1 + 8,local_34,1,0)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) (, ",") (identifier "local_34") (, ",") (number_literal "1") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "local_40 = FUN_0007fe90(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0);" (assignment_expression "local_40 = FUN_0007fe90(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0)" (identifier "local_40") (= "=") (call_expression "FUN_0007fe90(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0)" (identifier "FUN_0007fe90") (argument_list "(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),\n                              *(undefined4 *)(*param_4 + 0xc),0,0)" (( "(") (identifier "param_1") (, ",") (identifier "uVar7") (, ",") (identifier "iVar1") (, ",") (pointer_expression "*(undefined4 *)(*param_4 + 8)" (* "*") (cast_expression "(undefined4 *)(*param_4 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_4 + 8)" (( "(") (binary_expression "*param_4 + 8" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (+ "+") (number_literal "8")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(*param_4 + 0xc)" (* "*") (cast_expression "(undefined4 *)(*param_4 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_4 + 0xc)" (( "(") (binary_expression "*param_4 + 0xc" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (+ "+") (number_literal "0xc")) () ")")))) (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)) ||\n         ((*(byte *)(local_40 + 0x90) & 8) != 0)) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00);\n      }" (if "if") (parenthesized_expression "(((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)) ||\n         ((*(byte *)(local_40 + 0x90) & 8) != 0))" (( "(") (binary_expression "((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)) ||\n         ((*(byte *)(local_40 + 0x90) & 8) != 0)" (parenthesized_expression "((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0))" (( "(") (binary_expression "(*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)" (parenthesized_expression "(*(int *)(local_40 + 0x3c) != 0)" (( "(") (binary_expression "*(int *)(local_40 + 0x3c) != 0" (pointer_expression "*(int *)(local_40 + 0x3c)" (* "*") (cast_expression "(int *)(local_40 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40 + 0x3c)" (( "(") (binary_expression "local_40 + 0x3c" (identifier "local_40") (+ "+") (number_literal "0x3c")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(int *)(local_40 + 0x40) != 0)" (( "(") (binary_expression "*(int *)(local_40 + 0x40) != 0" (pointer_expression "*(int *)(local_40 + 0x40)" (* "*") (cast_expression "(int *)(local_40 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40 + 0x40)" (( "(") (binary_expression "local_40 + 0x40" (identifier "local_40") (+ "+") (number_literal "0x40")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (|| "||") (parenthesized_expression "((*(byte *)(local_40 + 0x90) & 8) != 0)" (( "(") (binary_expression "(*(byte *)(local_40 + 0x90) & 8) != 0" (parenthesized_expression "(*(byte *)(local_40 + 0x90) & 8)" (( "(") (binary_expression "*(byte *)(local_40 + 0x90) & 8" (pointer_expression "*(byte *)(local_40 + 0x90)" (* "*") (cast_expression "(byte *)(local_40 + 0x90)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40 + 0x90)" (( "(") (binary_expression "local_40 + 0x90" (identifier "local_40") (+ "+") (number_literal "0x90")) () ")")))) (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00);\n      }" ({ "{") (expression_statement "FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00)" (identifier "FUN_0005f0b0") (argument_list "(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00)" (( "(") (binary_expression "unaff_EDI + 0x196df3" (identifier "unaff_EDI") (+ "+") (number_literal "0x196df3")) (, ",") (number_literal "0xd1b") (, ",") (binary_expression "&UNK_0019960b + unaff_EDI" (pointer_expression "&UNK_0019960b" (& "&") (identifier "UNK_0019960b")) (+ "+") (identifier "unaff_EDI")) (, ",") (identifier "extraout_ECX_00") () ")"))) (; ";")) (} "}"))) (expression_statement "*(byte *)(local_40 + 0x90) = *(byte *)(local_40 + 0x90) | 4;" (assignment_expression "*(byte *)(local_40 + 0x90) = *(byte *)(local_40 + 0x90) | 4" (pointer_expression "*(byte *)(local_40 + 0x90)" (* "*") (cast_expression "(byte *)(local_40 + 0x90)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40 + 0x90)" (( "(") (binary_expression "local_40 + 0x90" (identifier "local_40") (+ "+") (number_literal "0x90")) () ")")))) (= "=") (binary_expression "*(byte *)(local_40 + 0x90) | 4" (pointer_expression "*(byte *)(local_40 + 0x90)" (* "*") (cast_expression "(byte *)(local_40 + 0x90)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40 + 0x90)" (( "(") (binary_expression "local_40 + 0x90" (identifier "local_40") (+ "+") (number_literal "0x90")) () ")")))) (| "|") (number_literal "4"))) (; ";")) (if_statement "if ((((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)) || (*(int *)(local_40 + 0x4c) != 0)) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1);\n      }" (if "if") (parenthesized_expression "((((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)) || (*(int *)(local_40 + 0x4c) != 0))" (( "(") (binary_expression "(((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)) || (*(int *)(local_40 + 0x4c) != 0)" (parenthesized_expression "(((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0))" (( "(") (binary_expression "((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||\n          (*(int *)(local_40 + 0x48) != 0)" (parenthesized_expression "((*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0))))" (( "(") (binary_expression "(*(int *)(local_40 + 0x44) != 0) &&\n           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))" (parenthesized_expression "(*(int *)(local_40 + 0x44) != 0)" (( "(") (binary_expression "*(int *)(local_40 + 0x44) != 0" (pointer_expression "*(int *)(local_40 + 0x44)" (* "*") (cast_expression "(int *)(local_40 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40 + 0x44)" (( "(") (binary_expression "local_40 + 0x44" (identifier "local_40") (+ "+") (number_literal "0x44")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))" (( "(") (parenthesized_expression "(param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0))" (( "(") (binary_expression "param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)" (binary_expression "param_5 != *(int *)(local_40 + 0x44)" (identifier "param_5") (!= "!=") (pointer_expression "*(int *)(local_40 + 0x44)" (* "*") (cast_expression "(int *)(local_40 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40 + 0x44)" (( "(") (binary_expression "local_40 + 0x44" (identifier "local_40") (+ "+") (number_literal "0x44")) () ")"))))) (|| "||") (parenthesized_expression "((*(byte *)(local_40 + 0x91) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(local_40 + 0x91) & 1) == 0" (parenthesized_expression "(*(byte *)(local_40 + 0x91) & 1)" (( "(") (binary_expression "*(byte *)(local_40 + 0x91) & 1" (pointer_expression "*(byte *)(local_40 + 0x91)" (* "*") (cast_expression "(byte *)(local_40 + 0x91)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40 + 0x91)" (( "(") (binary_expression "local_40 + 0x91" (identifier "local_40") (+ "+") (number_literal "0x91")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(*(int *)(local_40 + 0x48) != 0)" (( "(") (binary_expression "*(int *)(local_40 + 0x48) != 0" (pointer_expression "*(int *)(local_40 + 0x48)" (* "*") (cast_expression "(int *)(local_40 + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40 + 0x48)" (( "(") (binary_expression "local_40 + 0x48" (identifier "local_40") (+ "+") (number_literal "0x48")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(*(int *)(local_40 + 0x4c) != 0)" (( "(") (binary_expression "*(int *)(local_40 + 0x4c) != 0" (pointer_expression "*(int *)(local_40 + 0x4c)" (* "*") (cast_expression "(int *)(local_40 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40 + 0x4c)" (( "(") (binary_expression "local_40 + 0x4c" (identifier "local_40") (+ "+") (number_literal "0x4c")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                    \n        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1);\n      }" ({ "{") (expression_statement "FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1)" (identifier "FUN_0005f0b0") (argument_list "(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1)" (( "(") (binary_expression "unaff_EDI + 0x196df3" (identifier "unaff_EDI") (+ "+") (number_literal "0x196df3")) (, ",") (number_literal "0xd3a") (, ",") (binary_expression "unaff_EDI + 0x1995f7" (identifier "unaff_EDI") (+ "+") (number_literal "0x1995f7")) (, ",") (identifier "iVar1") () ")"))) (; ";")) (} "}"))) (expression_statement "*(byte *)(local_40 + 0x91) = *(byte *)(local_40 + 0x91) | 1;" (assignment_expression "*(byte *)(local_40 + 0x91) = *(byte *)(local_40 + 0x91) | 1" (pointer_expression "*(byte *)(local_40 + 0x91)" (* "*") (cast_expression "(byte *)(local_40 + 0x91)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40 + 0x91)" (( "(") (binary_expression "local_40 + 0x91" (identifier "local_40") (+ "+") (number_literal "0x91")) () ")")))) (= "=") (binary_expression "*(byte *)(local_40 + 0x91) | 1" (pointer_expression "*(byte *)(local_40 + 0x91)" (* "*") (cast_expression "(byte *)(local_40 + 0x91)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40 + 0x91)" (( "(") (binary_expression "local_40 + 0x91" (identifier "local_40") (+ "+") (number_literal "0x91")) () ")")))) (| "|") (number_literal "1"))) (; ";")) (expression_statement "*(int *)(local_40 + 0x44) = param_5;" (assignment_expression "*(int *)(local_40 + 0x44) = param_5" (pointer_expression "*(int *)(local_40 + 0x44)" (* "*") (cast_expression "(int *)(local_40 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40 + 0x44)" (( "(") (binary_expression "local_40 + 0x44" (identifier "local_40") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (identifier "param_5")) (; ";")) (expression_statement "*(int *)(param_5 + 0xe4) = local_40;" (assignment_expression "*(int *)(param_5 + 0xe4) = local_40" (pointer_expression "*(int *)(param_5 + 0xe4)" (* "*") (cast_expression "(int *)(param_5 + 0xe4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + 0xe4)" (( "(") (binary_expression "param_5 + 0xe4" (identifier "param_5") (+ "+") (number_literal "0xe4")) () ")")))) (= "=") (identifier "local_40")) (; ";")) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";")) (} "}"))) (if_statement "if (iVar1 == 9) {\n                    \n      FUN_000bb100(local_40,0x10,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    \n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x273047;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }\n    else {\n      if (iVar1 != 4) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);\n      }\n      FUN_000bb100(local_40,0x18,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    \n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x2730b3;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }" (if "if") (parenthesized_expression "(iVar1 == 9)" (( "(") (binary_expression "iVar1 == 9" (identifier "iVar1") (== "==") (number_literal "9")) () ")")) (compound_statement "{\n                    \n      FUN_000bb100(local_40,0x10,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    \n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x273047;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }" ({ "{") (expression_statement "FUN_000bb100(local_40,0x10,0);" (call_expression "FUN_000bb100(local_40,0x10,0)" (identifier "FUN_000bb100") (argument_list "(local_40,0x10,0)" (( "(") (identifier "local_40") (, ",") (number_literal "0x10") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "piVar4 = (int *)FUN_0017ebf0(0x30);" (assignment_expression "piVar4 = (int *)FUN_0017ebf0(0x30)" (identifier "piVar4") (= "=") (cast_expression "(int *)FUN_0017ebf0(0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017ebf0(0x30)" (identifier "FUN_0017ebf0") (argument_list "(0x30)" (( "(") (number_literal "0x30") () ")"))))) (; ";")) (expression_statement "uVar6 = FUN_000ba570(0x40);" (assignment_expression "uVar6 = FUN_000ba570(0x40)" (identifier "uVar6") (= "=") (call_expression "FUN_000ba570(0x40)" (identifier "FUN_000ba570") (argument_list "(0x40)" (( "(") (number_literal "0x40") () ")")))) (; ";")) (expression_statement "piVar4[9] = (int)uVar6;" (assignment_expression "piVar4[9] = (int)uVar6" (subscript_expression "piVar4[9]" (identifier "piVar4") ([ "[") (number_literal "9") (] "]")) (= "=") (cast_expression "(int)uVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar6"))) (; ";")) (expression_statement "*piVar4 = unaff_EDI + 0x273047;" (assignment_expression "*piVar4 = unaff_EDI + 0x273047" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (= "=") (binary_expression "unaff_EDI + 0x273047" (identifier "unaff_EDI") (+ "+") (number_literal "0x273047"))) (; ";")) (expression_statement "piVar4[1] = 0;" (assignment_expression "piVar4[1] = 0" (subscript_expression "piVar4[1]" (identifier "piVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar4[2] = 0;" (assignment_expression "piVar4[2] = 0" (subscript_expression "piVar4[2]" (identifier "piVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar4[3] = 0;" (assignment_expression "piVar4[3] = 0" (subscript_expression "piVar4[3]" (identifier "piVar4") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar4[4] = 0;" (assignment_expression "piVar4[4] = 0" (subscript_expression "piVar4[4]" (identifier "piVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar4[5] = -1;" (assignment_expression "piVar4[5] = -1" (subscript_expression "piVar4[5]" (identifier "piVar4") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "-1")) (; ";")) (expression_statement "piVar4[6] = -1;" (assignment_expression "piVar4[6] = -1" (subscript_expression "piVar4[6]" (identifier "piVar4") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "-1")) (; ";")) (expression_statement "*(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;" (assignment_expression "*(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0" (pointer_expression "*(byte *)(piVar4 + 7)" (* "*") (cast_expression "(byte *)(piVar4 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar4 + 7)" (( "(") (binary_expression "piVar4 + 7" (identifier "piVar4") (+ "+") (number_literal "7")) () ")")))) (= "=") (binary_expression "*(byte *)(piVar4 + 7) & 0xe0" (pointer_expression "*(byte *)(piVar4 + 7)" (* "*") (cast_expression "(byte *)(piVar4 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar4 + 7)" (( "(") (binary_expression "piVar4 + 7" (identifier "piVar4") (+ "+") (number_literal "7")) () ")")))) (& "&") (number_literal "0xe0"))) (; ";")) (expression_statement "piVar4[8] = 0;" (assignment_expression "piVar4[8] = 0" (subscript_expression "piVar4[8]" (identifier "piVar4") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);" (assignment_expression "piVar4[10] = (int)((ulonglong)uVar6 >> 0x20)" (subscript_expression "piVar4[10]" (identifier "piVar4") ([ "[") (number_literal "10") (] "]")) (= "=") (cast_expression "(int)((ulonglong)uVar6 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar6 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar6 >> 0x20" (cast_expression "(ulonglong)uVar6" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar6")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "piVar4[0xb] = param_6;" (assignment_expression "piVar4[0xb] = param_6" (subscript_expression "piVar4[0xb]" (identifier "piVar4") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "param_6")) (; ";")) (} "}")) (else_clause "else {\n      if (iVar1 != 4) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);\n      }\n      FUN_000bb100(local_40,0x18,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    \n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x2730b3;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }" (else "else") (compound_statement "{\n      if (iVar1 != 4) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);\n      }\n      FUN_000bb100(local_40,0x18,0);\n      piVar4 = (int *)FUN_0017ebf0(0x30);\n                    \n      uVar6 = FUN_000ba570(0x40);\n      piVar4[9] = (int)uVar6;\n      *piVar4 = unaff_EDI + 0x2730b3;\n      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;\n      piVar4[1] = 0;\n      piVar4[2] = 0;\n      piVar4[3] = 0;\n      piVar4[4] = 0;\n      piVar4[5] = -1;\n      piVar4[6] = -1;\n      piVar4[8] = 0;\n      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);\n      piVar4[0xb] = param_6;\n    }" ({ "{") (if_statement "if (iVar1 != 4) {\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);\n      }" (if "if") (parenthesized_expression "(iVar1 != 4)" (( "(") (binary_expression "iVar1 != 4" (identifier "iVar1") (!= "!=") (number_literal "4")) () ")")) (compound_statement "{\n                    \n        FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);\n      }" ({ "{") (expression_statement "FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5)" (identifier "FUN_0005f0b0") (argument_list "(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5)" (( "(") (binary_expression "unaff_EDI + 0x1986df" (identifier "unaff_EDI") (+ "+") (number_literal "0x1986df")) (, ",") (number_literal "0x557") (, ",") (binary_expression "unaff_EDI + 0x1995d7" (identifier "unaff_EDI") (+ "+") (number_literal "0x1995d7")) (, ",") (identifier "iVar5") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_000bb100(local_40,0x18,0);" (call_expression "FUN_000bb100(local_40,0x18,0)" (identifier "FUN_000bb100") (argument_list "(local_40,0x18,0)" (( "(") (identifier "local_40") (, ",") (number_literal "0x18") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "piVar4 = (int *)FUN_0017ebf0(0x30);" (assignment_expression "piVar4 = (int *)FUN_0017ebf0(0x30)" (identifier "piVar4") (= "=") (cast_expression "(int *)FUN_0017ebf0(0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017ebf0(0x30)" (identifier "FUN_0017ebf0") (argument_list "(0x30)" (( "(") (number_literal "0x30") () ")"))))) (; ";")) (expression_statement "uVar6 = FUN_000ba570(0x40);" (assignment_expression "uVar6 = FUN_000ba570(0x40)" (identifier "uVar6") (= "=") (call_expression "FUN_000ba570(0x40)" (identifier "FUN_000ba570") (argument_list "(0x40)" (( "(") (number_literal "0x40") () ")")))) (; ";")) (expression_statement "piVar4[9] = (int)uVar6;" (assignment_expression "piVar4[9] = (int)uVar6" (subscript_expression "piVar4[9]" (identifier "piVar4") ([ "[") (number_literal "9") (] "]")) (= "=") (cast_expression "(int)uVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar6"))) (; ";")) (expression_statement "*piVar4 = unaff_EDI + 0x2730b3;" (assignment_expression "*piVar4 = unaff_EDI + 0x2730b3" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (= "=") (binary_expression "unaff_EDI + 0x2730b3" (identifier "unaff_EDI") (+ "+") (number_literal "0x2730b3"))) (; ";")) (expression_statement "*(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;" (assignment_expression "*(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0" (pointer_expression "*(byte *)(piVar4 + 7)" (* "*") (cast_expression "(byte *)(piVar4 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar4 + 7)" (( "(") (binary_expression "piVar4 + 7" (identifier "piVar4") (+ "+") (number_literal "7")) () ")")))) (= "=") (binary_expression "*(byte *)(piVar4 + 7) & 0xe0" (pointer_expression "*(byte *)(piVar4 + 7)" (* "*") (cast_expression "(byte *)(piVar4 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar4 + 7)" (( "(") (binary_expression "piVar4 + 7" (identifier "piVar4") (+ "+") (number_literal "7")) () ")")))) (& "&") (number_literal "0xe0"))) (; ";")) (expression_statement "piVar4[1] = 0;" (assignment_expression "piVar4[1] = 0" (subscript_expression "piVar4[1]" (identifier "piVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar4[2] = 0;" (assignment_expression "piVar4[2] = 0" (subscript_expression "piVar4[2]" (identifier "piVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar4[3] = 0;" (assignment_expression "piVar4[3] = 0" (subscript_expression "piVar4[3]" (identifier "piVar4") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar4[4] = 0;" (assignment_expression "piVar4[4] = 0" (subscript_expression "piVar4[4]" (identifier "piVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar4[5] = -1;" (assignment_expression "piVar4[5] = -1" (subscript_expression "piVar4[5]" (identifier "piVar4") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "-1")) (; ";")) (expression_statement "piVar4[6] = -1;" (assignment_expression "piVar4[6] = -1" (subscript_expression "piVar4[6]" (identifier "piVar4") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "-1")) (; ";")) (expression_statement "piVar4[8] = 0;" (assignment_expression "piVar4[8] = 0" (subscript_expression "piVar4[8]" (identifier "piVar4") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);" (assignment_expression "piVar4[10] = (int)((ulonglong)uVar6 >> 0x20)" (subscript_expression "piVar4[10]" (identifier "piVar4") ([ "[") (number_literal "10") (] "]")) (= "=") (cast_expression "(int)((ulonglong)uVar6 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar6 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar6 >> 0x20" (cast_expression "(ulonglong)uVar6" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar6")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "piVar4[0xb] = param_6;" (assignment_expression "piVar4[0xb] = param_6" (subscript_expression "piVar4[0xb]" (identifier "piVar4") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "param_6")) (; ";")) (} "}")))) (expression_statement "FUN_000bf250(local_40,piVar4);" (call_expression "FUN_000bf250(local_40,piVar4)" (identifier "FUN_000bf250") (argument_list "(local_40,piVar4)" (( "(") (identifier "local_40") (, ",") (identifier "piVar4") () ")"))) (; ";")) (if_statement "if (*(int *)(param_6 + 0x10) == 0) {\n      *(int **)(param_6 + 0x10) = piVar4;\n      if (local_34 != local_2c) {\n        FUN_001807a0(local_34);\n      }\n      return local_40;\n    }" (if "if") (parenthesized_expression "(*(int *)(param_6 + 0x10) == 0)" (( "(") (binary_expression "*(int *)(param_6 + 0x10) == 0" (pointer_expression "*(int *)(param_6 + 0x10)" (* "*") (cast_expression "(int *)(param_6 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + 0x10)" (( "(") (binary_expression "param_6 + 0x10" (identifier "param_6") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      *(int **)(param_6 + 0x10) = piVar4;\n      if (local_34 != local_2c) {\n        FUN_001807a0(local_34);\n      }\n      return local_40;\n    }" ({ "{") (expression_statement "*(int **)(param_6 + 0x10) = piVar4;" (assignment_expression "*(int **)(param_6 + 0x10) = piVar4" (pointer_expression "*(int **)(param_6 + 0x10)" (* "*") (cast_expression "(int **)(param_6 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_6 + 0x10)" (( "(") (binary_expression "param_6 + 0x10" (identifier "param_6") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "piVar4")) (; ";")) (if_statement "if (local_34 != local_2c) {\n        FUN_001807a0(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        FUN_001807a0(local_34);\n      }" ({ "{") (expression_statement "FUN_001807a0(local_34);" (call_expression "FUN_001807a0(local_34)" (identifier "FUN_001807a0") (argument_list "(local_34)" (( "(") (identifier "local_34") () ")"))) (; ";")) (} "}"))) (return_statement "return local_40;" (return "return") (identifier "local_40") (; ";")) (} "}"))) (expression_statement "FUN_0005f0b0(unaff_EDI + 0x199399,0x11a,unaff_EDI + 0x1995e7,extraout_EDX);" (call_expression "FUN_0005f0b0(unaff_EDI + 0x199399,0x11a,unaff_EDI + 0x1995e7,extraout_EDX)" (identifier "FUN_0005f0b0") (argument_list "(unaff_EDI + 0x199399,0x11a,unaff_EDI + 0x1995e7,extraout_EDX)" (( "(") (binary_expression "unaff_EDI + 0x199399" (identifier "unaff_EDI") (+ "+") (number_literal "0x199399")) (, ",") (number_literal "0x11a") (, ",") (binary_expression "unaff_EDI + 0x1995e7" (identifier "unaff_EDI") (+ "+") (number_literal "0x1995e7")) (, ",") (identifier "extraout_EDX") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_001c6190(unaff_EDI + 0x195d29);" (call_expression "FUN_001c6190(unaff_EDI + 0x195d29)" (identifier "FUN_001c6190") (argument_list "(unaff_EDI + 0x195d29)" (( "(") (binary_expression "unaff_EDI + 0x195d29" (identifier "unaff_EDI") (+ "+") (number_literal "0x195d29")) () ")"))) (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original name: layout_reloc<64, false>
   DWARF original prototype: Output_section * layout_reloc<64,_false>(Layout * this,
   Sized_relobj_file<64,_false> * param_3, uint param_4, Shdr<64,_false> * shdr, Output_section *
   data_section, Relocatable_relocs * rr) */

type_5 * __thiscall
gold::Layout::layout_reloc<64,_false>
          (Layout *this,Sized_relobj_file<64,_false> *param_1,type_4 param_2,Shdr<64,_false> *shdr,
          type_5 *var_20,Relocatable_relocs *rr)

{
  anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
  *var_5;
  type_1 *puVar2;
  int var_9;
  type_2 var_11;
  size_t var_14;
  type_3 *posd;
  char *pcVar5;
  int var_8;
  uint64_t var_24;
  type_4 uVar7;
  type_5 *var_16;
  type_6 name;
  
  var_6();
  var_9 = *(int *)(*(int *)(var_7 + var_8 + 0x72) + 8);
  if (var_9 == 0) {
                    /* WARNING: Subroutine does not return */
    var_10(&UNK_00196157 + var_8,0x5c,(char *)(var_8 + 0x199b8f));
  }
  if ((*(char *)(var_9 + 0x318d) == '\0') && (*(char *)(var_9 + 0x3095) == '\0')) {
                    /* WARNING: Subroutine does not return */
    var_10((char *)(var_8 + 0x1986df),0x52d,(char *)(var_8 + 0x1995d7));
  }
  var_11 = shdr->p_->sh_type;
  name._M_string_length = 0;
  var_5 = &name.field_2;
  name.field_2._M_local_buf[0] = '\0';
  name._M_dataplus._M_p = (type_7)var_5;
  if (var_11 == 9) {
    pcVar5 = &LAB_0019938e + var_8;
    uVar7 = 4;
  }
  else {
    if (var_11 != 4) {
                    /* WARNING: Subroutine does not return */
      var_10((char *)(var_8 + 0x1986df),0x537,(char *)(var_8 + 0x1995d7));
    }
    pcVar5 = (char *)(var_8 + 0x199393);
    uVar7 = 5;
  }
                    /* try { // try from 0008a88d to 0008a90f has its CatchHandler @ 0008abd6 */
  std::string::var_12((type_6 *)&name,0,0,pcVar5,uVar7);
  pcVar5 = var_20->name_;
  var_14 = var_13(pcVar5);
  if (var_14 <= 0x7fffffff - name._M_string_length) {
    std::string::var_15((type_6 *)&name,pcVar5,var_14);
    var_16 = var_20->reloc_section_;
    if (var_16 == (type_5 *)0x0) {
                    /* try { // try from 0008aa7e to 0008ab38 has its CatchHandler @ 0008abd6 */
      pcVar5 = var_17<var_2>::var_18
                         (&this->namepool_,name._M_dataplus._M_p,true,(type_8 *)0x0);
      var_16 = var_19(this,pcVar5,var_11,shdr->p_->sh_flags,ORDER_INVALID,false);
      if (((var_16->link_section_ != (type_9 *)0x0) || (var_16->link_ != 0)) ||
         ((var_16->field_0x90 & 8) != 0)) {
                    /* WARNING: Subroutine does not return */
        var_10((char *)(var_8 + 0x196df3),0xd1b,&UNK_0019960b + var_8);
      }
      var_16->field_0x90 = var_16->field_0x90 | 4;
      if ((((var_16->info_section_ != (type_5 *)0x0) &&
           ((var_20 != var_16->info_section_ || ((var_16->field_0x91 & 1) == 0)))) ||
          (var_16->info_symndx_ != (type_10 *)0x0)) || (var_16->info_ != 0)) {
                    /* WARNING: Subroutine does not return */
        var_10((char *)(var_8 + 0x196df3),0xd3a,(char *)(var_8 + 0x1995f7));
      }
      var_16->field_0x91 = var_16->field_0x91 | 1;
      var_16->info_section_ = var_20;
      var_20->reloc_section_ = var_16;
    }
    if (var_11 == 9) {
                    /* try { // try from 0008a9fc to 0008aa0c has its CatchHandler @ 0008abd6 */
      Output_section::var_21(var_16,0x10);
      posd = (type_3 *)var_22(0x30);
                    /* try { // try from 0008aa16 to 0008aa1a has its CatchHandler @ 0008abda */
      var_24 = type_9::var_23(0x40);
      *(int *)&posd->addralign_ = (int)var_24;
      (posd->super_Output_data)._vptr_Output_data = (type_11 **)(var_8 + 0x273047);
      *(type_12 *)&(posd->super_Output_data).address_ = 0;
      *(type_12 *)((int)&(posd->super_Output_data).address_ + 4) = 0;
      *(type_12 *)&(posd->super_Output_data).data_size_ = 0;
      *(type_12 *)((int)&(posd->super_Output_data).data_size_ + 4) = 0;
      *(type_12 *)&(posd->super_Output_data).offset_ = 0xffffffff;
      *(type_12 *)((int)&(posd->super_Output_data).offset_ + 4) = 0xffffffff;
      puVar2 = &(posd->super_Output_data).field_0x1c;
      *puVar2 = *puVar2 & 0xe0;
      posd->output_section_ = (type_5 *)0x0;
      *(int *)((int)&posd->addralign_ + 4) = (int)(var_24 >> 0x20);
      posd[1].super_Output_data._vptr_Output_data = (type_11 **)rr;
    }
    else {
      if (var_11 != 4) {
                    /* WARNING: Subroutine does not return */
        var_10((char *)(var_8 + 0x1986df),0x557,(char *)(var_8 + 0x1995d7));
      }
      Output_section::var_21(var_16,0x18);
      posd = (type_3 *)var_22(0x30);
                    /* try { // try from 0008a919 to 0008a91d has its CatchHandler @ 0008abdf */
      var_24 = type_9::var_23(0x40);
      *(int *)&posd->addralign_ = (int)var_24;
      (posd->super_Output_data)._vptr_Output_data = (type_11 **)(var_8 + 0x2730b3);
      puVar2 = &(posd->super_Output_data).field_0x1c;
      *puVar2 = *puVar2 & 0xe0;
      *(type_12 *)&(posd->super_Output_data).address_ = 0;
      *(type_12 *)((int)&(posd->super_Output_data).address_ + 4) = 0;
      *(type_12 *)&(posd->super_Output_data).data_size_ = 0;
      *(type_12 *)((int)&(posd->super_Output_data).data_size_ + 4) = 0;
      *(type_12 *)&(posd->super_Output_data).offset_ = 0xffffffff;
      *(type_12 *)((int)&(posd->super_Output_data).offset_ + 4) = 0xffffffff;
      posd->output_section_ = (type_5 *)0x0;
      *(int *)((int)&posd->addralign_ + 4) = (int)(var_24 >> 0x20);
      posd[1].super_Output_data._vptr_Output_data = (type_11 **)rr;
    }
                    /* try { // try from 0008a973 to 0008a977 has its CatchHandler @ 0008abd6 */
    Output_section::var_25(var_16,posd);
    if (rr->posd_ == (type_9 *)0x0) {
      rr->posd_ = &posd->super_Output_data;
      if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
           *)name._M_dataplus._M_p != var_5) {
        var_26(name._M_dataplus._M_p);
      }
      return var_16;
    }
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0008ab65 to 0008abd5 has its CatchHandler @ 0008abd6 */
    var_10((char *)(var_8 + 0x199399),0x11a,(char *)(var_8 + 0x1995e7));
  }
                    /* WARNING: Subroutine does not return */
  std::var_27((char *)(var_8 + 0x195d29));
}


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

int MASKED(int param_1,undefined4 param_2,undefined4 param_3,int *param_4,int param_5,
                int param_6)

{
  int iVar1;
  char *__s;
  undefined1 *puVar2;
  size_t sVar3;
  int *piVar4;
  undefined4 extraout_ECX;
  undefined4 extraout_ECX_00;
  undefined4 extraout_EDX;
  int unaff_EDI;
  int iVar5;
  undefined8 uVar6;
  undefined4 uVar7;
  int local_40;
  undefined1 *local_34;
  int local_30;
  undefined1 local_2c [28];
  
  FUN_0004fb7e();
  iVar5 = unaff_EDI + 0x2777e7;
  iVar1 = *(int *)(*(int *)(BYTE_ARRAY_00277aed + unaff_EDI + 0x72) + 8);
  if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0005f0b0(&UNK_00196157 + unaff_EDI,0x5c,unaff_EDI + 0x199b8f);
  }
  if ((*(char *)(iVar1 + 0x318d) == '\0') && (*(char *)(iVar1 + 0x3095) == '\0')) {
                    /* WARNING: Subroutine does not return */
    FUN_0005f0b0(unaff_EDI + 0x1986df,0x52d,unaff_EDI + 0x1995d7);
  }
  iVar1 = *(int *)(*param_4 + 4);
  local_30 = 0;
  local_2c[0] = 0;
  local_34 = local_2c;
  if (iVar1 == 9) {
    puVar2 = &LAB_0019938e + unaff_EDI;
    uVar7 = 4;
  }
  else {
    if (iVar1 != 4) {
                    /* WARNING: Subroutine does not return */
      FUN_0005f0b0(unaff_EDI + 0x1986df,0x537,unaff_EDI + 0x1995d7,extraout_ECX);
    }
    puVar2 = (undefined1 *)(unaff_EDI + 0x199393);
    uVar7 = 5;
  }
                    /* try { // try from 0008a88d to 0008a90f has its CatchHandler @ 0008abd6 */
  FUN_001893e0(&local_34,0,0,puVar2,uVar7);
  __s = *(char **)(param_5 + 0x20);
  sVar3 = strlen(__s);
  if (sVar3 <= 0x7fffffffU - local_30) {
    FUN_00189fb0(&local_34,__s,sVar3);
    local_40 = *(int *)(param_5 + 0xe4);
    if (local_40 == 0) {
                    /* try { // try from 0008aa7e to 0008ab38 has its CatchHandler @ 0008abd6 */
      uVar7 = FUN_001200e0(param_1 + 8,local_34,1,0);
      local_40 = FUN_0007fe90(param_1,uVar7,iVar1,*(undefined4 *)(*param_4 + 8),
                              *(undefined4 *)(*param_4 + 0xc),0,0);
      if (((*(int *)(local_40 + 0x3c) != 0) || (*(int *)(local_40 + 0x40) != 0)) ||
         ((*(byte *)(local_40 + 0x90) & 8) != 0)) {
                    /* WARNING: Subroutine does not return */
        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd1b,&UNK_0019960b + unaff_EDI,extraout_ECX_00);
      }
      *(byte *)(local_40 + 0x90) = *(byte *)(local_40 + 0x90) | 4;
      if ((((*(int *)(local_40 + 0x44) != 0) &&
           ((param_5 != *(int *)(local_40 + 0x44) || ((*(byte *)(local_40 + 0x91) & 1) == 0)))) ||
          (*(int *)(local_40 + 0x48) != 0)) || (*(int *)(local_40 + 0x4c) != 0)) {
                    /* WARNING: Subroutine does not return */
        FUN_0005f0b0(unaff_EDI + 0x196df3,0xd3a,unaff_EDI + 0x1995f7,iVar1);
      }
      *(byte *)(local_40 + 0x91) = *(byte *)(local_40 + 0x91) | 1;
      *(int *)(local_40 + 0x44) = param_5;
      *(int *)(param_5 + 0xe4) = local_40;
      iVar5 = 0;
    }
    if (iVar1 == 9) {
                    /* try { // try from 0008a9fc to 0008aa0c has its CatchHandler @ 0008abd6 */
      FUN_000bb100(local_40,0x10,0);
      piVar4 = (int *)FUN_0017ebf0(0x30);
                    /* try { // try from 0008aa16 to 0008aa1a has its CatchHandler @ 0008abda */
      uVar6 = FUN_000ba570(0x40);
      piVar4[9] = (int)uVar6;
      *piVar4 = unaff_EDI + 0x273047;
      piVar4[1] = 0;
      piVar4[2] = 0;
      piVar4[3] = 0;
      piVar4[4] = 0;
      piVar4[5] = -1;
      piVar4[6] = -1;
      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;
      piVar4[8] = 0;
      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);
      piVar4[0xb] = param_6;
    }
    else {
      if (iVar1 != 4) {
                    /* WARNING: Subroutine does not return */
        FUN_0005f0b0(unaff_EDI + 0x1986df,0x557,unaff_EDI + 0x1995d7,iVar5);
      }
      FUN_000bb100(local_40,0x18,0);
      piVar4 = (int *)FUN_0017ebf0(0x30);
                    /* try { // try from 0008a919 to 0008a91d has its CatchHandler @ 0008abdf */
      uVar6 = FUN_000ba570(0x40);
      piVar4[9] = (int)uVar6;
      *piVar4 = unaff_EDI + 0x2730b3;
      *(byte *)(piVar4 + 7) = *(byte *)(piVar4 + 7) & 0xe0;
      piVar4[1] = 0;
      piVar4[2] = 0;
      piVar4[3] = 0;
      piVar4[4] = 0;
      piVar4[5] = -1;
      piVar4[6] = -1;
      piVar4[8] = 0;
      piVar4[10] = (int)((ulonglong)uVar6 >> 0x20);
      piVar4[0xb] = param_6;
    }
                    /* try { // try from 0008a973 to 0008a977 has its CatchHandler @ 0008abd6 */
    FUN_000bf250(local_40,piVar4);
    if (*(int *)(param_6 + 0x10) == 0) {
      *(int **)(param_6 + 0x10) = piVar4;
      if (local_34 != local_2c) {
        FUN_001807a0(local_34);
      }
      return local_40;
    }
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0008ab65 to 0008abd5 has its CatchHandler @ 0008abd6 */
    FUN_0005f0b0(unaff_EDI + 0x199399,0x11a,unaff_EDI + 0x1995e7,extraout_EDX);
  }
                    /* WARNING: Subroutine does not return */
  FUN_001c6190(unaff_EDI + 0x195d29);
}

