
/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */
/* WARNING: Enum "STT": Some values do not have unique names */
/* WARNING: Enum "STB": Some values do not have unique names */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: Sized_symbol<64> * do_define_in_output_data<64>(Symbol_table * this,
   char * name, char * version, Defined defined, Output_data * od, Elf_Addr value, Elf_WXword
   symsize, STT type, STB binding, STV visibility, uchar nonvis, bool offset_is_from_end, bool
   only_if_ref) */

Sized_symbol<64> * __thiscall
gold::Symbol_table::do_define_in_output_data<64>
          (Symbol_table *this,char *name,char *version,Defined defined,Output_data *od,
          Elf_Addr value,Elf_WXword symsize,STT type,STB binding,STV visibility,uchar nonvis,
          bool offset_is_from_end,bool only_if_ref)

{
  undefined1 *puVar1;
  Got_offset_list *pGVar2;
  Got_offset_list *pGVar3;
  Got_offset_list *pGVar4;
  Got_offset_list *pGVar5;
  Got_offset_list *pGVar6;
  Got_offset_list *this_00;
  Elf_Addr value_00;
  Elf_WXword symsize_00;
  uchar nonvis_00;
  bool bVar7;
  Sized_symbol<64> *this_01;
  undefined3 in_stack_00000035;
  undefined3 in_stack_00000039;
  undefined3 in_stack_0000003d;
  Sized_symbol<64> *__in_chrg;
  bool resolve_oldsym;
  bool is_global;
  Sized_symbol<64> *oldsym;
  
  bVar7 = offset_is_from_end;
  nonvis_00 = nonvis;
  symsize_00 = symsize;
  value_00 = value;
  if (parameters->target_ == (Target *)0x0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/parameters.h",0x69,"target");
  }
  if (*(char *)(*(int *)(parameters->target_ + 4) + 4) == '\0') {
    this_01 = define_special_symbol<64,_false>
                        (this,&name,&version,only_if_ref,visibility,&oldsym,&resolve_oldsym,
                         binding == STB_LOCAL);
  }
  else {
    this_01 = define_special_symbol<64,_true>
                        (this,&name,&version,only_if_ref,visibility,&oldsym,&resolve_oldsym,
                         binding == STB_LOCAL);
  }
  if (this_01 == (Sized_symbol<64> *)0x0) {
    return (Sized_symbol<64> *)0x0;
  }
  Sized_symbol<64>::init_output_data
            (this_01,name,version,od,value_00,symsize_00,type,binding,visibility,nonvis_00,bVar7,
             defined == PREDEFINED);
  if (oldsym == (Sized_symbol<64> *)0x0) {
    if (binding != STB_LOCAL) {
      bVar7 = Version_script_info::get_symbol_version
                        (this->version_script_,name,(string *)0x0,&is_global);
      if ((!bVar7) || (is_global != false)) {
        if (version == (char *)0x0) {
          return this_01;
        }
        puVar1 = &(this_01->super_Symbol).field_0x2a;
        *puVar1 = *puVar1 | 8;
        return this_01;
      }
    }
    force_local(this,&this_01->super_Symbol);
    return this_01;
  }
  __in_chrg = (Sized_symbol<64> *)type;
  bVar7 = should_override_with_special(&oldsym->super_Symbol,type,defined);
  if (bVar7) {
    __in_chrg = oldsym;
    override_with_special<64>(this,oldsym,this_01);
  }
  if (resolve_oldsym != false) {
    return this_01;
  }
  if (defined == PREDEFINED) {
    if (binding != STB_LOCAL) {
      __in_chrg = (Sized_symbol<64> *)name;
      bVar7 = Version_script_info::get_symbol_version
                        (this->version_script_,name,(string *)0x0,&is_global);
      if ((!bVar7) || (is_global != false)) goto LAB_00189744;
    }
    __in_chrg = oldsym;
    force_local(this,&oldsym->super_Symbol);
  }
LAB_00189744:
  pGVar2 = (this_01->super_Symbol).got_offsets_.got_next_;
  if (pGVar2 != (Got_offset_list *)0x0) {
    pGVar3 = pGVar2->got_next_;
    if (pGVar3 != (Got_offset_list *)0x0) {
      pGVar4 = pGVar3->got_next_;
      if (pGVar4 != (Got_offset_list *)0x0) {
        pGVar5 = pGVar4->got_next_;
        if (pGVar5 != (Got_offset_list *)0x0) {
          pGVar6 = pGVar5->got_next_;
          if (pGVar6 != (Got_offset_list *)0x0) {
            this_00 = pGVar6->got_next_;
            if (this_00 != (Got_offset_list *)0x0) {
              Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);
              operator_delete(this_00,0xc);
            }
            operator_delete(pGVar6,0xc);
          }
          operator_delete(pGVar5,0xc);
        }
        operator_delete(pGVar4,0xc);
      }
      operator_delete(pGVar3,0xc);
    }
    operator_delete(pGVar2,0xc);
  }
  operator_delete(this_01,0x40);
  return oldsym;
}



int FUN_00189600(int param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,
                undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,
                undefined4 param_10,int param_11,undefined4 param_12,uint param_13,uint param_14,
                uint param_15)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  uint uVar11;
  uint uVar12;
  char cVar13;
  int iVar14;
  int unaff_EBP;
  char local_22;
  char local_21;
  int local_20 [4];
  
  FUN_000559f2();
  uVar12 = param_14;
  uVar11 = param_13;
  uVar10 = param_9;
  uVar9 = param_8;
  uVar8 = param_7;
  uVar7 = param_6;
  iVar14 = *(int *)(*(int *)(unaff_EBP + 0x205d72) + 0xc);
  if (iVar14 == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00069d00(unaff_EBP + 0xfdc0a,0x69,unaff_EBP + 0x110e6a,param_15);
  }
  if (*(char *)(*(int *)(iVar14 + 4) + 4) == '\0') {
    iVar14 = FUN_001890d0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,
                          param_11 == 0);
  }
  else {
    iVar14 = FUN_00187430(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,
                          param_11 == 0);
  }
  if (iVar14 == 0) {
    return 0;
  }
  FUN_0017b220(iVar14,param_2,param_3,param_5,uVar7,uVar8,uVar9,uVar10,param_10,param_11,param_12,
               uVar11 & 0xff,uVar12 & 0xff,param_4 == 5);
  if (local_20[0] == 0) {
    if ((param_11 != 0) &&
       ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'
        || (local_21 != '\0')))) {
      if (param_3 == 0) {
        return iVar14;
      }
      *(byte *)(iVar14 + 0x2a) = *(byte *)(iVar14 + 0x2a) | 8;
      return iVar14;
    }
    FUN_00177f20(param_1,iVar14);
    return iVar14;
  }
  cVar13 = FUN_001ca200(local_20[0],param_10,param_4);
  if (cVar13 != '\0') {
    FUN_001cb410(param_1,local_20[0],iVar14);
  }
  if (local_22 == '\0') {
    if ((param_4 == 5) &&
       ((param_11 == 0 ||
        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),
         cVar13 != '\0' && (local_21 == '\0')))))) {
      FUN_00177f20(param_1,local_20[0]);
    }
    iVar1 = *(int *)(iVar14 + 0x24);
    if (iVar1 != 0) {
      iVar2 = *(int *)(iVar1 + 8);
      if (iVar2 != 0) {
        iVar3 = *(int *)(iVar2 + 8);
        if (iVar3 != 0) {
          iVar4 = *(int *)(iVar3 + 8);
          if (iVar4 != 0) {
            iVar5 = *(int *)(iVar4 + 8);
            if (iVar5 != 0) {
              iVar6 = *(int *)(iVar5 + 8);
              if (iVar6 != 0) {
                FUN_0017afa0(iVar6);
                FUN_001e6d90(iVar6,0xc);
              }
              FUN_001e6d90(iVar5,0xc);
            }
            FUN_001e6d90(iVar4,0xc);
          }
          FUN_001e6d90(iVar3,0xc);
        }
        FUN_001e6d90(iVar2,0xc);
      }
      FUN_001e6d90(iVar1,0xc);
    }
    FUN_001e6d90(iVar14,0x40);
    return local_20[0];
  }
  return iVar14;
}


PUSH EBP
CALL 0x000559f2
ADD EBP,0x2059fa
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x3c
MOV EDX,dword ptr [ESP + 0x68]
LEA ECX,[EBP + 0x378]
MOV EAX,dword ptr [ESP + 0x64]
MOV EBX,dword ptr [ESP + 0x80]
MOV ECX,dword ptr [ECX]
MOV EDI,dword ptr [ESP + 0x84]
MOV dword ptr [ESP + 0xc],EDX
MOV EDX,dword ptr [ESP + 0x70]
MOV dword ptr [ESP + 0x8],EAX
MOV ECX,dword ptr [ECX + 0xc]
MOV EAX,dword ptr [ESP + 0x6c]
MOV dword ptr [ESP + 0x14],EDX
MOV EDX,dword ptr [ESP + 0x78]
MOV dword ptr [ESP + 0x10],EAX
MOV EAX,dword ptr [ESP + 0x88]
TEST EDX,EDX
SETZ DL
TEST ECX,ECX
JZ 0x00189971
MOV ECX,dword ptr [ECX + 0x4]
MOVZX EDX,DL
MOVZX EAX,AL
CMP byte ptr [ECX + 0x4],0x0
JNZ 0x00189858
PUSH EDX
LEA EDX,[ESP + 0x2e]
PUSH EDX
LEA EDX,[ESP + 0x34]
PUSH EDX
PUSH dword ptr [ESP + 0x88]
PUSH EAX
LEA EAX,[ESP + 0x6c]
PUSH EAX
LEA EAX,[ESP + 0x6c]
PUSH EAX
PUSH dword ptr [ESP + 0x6c]
CALL 0x001890d0
ADD ESP,0x20
MOV ESI,EAX
TEST ESI,ESI
JZ 0x00189849
SUB ESP,0x8
XOR EAX,EAX
MOVZX EBX,BL
CMP dword ptr [ESP + 0x64],0x5
SETZ AL
PUSH EAX
MOV EAX,EDI
MOVZX EDI,AL
PUSH EDI
PUSH EBX
PUSH dword ptr [ESP + 0x90]
PUSH dword ptr [ESP + 0x90]
PUSH dword ptr [ESP + 0x90]
PUSH dword ptr [ESP + 0x34]
PUSH dword ptr [ESP + 0x34]
PUSH dword ptr [ESP + 0x34]
PUSH dword ptr [ESP + 0x34]
PUSH dword ptr [ESP + 0x90]
PUSH dword ptr [ESP + 0x8c]
PUSH dword ptr [ESP + 0x8c]
PUSH ESI
CALL 0x0017b220
MOV EAX,dword ptr [ESP + 0x6c]
ADD ESP,0x40
TEST EAX,EAX
JZ 0x00189890
SUB ESP,0x4
MOV EBX,EBP
PUSH dword ptr [ESP + 0x60]
PUSH dword ptr [ESP + 0x7c]
PUSH EAX
CALL 0x001ca200
ADD ESP,0x10
TEST AL,AL
JNZ 0x00189958
CMP byte ptr [ESP + 0x2a],0x0
JNZ 0x00189849
CMP dword ptr [ESP + 0x5c],0x5
JZ 0x00189900
MOV EDI,dword ptr [ESI + 0x24]
TEST EDI,EDI
JZ 0x00189835
MOV ECX,dword ptr [EDI + 0x8]
TEST ECX,ECX
JZ 0x00189825
MOV EAX,dword ptr [ECX + 0x8]
TEST EAX,EAX
JZ 0x00189815
MOV EDX,dword ptr [EAX + 0x8]
TEST EDX,EDX
JZ 0x001897fd
MOV EBX,dword ptr [EDX + 0x8]
MOV dword ptr [ESP + 0x8],EBX
TEST EBX,EBX
JZ 0x001897dd
MOV EBX,dword ptr [EBX + 0x8]
TEST EBX,EBX
JZ 0x001897b2
MOV dword ptr [ESP + 0x1c],EDX
SUB ESP,0xc
MOV dword ptr [ESP + 0x24],EAX
MOV dword ptr [ESP + 0x1c],ECX
PUSH EBX
CALL 0x0017afa0
POP EAX
POP EDX
PUSH 0xc
PUSH EBX
MOV EBX,EBP
CALL 0x001e6d90
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [ESP + 0x18]
MOV ECX,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x1c],EDX
SUB ESP,0x8
MOV EBX,EBP
MOV dword ptr [ESP + 0x20],EAX
MOV dword ptr [ESP + 0x18],ECX
PUSH 0xc
PUSH dword ptr [ESP + 0x14]
CALL 0x001e6d90
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [ESP + 0x18]
MOV ECX,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x10],EAX
SUB ESP,0x8
MOV EBX,EBP
MOV dword ptr [ESP + 0x10],ECX
PUSH 0xc
PUSH EDX
CALL 0x001e6d90
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x10]
MOV ECX,dword ptr [ESP + 0x8]
MOV dword ptr [ESP + 0x8],ECX
SUB ESP,0x8
MOV EBX,EBP
PUSH 0xc
PUSH EAX
CALL 0x001e6d90
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x8]
SUB ESP,0x8
MOV EBX,EBP
PUSH 0xc
PUSH ECX
CALL 0x001e6d90
ADD ESP,0x10
SUB ESP,0x8
MOV EBX,EBP
PUSH 0xc
PUSH EDI
CALL 0x001e6d90
ADD ESP,0x10
SUB ESP,0x8
MOV EBX,EBP
PUSH 0x40
PUSH ESI
CALL 0x001e6d90
MOV ESI,dword ptr [ESP + 0x3c]
ADD ESP,0x10
ADD ESP,0x3c
MOV EAX,ESI
POP EBX
POP ESI
POP EDI
POP EBP
RET
PUSH EDX
LEA EDX,[ESP + 0x2e]
PUSH EDX
LEA EDX,[ESP + 0x34]
PUSH EDX
PUSH dword ptr [ESP + 0x88]
PUSH EAX
LEA EAX,[ESP + 0x6c]
PUSH EAX
LEA EAX,[ESP + 0x6c]
PUSH EAX
PUSH dword ptr [ESP + 0x6c]
CALL 0x00187430
ADD ESP,0x20
MOV ESI,EAX
JMP 0x001896a1
MOV EDI,dword ptr [ESP + 0x78]
TEST EDI,EDI
JZ 0x001898e0
LEA EAX,[ESP + 0x2b]
MOV EBX,EBP
PUSH EAX
PUSH 0x0
PUSH dword ptr [ESP + 0x5c]
MOV EAX,dword ptr [ESP + 0x5c]
PUSH dword ptr [EAX + 0x154]
CALL 0x0016e020
ADD ESP,0x10
TEST AL,AL
JZ 0x001898c2
CMP byte ptr [ESP + 0x2b],0x0
JZ 0x001898e0
MOV EBX,dword ptr [ESP + 0x58]
TEST EBX,EBX
JZ 0x00189849
OR byte ptr [ESI + 0x2a],0x8
JMP 0x00189849
SUB ESP,0x8
PUSH ESI
PUSH dword ptr [ESP + 0x5c]
CALL 0x00177f20
ADD ESP,0x10
MOV EAX,ESI
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ECX,dword ptr [ESP + 0x78]
TEST ECX,ECX
JZ 0x0018993a
LEA EAX,[ESP + 0x2b]
MOV EBX,EBP
PUSH EAX
PUSH 0x0
PUSH dword ptr [ESP + 0x5c]
MOV EAX,dword ptr [ESP + 0x5c]
PUSH dword ptr [EAX + 0x154]
CALL 0x0016e020
ADD ESP,0x10
TEST AL,AL
JZ 0x00189744
CMP byte ptr [ESP + 0x2b],0x0
JNZ 0x00189744
SUB ESP,0x8
PUSH dword ptr [ESP + 0x34]
PUSH dword ptr [ESP + 0x5c]
CALL 0x00177f20
ADD ESP,0x10
JMP 0x00189744
SUB ESP,0x4
PUSH ESI
PUSH dword ptr [ESP + 0x34]
PUSH dword ptr [ESP + 0x5c]
CALL 0x001cb410
ADD ESP,0x10
JMP 0x0018972e
PUSH EAX
LEA EAX,[EBP + 0xfff0b470]
MOV EBX,EBP
PUSH EAX
LEA EAX,[EBP + 0xffef8210]
PUSH 0x69
PUSH EAX
CALL 0x00069d00
(translation_unit "int FUN_00189600(int param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n                undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n                undefined4 param_10,int param_11,undefined4 param_12,uint param_13,uint param_14,\n                uint param_15)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  uint uVar12;\n  char cVar13;\n  int iVar14;\n  int unaff_EBP;\n  char local_22;\n  char local_21;\n  int local_20 [4];\n  \n  FUN_000559f2();\n  uVar12 = param_14;\n  uVar11 = param_13;\n  uVar10 = param_9;\n  uVar9 = param_8;\n  uVar8 = param_7;\n  uVar7 = param_6;\n  iVar14 = *(int *)(*(int *)(unaff_EBP + 0x205d72) + 0xc);\n  if (iVar14 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00(unaff_EBP + 0xfdc0a,0x69,unaff_EBP + 0x110e6a,param_15);\n  }\n  if (*(char *)(*(int *)(iVar14 + 4) + 4) == '\0') {\n    iVar14 = FUN_001890d0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);\n  }\n  else {\n    iVar14 = FUN_00187430(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);\n  }\n  if (iVar14 == 0) {\n    return 0;\n  }\n  FUN_0017b220(iVar14,param_2,param_3,param_5,uVar7,uVar8,uVar9,uVar10,param_10,param_11,param_12,\n               uVar11 & 0xff,uVar12 & 0xff,param_4 == 5);\n  if (local_20[0] == 0) {\n    if ((param_11 != 0) &&\n       ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0')))) {\n      if (param_3 == 0) {\n        return iVar14;\n      }\n      *(byte *)(iVar14 + 0x2a) = *(byte *)(iVar14 + 0x2a) | 8;\n      return iVar14;\n    }\n    FUN_00177f20(param_1,iVar14);\n    return iVar14;\n  }\n  cVar13 = FUN_001ca200(local_20[0],param_10,param_4);\n  if (cVar13 != '\0') {\n    FUN_001cb410(param_1,local_20[0],iVar14);\n  }\n  if (local_22 == '\0') {\n    if ((param_4 == 5) &&\n       ((param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')))))) {\n      FUN_00177f20(param_1,local_20[0]);\n    }\n    iVar1 = *(int *)(iVar14 + 0x24);\n    if (iVar1 != 0) {\n      iVar2 = *(int *)(iVar1 + 8);\n      if (iVar2 != 0) {\n        iVar3 = *(int *)(iVar2 + 8);\n        if (iVar3 != 0) {\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }\n        FUN_001e6d90(iVar2,0xc);\n      }\n      FUN_001e6d90(iVar1,0xc);\n    }\n    FUN_001e6d90(iVar14,0x40);\n    return local_20[0];\n  }\n  return iVar14;\n}\n\n" (function_definition "int FUN_00189600(int param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n                undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n                undefined4 param_10,int param_11,undefined4 param_12,uint param_13,uint param_14,\n                uint param_15)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  uint uVar12;\n  char cVar13;\n  int iVar14;\n  int unaff_EBP;\n  char local_22;\n  char local_21;\n  int local_20 [4];\n  \n  FUN_000559f2();\n  uVar12 = param_14;\n  uVar11 = param_13;\n  uVar10 = param_9;\n  uVar9 = param_8;\n  uVar8 = param_7;\n  uVar7 = param_6;\n  iVar14 = *(int *)(*(int *)(unaff_EBP + 0x205d72) + 0xc);\n  if (iVar14 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00(unaff_EBP + 0xfdc0a,0x69,unaff_EBP + 0x110e6a,param_15);\n  }\n  if (*(char *)(*(int *)(iVar14 + 4) + 4) == '\0') {\n    iVar14 = FUN_001890d0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);\n  }\n  else {\n    iVar14 = FUN_00187430(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);\n  }\n  if (iVar14 == 0) {\n    return 0;\n  }\n  FUN_0017b220(iVar14,param_2,param_3,param_5,uVar7,uVar8,uVar9,uVar10,param_10,param_11,param_12,\n               uVar11 & 0xff,uVar12 & 0xff,param_4 == 5);\n  if (local_20[0] == 0) {\n    if ((param_11 != 0) &&\n       ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0')))) {\n      if (param_3 == 0) {\n        return iVar14;\n      }\n      *(byte *)(iVar14 + 0x2a) = *(byte *)(iVar14 + 0x2a) | 8;\n      return iVar14;\n    }\n    FUN_00177f20(param_1,iVar14);\n    return iVar14;\n  }\n  cVar13 = FUN_001ca200(local_20[0],param_10,param_4);\n  if (cVar13 != '\0') {\n    FUN_001cb410(param_1,local_20[0],iVar14);\n  }\n  if (local_22 == '\0') {\n    if ((param_4 == 5) &&\n       ((param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')))))) {\n      FUN_00177f20(param_1,local_20[0]);\n    }\n    iVar1 = *(int *)(iVar14 + 0x24);\n    if (iVar1 != 0) {\n      iVar2 = *(int *)(iVar1 + 8);\n      if (iVar2 != 0) {\n        iVar3 = *(int *)(iVar2 + 8);\n        if (iVar3 != 0) {\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }\n        FUN_001e6d90(iVar2,0xc);\n      }\n      FUN_001e6d90(iVar1,0xc);\n    }\n    FUN_001e6d90(iVar14,0x40);\n    return local_20[0];\n  }\n  return iVar14;\n}" primitive_type (function_declarator "FUN_00189600(int param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n                undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n                undefined4 param_10,int param_11,undefined4 param_12,uint param_13,uint param_14,\n                uint param_15)" identifier (parameter_list "(int param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n                undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n                undefined4 param_10,int param_11,undefined4 param_12,uint param_13,uint param_14,\n                uint param_15)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "undefined4 param_7" type_identifier identifier) , (parameter_declaration "undefined4 param_8" type_identifier identifier) , (parameter_declaration "undefined4 param_9" type_identifier identifier) , (parameter_declaration "undefined4 param_10" type_identifier identifier) , (parameter_declaration "int param_11" primitive_type identifier) , (parameter_declaration "undefined4 param_12" type_identifier identifier) , (parameter_declaration "uint param_13" type_identifier identifier) , (parameter_declaration "uint param_14" type_identifier identifier) , (parameter_declaration "uint param_15" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  uint uVar12;\n  char cVar13;\n  int iVar14;\n  int unaff_EBP;\n  char local_22;\n  char local_21;\n  int local_20 [4];\n  \n  FUN_000559f2();\n  uVar12 = param_14;\n  uVar11 = param_13;\n  uVar10 = param_9;\n  uVar9 = param_8;\n  uVar8 = param_7;\n  uVar7 = param_6;\n  iVar14 = *(int *)(*(int *)(unaff_EBP + 0x205d72) + 0xc);\n  if (iVar14 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00(unaff_EBP + 0xfdc0a,0x69,unaff_EBP + 0x110e6a,param_15);\n  }\n  if (*(char *)(*(int *)(iVar14 + 4) + 4) == '\0') {\n    iVar14 = FUN_001890d0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);\n  }\n  else {\n    iVar14 = FUN_00187430(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);\n  }\n  if (iVar14 == 0) {\n    return 0;\n  }\n  FUN_0017b220(iVar14,param_2,param_3,param_5,uVar7,uVar8,uVar9,uVar10,param_10,param_11,param_12,\n               uVar11 & 0xff,uVar12 & 0xff,param_4 == 5);\n  if (local_20[0] == 0) {\n    if ((param_11 != 0) &&\n       ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0')))) {\n      if (param_3 == 0) {\n        return iVar14;\n      }\n      *(byte *)(iVar14 + 0x2a) = *(byte *)(iVar14 + 0x2a) | 8;\n      return iVar14;\n    }\n    FUN_00177f20(param_1,iVar14);\n    return iVar14;\n  }\n  cVar13 = FUN_001ca200(local_20[0],param_10,param_4);\n  if (cVar13 != '\0') {\n    FUN_001cb410(param_1,local_20[0],iVar14);\n  }\n  if (local_22 == '\0') {\n    if ((param_4 == 5) &&\n       ((param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')))))) {\n      FUN_00177f20(param_1,local_20[0]);\n    }\n    iVar1 = *(int *)(iVar14 + 0x24);\n    if (iVar1 != 0) {\n      iVar2 = *(int *)(iVar1 + 8);\n      if (iVar2 != 0) {\n        iVar3 = *(int *)(iVar2 + 8);\n        if (iVar3 != 0) {\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }\n        FUN_001e6d90(iVar2,0xc);\n      }\n      FUN_001e6d90(iVar1,0xc);\n    }\n    FUN_001e6d90(iVar14,0x40);\n    return local_20[0];\n  }\n  return iVar14;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "char cVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "char local_22;" primitive_type identifier ;) (declaration "char local_21;" primitive_type identifier ;) (declaration "int local_20 [4];" primitive_type (array_declarator "local_20 [4]" identifier [ number_literal ]) ;) (expression_statement "FUN_000559f2();" (call_expression "FUN_000559f2()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar12 = param_14;" (assignment_expression "uVar12 = param_14" identifier = identifier) ;) (expression_statement "uVar11 = param_13;" (assignment_expression "uVar11 = param_13" identifier = identifier) ;) (expression_statement "uVar10 = param_9;" (assignment_expression "uVar10 = param_9" identifier = identifier) ;) (expression_statement "uVar9 = param_8;" (assignment_expression "uVar9 = param_8" identifier = identifier) ;) (expression_statement "uVar8 = param_7;" (assignment_expression "uVar8 = param_7" identifier = identifier) ;) (expression_statement "uVar7 = param_6;" (assignment_expression "uVar7 = param_6" identifier = identifier) ;) (expression_statement "iVar14 = *(int *)(*(int *)(unaff_EBP + 0x205d72) + 0xc);" (assignment_expression "iVar14 = *(int *)(*(int *)(unaff_EBP + 0x205d72) + 0xc)" identifier = (pointer_expression "*(int *)(*(int *)(unaff_EBP + 0x205d72) + 0xc)" * (cast_expression "(int *)(*(int *)(unaff_EBP + 0x205d72) + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(unaff_EBP + 0x205d72) + 0xc)" ( (binary_expression "*(int *)(unaff_EBP + 0x205d72) + 0xc" (pointer_expression "*(int *)(unaff_EBP + 0x205d72)" * (cast_expression "(int *)(unaff_EBP + 0x205d72)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x205d72)" ( (binary_expression "unaff_EBP + 0x205d72" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (iVar14 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00(unaff_EBP + 0xfdc0a,0x69,unaff_EBP + 0x110e6a,param_15);\n  }" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00(unaff_EBP + 0xfdc0a,0x69,unaff_EBP + 0x110e6a,param_15);\n  }" { comment (expression_statement "FUN_00069d00(unaff_EBP + 0xfdc0a,0x69,unaff_EBP + 0x110e6a,param_15);" (call_expression "FUN_00069d00(unaff_EBP + 0xfdc0a,0x69,unaff_EBP + 0x110e6a,param_15)" identifier (argument_list "(unaff_EBP + 0xfdc0a,0x69,unaff_EBP + 0x110e6a,param_15)" ( (binary_expression "unaff_EBP + 0xfdc0a" identifier + number_literal) , number_literal , (binary_expression "unaff_EBP + 0x110e6a" identifier + number_literal) , identifier ))) ;) })) (if_statement "if (*(char *)(*(int *)(iVar14 + 4) + 4) == '\0') {\n    iVar14 = FUN_001890d0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);\n  }\n  else {\n    iVar14 = FUN_00187430(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);\n  }" if (parenthesized_expression "(*(char *)(*(int *)(iVar14 + 4) + 4) == '\0')" ( (binary_expression "*(char *)(*(int *)(iVar14 + 4) + 4) == '\0'" (pointer_expression "*(char *)(*(int *)(iVar14 + 4) + 4)" * (cast_expression "(char *)(*(int *)(iVar14 + 4) + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar14 + 4) + 4)" ( (binary_expression "*(int *)(iVar14 + 4) + 4" (pointer_expression "*(int *)(iVar14 + 4)" * (cast_expression "(int *)(iVar14 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 4)" ( (binary_expression "iVar14 + 4" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar14 = FUN_001890d0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);\n  }" { (expression_statement "iVar14 = FUN_001890d0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);" (assignment_expression "iVar14 = FUN_001890d0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0)" identifier = (call_expression "FUN_001890d0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0)" identifier (argument_list "(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0)" ( identifier , (pointer_expression "&param_2" & identifier) , (pointer_expression "&param_3" & identifier) , (binary_expression "param_15 & 0xff" identifier & number_literal) , identifier , identifier , (pointer_expression "&local_22" & identifier) , (binary_expression "param_11 == 0" identifier == number_literal) )))) ;) }) (else_clause "else {\n    iVar14 = FUN_00187430(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);\n  }" else (compound_statement "{\n    iVar14 = FUN_00187430(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);\n  }" { (expression_statement "iVar14 = FUN_00187430(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);" (assignment_expression "iVar14 = FUN_00187430(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0)" identifier = (call_expression "FUN_00187430(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0)" identifier (argument_list "(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0)" ( identifier , (pointer_expression "&param_2" & identifier) , (pointer_expression "&param_3" & identifier) , (binary_expression "param_15 & 0xff" identifier & number_literal) , identifier , identifier , (pointer_expression "&local_22" & identifier) , (binary_expression "param_11 == 0" identifier == number_literal) )))) ;) }))) (if_statement "if (iVar14 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "FUN_0017b220(iVar14,param_2,param_3,param_5,uVar7,uVar8,uVar9,uVar10,param_10,param_11,param_12,\n               uVar11 & 0xff,uVar12 & 0xff,param_4 == 5);" (call_expression "FUN_0017b220(iVar14,param_2,param_3,param_5,uVar7,uVar8,uVar9,uVar10,param_10,param_11,param_12,\n               uVar11 & 0xff,uVar12 & 0xff,param_4 == 5)" identifier (argument_list "(iVar14,param_2,param_3,param_5,uVar7,uVar8,uVar9,uVar10,param_10,param_11,param_12,\n               uVar11 & 0xff,uVar12 & 0xff,param_4 == 5)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , (binary_expression "uVar11 & 0xff" identifier & number_literal) , (binary_expression "uVar12 & 0xff" identifier & number_literal) , (binary_expression "param_4 == 5" identifier == number_literal) ))) ;) (if_statement "if (local_20[0] == 0) {\n    if ((param_11 != 0) &&\n       ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0')))) {\n      if (param_3 == 0) {\n        return iVar14;\n      }\n      *(byte *)(iVar14 + 0x2a) = *(byte *)(iVar14 + 0x2a) | 8;\n      return iVar14;\n    }\n    FUN_00177f20(param_1,iVar14);\n    return iVar14;\n  }" if (parenthesized_expression "(local_20[0] == 0)" ( (binary_expression "local_20[0] == 0" (subscript_expression "local_20[0]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    if ((param_11 != 0) &&\n       ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0')))) {\n      if (param_3 == 0) {\n        return iVar14;\n      }\n      *(byte *)(iVar14 + 0x2a) = *(byte *)(iVar14 + 0x2a) | 8;\n      return iVar14;\n    }\n    FUN_00177f20(param_1,iVar14);\n    return iVar14;\n  }" { (if_statement "if ((param_11 != 0) &&\n       ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0')))) {\n      if (param_3 == 0) {\n        return iVar14;\n      }\n      *(byte *)(iVar14 + 0x2a) = *(byte *)(iVar14 + 0x2a) | 8;\n      return iVar14;\n    }" if (parenthesized_expression "((param_11 != 0) &&\n       ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0'))))" ( (binary_expression "(param_11 != 0) &&\n       ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0')))" (parenthesized_expression "(param_11 != 0)" ( (binary_expression "param_11 != 0" identifier != number_literal) )) && (parenthesized_expression "((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0')))" ( (parenthesized_expression "(cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0'))" ( (comma_expression "cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0')" (assignment_expression "cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" identifier = (call_expression "FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x154)" * (cast_expression "(undefined4 *)(param_1 + 0x154)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x154)" ( (binary_expression "param_1 + 0x154" identifier + number_literal) )))) , identifier , number_literal , (pointer_expression "&local_21" & identifier) )))) , (binary_expression "cVar13 == '\0'\n        || (local_21 != '\0')" (binary_expression "cVar13 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "(local_21 != '\0')" ( (binary_expression "local_21 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )))) )) ))) )) (compound_statement "{\n      if (param_3 == 0) {\n        return iVar14;\n      }\n      *(byte *)(iVar14 + 0x2a) = *(byte *)(iVar14 + 0x2a) | 8;\n      return iVar14;\n    }" { (if_statement "if (param_3 == 0) {\n        return iVar14;\n      }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n        return iVar14;\n      }" { (return_statement "return iVar14;" return identifier ;) })) (expression_statement "*(byte *)(iVar14 + 0x2a) = *(byte *)(iVar14 + 0x2a) | 8;" (assignment_expression "*(byte *)(iVar14 + 0x2a) = *(byte *)(iVar14 + 0x2a) | 8" (pointer_expression "*(byte *)(iVar14 + 0x2a)" * (cast_expression "(byte *)(iVar14 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x2a)" ( (binary_expression "iVar14 + 0x2a" identifier + number_literal) )))) = (binary_expression "*(byte *)(iVar14 + 0x2a) | 8" (pointer_expression "*(byte *)(iVar14 + 0x2a)" * (cast_expression "(byte *)(iVar14 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x2a)" ( (binary_expression "iVar14 + 0x2a" identifier + number_literal) )))) | number_literal)) ;) (return_statement "return iVar14;" return identifier ;) })) (expression_statement "FUN_00177f20(param_1,iVar14);" (call_expression "FUN_00177f20(param_1,iVar14)" identifier (argument_list "(param_1,iVar14)" ( identifier , identifier ))) ;) (return_statement "return iVar14;" return identifier ;) })) (expression_statement "cVar13 = FUN_001ca200(local_20[0],param_10,param_4);" (assignment_expression "cVar13 = FUN_001ca200(local_20[0],param_10,param_4)" identifier = (call_expression "FUN_001ca200(local_20[0],param_10,param_4)" identifier (argument_list "(local_20[0],param_10,param_4)" ( (subscript_expression "local_20[0]" identifier [ number_literal ]) , identifier , identifier )))) ;) (if_statement "if (cVar13 != '\0') {\n    FUN_001cb410(param_1,local_20[0],iVar14);\n  }" if (parenthesized_expression "(cVar13 != '\0')" ( (binary_expression "cVar13 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    FUN_001cb410(param_1,local_20[0],iVar14);\n  }" { (expression_statement "FUN_001cb410(param_1,local_20[0],iVar14);" (call_expression "FUN_001cb410(param_1,local_20[0],iVar14)" identifier (argument_list "(param_1,local_20[0],iVar14)" ( identifier , (subscript_expression "local_20[0]" identifier [ number_literal ]) , identifier ))) ;) })) (if_statement "if (local_22 == '\0') {\n    if ((param_4 == 5) &&\n       ((param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')))))) {\n      FUN_00177f20(param_1,local_20[0]);\n    }\n    iVar1 = *(int *)(iVar14 + 0x24);\n    if (iVar1 != 0) {\n      iVar2 = *(int *)(iVar1 + 8);\n      if (iVar2 != 0) {\n        iVar3 = *(int *)(iVar2 + 8);\n        if (iVar3 != 0) {\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }\n        FUN_001e6d90(iVar2,0xc);\n      }\n      FUN_001e6d90(iVar1,0xc);\n    }\n    FUN_001e6d90(iVar14,0x40);\n    return local_20[0];\n  }" if (parenthesized_expression "(local_22 == '\0')" ( (binary_expression "local_22 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if ((param_4 == 5) &&\n       ((param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')))))) {\n      FUN_00177f20(param_1,local_20[0]);\n    }\n    iVar1 = *(int *)(iVar14 + 0x24);\n    if (iVar1 != 0) {\n      iVar2 = *(int *)(iVar1 + 8);\n      if (iVar2 != 0) {\n        iVar3 = *(int *)(iVar2 + 8);\n        if (iVar3 != 0) {\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }\n        FUN_001e6d90(iVar2,0xc);\n      }\n      FUN_001e6d90(iVar1,0xc);\n    }\n    FUN_001e6d90(iVar14,0x40);\n    return local_20[0];\n  }" { (if_statement "if ((param_4 == 5) &&\n       ((param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')))))) {\n      FUN_00177f20(param_1,local_20[0]);\n    }" if (parenthesized_expression "((param_4 == 5) &&\n       ((param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0'))))))" ( (binary_expression "(param_4 == 5) &&\n       ((param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')))))" (parenthesized_expression "(param_4 == 5)" ( (binary_expression "param_4 == 5" identifier == number_literal) )) && (parenthesized_expression "((param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')))))" ( (parenthesized_expression "(param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0'))))" ( (binary_expression "param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')))" (binary_expression "param_11 == 0" identifier == number_literal) || (parenthesized_expression "((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')))" ( (parenthesized_expression "(cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0'))" ( (comma_expression "cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')" (assignment_expression "cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" identifier = (call_expression "FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x154)" * (cast_expression "(undefined4 *)(param_1 + 0x154)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x154)" ( (binary_expression "param_1 + 0x154" identifier + number_literal) )))) , identifier , number_literal , (pointer_expression "&local_21" & identifier) )))) , (binary_expression "cVar13 != '\0' && (local_21 == '\0')" (binary_expression "cVar13 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) && (parenthesized_expression "(local_21 == '\0')" ( (binary_expression "local_21 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )))) )) ))) )) ))) )) (compound_statement "{\n      FUN_00177f20(param_1,local_20[0]);\n    }" { (expression_statement "FUN_00177f20(param_1,local_20[0]);" (call_expression "FUN_00177f20(param_1,local_20[0])" identifier (argument_list "(param_1,local_20[0])" ( identifier , (subscript_expression "local_20[0]" identifier [ number_literal ]) ))) ;) })) (expression_statement "iVar1 = *(int *)(iVar14 + 0x24);" (assignment_expression "iVar1 = *(int *)(iVar14 + 0x24)" identifier = (pointer_expression "*(int *)(iVar14 + 0x24)" * (cast_expression "(int *)(iVar14 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x24)" ( (binary_expression "iVar14 + 0x24" identifier + number_literal) ))))) ;) (if_statement "if (iVar1 != 0) {\n      iVar2 = *(int *)(iVar1 + 8);\n      if (iVar2 != 0) {\n        iVar3 = *(int *)(iVar2 + 8);\n        if (iVar3 != 0) {\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }\n        FUN_001e6d90(iVar2,0xc);\n      }\n      FUN_001e6d90(iVar1,0xc);\n    }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar2 = *(int *)(iVar1 + 8);\n      if (iVar2 != 0) {\n        iVar3 = *(int *)(iVar2 + 8);\n        if (iVar3 != 0) {\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }\n        FUN_001e6d90(iVar2,0xc);\n      }\n      FUN_001e6d90(iVar1,0xc);\n    }" { (expression_statement "iVar2 = *(int *)(iVar1 + 8);" (assignment_expression "iVar2 = *(int *)(iVar1 + 8)" identifier = (pointer_expression "*(int *)(iVar1 + 8)" * (cast_expression "(int *)(iVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar2 != 0) {\n        iVar3 = *(int *)(iVar2 + 8);\n        if (iVar3 != 0) {\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }\n        FUN_001e6d90(iVar2,0xc);\n      }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar3 = *(int *)(iVar2 + 8);\n        if (iVar3 != 0) {\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }\n        FUN_001e6d90(iVar2,0xc);\n      }" { (expression_statement "iVar3 = *(int *)(iVar2 + 8);" (assignment_expression "iVar3 = *(int *)(iVar2 + 8)" identifier = (pointer_expression "*(int *)(iVar2 + 8)" * (cast_expression "(int *)(iVar2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 != 0) {\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }" { (expression_statement "iVar4 = *(int *)(iVar3 + 8);" (assignment_expression "iVar4 = *(int *)(iVar3 + 8)" identifier = (pointer_expression "*(int *)(iVar3 + 8)" * (cast_expression "(int *)(iVar3 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }" { (expression_statement "iVar5 = *(int *)(iVar4 + 8);" (assignment_expression "iVar5 = *(int *)(iVar4 + 8)" identifier = (pointer_expression "*(int *)(iVar4 + 8)" * (cast_expression "(int *)(iVar4 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 8)" ( (binary_expression "iVar4 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }" { (expression_statement "iVar6 = *(int *)(iVar5 + 8);" (assignment_expression "iVar6 = *(int *)(iVar5 + 8)" identifier = (pointer_expression "*(int *)(iVar5 + 8)" * (cast_expression "(int *)(iVar5 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 8)" ( (binary_expression "iVar5 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }" { (expression_statement "FUN_0017afa0(iVar6);" (call_expression "FUN_0017afa0(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))) ;) (expression_statement "FUN_001e6d90(iVar6,0xc);" (call_expression "FUN_001e6d90(iVar6,0xc)" identifier (argument_list "(iVar6,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "FUN_001e6d90(iVar5,0xc);" (call_expression "FUN_001e6d90(iVar5,0xc)" identifier (argument_list "(iVar5,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "FUN_001e6d90(iVar4,0xc);" (call_expression "FUN_001e6d90(iVar4,0xc)" identifier (argument_list "(iVar4,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "FUN_001e6d90(iVar3,0xc);" (call_expression "FUN_001e6d90(iVar3,0xc)" identifier (argument_list "(iVar3,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "FUN_001e6d90(iVar2,0xc);" (call_expression "FUN_001e6d90(iVar2,0xc)" identifier (argument_list "(iVar2,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "FUN_001e6d90(iVar1,0xc);" (call_expression "FUN_001e6d90(iVar1,0xc)" identifier (argument_list "(iVar1,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "FUN_001e6d90(iVar14,0x40);" (call_expression "FUN_001e6d90(iVar14,0x40)" identifier (argument_list "(iVar14,0x40)" ( identifier , number_literal ))) ;) (return_statement "return local_20[0];" return (subscript_expression "local_20[0]" identifier [ number_literal ]) ;) })) (return_statement "return iVar14;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */\n/* WARNING: Enum "STT": Some values do not have unique names */\n/* WARNING: Enum "STB": Some values do not have unique names */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: Sized_symbol<64> * do_define_in_output_data<64>(Symbol_table * this,\n   char * name, char * version, Defined defined, Output_data * od, Elf_Addr value, Elf_WXword\n   symsize, STT type, STB binding, STV visibility, uchar nonvis, bool offset_is_from_end, bool\n   only_if_ref) */\n\nSized_symbol<64> * __thiscall\ngold::Symbol_table::do_define_in_output_data<64>\n          (Symbol_table *this,char *name,char *version,Defined defined,Output_data *od,\n          Elf_Addr value,Elf_WXword symsize,STT type,STB binding,STV visibility,uchar nonvis,\n          bool offset_is_from_end,bool only_if_ref)\n\n{\n  undefined1 *puVar1;\n  Got_offset_list *pGVar2;\n  Got_offset_list *pGVar3;\n  Got_offset_list *pGVar4;\n  Got_offset_list *pGVar5;\n  Got_offset_list *pGVar6;\n  Got_offset_list *this_00;\n  Elf_Addr value_00;\n  Elf_WXword symsize_00;\n  uchar nonvis_00;\n  bool bVar7;\n  Sized_symbol<64> *this_01;\n  undefined3 in_stack_00000035;\n  undefined3 in_stack_00000039;\n  undefined3 in_stack_0000003d;\n  Sized_symbol<64> *__in_chrg;\n  bool resolve_oldsym;\n  bool is_global;\n  Sized_symbol<64> *oldsym;\n  \n  bVar7 = offset_is_from_end;\n  nonvis_00 = nonvis;\n  symsize_00 = symsize;\n  value_00 = value;\n  if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n  }\n  if (*(char *)(*(int *)(parameters->target_ + 4) + 4) == '\0') {\n    this_01 = define_special_symbol<64,_false>\n                        (this,&name,&version,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL);\n  }\n  else {\n    this_01 = define_special_symbol<64,_true>\n                        (this,&name,&version,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL);\n  }\n  if (this_01 == (Sized_symbol<64> *)0x0) {\n    return (Sized_symbol<64> *)0x0;\n  }\n  Sized_symbol<64>::init_output_data\n            (this_01,name,version,od,value_00,symsize_00,type,binding,visibility,nonvis_00,bVar7,\n             defined == PREDEFINED);\n  if (oldsym == (Sized_symbol<64> *)0x0) {\n    if (binding != STB_LOCAL) {\n      bVar7 = Version_script_info::get_symbol_version\n                        (this->version_script_,name,(string *)0x0,&is_global);\n      if ((!bVar7) || (is_global != false)) {\n        if (version == (char *)0x0) {\n          return this_01;\n        }\n        puVar1 = &(this_01->super_Symbol).field_0x2a;\n        *puVar1 = *puVar1 | 8;\n        return this_01;\n      }\n    }\n    force_local(this,&this_01->super_Symbol);\n    return this_01;\n  }\n  __in_chrg = (Sized_symbol<64> *)type;\n  bVar7 = should_override_with_special(&oldsym->super_Symbol,type,defined);\n  if (bVar7) {\n    __in_chrg = oldsym;\n    override_with_special<64>(this,oldsym,this_01);\n  }\n  if (resolve_oldsym != false) {\n    return this_01;\n  }\n  if (defined == PREDEFINED) {\n    if (binding != STB_LOCAL) {\n      __in_chrg = (Sized_symbol<64> *)name;\n      bVar7 = Version_script_info::get_symbol_version\n                        (this->version_script_,name,(string *)0x0,&is_global);\n      if ((!bVar7) || (is_global != false)) goto LAB_00189744;\n    }\n    __in_chrg = oldsym;\n    force_local(this,&oldsym->super_Symbol);\n  }\nLAB_00189744:\n  pGVar2 = (this_01->super_Symbol).got_offsets_.got_next_;\n  if (pGVar2 != (Got_offset_list *)0x0) {\n    pGVar3 = pGVar2->got_next_;\n    if (pGVar3 != (Got_offset_list *)0x0) {\n      pGVar4 = pGVar3->got_next_;\n      if (pGVar4 != (Got_offset_list *)0x0) {\n        pGVar5 = pGVar4->got_next_;\n        if (pGVar5 != (Got_offset_list *)0x0) {\n          pGVar6 = pGVar5->got_next_;\n          if (pGVar6 != (Got_offset_list *)0x0) {\n            this_00 = pGVar6->got_next_;\n            if (this_00 != (Got_offset_list *)0x0) {\n              Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);\n              operator_delete(this_00,0xc);\n            }\n            operator_delete(pGVar6,0xc);\n          }\n          operator_delete(pGVar5,0xc);\n        }\n        operator_delete(pGVar4,0xc);\n      }\n      operator_delete(pGVar3,0xc);\n    }\n    operator_delete(pGVar2,0xc);\n  }\n  operator_delete(this_01,0x40);\n  return oldsym;\n}\n\n" comment comment comment comment comment (ERROR "Sized_symbol<64> * __thiscall\ngold::Symbol_table::do_define_in_output_data<64>\n          (Symbol_table *this,char *name,char *version,Defined defined,Output_data *od,\n          Elf_Addr value,Elf_WXword symsize,STT type,STB binding,STV visibility,uchar nonvis,\n          bool offset_is_from_end,bool only_if_ref)" (binary_expression "Sized_symbol<64> * __thiscall\ngold::Symbol_table::do_define_in_output_data<64>\n          (Symbol_table *this,char *name,char *version,Defined defined,Output_data *od,\n          Elf_Addr value,Elf_WXword symsize,STT type,STB binding,STV visibility,uchar nonvis,\n          bool offset_is_from_end,bool only_if_ref)" (binary_expression "Sized_symbol<64> * __thiscall\ngold::Symbol_table::do_define_in_output_data<64" (binary_expression "Sized_symbol<64> * __thiscall" (binary_expression "Sized_symbol<64" identifier < number_literal) > (pointer_expression "* __thiscall" * identifier)) (ERROR "gold::Symbol_table::do_define_in_output_data" identifier : : identifier : : identifier) < number_literal) > (parenthesized_expression "(Symbol_table *this,char *name,char *version,Defined defined,Output_data *od,\n          Elf_Addr value,Elf_WXword symsize,STT type,STB binding,STV visibility,uchar nonvis,\n          bool offset_is_from_end,bool only_if_ref)" ( (comma_expression "Symbol_table *this,char *name,char *version,Defined defined,Output_data *od,\n          Elf_Addr value,Elf_WXword symsize,STT type,STB binding,STV visibility,uchar nonvis,\n          bool offset_is_from_end,bool only_if_ref" (binary_expression "Symbol_table *this" identifier * identifier) , (comma_expression "char *name,char *version,Defined defined,Output_data *od,\n          Elf_Addr value,Elf_WXword symsize,STT type,STB binding,STV visibility,uchar nonvis,\n          bool offset_is_from_end,bool only_if_ref" (binary_expression "char *name" identifier * identifier) , (comma_expression "char *version,Defined defined,Output_data *od,\n          Elf_Addr value,Elf_WXword symsize,STT type,STB binding,STV visibility,uchar nonvis,\n          bool offset_is_from_end,bool only_if_ref" (binary_expression "char *version" identifier * identifier) , (ERROR "Defined defined,Output_data *od,\n          Elf_Addr value,Elf_WXword symsize,STT type,STB" identifier (comma_expression "defined,Output_data *od,\n          Elf_Addr value,Elf_WXword symsize,STT type,STB" identifier , (comma_expression "Output_data *od,\n          Elf_Addr value,Elf_WXword symsize,STT type,STB" (binary_expression "Output_data *od" identifier * identifier) , (comma_expression "Elf_Addr value,Elf_WXword symsize,STT type,STB" identifier (ERROR "value" identifier) , (comma_expression "Elf_WXword symsize,STT type,STB" identifier (ERROR "symsize" identifier) , (ERROR "STT" identifier) (comma_expression "type,STB" identifier , identifier)))))) (comma_expression "binding,STV visibility,uchar nonvis,\n          bool offset_is_from_end,bool only_if_ref" identifier , (ERROR "STV" identifier) (comma_expression "visibility,uchar nonvis,\n          bool offset_is_from_end,bool only_if_ref" identifier , (ERROR "uchar" identifier) (comma_expression "nonvis,\n          bool offset_is_from_end,bool only_if_ref" identifier , (ERROR "bool" identifier) (comma_expression "offset_is_from_end,bool only_if_ref" identifier , (ERROR "bool" identifier) identifier))))))) )))) (compound_statement "{\n  undefined1 *puVar1;\n  Got_offset_list *pGVar2;\n  Got_offset_list *pGVar3;\n  Got_offset_list *pGVar4;\n  Got_offset_list *pGVar5;\n  Got_offset_list *pGVar6;\n  Got_offset_list *this_00;\n  Elf_Addr value_00;\n  Elf_WXword symsize_00;\n  uchar nonvis_00;\n  bool bVar7;\n  Sized_symbol<64> *this_01;\n  undefined3 in_stack_00000035;\n  undefined3 in_stack_00000039;\n  undefined3 in_stack_0000003d;\n  Sized_symbol<64> *__in_chrg;\n  bool resolve_oldsym;\n  bool is_global;\n  Sized_symbol<64> *oldsym;\n  \n  bVar7 = offset_is_from_end;\n  nonvis_00 = nonvis;\n  symsize_00 = symsize;\n  value_00 = value;\n  if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n  }\n  if (*(char *)(*(int *)(parameters->target_ + 4) + 4) == '\0') {\n    this_01 = define_special_symbol<64,_false>\n                        (this,&name,&version,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL);\n  }\n  else {\n    this_01 = define_special_symbol<64,_true>\n                        (this,&name,&version,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL);\n  }\n  if (this_01 == (Sized_symbol<64> *)0x0) {\n    return (Sized_symbol<64> *)0x0;\n  }\n  Sized_symbol<64>::init_output_data\n            (this_01,name,version,od,value_00,symsize_00,type,binding,visibility,nonvis_00,bVar7,\n             defined == PREDEFINED);\n  if (oldsym == (Sized_symbol<64> *)0x0) {\n    if (binding != STB_LOCAL) {\n      bVar7 = Version_script_info::get_symbol_version\n                        (this->version_script_,name,(string *)0x0,&is_global);\n      if ((!bVar7) || (is_global != false)) {\n        if (version == (char *)0x0) {\n          return this_01;\n        }\n        puVar1 = &(this_01->super_Symbol).field_0x2a;\n        *puVar1 = *puVar1 | 8;\n        return this_01;\n      }\n    }\n    force_local(this,&this_01->super_Symbol);\n    return this_01;\n  }\n  __in_chrg = (Sized_symbol<64> *)type;\n  bVar7 = should_override_with_special(&oldsym->super_Symbol,type,defined);\n  if (bVar7) {\n    __in_chrg = oldsym;\n    override_with_special<64>(this,oldsym,this_01);\n  }\n  if (resolve_oldsym != false) {\n    return this_01;\n  }\n  if (defined == PREDEFINED) {\n    if (binding != STB_LOCAL) {\n      __in_chrg = (Sized_symbol<64> *)name;\n      bVar7 = Version_script_info::get_symbol_version\n                        (this->version_script_,name,(string *)0x0,&is_global);\n      if ((!bVar7) || (is_global != false)) goto LAB_00189744;\n    }\n    __in_chrg = oldsym;\n    force_local(this,&oldsym->super_Symbol);\n  }\nLAB_00189744:\n  pGVar2 = (this_01->super_Symbol).got_offsets_.got_next_;\n  if (pGVar2 != (Got_offset_list *)0x0) {\n    pGVar3 = pGVar2->got_next_;\n    if (pGVar3 != (Got_offset_list *)0x0) {\n      pGVar4 = pGVar3->got_next_;\n      if (pGVar4 != (Got_offset_list *)0x0) {\n        pGVar5 = pGVar4->got_next_;\n        if (pGVar5 != (Got_offset_list *)0x0) {\n          pGVar6 = pGVar5->got_next_;\n          if (pGVar6 != (Got_offset_list *)0x0) {\n            this_00 = pGVar6->got_next_;\n            if (this_00 != (Got_offset_list *)0x0) {\n              Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);\n              operator_delete(this_00,0xc);\n            }\n            operator_delete(pGVar6,0xc);\n          }\n          operator_delete(pGVar5,0xc);\n        }\n        operator_delete(pGVar4,0xc);\n      }\n      operator_delete(pGVar3,0xc);\n    }\n    operator_delete(pGVar2,0xc);\n  }\n  operator_delete(this_01,0x40);\n  return oldsym;\n}" { (declaration "undefined1 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "Got_offset_list *pGVar2;" type_identifier (pointer_declarator "*pGVar2" * identifier) ;) (declaration "Got_offset_list *pGVar3;" type_identifier (pointer_declarator "*pGVar3" * identifier) ;) (declaration "Got_offset_list *pGVar4;" type_identifier (pointer_declarator "*pGVar4" * identifier) ;) (declaration "Got_offset_list *pGVar5;" type_identifier (pointer_declarator "*pGVar5" * identifier) ;) (declaration "Got_offset_list *pGVar6;" type_identifier (pointer_declarator "*pGVar6" * identifier) ;) (declaration "Got_offset_list *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "Elf_Addr value_00;" type_identifier identifier ;) (declaration "Elf_WXword symsize_00;" type_identifier identifier ;) (declaration "uchar nonvis_00;" type_identifier identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (expression_statement "Sized_symbol<64> *this_01;" (binary_expression "Sized_symbol<64> *this_01" (binary_expression "Sized_symbol<64" identifier < number_literal) > (pointer_expression "*this_01" * identifier)) ;) (declaration "undefined3 in_stack_00000035;" type_identifier identifier ;) (declaration "undefined3 in_stack_00000039;" type_identifier identifier ;) (declaration "undefined3 in_stack_0000003d;" type_identifier identifier ;) (expression_statement "Sized_symbol<64> *__in_chrg;" (binary_expression "Sized_symbol<64> *__in_chrg" (binary_expression "Sized_symbol<64" identifier < number_literal) > (pointer_expression "*__in_chrg" * identifier)) ;) (declaration "bool resolve_oldsym;" primitive_type identifier ;) (declaration "bool is_global;" primitive_type identifier ;) (expression_statement "Sized_symbol<64> *oldsym;" (binary_expression "Sized_symbol<64> *oldsym" (binary_expression "Sized_symbol<64" identifier < number_literal) > (pointer_expression "*oldsym" * identifier)) ;) (expression_statement "bVar7 = offset_is_from_end;" (assignment_expression "bVar7 = offset_is_from_end" identifier = identifier) ;) (expression_statement "nonvis_00 = nonvis;" (assignment_expression "nonvis_00 = nonvis" identifier = identifier) ;) (expression_statement "symsize_00 = symsize;" (assignment_expression "symsize_00 = symsize" identifier = identifier) ;) (expression_statement "value_00 = value;" (assignment_expression "value_00 = value" identifier = identifier) ;) (if_statement "if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n  }" if (parenthesized_expression "(parameters->target_ == (Target *)0x0)" ( (binary_expression "parameters->target_ == (Target *)0x0" (field_expression "parameters->target_" identifier -> field_identifier) == (cast_expression "(Target *)0x0" ( (type_descriptor "Target *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x69,"target");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;) })) (if_statement "if (*(char *)(*(int *)(parameters->target_ + 4) + 4) == '\0') {\n    this_01 = define_special_symbol<64,_false>\n                        (this,&name,&version,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL);\n  }\n  else {\n    this_01 = define_special_symbol<64,_true>\n                        (this,&name,&version,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL);\n  }" if (parenthesized_expression "(*(char *)(*(int *)(parameters->target_ + 4) + 4) == '\0')" ( (binary_expression "*(char *)(*(int *)(parameters->target_ + 4) + 4) == '\0'" (pointer_expression "*(char *)(*(int *)(parameters->target_ + 4) + 4)" * (cast_expression "(char *)(*(int *)(parameters->target_ + 4) + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(parameters->target_ + 4) + 4)" ( (binary_expression "*(int *)(parameters->target_ + 4) + 4" (pointer_expression "*(int *)(parameters->target_ + 4)" * (cast_expression "(int *)(parameters->target_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(parameters->target_ + 4)" ( (binary_expression "parameters->target_ + 4" (field_expression "parameters->target_" identifier -> field_identifier) + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    this_01 = define_special_symbol<64,_false>\n                        (this,&name,&version,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL);\n  }" { (expression_statement "this_01 = define_special_symbol<64,_false>\n                        (this,&name,&version,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL);" (comma_expression "this_01 = define_special_symbol<64,_false>\n                        (this,&name,&version,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL)" (assignment_expression "this_01 = define_special_symbol<64" identifier = (binary_expression "define_special_symbol<64" identifier < number_literal)) , (binary_expression "_false>\n                        (this,&name,&version,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL)" identifier > (parenthesized_expression "(this,&name,&version,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL)" ( (comma_expression "this,&name,&version,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL" identifier , (comma_expression "&name,&version,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL" (pointer_expression "&name" & identifier) , (comma_expression "&version,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL" (pointer_expression "&version" & identifier) , (comma_expression "only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL" identifier , (comma_expression "visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL" identifier , (comma_expression "&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL" (pointer_expression "&oldsym" & identifier) , (comma_expression "&resolve_oldsym,\n                         binding == STB_LOCAL" (pointer_expression "&resolve_oldsym" & identifier) , (binary_expression "binding == STB_LOCAL" identifier == identifier)))))))) )))) ;) }) (else_clause "else {\n    this_01 = define_special_symbol<64,_true>\n                        (this,&name,&version,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL);\n  }" else (compound_statement "{\n    this_01 = define_special_symbol<64,_true>\n                        (this,&name,&version,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL);\n  }" { (expression_statement "this_01 = define_special_symbol<64,_true>\n                        (this,&name,&version,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL);" (comma_expression "this_01 = define_special_symbol<64,_true>\n                        (this,&name,&version,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL)" (assignment_expression "this_01 = define_special_symbol<64" identifier = (binary_expression "define_special_symbol<64" identifier < number_literal)) , (binary_expression "_true>\n                        (this,&name,&version,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL)" identifier > (parenthesized_expression "(this,&name,&version,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL)" ( (comma_expression "this,&name,&version,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL" identifier , (comma_expression "&name,&version,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL" (pointer_expression "&name" & identifier) , (comma_expression "&version,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL" (pointer_expression "&version" & identifier) , (comma_expression "only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL" identifier , (comma_expression "visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL" identifier , (comma_expression "&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL" (pointer_expression "&oldsym" & identifier) , (comma_expression "&resolve_oldsym,\n                         binding == STB_LOCAL" (pointer_expression "&resolve_oldsym" & identifier) , (binary_expression "binding == STB_LOCAL" identifier == identifier)))))))) )))) ;) }))) (if_statement "if (this_01 == (Sized_symbol<64> *)0x0) {\n    return (Sized_symbol<64> *)0x0;\n  }" if (parenthesized_expression "(this_01 == (Sized_symbol<64> *)0x0)" ( (binary_expression "this_01 == (Sized_symbol<64> *)0x0)" identifier == (parenthesized_expression "(Sized_symbol<64> *)0x0)" ( (binary_expression "Sized_symbol<64> *)0x0" (binary_expression "Sized_symbol<64" identifier < number_literal) > (pointer_expression "*)0x0" * (ERROR ")" )) number_literal)) ))) )) (compound_statement "{\n    return (Sized_symbol<64> *)0x0;\n  }" { (return_statement "return (Sized_symbol<64> *)0x0;" return (parenthesized_expression "(Sized_symbol<64> *)0x0" ( (binary_expression "Sized_symbol<64> *)0x0" (binary_expression "Sized_symbol<64" identifier < number_literal) > (pointer_expression "*)0x0" * (ERROR ")" )) number_literal)) )) ;) })) (expression_statement "Sized_symbol<64>::init_output_data\n            (this_01,name,version,od,value_00,symsize_00,type,binding,visibility,nonvis_00,bVar7,\n             defined == PREDEFINED);" (binary_expression "Sized_symbol<64>::init_output_data\n            (this_01,name,version,od,value_00,symsize_00,type,binding,visibility,nonvis_00,bVar7,\n             defined == PREDEFINED)" (binary_expression "Sized_symbol<64" identifier < number_literal) > (ERROR "::" : :) (call_expression "init_output_data\n            (this_01,name,version,od,value_00,symsize_00,type,binding,visibility,nonvis_00,bVar7,\n             defined == PREDEFINED)" identifier (argument_list "(this_01,name,version,od,value_00,symsize_00,type,binding,visibility,nonvis_00,bVar7,\n             defined == PREDEFINED)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , (binary_expression "defined == PREDEFINED" identifier == identifier) )))) ;) (if_statement "if (oldsym == (Sized_symbol<64> *)0x0) {\n    if (binding != STB_LOCAL) {\n      bVar7 = Version_script_info::get_symbol_version\n                        (this->version_script_,name,(string *)0x0,&is_global);\n      if ((!bVar7) || (is_global != false)) {\n        if (version == (char *)0x0) {\n          return this_01;\n        }\n        puVar1 = &(this_01->super_Symbol).field_0x2a;\n        *puVar1 = *puVar1 | 8;\n        return this_01;\n      }\n    }\n    force_local(this,&this_01->super_Symbol);\n    return this_01;\n  }" if (parenthesized_expression "(oldsym == (Sized_symbol<64> *)0x0)" ( (binary_expression "oldsym == (Sized_symbol<64> *)0x0)" identifier == (parenthesized_expression "(Sized_symbol<64> *)0x0)" ( (binary_expression "Sized_symbol<64> *)0x0" (binary_expression "Sized_symbol<64" identifier < number_literal) > (pointer_expression "*)0x0" * (ERROR ")" )) number_literal)) ))) )) (compound_statement "{\n    if (binding != STB_LOCAL) {\n      bVar7 = Version_script_info::get_symbol_version\n                        (this->version_script_,name,(string *)0x0,&is_global);\n      if ((!bVar7) || (is_global != false)) {\n        if (version == (char *)0x0) {\n          return this_01;\n        }\n        puVar1 = &(this_01->super_Symbol).field_0x2a;\n        *puVar1 = *puVar1 | 8;\n        return this_01;\n      }\n    }\n    force_local(this,&this_01->super_Symbol);\n    return this_01;\n  }" { (if_statement "if (binding != STB_LOCAL) {\n      bVar7 = Version_script_info::get_symbol_version\n                        (this->version_script_,name,(string *)0x0,&is_global);\n      if ((!bVar7) || (is_global != false)) {\n        if (version == (char *)0x0) {\n          return this_01;\n        }\n        puVar1 = &(this_01->super_Symbol).field_0x2a;\n        *puVar1 = *puVar1 | 8;\n        return this_01;\n      }\n    }" if (parenthesized_expression "(binding != STB_LOCAL)" ( (binary_expression "binding != STB_LOCAL" identifier != identifier) )) (compound_statement "{\n      bVar7 = Version_script_info::get_symbol_version\n                        (this->version_script_,name,(string *)0x0,&is_global);\n      if ((!bVar7) || (is_global != false)) {\n        if (version == (char *)0x0) {\n          return this_01;\n        }\n        puVar1 = &(this_01->super_Symbol).field_0x2a;\n        *puVar1 = *puVar1 | 8;\n        return this_01;\n      }\n    }" { (ERROR "bVar7 = Version_script_info::" (assignment_expression "bVar7 = Version_script_info" identifier = identifier) : :) (expression_statement "get_symbol_version\n                        (this->version_script_,name,(string *)0x0,&is_global);" (call_expression "get_symbol_version\n                        (this->version_script_,name,(string *)0x0,&is_global)" identifier (argument_list "(this->version_script_,name,(string *)0x0,&is_global)" ( (field_expression "this->version_script_" identifier -> field_identifier) , identifier , (cast_expression "(string *)0x0" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (pointer_expression "&is_global" & identifier) ))) ;) (if_statement "if ((!bVar7) || (is_global != false)) {\n        if (version == (char *)0x0) {\n          return this_01;\n        }\n        puVar1 = &(this_01->super_Symbol).field_0x2a;\n        *puVar1 = *puVar1 | 8;\n        return this_01;\n      }" if (parenthesized_expression "((!bVar7) || (is_global != false))" ( (binary_expression "(!bVar7) || (is_global != false)" (parenthesized_expression "(!bVar7)" ( (unary_expression "!bVar7" ! identifier) )) || (parenthesized_expression "(is_global != false)" ( (binary_expression "is_global != false" identifier != false) ))) )) (compound_statement "{\n        if (version == (char *)0x0) {\n          return this_01;\n        }\n        puVar1 = &(this_01->super_Symbol).field_0x2a;\n        *puVar1 = *puVar1 | 8;\n        return this_01;\n      }" { (if_statement "if (version == (char *)0x0) {\n          return this_01;\n        }" if (parenthesized_expression "(version == (char *)0x0)" ( (binary_expression "version == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          return this_01;\n        }" { (return_statement "return this_01;" return identifier ;) })) (expression_statement "puVar1 = &(this_01->super_Symbol).field_0x2a;" (assignment_expression "puVar1 = &(this_01->super_Symbol).field_0x2a" identifier = (pointer_expression "&(this_01->super_Symbol).field_0x2a" & (field_expression "(this_01->super_Symbol).field_0x2a" (parenthesized_expression "(this_01->super_Symbol)" ( (field_expression "this_01->super_Symbol" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*puVar1 = *puVar1 | 8;" (assignment_expression "*puVar1 = *puVar1 | 8" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 | 8" (pointer_expression "*puVar1" * identifier) | number_literal)) ;) (return_statement "return this_01;" return identifier ;) })) })) (expression_statement "force_local(this,&this_01->super_Symbol);" (call_expression "force_local(this,&this_01->super_Symbol)" identifier (argument_list "(this,&this_01->super_Symbol)" ( identifier , (pointer_expression "&this_01->super_Symbol" & (field_expression "this_01->super_Symbol" identifier -> field_identifier)) ))) ;) (return_statement "return this_01;" return identifier ;) })) (expression_statement "__in_chrg = (Sized_symbol<64> *)type;" (assignment_expression "__in_chrg = (Sized_symbol<64> *)type" identifier = (parenthesized_expression "(Sized_symbol<64> *)type" ( (binary_expression "Sized_symbol<64> *)type" (binary_expression "Sized_symbol<64" identifier < number_literal) > (pointer_expression "*)type" * (ERROR ")" )) identifier)) ))) ;) (expression_statement "bVar7 = should_override_with_special(&oldsym->super_Symbol,type,defined);" (assignment_expression "bVar7 = should_override_with_special(&oldsym->super_Symbol,type,defined)" identifier = (call_expression "should_override_with_special(&oldsym->super_Symbol,type,defined)" identifier (argument_list "(&oldsym->super_Symbol,type,defined)" ( (pointer_expression "&oldsym->super_Symbol" & (field_expression "oldsym->super_Symbol" identifier -> field_identifier)) , identifier , identifier )))) ;) (if_statement "if (bVar7) {\n    __in_chrg = oldsym;\n    override_with_special<64>(this,oldsym,this_01);\n  }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n    __in_chrg = oldsym;\n    override_with_special<64>(this,oldsym,this_01);\n  }" { (expression_statement "__in_chrg = oldsym;" (assignment_expression "__in_chrg = oldsym" identifier = identifier) ;) (expression_statement "override_with_special<64>(this,oldsym,this_01);" (binary_expression "override_with_special<64>(this,oldsym,this_01)" (binary_expression "override_with_special<64" identifier < number_literal) > (parenthesized_expression "(this,oldsym,this_01)" ( (comma_expression "this,oldsym,this_01" identifier , (comma_expression "oldsym,this_01" identifier , identifier)) ))) ;) })) (if_statement "if (resolve_oldsym != false) {\n    return this_01;\n  }" if (parenthesized_expression "(resolve_oldsym != false)" ( (binary_expression "resolve_oldsym != false" identifier != false) )) (compound_statement "{\n    return this_01;\n  }" { (return_statement "return this_01;" return identifier ;) })) (if_statement "if (defined == PREDEFINED) {\n    if (binding != STB_LOCAL) {\n      __in_chrg = (Sized_symbol<64> *)name;\n      bVar7 = Version_script_info::get_symbol_version\n                        (this->version_script_,name,(string *)0x0,&is_global);\n      if ((!bVar7) || (is_global != false)) goto LAB_00189744;\n    }\n    __in_chrg = oldsym;\n    force_local(this,&oldsym->super_Symbol);\n  }" if (parenthesized_expression "(defined == PREDEFINED)" ( (binary_expression "defined == PREDEFINED" identifier == identifier) )) (compound_statement "{\n    if (binding != STB_LOCAL) {\n      __in_chrg = (Sized_symbol<64> *)name;\n      bVar7 = Version_script_info::get_symbol_version\n                        (this->version_script_,name,(string *)0x0,&is_global);\n      if ((!bVar7) || (is_global != false)) goto LAB_00189744;\n    }\n    __in_chrg = oldsym;\n    force_local(this,&oldsym->super_Symbol);\n  }" { (if_statement "if (binding != STB_LOCAL) {\n      __in_chrg = (Sized_symbol<64> *)name;\n      bVar7 = Version_script_info::get_symbol_version\n                        (this->version_script_,name,(string *)0x0,&is_global);\n      if ((!bVar7) || (is_global != false)) goto LAB_00189744;\n    }" if (parenthesized_expression "(binding != STB_LOCAL)" ( (binary_expression "binding != STB_LOCAL" identifier != identifier) )) (compound_statement "{\n      __in_chrg = (Sized_symbol<64> *)name;\n      bVar7 = Version_script_info::get_symbol_version\n                        (this->version_script_,name,(string *)0x0,&is_global);\n      if ((!bVar7) || (is_global != false)) goto LAB_00189744;\n    }" { (expression_statement "__in_chrg = (Sized_symbol<64> *)name;" (assignment_expression "__in_chrg = (Sized_symbol<64> *)name" identifier = (parenthesized_expression "(Sized_symbol<64> *)name" ( (binary_expression "Sized_symbol<64> *)name" (binary_expression "Sized_symbol<64" identifier < number_literal) > (pointer_expression "*)name" * (ERROR ")" )) identifier)) ))) ;) (ERROR "bVar7 = Version_script_info::" (assignment_expression "bVar7 = Version_script_info" identifier = identifier) : :) (expression_statement "get_symbol_version\n                        (this->version_script_,name,(string *)0x0,&is_global);" (call_expression "get_symbol_version\n                        (this->version_script_,name,(string *)0x0,&is_global)" identifier (argument_list "(this->version_script_,name,(string *)0x0,&is_global)" ( (field_expression "this->version_script_" identifier -> field_identifier) , identifier , (cast_expression "(string *)0x0" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (pointer_expression "&is_global" & identifier) ))) ;) (if_statement "if ((!bVar7) || (is_global != false)) goto LAB_00189744;" if (parenthesized_expression "((!bVar7) || (is_global != false))" ( (binary_expression "(!bVar7) || (is_global != false)" (parenthesized_expression "(!bVar7)" ( (unary_expression "!bVar7" ! identifier) )) || (parenthesized_expression "(is_global != false)" ( (binary_expression "is_global != false" identifier != false) ))) )) (goto_statement "goto LAB_00189744;" goto statement_identifier ;)) })) (expression_statement "__in_chrg = oldsym;" (assignment_expression "__in_chrg = oldsym" identifier = identifier) ;) (expression_statement "force_local(this,&oldsym->super_Symbol);" (call_expression "force_local(this,&oldsym->super_Symbol)" identifier (argument_list "(this,&oldsym->super_Symbol)" ( identifier , (pointer_expression "&oldsym->super_Symbol" & (field_expression "oldsym->super_Symbol" identifier -> field_identifier)) ))) ;) })) (labeled_statement "LAB_00189744:\n  pGVar2 = (this_01->super_Symbol).got_offsets_.got_next_;" statement_identifier : (expression_statement "pGVar2 = (this_01->super_Symbol).got_offsets_.got_next_;" (assignment_expression "pGVar2 = (this_01->super_Symbol).got_offsets_.got_next_" identifier = (field_expression "(this_01->super_Symbol).got_offsets_.got_next_" (field_expression "(this_01->super_Symbol).got_offsets_" (parenthesized_expression "(this_01->super_Symbol)" ( (field_expression "this_01->super_Symbol" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;)) (if_statement "if (pGVar2 != (Got_offset_list *)0x0) {\n    pGVar3 = pGVar2->got_next_;\n    if (pGVar3 != (Got_offset_list *)0x0) {\n      pGVar4 = pGVar3->got_next_;\n      if (pGVar4 != (Got_offset_list *)0x0) {\n        pGVar5 = pGVar4->got_next_;\n        if (pGVar5 != (Got_offset_list *)0x0) {\n          pGVar6 = pGVar5->got_next_;\n          if (pGVar6 != (Got_offset_list *)0x0) {\n            this_00 = pGVar6->got_next_;\n            if (this_00 != (Got_offset_list *)0x0) {\n              Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);\n              operator_delete(this_00,0xc);\n            }\n            operator_delete(pGVar6,0xc);\n          }\n          operator_delete(pGVar5,0xc);\n        }\n        operator_delete(pGVar4,0xc);\n      }\n      operator_delete(pGVar3,0xc);\n    }\n    operator_delete(pGVar2,0xc);\n  }" if (parenthesized_expression "(pGVar2 != (Got_offset_list *)0x0)" ( (binary_expression "pGVar2 != (Got_offset_list *)0x0" identifier != (cast_expression "(Got_offset_list *)0x0" ( (type_descriptor "Got_offset_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pGVar3 = pGVar2->got_next_;\n    if (pGVar3 != (Got_offset_list *)0x0) {\n      pGVar4 = pGVar3->got_next_;\n      if (pGVar4 != (Got_offset_list *)0x0) {\n        pGVar5 = pGVar4->got_next_;\n        if (pGVar5 != (Got_offset_list *)0x0) {\n          pGVar6 = pGVar5->got_next_;\n          if (pGVar6 != (Got_offset_list *)0x0) {\n            this_00 = pGVar6->got_next_;\n            if (this_00 != (Got_offset_list *)0x0) {\n              Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);\n              operator_delete(this_00,0xc);\n            }\n            operator_delete(pGVar6,0xc);\n          }\n          operator_delete(pGVar5,0xc);\n        }\n        operator_delete(pGVar4,0xc);\n      }\n      operator_delete(pGVar3,0xc);\n    }\n    operator_delete(pGVar2,0xc);\n  }" { (expression_statement "pGVar3 = pGVar2->got_next_;" (assignment_expression "pGVar3 = pGVar2->got_next_" identifier = (field_expression "pGVar2->got_next_" identifier -> field_identifier)) ;) (if_statement "if (pGVar3 != (Got_offset_list *)0x0) {\n      pGVar4 = pGVar3->got_next_;\n      if (pGVar4 != (Got_offset_list *)0x0) {\n        pGVar5 = pGVar4->got_next_;\n        if (pGVar5 != (Got_offset_list *)0x0) {\n          pGVar6 = pGVar5->got_next_;\n          if (pGVar6 != (Got_offset_list *)0x0) {\n            this_00 = pGVar6->got_next_;\n            if (this_00 != (Got_offset_list *)0x0) {\n              Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);\n              operator_delete(this_00,0xc);\n            }\n            operator_delete(pGVar6,0xc);\n          }\n          operator_delete(pGVar5,0xc);\n        }\n        operator_delete(pGVar4,0xc);\n      }\n      operator_delete(pGVar3,0xc);\n    }" if (parenthesized_expression "(pGVar3 != (Got_offset_list *)0x0)" ( (binary_expression "pGVar3 != (Got_offset_list *)0x0" identifier != (cast_expression "(Got_offset_list *)0x0" ( (type_descriptor "Got_offset_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pGVar4 = pGVar3->got_next_;\n      if (pGVar4 != (Got_offset_list *)0x0) {\n        pGVar5 = pGVar4->got_next_;\n        if (pGVar5 != (Got_offset_list *)0x0) {\n          pGVar6 = pGVar5->got_next_;\n          if (pGVar6 != (Got_offset_list *)0x0) {\n            this_00 = pGVar6->got_next_;\n            if (this_00 != (Got_offset_list *)0x0) {\n              Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);\n              operator_delete(this_00,0xc);\n            }\n            operator_delete(pGVar6,0xc);\n          }\n          operator_delete(pGVar5,0xc);\n        }\n        operator_delete(pGVar4,0xc);\n      }\n      operator_delete(pGVar3,0xc);\n    }" { (expression_statement "pGVar4 = pGVar3->got_next_;" (assignment_expression "pGVar4 = pGVar3->got_next_" identifier = (field_expression "pGVar3->got_next_" identifier -> field_identifier)) ;) (if_statement "if (pGVar4 != (Got_offset_list *)0x0) {\n        pGVar5 = pGVar4->got_next_;\n        if (pGVar5 != (Got_offset_list *)0x0) {\n          pGVar6 = pGVar5->got_next_;\n          if (pGVar6 != (Got_offset_list *)0x0) {\n            this_00 = pGVar6->got_next_;\n            if (this_00 != (Got_offset_list *)0x0) {\n              Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);\n              operator_delete(this_00,0xc);\n            }\n            operator_delete(pGVar6,0xc);\n          }\n          operator_delete(pGVar5,0xc);\n        }\n        operator_delete(pGVar4,0xc);\n      }" if (parenthesized_expression "(pGVar4 != (Got_offset_list *)0x0)" ( (binary_expression "pGVar4 != (Got_offset_list *)0x0" identifier != (cast_expression "(Got_offset_list *)0x0" ( (type_descriptor "Got_offset_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pGVar5 = pGVar4->got_next_;\n        if (pGVar5 != (Got_offset_list *)0x0) {\n          pGVar6 = pGVar5->got_next_;\n          if (pGVar6 != (Got_offset_list *)0x0) {\n            this_00 = pGVar6->got_next_;\n            if (this_00 != (Got_offset_list *)0x0) {\n              Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);\n              operator_delete(this_00,0xc);\n            }\n            operator_delete(pGVar6,0xc);\n          }\n          operator_delete(pGVar5,0xc);\n        }\n        operator_delete(pGVar4,0xc);\n      }" { (expression_statement "pGVar5 = pGVar4->got_next_;" (assignment_expression "pGVar5 = pGVar4->got_next_" identifier = (field_expression "pGVar4->got_next_" identifier -> field_identifier)) ;) (if_statement "if (pGVar5 != (Got_offset_list *)0x0) {\n          pGVar6 = pGVar5->got_next_;\n          if (pGVar6 != (Got_offset_list *)0x0) {\n            this_00 = pGVar6->got_next_;\n            if (this_00 != (Got_offset_list *)0x0) {\n              Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);\n              operator_delete(this_00,0xc);\n            }\n            operator_delete(pGVar6,0xc);\n          }\n          operator_delete(pGVar5,0xc);\n        }" if (parenthesized_expression "(pGVar5 != (Got_offset_list *)0x0)" ( (binary_expression "pGVar5 != (Got_offset_list *)0x0" identifier != (cast_expression "(Got_offset_list *)0x0" ( (type_descriptor "Got_offset_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pGVar6 = pGVar5->got_next_;\n          if (pGVar6 != (Got_offset_list *)0x0) {\n            this_00 = pGVar6->got_next_;\n            if (this_00 != (Got_offset_list *)0x0) {\n              Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);\n              operator_delete(this_00,0xc);\n            }\n            operator_delete(pGVar6,0xc);\n          }\n          operator_delete(pGVar5,0xc);\n        }" { (expression_statement "pGVar6 = pGVar5->got_next_;" (assignment_expression "pGVar6 = pGVar5->got_next_" identifier = (field_expression "pGVar5->got_next_" identifier -> field_identifier)) ;) (if_statement "if (pGVar6 != (Got_offset_list *)0x0) {\n            this_00 = pGVar6->got_next_;\n            if (this_00 != (Got_offset_list *)0x0) {\n              Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);\n              operator_delete(this_00,0xc);\n            }\n            operator_delete(pGVar6,0xc);\n          }" if (parenthesized_expression "(pGVar6 != (Got_offset_list *)0x0)" ( (binary_expression "pGVar6 != (Got_offset_list *)0x0" identifier != (cast_expression "(Got_offset_list *)0x0" ( (type_descriptor "Got_offset_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            this_00 = pGVar6->got_next_;\n            if (this_00 != (Got_offset_list *)0x0) {\n              Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);\n              operator_delete(this_00,0xc);\n            }\n            operator_delete(pGVar6,0xc);\n          }" { (expression_statement "this_00 = pGVar6->got_next_;" (assignment_expression "this_00 = pGVar6->got_next_" identifier = (field_expression "pGVar6->got_next_" identifier -> field_identifier)) ;) (if_statement "if (this_00 != (Got_offset_list *)0x0) {\n              Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);\n              operator_delete(this_00,0xc);\n            }" if (parenthesized_expression "(this_00 != (Got_offset_list *)0x0)" ( (binary_expression "this_00 != (Got_offset_list *)0x0" identifier != (cast_expression "(Got_offset_list *)0x0" ( (type_descriptor "Got_offset_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);\n              operator_delete(this_00,0xc);\n            }" { (labeled_statement "Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);" statement_identifier : (ERROR ":" :) (expression_statement "~Got_offset_list(this_00,(int)__in_chrg);" (unary_expression "~Got_offset_list(this_00,(int)__in_chrg)" ~ (call_expression "Got_offset_list(this_00,(int)__in_chrg)" identifier (argument_list "(this_00,(int)__in_chrg)" ( identifier , (cast_expression "(int)__in_chrg" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;)) (expression_statement "operator_delete(this_00,0xc);" (call_expression "operator_delete(this_00,0xc)" identifier (argument_list "(this_00,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "operator_delete(pGVar6,0xc);" (call_expression "operator_delete(pGVar6,0xc)" identifier (argument_list "(pGVar6,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "operator_delete(pGVar5,0xc);" (call_expression "operator_delete(pGVar5,0xc)" identifier (argument_list "(pGVar5,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "operator_delete(pGVar4,0xc);" (call_expression "operator_delete(pGVar4,0xc)" identifier (argument_list "(pGVar4,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "operator_delete(pGVar3,0xc);" (call_expression "operator_delete(pGVar3,0xc)" identifier (argument_list "(pGVar3,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "operator_delete(pGVar2,0xc);" (call_expression "operator_delete(pGVar2,0xc)" identifier (argument_list "(pGVar2,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "operator_delete(this_01,0x40);" (call_expression "operator_delete(this_01,0x40)" identifier (argument_list "(this_01,0x40)" ( identifier , number_literal ))) ;) (return_statement "return oldsym;" return identifier ;) }))
(translation_unit "int FUN_00189600(int param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n                undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n                undefined4 param_10,int param_11,undefined4 param_12,uint param_13,uint param_14,\n                uint param_15)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  uint uVar12;\n  char cVar13;\n  int iVar14;\n  int unaff_EBP;\n  char local_22;\n  char local_21;\n  int local_20 [4];\n  \n  FUN_000559f2();\n  uVar12 = param_14;\n  uVar11 = param_13;\n  uVar10 = param_9;\n  uVar9 = param_8;\n  uVar8 = param_7;\n  uVar7 = param_6;\n  iVar14 = *(int *)(*(int *)(unaff_EBP + 0x205d72) + 0xc);\n  if (iVar14 == 0) {\n                    \n    FUN_00069d00(unaff_EBP + 0xfdc0a,0x69,unaff_EBP + 0x110e6a,param_15);\n  }\n  if (*(char *)(*(int *)(iVar14 + 4) + 4) == '\0') {\n    iVar14 = FUN_001890d0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);\n  }\n  else {\n    iVar14 = FUN_00187430(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);\n  }\n  if (iVar14 == 0) {\n    return 0;\n  }\n  FUN_0017b220(iVar14,param_2,param_3,param_5,uVar7,uVar8,uVar9,uVar10,param_10,param_11,param_12,\n               uVar11 & 0xff,uVar12 & 0xff,param_4 == 5);\n  if (local_20[0] == 0) {\n    if ((param_11 != 0) &&\n       ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0')))) {\n      if (param_3 == 0) {\n        return iVar14;\n      }\n      *(byte *)(iVar14 + 0x2a) = *(byte *)(iVar14 + 0x2a) | 8;\n      return iVar14;\n    }\n    FUN_00177f20(param_1,iVar14);\n    return iVar14;\n  }\n  cVar13 = FUN_001ca200(local_20[0],param_10,param_4);\n  if (cVar13 != '\0') {\n    FUN_001cb410(param_1,local_20[0],iVar14);\n  }\n  if (local_22 == '\0') {\n    if ((param_4 == 5) &&\n       ((param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')))))) {\n      FUN_00177f20(param_1,local_20[0]);\n    }\n    iVar1 = *(int *)(iVar14 + 0x24);\n    if (iVar1 != 0) {\n      iVar2 = *(int *)(iVar1 + 8);\n      if (iVar2 != 0) {\n        iVar3 = *(int *)(iVar2 + 8);\n        if (iVar3 != 0) {\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }\n        FUN_001e6d90(iVar2,0xc);\n      }\n      FUN_001e6d90(iVar1,0xc);\n    }\n    FUN_001e6d90(iVar14,0x40);\n    return local_20[0];\n  }\n  return iVar14;\n}\n\n" (function_definition "int FUN_00189600(int param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n                undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n                undefined4 param_10,int param_11,undefined4 param_12,uint param_13,uint param_14,\n                uint param_15)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  uint uVar12;\n  char cVar13;\n  int iVar14;\n  int unaff_EBP;\n  char local_22;\n  char local_21;\n  int local_20 [4];\n  \n  FUN_000559f2();\n  uVar12 = param_14;\n  uVar11 = param_13;\n  uVar10 = param_9;\n  uVar9 = param_8;\n  uVar8 = param_7;\n  uVar7 = param_6;\n  iVar14 = *(int *)(*(int *)(unaff_EBP + 0x205d72) + 0xc);\n  if (iVar14 == 0) {\n                    \n    FUN_00069d00(unaff_EBP + 0xfdc0a,0x69,unaff_EBP + 0x110e6a,param_15);\n  }\n  if (*(char *)(*(int *)(iVar14 + 4) + 4) == '\0') {\n    iVar14 = FUN_001890d0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);\n  }\n  else {\n    iVar14 = FUN_00187430(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);\n  }\n  if (iVar14 == 0) {\n    return 0;\n  }\n  FUN_0017b220(iVar14,param_2,param_3,param_5,uVar7,uVar8,uVar9,uVar10,param_10,param_11,param_12,\n               uVar11 & 0xff,uVar12 & 0xff,param_4 == 5);\n  if (local_20[0] == 0) {\n    if ((param_11 != 0) &&\n       ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0')))) {\n      if (param_3 == 0) {\n        return iVar14;\n      }\n      *(byte *)(iVar14 + 0x2a) = *(byte *)(iVar14 + 0x2a) | 8;\n      return iVar14;\n    }\n    FUN_00177f20(param_1,iVar14);\n    return iVar14;\n  }\n  cVar13 = FUN_001ca200(local_20[0],param_10,param_4);\n  if (cVar13 != '\0') {\n    FUN_001cb410(param_1,local_20[0],iVar14);\n  }\n  if (local_22 == '\0') {\n    if ((param_4 == 5) &&\n       ((param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')))))) {\n      FUN_00177f20(param_1,local_20[0]);\n    }\n    iVar1 = *(int *)(iVar14 + 0x24);\n    if (iVar1 != 0) {\n      iVar2 = *(int *)(iVar1 + 8);\n      if (iVar2 != 0) {\n        iVar3 = *(int *)(iVar2 + 8);\n        if (iVar3 != 0) {\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }\n        FUN_001e6d90(iVar2,0xc);\n      }\n      FUN_001e6d90(iVar1,0xc);\n    }\n    FUN_001e6d90(iVar14,0x40);\n    return local_20[0];\n  }\n  return iVar14;\n}" primitive_type (function_declarator "FUN_00189600(int param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n                undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n                undefined4 param_10,int param_11,undefined4 param_12,uint param_13,uint param_14,\n                uint param_15)" identifier (parameter_list "(int param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n                undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n                undefined4 param_10,int param_11,undefined4 param_12,uint param_13,uint param_14,\n                uint param_15)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "undefined4 param_7" type_identifier identifier) , (parameter_declaration "undefined4 param_8" type_identifier identifier) , (parameter_declaration "undefined4 param_9" type_identifier identifier) , (parameter_declaration "undefined4 param_10" type_identifier identifier) , (parameter_declaration "int param_11" primitive_type identifier) , (parameter_declaration "undefined4 param_12" type_identifier identifier) , (parameter_declaration "uint param_13" type_identifier identifier) , (parameter_declaration "uint param_14" type_identifier identifier) , (parameter_declaration "uint param_15" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  uint uVar12;\n  char cVar13;\n  int iVar14;\n  int unaff_EBP;\n  char local_22;\n  char local_21;\n  int local_20 [4];\n  \n  FUN_000559f2();\n  uVar12 = param_14;\n  uVar11 = param_13;\n  uVar10 = param_9;\n  uVar9 = param_8;\n  uVar8 = param_7;\n  uVar7 = param_6;\n  iVar14 = *(int *)(*(int *)(unaff_EBP + 0x205d72) + 0xc);\n  if (iVar14 == 0) {\n                    \n    FUN_00069d00(unaff_EBP + 0xfdc0a,0x69,unaff_EBP + 0x110e6a,param_15);\n  }\n  if (*(char *)(*(int *)(iVar14 + 4) + 4) == '\0') {\n    iVar14 = FUN_001890d0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);\n  }\n  else {\n    iVar14 = FUN_00187430(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);\n  }\n  if (iVar14 == 0) {\n    return 0;\n  }\n  FUN_0017b220(iVar14,param_2,param_3,param_5,uVar7,uVar8,uVar9,uVar10,param_10,param_11,param_12,\n               uVar11 & 0xff,uVar12 & 0xff,param_4 == 5);\n  if (local_20[0] == 0) {\n    if ((param_11 != 0) &&\n       ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0')))) {\n      if (param_3 == 0) {\n        return iVar14;\n      }\n      *(byte *)(iVar14 + 0x2a) = *(byte *)(iVar14 + 0x2a) | 8;\n      return iVar14;\n    }\n    FUN_00177f20(param_1,iVar14);\n    return iVar14;\n  }\n  cVar13 = FUN_001ca200(local_20[0],param_10,param_4);\n  if (cVar13 != '\0') {\n    FUN_001cb410(param_1,local_20[0],iVar14);\n  }\n  if (local_22 == '\0') {\n    if ((param_4 == 5) &&\n       ((param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')))))) {\n      FUN_00177f20(param_1,local_20[0]);\n    }\n    iVar1 = *(int *)(iVar14 + 0x24);\n    if (iVar1 != 0) {\n      iVar2 = *(int *)(iVar1 + 8);\n      if (iVar2 != 0) {\n        iVar3 = *(int *)(iVar2 + 8);\n        if (iVar3 != 0) {\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }\n        FUN_001e6d90(iVar2,0xc);\n      }\n      FUN_001e6d90(iVar1,0xc);\n    }\n    FUN_001e6d90(iVar14,0x40);\n    return local_20[0];\n  }\n  return iVar14;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "char cVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "char local_22;" primitive_type identifier ;) (declaration "char local_21;" primitive_type identifier ;) (declaration "int local_20 [4];" primitive_type (array_declarator "local_20 [4]" identifier [ number_literal ]) ;) (expression_statement "FUN_000559f2();" (call_expression "FUN_000559f2()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar12 = param_14;" (assignment_expression "uVar12 = param_14" identifier = identifier) ;) (expression_statement "uVar11 = param_13;" (assignment_expression "uVar11 = param_13" identifier = identifier) ;) (expression_statement "uVar10 = param_9;" (assignment_expression "uVar10 = param_9" identifier = identifier) ;) (expression_statement "uVar9 = param_8;" (assignment_expression "uVar9 = param_8" identifier = identifier) ;) (expression_statement "uVar8 = param_7;" (assignment_expression "uVar8 = param_7" identifier = identifier) ;) (expression_statement "uVar7 = param_6;" (assignment_expression "uVar7 = param_6" identifier = identifier) ;) (expression_statement "iVar14 = *(int *)(*(int *)(unaff_EBP + 0x205d72) + 0xc);" (assignment_expression "iVar14 = *(int *)(*(int *)(unaff_EBP + 0x205d72) + 0xc)" identifier = (pointer_expression "*(int *)(*(int *)(unaff_EBP + 0x205d72) + 0xc)" * (cast_expression "(int *)(*(int *)(unaff_EBP + 0x205d72) + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(unaff_EBP + 0x205d72) + 0xc)" ( (binary_expression "*(int *)(unaff_EBP + 0x205d72) + 0xc" (pointer_expression "*(int *)(unaff_EBP + 0x205d72)" * (cast_expression "(int *)(unaff_EBP + 0x205d72)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x205d72)" ( (binary_expression "unaff_EBP + 0x205d72" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (iVar14 == 0) {\n                    \n    FUN_00069d00(unaff_EBP + 0xfdc0a,0x69,unaff_EBP + 0x110e6a,param_15);\n  }" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    FUN_00069d00(unaff_EBP + 0xfdc0a,0x69,unaff_EBP + 0x110e6a,param_15);\n  }" { (expression_statement "FUN_00069d00(unaff_EBP + 0xfdc0a,0x69,unaff_EBP + 0x110e6a,param_15);" (call_expression "FUN_00069d00(unaff_EBP + 0xfdc0a,0x69,unaff_EBP + 0x110e6a,param_15)" identifier (argument_list "(unaff_EBP + 0xfdc0a,0x69,unaff_EBP + 0x110e6a,param_15)" ( (binary_expression "unaff_EBP + 0xfdc0a" identifier + number_literal) , number_literal , (binary_expression "unaff_EBP + 0x110e6a" identifier + number_literal) , identifier ))) ;) })) (if_statement "if (*(char *)(*(int *)(iVar14 + 4) + 4) == '\0') {\n    iVar14 = FUN_001890d0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);\n  }\n  else {\n    iVar14 = FUN_00187430(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);\n  }" if (parenthesized_expression "(*(char *)(*(int *)(iVar14 + 4) + 4) == '\0')" ( (binary_expression "*(char *)(*(int *)(iVar14 + 4) + 4) == '\0'" (pointer_expression "*(char *)(*(int *)(iVar14 + 4) + 4)" * (cast_expression "(char *)(*(int *)(iVar14 + 4) + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar14 + 4) + 4)" ( (binary_expression "*(int *)(iVar14 + 4) + 4" (pointer_expression "*(int *)(iVar14 + 4)" * (cast_expression "(int *)(iVar14 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 4)" ( (binary_expression "iVar14 + 4" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar14 = FUN_001890d0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);\n  }" { (expression_statement "iVar14 = FUN_001890d0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);" (assignment_expression "iVar14 = FUN_001890d0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0)" identifier = (call_expression "FUN_001890d0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0)" identifier (argument_list "(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0)" ( identifier , (pointer_expression "&param_2" & identifier) , (pointer_expression "&param_3" & identifier) , (binary_expression "param_15 & 0xff" identifier & number_literal) , identifier , identifier , (pointer_expression "&local_22" & identifier) , (binary_expression "param_11 == 0" identifier == number_literal) )))) ;) }) (else_clause "else {\n    iVar14 = FUN_00187430(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);\n  }" else (compound_statement "{\n    iVar14 = FUN_00187430(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);\n  }" { (expression_statement "iVar14 = FUN_00187430(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);" (assignment_expression "iVar14 = FUN_00187430(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0)" identifier = (call_expression "FUN_00187430(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0)" identifier (argument_list "(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0)" ( identifier , (pointer_expression "&param_2" & identifier) , (pointer_expression "&param_3" & identifier) , (binary_expression "param_15 & 0xff" identifier & number_literal) , identifier , identifier , (pointer_expression "&local_22" & identifier) , (binary_expression "param_11 == 0" identifier == number_literal) )))) ;) }))) (if_statement "if (iVar14 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "FUN_0017b220(iVar14,param_2,param_3,param_5,uVar7,uVar8,uVar9,uVar10,param_10,param_11,param_12,\n               uVar11 & 0xff,uVar12 & 0xff,param_4 == 5);" (call_expression "FUN_0017b220(iVar14,param_2,param_3,param_5,uVar7,uVar8,uVar9,uVar10,param_10,param_11,param_12,\n               uVar11 & 0xff,uVar12 & 0xff,param_4 == 5)" identifier (argument_list "(iVar14,param_2,param_3,param_5,uVar7,uVar8,uVar9,uVar10,param_10,param_11,param_12,\n               uVar11 & 0xff,uVar12 & 0xff,param_4 == 5)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , (binary_expression "uVar11 & 0xff" identifier & number_literal) , (binary_expression "uVar12 & 0xff" identifier & number_literal) , (binary_expression "param_4 == 5" identifier == number_literal) ))) ;) (if_statement "if (local_20[0] == 0) {\n    if ((param_11 != 0) &&\n       ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0')))) {\n      if (param_3 == 0) {\n        return iVar14;\n      }\n      *(byte *)(iVar14 + 0x2a) = *(byte *)(iVar14 + 0x2a) | 8;\n      return iVar14;\n    }\n    FUN_00177f20(param_1,iVar14);\n    return iVar14;\n  }" if (parenthesized_expression "(local_20[0] == 0)" ( (binary_expression "local_20[0] == 0" (subscript_expression "local_20[0]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    if ((param_11 != 0) &&\n       ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0')))) {\n      if (param_3 == 0) {\n        return iVar14;\n      }\n      *(byte *)(iVar14 + 0x2a) = *(byte *)(iVar14 + 0x2a) | 8;\n      return iVar14;\n    }\n    FUN_00177f20(param_1,iVar14);\n    return iVar14;\n  }" { (if_statement "if ((param_11 != 0) &&\n       ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0')))) {\n      if (param_3 == 0) {\n        return iVar14;\n      }\n      *(byte *)(iVar14 + 0x2a) = *(byte *)(iVar14 + 0x2a) | 8;\n      return iVar14;\n    }" if (parenthesized_expression "((param_11 != 0) &&\n       ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0'))))" ( (binary_expression "(param_11 != 0) &&\n       ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0')))" (parenthesized_expression "(param_11 != 0)" ( (binary_expression "param_11 != 0" identifier != number_literal) )) && (parenthesized_expression "((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0')))" ( (parenthesized_expression "(cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0'))" ( (comma_expression "cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0')" (assignment_expression "cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" identifier = (call_expression "FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x154)" * (cast_expression "(undefined4 *)(param_1 + 0x154)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x154)" ( (binary_expression "param_1 + 0x154" identifier + number_literal) )))) , identifier , number_literal , (pointer_expression "&local_21" & identifier) )))) , (binary_expression "cVar13 == '\0'\n        || (local_21 != '\0')" (binary_expression "cVar13 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "(local_21 != '\0')" ( (binary_expression "local_21 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )))) )) ))) )) (compound_statement "{\n      if (param_3 == 0) {\n        return iVar14;\n      }\n      *(byte *)(iVar14 + 0x2a) = *(byte *)(iVar14 + 0x2a) | 8;\n      return iVar14;\n    }" { (if_statement "if (param_3 == 0) {\n        return iVar14;\n      }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n        return iVar14;\n      }" { (return_statement "return iVar14;" return identifier ;) })) (expression_statement "*(byte *)(iVar14 + 0x2a) = *(byte *)(iVar14 + 0x2a) | 8;" (assignment_expression "*(byte *)(iVar14 + 0x2a) = *(byte *)(iVar14 + 0x2a) | 8" (pointer_expression "*(byte *)(iVar14 + 0x2a)" * (cast_expression "(byte *)(iVar14 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x2a)" ( (binary_expression "iVar14 + 0x2a" identifier + number_literal) )))) = (binary_expression "*(byte *)(iVar14 + 0x2a) | 8" (pointer_expression "*(byte *)(iVar14 + 0x2a)" * (cast_expression "(byte *)(iVar14 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x2a)" ( (binary_expression "iVar14 + 0x2a" identifier + number_literal) )))) | number_literal)) ;) (return_statement "return iVar14;" return identifier ;) })) (expression_statement "FUN_00177f20(param_1,iVar14);" (call_expression "FUN_00177f20(param_1,iVar14)" identifier (argument_list "(param_1,iVar14)" ( identifier , identifier ))) ;) (return_statement "return iVar14;" return identifier ;) })) (expression_statement "cVar13 = FUN_001ca200(local_20[0],param_10,param_4);" (assignment_expression "cVar13 = FUN_001ca200(local_20[0],param_10,param_4)" identifier = (call_expression "FUN_001ca200(local_20[0],param_10,param_4)" identifier (argument_list "(local_20[0],param_10,param_4)" ( (subscript_expression "local_20[0]" identifier [ number_literal ]) , identifier , identifier )))) ;) (if_statement "if (cVar13 != '\0') {\n    FUN_001cb410(param_1,local_20[0],iVar14);\n  }" if (parenthesized_expression "(cVar13 != '\0')" ( (binary_expression "cVar13 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    FUN_001cb410(param_1,local_20[0],iVar14);\n  }" { (expression_statement "FUN_001cb410(param_1,local_20[0],iVar14);" (call_expression "FUN_001cb410(param_1,local_20[0],iVar14)" identifier (argument_list "(param_1,local_20[0],iVar14)" ( identifier , (subscript_expression "local_20[0]" identifier [ number_literal ]) , identifier ))) ;) })) (if_statement "if (local_22 == '\0') {\n    if ((param_4 == 5) &&\n       ((param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')))))) {\n      FUN_00177f20(param_1,local_20[0]);\n    }\n    iVar1 = *(int *)(iVar14 + 0x24);\n    if (iVar1 != 0) {\n      iVar2 = *(int *)(iVar1 + 8);\n      if (iVar2 != 0) {\n        iVar3 = *(int *)(iVar2 + 8);\n        if (iVar3 != 0) {\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }\n        FUN_001e6d90(iVar2,0xc);\n      }\n      FUN_001e6d90(iVar1,0xc);\n    }\n    FUN_001e6d90(iVar14,0x40);\n    return local_20[0];\n  }" if (parenthesized_expression "(local_22 == '\0')" ( (binary_expression "local_22 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if ((param_4 == 5) &&\n       ((param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')))))) {\n      FUN_00177f20(param_1,local_20[0]);\n    }\n    iVar1 = *(int *)(iVar14 + 0x24);\n    if (iVar1 != 0) {\n      iVar2 = *(int *)(iVar1 + 8);\n      if (iVar2 != 0) {\n        iVar3 = *(int *)(iVar2 + 8);\n        if (iVar3 != 0) {\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }\n        FUN_001e6d90(iVar2,0xc);\n      }\n      FUN_001e6d90(iVar1,0xc);\n    }\n    FUN_001e6d90(iVar14,0x40);\n    return local_20[0];\n  }" { (if_statement "if ((param_4 == 5) &&\n       ((param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')))))) {\n      FUN_00177f20(param_1,local_20[0]);\n    }" if (parenthesized_expression "((param_4 == 5) &&\n       ((param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0'))))))" ( (binary_expression "(param_4 == 5) &&\n       ((param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')))))" (parenthesized_expression "(param_4 == 5)" ( (binary_expression "param_4 == 5" identifier == number_literal) )) && (parenthesized_expression "((param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')))))" ( (parenthesized_expression "(param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0'))))" ( (binary_expression "param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')))" (binary_expression "param_11 == 0" identifier == number_literal) || (parenthesized_expression "((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')))" ( (parenthesized_expression "(cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0'))" ( (comma_expression "cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')" (assignment_expression "cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" identifier = (call_expression "FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x154)" * (cast_expression "(undefined4 *)(param_1 + 0x154)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x154)" ( (binary_expression "param_1 + 0x154" identifier + number_literal) )))) , identifier , number_literal , (pointer_expression "&local_21" & identifier) )))) , (binary_expression "cVar13 != '\0' && (local_21 == '\0')" (binary_expression "cVar13 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) && (parenthesized_expression "(local_21 == '\0')" ( (binary_expression "local_21 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )))) )) ))) )) ))) )) (compound_statement "{\n      FUN_00177f20(param_1,local_20[0]);\n    }" { (expression_statement "FUN_00177f20(param_1,local_20[0]);" (call_expression "FUN_00177f20(param_1,local_20[0])" identifier (argument_list "(param_1,local_20[0])" ( identifier , (subscript_expression "local_20[0]" identifier [ number_literal ]) ))) ;) })) (expression_statement "iVar1 = *(int *)(iVar14 + 0x24);" (assignment_expression "iVar1 = *(int *)(iVar14 + 0x24)" identifier = (pointer_expression "*(int *)(iVar14 + 0x24)" * (cast_expression "(int *)(iVar14 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x24)" ( (binary_expression "iVar14 + 0x24" identifier + number_literal) ))))) ;) (if_statement "if (iVar1 != 0) {\n      iVar2 = *(int *)(iVar1 + 8);\n      if (iVar2 != 0) {\n        iVar3 = *(int *)(iVar2 + 8);\n        if (iVar3 != 0) {\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }\n        FUN_001e6d90(iVar2,0xc);\n      }\n      FUN_001e6d90(iVar1,0xc);\n    }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar2 = *(int *)(iVar1 + 8);\n      if (iVar2 != 0) {\n        iVar3 = *(int *)(iVar2 + 8);\n        if (iVar3 != 0) {\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }\n        FUN_001e6d90(iVar2,0xc);\n      }\n      FUN_001e6d90(iVar1,0xc);\n    }" { (expression_statement "iVar2 = *(int *)(iVar1 + 8);" (assignment_expression "iVar2 = *(int *)(iVar1 + 8)" identifier = (pointer_expression "*(int *)(iVar1 + 8)" * (cast_expression "(int *)(iVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar2 != 0) {\n        iVar3 = *(int *)(iVar2 + 8);\n        if (iVar3 != 0) {\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }\n        FUN_001e6d90(iVar2,0xc);\n      }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar3 = *(int *)(iVar2 + 8);\n        if (iVar3 != 0) {\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }\n        FUN_001e6d90(iVar2,0xc);\n      }" { (expression_statement "iVar3 = *(int *)(iVar2 + 8);" (assignment_expression "iVar3 = *(int *)(iVar2 + 8)" identifier = (pointer_expression "*(int *)(iVar2 + 8)" * (cast_expression "(int *)(iVar2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 != 0) {\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }" { (expression_statement "iVar4 = *(int *)(iVar3 + 8);" (assignment_expression "iVar4 = *(int *)(iVar3 + 8)" identifier = (pointer_expression "*(int *)(iVar3 + 8)" * (cast_expression "(int *)(iVar3 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }" { (expression_statement "iVar5 = *(int *)(iVar4 + 8);" (assignment_expression "iVar5 = *(int *)(iVar4 + 8)" identifier = (pointer_expression "*(int *)(iVar4 + 8)" * (cast_expression "(int *)(iVar4 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 8)" ( (binary_expression "iVar4 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }" { (expression_statement "iVar6 = *(int *)(iVar5 + 8);" (assignment_expression "iVar6 = *(int *)(iVar5 + 8)" identifier = (pointer_expression "*(int *)(iVar5 + 8)" * (cast_expression "(int *)(iVar5 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 8)" ( (binary_expression "iVar5 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }" { (expression_statement "FUN_0017afa0(iVar6);" (call_expression "FUN_0017afa0(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))) ;) (expression_statement "FUN_001e6d90(iVar6,0xc);" (call_expression "FUN_001e6d90(iVar6,0xc)" identifier (argument_list "(iVar6,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "FUN_001e6d90(iVar5,0xc);" (call_expression "FUN_001e6d90(iVar5,0xc)" identifier (argument_list "(iVar5,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "FUN_001e6d90(iVar4,0xc);" (call_expression "FUN_001e6d90(iVar4,0xc)" identifier (argument_list "(iVar4,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "FUN_001e6d90(iVar3,0xc);" (call_expression "FUN_001e6d90(iVar3,0xc)" identifier (argument_list "(iVar3,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "FUN_001e6d90(iVar2,0xc);" (call_expression "FUN_001e6d90(iVar2,0xc)" identifier (argument_list "(iVar2,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "FUN_001e6d90(iVar1,0xc);" (call_expression "FUN_001e6d90(iVar1,0xc)" identifier (argument_list "(iVar1,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "FUN_001e6d90(iVar14,0x40);" (call_expression "FUN_001e6d90(iVar14,0x40)" identifier (argument_list "(iVar14,0x40)" ( identifier , number_literal ))) ;) (return_statement "return local_20[0];" return (subscript_expression "local_20[0]" identifier [ number_literal ]) ;) })) (return_statement "return iVar14;" return identifier ;) })))
(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 IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (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 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 (array_declarator IDENT [ LIT ]) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 IDENT + LIT) )))) + LIT) ))))) ;) (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 ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (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 IDENT + LIT) )))) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , (pointer_expression & IDENT) , (binary_expression IDENT & LIT) , IDENT , IDENT , (pointer_expression & IDENT) , (binary_expression IDENT == LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , (pointer_expression & IDENT) , (binary_expression IDENT & LIT) , IDENT , IDENT , (pointer_expression & IDENT) , (binary_expression IDENT == LIT) )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , (binary_expression IDENT & LIT) , (binary_expression IDENT & LIT) , (binary_expression IDENT == LIT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , LIT , (pointer_expression & IDENT) )))) , (binary_expression (binary_expression IDENT == (char_literal ' escape_sequence ')) || (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )))) )) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return 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)) ;) (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) || (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , LIT , (pointer_expression & IDENT) )))) , (binary_expression (binary_expression IDENT != (char_literal ' escape_sequence ')) && (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )))) )) ))) )) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) ))) ;) })) (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 = (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 = (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 = (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 = (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 = (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 (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (return_statement return (subscript_expression IDENT [ LIT ]) ;) })) (return_statement return IDENT ;) })))
(function_definition "int FUN_00189600(int param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n                undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n                undefined4 param_10,int param_11,undefined4 param_12,uint param_13,uint param_14,\n                uint param_15)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  uint uVar12;\n  char cVar13;\n  int iVar14;\n  int unaff_EBP;\n  char local_22;\n  char local_21;\n  int local_20 [4];\n  \n  FUN_000559f2();\n  uVar12 = param_14;\n  uVar11 = param_13;\n  uVar10 = param_9;\n  uVar9 = param_8;\n  uVar8 = param_7;\n  uVar7 = param_6;\n  iVar14 = *(int *)(*(int *)(unaff_EBP + 0x205d72) + 0xc);\n  if (iVar14 == 0) {\n                    \n    FUN_00069d00(unaff_EBP + 0xfdc0a,0x69,unaff_EBP + 0x110e6a,param_15);\n  }\n  if (*(char *)(*(int *)(iVar14 + 4) + 4) == '\0') {\n    iVar14 = FUN_001890d0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);\n  }\n  else {\n    iVar14 = FUN_00187430(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);\n  }\n  if (iVar14 == 0) {\n    return 0;\n  }\n  FUN_0017b220(iVar14,param_2,param_3,param_5,uVar7,uVar8,uVar9,uVar10,param_10,param_11,param_12,\n               uVar11 & 0xff,uVar12 & 0xff,param_4 == 5);\n  if (local_20[0] == 0) {\n    if ((param_11 != 0) &&\n       ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0')))) {\n      if (param_3 == 0) {\n        return iVar14;\n      }\n      *(byte *)(iVar14 + 0x2a) = *(byte *)(iVar14 + 0x2a) | 8;\n      return iVar14;\n    }\n    FUN_00177f20(param_1,iVar14);\n    return iVar14;\n  }\n  cVar13 = FUN_001ca200(local_20[0],param_10,param_4);\n  if (cVar13 != '\0') {\n    FUN_001cb410(param_1,local_20[0],iVar14);\n  }\n  if (local_22 == '\0') {\n    if ((param_4 == 5) &&\n       ((param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')))))) {\n      FUN_00177f20(param_1,local_20[0]);\n    }\n    iVar1 = *(int *)(iVar14 + 0x24);\n    if (iVar1 != 0) {\n      iVar2 = *(int *)(iVar1 + 8);\n      if (iVar2 != 0) {\n        iVar3 = *(int *)(iVar2 + 8);\n        if (iVar3 != 0) {\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }\n        FUN_001e6d90(iVar2,0xc);\n      }\n      FUN_001e6d90(iVar1,0xc);\n    }\n    FUN_001e6d90(iVar14,0x40);\n    return local_20[0];\n  }\n  return iVar14;\n}" (primitive_type "int") (function_declarator "FUN_00189600(int param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n                undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n                undefined4 param_10,int param_11,undefined4 param_12,uint param_13,uint param_14,\n                uint param_15)" (identifier "FUN_00189600") (parameter_list "(int param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n                undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n                undefined4 param_10,int param_11,undefined4 param_12,uint param_13,uint param_14,\n                uint param_15)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) (, ",") (parameter_declaration "undefined4 param_6" (type_identifier "undefined4") (identifier "param_6")) (, ",") (parameter_declaration "undefined4 param_7" (type_identifier "undefined4") (identifier "param_7")) (, ",") (parameter_declaration "undefined4 param_8" (type_identifier "undefined4") (identifier "param_8")) (, ",") (parameter_declaration "undefined4 param_9" (type_identifier "undefined4") (identifier "param_9")) (, ",") (parameter_declaration "undefined4 param_10" (type_identifier "undefined4") (identifier "param_10")) (, ",") (parameter_declaration "int param_11" (primitive_type "int") (identifier "param_11")) (, ",") (parameter_declaration "undefined4 param_12" (type_identifier "undefined4") (identifier "param_12")) (, ",") (parameter_declaration "uint param_13" (type_identifier "uint") (identifier "param_13")) (, ",") (parameter_declaration "uint param_14" (type_identifier "uint") (identifier "param_14")) (, ",") (parameter_declaration "uint param_15" (type_identifier "uint") (identifier "param_15")) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  uint uVar12;\n  char cVar13;\n  int iVar14;\n  int unaff_EBP;\n  char local_22;\n  char local_21;\n  int local_20 [4];\n  \n  FUN_000559f2();\n  uVar12 = param_14;\n  uVar11 = param_13;\n  uVar10 = param_9;\n  uVar9 = param_8;\n  uVar8 = param_7;\n  uVar7 = param_6;\n  iVar14 = *(int *)(*(int *)(unaff_EBP + 0x205d72) + 0xc);\n  if (iVar14 == 0) {\n                    \n    FUN_00069d00(unaff_EBP + 0xfdc0a,0x69,unaff_EBP + 0x110e6a,param_15);\n  }\n  if (*(char *)(*(int *)(iVar14 + 4) + 4) == '\0') {\n    iVar14 = FUN_001890d0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);\n  }\n  else {\n    iVar14 = FUN_00187430(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);\n  }\n  if (iVar14 == 0) {\n    return 0;\n  }\n  FUN_0017b220(iVar14,param_2,param_3,param_5,uVar7,uVar8,uVar9,uVar10,param_10,param_11,param_12,\n               uVar11 & 0xff,uVar12 & 0xff,param_4 == 5);\n  if (local_20[0] == 0) {\n    if ((param_11 != 0) &&\n       ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0')))) {\n      if (param_3 == 0) {\n        return iVar14;\n      }\n      *(byte *)(iVar14 + 0x2a) = *(byte *)(iVar14 + 0x2a) | 8;\n      return iVar14;\n    }\n    FUN_00177f20(param_1,iVar14);\n    return iVar14;\n  }\n  cVar13 = FUN_001ca200(local_20[0],param_10,param_4);\n  if (cVar13 != '\0') {\n    FUN_001cb410(param_1,local_20[0],iVar14);\n  }\n  if (local_22 == '\0') {\n    if ((param_4 == 5) &&\n       ((param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')))))) {\n      FUN_00177f20(param_1,local_20[0]);\n    }\n    iVar1 = *(int *)(iVar14 + 0x24);\n    if (iVar1 != 0) {\n      iVar2 = *(int *)(iVar1 + 8);\n      if (iVar2 != 0) {\n        iVar3 = *(int *)(iVar2 + 8);\n        if (iVar3 != 0) {\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }\n        FUN_001e6d90(iVar2,0xc);\n      }\n      FUN_001e6d90(iVar1,0xc);\n    }\n    FUN_001e6d90(iVar14,0x40);\n    return local_20[0];\n  }\n  return iVar14;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "undefined4 uVar8;" (type_identifier "undefined4") (identifier "uVar8") (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (declaration "undefined4 uVar10;" (type_identifier "undefined4") (identifier "uVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "char cVar13;" (primitive_type "char") (identifier "cVar13") (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "int unaff_EBP;" (primitive_type "int") (identifier "unaff_EBP") (; ";")) (declaration "char local_22;" (primitive_type "char") (identifier "local_22") (; ";")) (declaration "char local_21;" (primitive_type "char") (identifier "local_21") (; ";")) (declaration "int local_20 [4];" (primitive_type "int") (array_declarator "local_20 [4]" (identifier "local_20") ([ "[") (number_literal "4") (] "]")) (; ";")) (expression_statement "FUN_000559f2();" (call_expression "FUN_000559f2()" (identifier "FUN_000559f2") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar12 = param_14;" (assignment_expression "uVar12 = param_14" (identifier "uVar12") (= "=") (identifier "param_14")) (; ";")) (expression_statement "uVar11 = param_13;" (assignment_expression "uVar11 = param_13" (identifier "uVar11") (= "=") (identifier "param_13")) (; ";")) (expression_statement "uVar10 = param_9;" (assignment_expression "uVar10 = param_9" (identifier "uVar10") (= "=") (identifier "param_9")) (; ";")) (expression_statement "uVar9 = param_8;" (assignment_expression "uVar9 = param_8" (identifier "uVar9") (= "=") (identifier "param_8")) (; ";")) (expression_statement "uVar8 = param_7;" (assignment_expression "uVar8 = param_7" (identifier "uVar8") (= "=") (identifier "param_7")) (; ";")) (expression_statement "uVar7 = param_6;" (assignment_expression "uVar7 = param_6" (identifier "uVar7") (= "=") (identifier "param_6")) (; ";")) (expression_statement "iVar14 = *(int *)(*(int *)(unaff_EBP + 0x205d72) + 0xc);" (assignment_expression "iVar14 = *(int *)(*(int *)(unaff_EBP + 0x205d72) + 0xc)" (identifier "iVar14") (= "=") (pointer_expression "*(int *)(*(int *)(unaff_EBP + 0x205d72) + 0xc)" (* "*") (cast_expression "(int *)(*(int *)(unaff_EBP + 0x205d72) + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(unaff_EBP + 0x205d72) + 0xc)" (( "(") (binary_expression "*(int *)(unaff_EBP + 0x205d72) + 0xc" (pointer_expression "*(int *)(unaff_EBP + 0x205d72)" (* "*") (cast_expression "(int *)(unaff_EBP + 0x205d72)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0x205d72)" (( "(") (binary_expression "unaff_EBP + 0x205d72" (identifier "unaff_EBP") (+ "+") (number_literal "0x205d72")) () ")")))) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (iVar14 == 0) {\n                    \n    FUN_00069d00(unaff_EBP + 0xfdc0a,0x69,unaff_EBP + 0x110e6a,param_15);\n  }" (if "if") (parenthesized_expression "(iVar14 == 0)" (( "(") (binary_expression "iVar14 == 0" (identifier "iVar14") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_00069d00(unaff_EBP + 0xfdc0a,0x69,unaff_EBP + 0x110e6a,param_15);\n  }" ({ "{") (expression_statement "FUN_00069d00(unaff_EBP + 0xfdc0a,0x69,unaff_EBP + 0x110e6a,param_15);" (call_expression "FUN_00069d00(unaff_EBP + 0xfdc0a,0x69,unaff_EBP + 0x110e6a,param_15)" (identifier "FUN_00069d00") (argument_list "(unaff_EBP + 0xfdc0a,0x69,unaff_EBP + 0x110e6a,param_15)" (( "(") (binary_expression "unaff_EBP + 0xfdc0a" (identifier "unaff_EBP") (+ "+") (number_literal "0xfdc0a")) (, ",") (number_literal "0x69") (, ",") (binary_expression "unaff_EBP + 0x110e6a" (identifier "unaff_EBP") (+ "+") (number_literal "0x110e6a")) (, ",") (identifier "param_15") () ")"))) (; ";")) (} "}"))) (if_statement "if (*(char *)(*(int *)(iVar14 + 4) + 4) == '\0') {\n    iVar14 = FUN_001890d0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);\n  }\n  else {\n    iVar14 = FUN_00187430(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);\n  }" (if "if") (parenthesized_expression "(*(char *)(*(int *)(iVar14 + 4) + 4) == '\0')" (( "(") (binary_expression "*(char *)(*(int *)(iVar14 + 4) + 4) == '\0'" (pointer_expression "*(char *)(*(int *)(iVar14 + 4) + 4)" (* "*") (cast_expression "(char *)(*(int *)(iVar14 + 4) + 4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar14 + 4) + 4)" (( "(") (binary_expression "*(int *)(iVar14 + 4) + 4" (pointer_expression "*(int *)(iVar14 + 4)" (* "*") (cast_expression "(int *)(iVar14 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 4)" (( "(") (binary_expression "iVar14 + 4" (identifier "iVar14") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "4")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    iVar14 = FUN_001890d0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);\n  }" ({ "{") (expression_statement "iVar14 = FUN_001890d0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);" (assignment_expression "iVar14 = FUN_001890d0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0)" (identifier "iVar14") (= "=") (call_expression "FUN_001890d0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0)" (identifier "FUN_001890d0") (argument_list "(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&param_2" (& "&") (identifier "param_2")) (, ",") (pointer_expression "&param_3" (& "&") (identifier "param_3")) (, ",") (binary_expression "param_15 & 0xff" (identifier "param_15") (& "&") (number_literal "0xff")) (, ",") (identifier "param_12") (, ",") (identifier "local_20") (, ",") (pointer_expression "&local_22" (& "&") (identifier "local_22")) (, ",") (binary_expression "param_11 == 0" (identifier "param_11") (== "==") (number_literal "0")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n    iVar14 = FUN_00187430(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);\n  }" (else "else") (compound_statement "{\n    iVar14 = FUN_00187430(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);\n  }" ({ "{") (expression_statement "iVar14 = FUN_00187430(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0);" (assignment_expression "iVar14 = FUN_00187430(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0)" (identifier "iVar14") (= "=") (call_expression "FUN_00187430(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0)" (identifier "FUN_00187430") (argument_list "(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                          param_11 == 0)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&param_2" (& "&") (identifier "param_2")) (, ",") (pointer_expression "&param_3" (& "&") (identifier "param_3")) (, ",") (binary_expression "param_15 & 0xff" (identifier "param_15") (& "&") (number_literal "0xff")) (, ",") (identifier "param_12") (, ",") (identifier "local_20") (, ",") (pointer_expression "&local_22" (& "&") (identifier "local_22")) (, ",") (binary_expression "param_11 == 0" (identifier "param_11") (== "==") (number_literal "0")) () ")")))) (; ";")) (} "}")))) (if_statement "if (iVar14 == 0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(iVar14 == 0)" (( "(") (binary_expression "iVar14 == 0" (identifier "iVar14") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "FUN_0017b220(iVar14,param_2,param_3,param_5,uVar7,uVar8,uVar9,uVar10,param_10,param_11,param_12,\n               uVar11 & 0xff,uVar12 & 0xff,param_4 == 5);" (call_expression "FUN_0017b220(iVar14,param_2,param_3,param_5,uVar7,uVar8,uVar9,uVar10,param_10,param_11,param_12,\n               uVar11 & 0xff,uVar12 & 0xff,param_4 == 5)" (identifier "FUN_0017b220") (argument_list "(iVar14,param_2,param_3,param_5,uVar7,uVar8,uVar9,uVar10,param_10,param_11,param_12,\n               uVar11 & 0xff,uVar12 & 0xff,param_4 == 5)" (( "(") (identifier "iVar14") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_5") (, ",") (identifier "uVar7") (, ",") (identifier "uVar8") (, ",") (identifier "uVar9") (, ",") (identifier "uVar10") (, ",") (identifier "param_10") (, ",") (identifier "param_11") (, ",") (identifier "param_12") (, ",") (binary_expression "uVar11 & 0xff" (identifier "uVar11") (& "&") (number_literal "0xff")) (, ",") (binary_expression "uVar12 & 0xff" (identifier "uVar12") (& "&") (number_literal "0xff")) (, ",") (binary_expression "param_4 == 5" (identifier "param_4") (== "==") (number_literal "5")) () ")"))) (; ";")) (if_statement "if (local_20[0] == 0) {\n    if ((param_11 != 0) &&\n       ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0')))) {\n      if (param_3 == 0) {\n        return iVar14;\n      }\n      *(byte *)(iVar14 + 0x2a) = *(byte *)(iVar14 + 0x2a) | 8;\n      return iVar14;\n    }\n    FUN_00177f20(param_1,iVar14);\n    return iVar14;\n  }" (if "if") (parenthesized_expression "(local_20[0] == 0)" (( "(") (binary_expression "local_20[0] == 0" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if ((param_11 != 0) &&\n       ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0')))) {\n      if (param_3 == 0) {\n        return iVar14;\n      }\n      *(byte *)(iVar14 + 0x2a) = *(byte *)(iVar14 + 0x2a) | 8;\n      return iVar14;\n    }\n    FUN_00177f20(param_1,iVar14);\n    return iVar14;\n  }" ({ "{") (if_statement "if ((param_11 != 0) &&\n       ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0')))) {\n      if (param_3 == 0) {\n        return iVar14;\n      }\n      *(byte *)(iVar14 + 0x2a) = *(byte *)(iVar14 + 0x2a) | 8;\n      return iVar14;\n    }" (if "if") (parenthesized_expression "((param_11 != 0) &&\n       ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0'))))" (( "(") (binary_expression "(param_11 != 0) &&\n       ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0')))" (parenthesized_expression "(param_11 != 0)" (( "(") (binary_expression "param_11 != 0" (identifier "param_11") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0')))" (( "(") (parenthesized_expression "(cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0'))" (( "(") (comma_expression "cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'\n        || (local_21 != '\0')" (assignment_expression "cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" (identifier "cVar13") (= "=") (call_expression "FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" (identifier "FUN_0016e020") (argument_list "(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x154)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x154)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x154)" (( "(") (binary_expression "param_1 + 0x154" (identifier "param_1") (+ "+") (number_literal "0x154")) () ")")))) (, ",") (identifier "param_2") (, ",") (number_literal "0") (, ",") (pointer_expression "&local_21" (& "&") (identifier "local_21")) () ")")))) (, ",") (binary_expression "cVar13 == '\0'\n        || (local_21 != '\0')" (binary_expression "cVar13 == '\0'" (identifier "cVar13") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (|| "||") (parenthesized_expression "(local_21 != '\0')" (( "(") (binary_expression "local_21 != '\0'" (identifier "local_21") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")))) () ")")) () ")"))) () ")")) (compound_statement "{\n      if (param_3 == 0) {\n        return iVar14;\n      }\n      *(byte *)(iVar14 + 0x2a) = *(byte *)(iVar14 + 0x2a) | 8;\n      return iVar14;\n    }" ({ "{") (if_statement "if (param_3 == 0) {\n        return iVar14;\n      }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return iVar14;\n      }" ({ "{") (return_statement "return iVar14;" (return "return") (identifier "iVar14") (; ";")) (} "}"))) (expression_statement "*(byte *)(iVar14 + 0x2a) = *(byte *)(iVar14 + 0x2a) | 8;" (assignment_expression "*(byte *)(iVar14 + 0x2a) = *(byte *)(iVar14 + 0x2a) | 8" (pointer_expression "*(byte *)(iVar14 + 0x2a)" (* "*") (cast_expression "(byte *)(iVar14 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x2a)" (( "(") (binary_expression "iVar14 + 0x2a" (identifier "iVar14") (+ "+") (number_literal "0x2a")) () ")")))) (= "=") (binary_expression "*(byte *)(iVar14 + 0x2a) | 8" (pointer_expression "*(byte *)(iVar14 + 0x2a)" (* "*") (cast_expression "(byte *)(iVar14 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x2a)" (( "(") (binary_expression "iVar14 + 0x2a" (identifier "iVar14") (+ "+") (number_literal "0x2a")) () ")")))) (| "|") (number_literal "8"))) (; ";")) (return_statement "return iVar14;" (return "return") (identifier "iVar14") (; ";")) (} "}"))) (expression_statement "FUN_00177f20(param_1,iVar14);" (call_expression "FUN_00177f20(param_1,iVar14)" (identifier "FUN_00177f20") (argument_list "(param_1,iVar14)" (( "(") (identifier "param_1") (, ",") (identifier "iVar14") () ")"))) (; ";")) (return_statement "return iVar14;" (return "return") (identifier "iVar14") (; ";")) (} "}"))) (expression_statement "cVar13 = FUN_001ca200(local_20[0],param_10,param_4);" (assignment_expression "cVar13 = FUN_001ca200(local_20[0],param_10,param_4)" (identifier "cVar13") (= "=") (call_expression "FUN_001ca200(local_20[0],param_10,param_4)" (identifier "FUN_001ca200") (argument_list "(local_20[0],param_10,param_4)" (( "(") (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (, ",") (identifier "param_10") (, ",") (identifier "param_4") () ")")))) (; ";")) (if_statement "if (cVar13 != '\0') {\n    FUN_001cb410(param_1,local_20[0],iVar14);\n  }" (if "if") (parenthesized_expression "(cVar13 != '\0')" (( "(") (binary_expression "cVar13 != '\0'" (identifier "cVar13") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    FUN_001cb410(param_1,local_20[0],iVar14);\n  }" ({ "{") (expression_statement "FUN_001cb410(param_1,local_20[0],iVar14);" (call_expression "FUN_001cb410(param_1,local_20[0],iVar14)" (identifier "FUN_001cb410") (argument_list "(param_1,local_20[0],iVar14)" (( "(") (identifier "param_1") (, ",") (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (, ",") (identifier "iVar14") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_22 == '\0') {\n    if ((param_4 == 5) &&\n       ((param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')))))) {\n      FUN_00177f20(param_1,local_20[0]);\n    }\n    iVar1 = *(int *)(iVar14 + 0x24);\n    if (iVar1 != 0) {\n      iVar2 = *(int *)(iVar1 + 8);\n      if (iVar2 != 0) {\n        iVar3 = *(int *)(iVar2 + 8);\n        if (iVar3 != 0) {\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }\n        FUN_001e6d90(iVar2,0xc);\n      }\n      FUN_001e6d90(iVar1,0xc);\n    }\n    FUN_001e6d90(iVar14,0x40);\n    return local_20[0];\n  }" (if "if") (parenthesized_expression "(local_22 == '\0')" (( "(") (binary_expression "local_22 == '\0'" (identifier "local_22") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    if ((param_4 == 5) &&\n       ((param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')))))) {\n      FUN_00177f20(param_1,local_20[0]);\n    }\n    iVar1 = *(int *)(iVar14 + 0x24);\n    if (iVar1 != 0) {\n      iVar2 = *(int *)(iVar1 + 8);\n      if (iVar2 != 0) {\n        iVar3 = *(int *)(iVar2 + 8);\n        if (iVar3 != 0) {\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }\n        FUN_001e6d90(iVar2,0xc);\n      }\n      FUN_001e6d90(iVar1,0xc);\n    }\n    FUN_001e6d90(iVar14,0x40);\n    return local_20[0];\n  }" ({ "{") (if_statement "if ((param_4 == 5) &&\n       ((param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')))))) {\n      FUN_00177f20(param_1,local_20[0]);\n    }" (if "if") (parenthesized_expression "((param_4 == 5) &&\n       ((param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0'))))))" (( "(") (binary_expression "(param_4 == 5) &&\n       ((param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')))))" (parenthesized_expression "(param_4 == 5)" (( "(") (binary_expression "param_4 == 5" (identifier "param_4") (== "==") (number_literal "5")) () ")")) (&& "&&") (parenthesized_expression "((param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')))))" (( "(") (parenthesized_expression "(param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0'))))" (( "(") (binary_expression "param_11 == 0 ||\n        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')))" (binary_expression "param_11 == 0" (identifier "param_11") (== "==") (number_literal "0")) (|| "||") (parenthesized_expression "((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')))" (( "(") (parenthesized_expression "(cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0'))" (( "(") (comma_expression "cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n         cVar13 != '\0' && (local_21 == '\0')" (assignment_expression "cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" (identifier "cVar13") (= "=") (call_expression "FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" (identifier "FUN_0016e020") (argument_list "(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x154)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x154)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x154)" (( "(") (binary_expression "param_1 + 0x154" (identifier "param_1") (+ "+") (number_literal "0x154")) () ")")))) (, ",") (identifier "param_2") (, ",") (number_literal "0") (, ",") (pointer_expression "&local_21" (& "&") (identifier "local_21")) () ")")))) (, ",") (binary_expression "cVar13 != '\0' && (local_21 == '\0')" (binary_expression "cVar13 != '\0'" (identifier "cVar13") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (&& "&&") (parenthesized_expression "(local_21 == '\0')" (( "(") (binary_expression "local_21 == '\0'" (identifier "local_21") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")))) () ")")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n      FUN_00177f20(param_1,local_20[0]);\n    }" ({ "{") (expression_statement "FUN_00177f20(param_1,local_20[0]);" (call_expression "FUN_00177f20(param_1,local_20[0])" (identifier "FUN_00177f20") (argument_list "(param_1,local_20[0])" (( "(") (identifier "param_1") (, ",") (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) () ")"))) (; ";")) (} "}"))) (expression_statement "iVar1 = *(int *)(iVar14 + 0x24);" (assignment_expression "iVar1 = *(int *)(iVar14 + 0x24)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(iVar14 + 0x24)" (* "*") (cast_expression "(int *)(iVar14 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x24)" (( "(") (binary_expression "iVar14 + 0x24" (identifier "iVar14") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (if_statement "if (iVar1 != 0) {\n      iVar2 = *(int *)(iVar1 + 8);\n      if (iVar2 != 0) {\n        iVar3 = *(int *)(iVar2 + 8);\n        if (iVar3 != 0) {\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }\n        FUN_001e6d90(iVar2,0xc);\n      }\n      FUN_001e6d90(iVar1,0xc);\n    }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iVar2 = *(int *)(iVar1 + 8);\n      if (iVar2 != 0) {\n        iVar3 = *(int *)(iVar2 + 8);\n        if (iVar3 != 0) {\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }\n        FUN_001e6d90(iVar2,0xc);\n      }\n      FUN_001e6d90(iVar1,0xc);\n    }" ({ "{") (expression_statement "iVar2 = *(int *)(iVar1 + 8);" (assignment_expression "iVar2 = *(int *)(iVar1 + 8)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(iVar1 + 8)" (* "*") (cast_expression "(int *)(iVar1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 8)" (( "(") (binary_expression "iVar1 + 8" (identifier "iVar1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar2 != 0) {\n        iVar3 = *(int *)(iVar2 + 8);\n        if (iVar3 != 0) {\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }\n        FUN_001e6d90(iVar2,0xc);\n      }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        iVar3 = *(int *)(iVar2 + 8);\n        if (iVar3 != 0) {\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }\n        FUN_001e6d90(iVar2,0xc);\n      }" ({ "{") (expression_statement "iVar3 = *(int *)(iVar2 + 8);" (assignment_expression "iVar3 = *(int *)(iVar2 + 8)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(iVar2 + 8)" (* "*") (cast_expression "(int *)(iVar2 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 8)" (( "(") (binary_expression "iVar2 + 8" (identifier "iVar2") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar3 != 0) {\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          iVar4 = *(int *)(iVar3 + 8);\n          if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }\n          FUN_001e6d90(iVar3,0xc);\n        }" ({ "{") (expression_statement "iVar4 = *(int *)(iVar3 + 8);" (assignment_expression "iVar4 = *(int *)(iVar3 + 8)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iVar3 + 8)" (* "*") (cast_expression "(int *)(iVar3 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 8)" (( "(") (binary_expression "iVar3 + 8" (identifier "iVar3") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar4 != 0) {\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            iVar5 = *(int *)(iVar4 + 8);\n            if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }\n            FUN_001e6d90(iVar4,0xc);\n          }" ({ "{") (expression_statement "iVar5 = *(int *)(iVar4 + 8);" (assignment_expression "iVar5 = *(int *)(iVar4 + 8)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(iVar4 + 8)" (* "*") (cast_expression "(int *)(iVar4 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 8)" (( "(") (binary_expression "iVar4 + 8" (identifier "iVar4") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar5 != 0) {\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              iVar6 = *(int *)(iVar5 + 8);\n              if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }\n              FUN_001e6d90(iVar5,0xc);\n            }" ({ "{") (expression_statement "iVar6 = *(int *)(iVar5 + 8);" (assignment_expression "iVar6 = *(int *)(iVar5 + 8)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(iVar5 + 8)" (* "*") (cast_expression "(int *)(iVar5 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 8)" (( "(") (binary_expression "iVar5 + 8" (identifier "iVar5") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar6 != 0) {\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                FUN_0017afa0(iVar6);\n                FUN_001e6d90(iVar6,0xc);\n              }" ({ "{") (expression_statement "FUN_0017afa0(iVar6);" (call_expression "FUN_0017afa0(iVar6)" (identifier "FUN_0017afa0") (argument_list "(iVar6)" (( "(") (identifier "iVar6") () ")"))) (; ";")) (expression_statement "FUN_001e6d90(iVar6,0xc);" (call_expression "FUN_001e6d90(iVar6,0xc)" (identifier "FUN_001e6d90") (argument_list "(iVar6,0xc)" (( "(") (identifier "iVar6") (, ",") (number_literal "0xc") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_001e6d90(iVar5,0xc);" (call_expression "FUN_001e6d90(iVar5,0xc)" (identifier "FUN_001e6d90") (argument_list "(iVar5,0xc)" (( "(") (identifier "iVar5") (, ",") (number_literal "0xc") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_001e6d90(iVar4,0xc);" (call_expression "FUN_001e6d90(iVar4,0xc)" (identifier "FUN_001e6d90") (argument_list "(iVar4,0xc)" (( "(") (identifier "iVar4") (, ",") (number_literal "0xc") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_001e6d90(iVar3,0xc);" (call_expression "FUN_001e6d90(iVar3,0xc)" (identifier "FUN_001e6d90") (argument_list "(iVar3,0xc)" (( "(") (identifier "iVar3") (, ",") (number_literal "0xc") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_001e6d90(iVar2,0xc);" (call_expression "FUN_001e6d90(iVar2,0xc)" (identifier "FUN_001e6d90") (argument_list "(iVar2,0xc)" (( "(") (identifier "iVar2") (, ",") (number_literal "0xc") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_001e6d90(iVar1,0xc);" (call_expression "FUN_001e6d90(iVar1,0xc)" (identifier "FUN_001e6d90") (argument_list "(iVar1,0xc)" (( "(") (identifier "iVar1") (, ",") (number_literal "0xc") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_001e6d90(iVar14,0x40);" (call_expression "FUN_001e6d90(iVar14,0x40)" (identifier "FUN_001e6d90") (argument_list "(iVar14,0x40)" (( "(") (identifier "iVar14") (, ",") (number_literal "0x40") () ")"))) (; ";")) (return_statement "return local_20[0];" (return "return") (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (; ";")) (} "}"))) (return_statement "return iVar14;" (return "return") (identifier "iVar14") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */
/* WARNING: Enum "STT": Some values do not have unique names */
/* WARNING: Enum "STB": Some values do not have unique names */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: Sized_symbol<64> * do_define_in_output_data<64>(Symbol_table * this,
   char * name, char * version, Defined defined, Output_data * od, Elf_Addr value, Elf_WXword
   symsize, STT type, STB binding, STV visibility, uchar nonvis, bool offset_is_from_end, bool
   only_if_ref) */

var_1<64> * __thiscall
gold::Symbol_table::do_define_in_output_data<64>
          (Symbol_table *this,char *name,char *var_15,Defined var_10,Output_data *od,
          type_3 value,type_4 symsize,STT type,STB var_5,STV visibility,type_5 nonvis,
          bool offset_is_from_end,bool only_if_ref)

{
  type_1 *puVar1;
  type_2 *var_20;
  type_2 *var_21;
  type_2 *var_22;
  type_2 *var_23;
  type_2 *var_24;
  type_2 *var_25;
  type_3 value_00;
  type_4 symsize_00;
  type_5 nonvis_00;
  bool bVar7;
  var_1<64> *var_8;
  type_6 in_stack_00000035;
  type_6 in_stack_00000039;
  type_6 in_stack_0000003d;
  var_1<64> *__in_chrg;
  bool var_19;
  bool var_14;
  var_1<64> *var_12;
  
  bVar7 = offset_is_from_end;
  nonvis_00 = nonvis;
  symsize_00 = symsize;
  value_00 = value;
  if (parameters->target_ == (type_7 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("../../gold/parameters.h",0x69,"target");
  }
  if (*(char *)(*(int *)(parameters->target_ + 4) + 4) == '\0') {
    var_8 = var_3<64,var_4>
                        (this,&name,&var_15,only_if_ref,visibility,&var_12,&var_19,
                         var_5 == var_6);
  }
  else {
    var_8 = var_3<64,var_7>
                        (this,&name,&var_15,only_if_ref,visibility,&var_12,&var_19,
                         var_5 == var_6);
  }
  if (var_8 == (var_1<64> *)0x0) {
    return (var_1<64> *)0x0;
  }
  var_1<64>::var_9
            (var_8,name,var_15,od,value_00,symsize_00,type,var_5,visibility,nonvis_00,bVar7,
             var_10 == var_11);
  if (var_12 == (var_1<64> *)0x0) {
    if (var_5 != var_6) {
      bVar7 = Version_script_info::var_13
                        (this->version_script_,name,(type_8 *)0x0,&var_14);
      if ((!bVar7) || (var_14 != false)) {
        if (var_15 == (char *)0x0) {
          return var_8;
        }
        puVar1 = &(var_8->super_Symbol).field_0x2a;
        *puVar1 = *puVar1 | 8;
        return var_8;
      }
    }
    var_16(this,&var_8->super_Symbol);
    return var_8;
  }
  __in_chrg = (var_1<64> *)type;
  bVar7 = var_17(&var_12->super_Symbol,type,var_10);
  if (bVar7) {
    __in_chrg = var_12;
    var_18<64>(this,var_12,var_8);
  }
  if (var_19 != false) {
    return var_8;
  }
  if (var_10 == var_11) {
    if (var_5 != var_6) {
      __in_chrg = (var_1<64> *)name;
      bVar7 = Version_script_info::var_13
                        (this->version_script_,name,(type_8 *)0x0,&var_14);
      if ((!bVar7) || (var_14 != false)) goto LAB_00189744;
    }
    __in_chrg = var_12;
    var_16(this,&var_12->super_Symbol);
  }
LAB_00189744:
  var_20 = (var_8->super_Symbol).got_offsets_.got_next_;
  if (var_20 != (type_2 *)0x0) {
    var_21 = var_20->got_next_;
    if (var_21 != (type_2 *)0x0) {
      var_22 = var_21->got_next_;
      if (var_22 != (type_2 *)0x0) {
        var_23 = var_22->got_next_;
        if (var_23 != (type_2 *)0x0) {
          var_24 = var_23->got_next_;
          if (var_24 != (type_2 *)0x0) {
            var_25 = var_24->got_next_;
            if (var_25 != (type_2 *)0x0) {
              Got_offset_list::~type_2(var_25,(int)__in_chrg);
              var_26(var_25,0xc);
            }
            var_26(var_24,0xc);
          }
          var_26(var_23,0xc);
        }
        var_26(var_22,0xc);
      }
      var_26(var_21,0xc);
    }
    var_26(var_20,0xc);
  }
  var_26(var_8,0x40);
  return var_12;
}


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

int MASKED(int param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,
                undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,
                undefined4 param_10,int param_11,undefined4 param_12,uint param_13,uint param_14,
                uint param_15)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  uint uVar11;
  uint uVar12;
  char cVar13;
  int iVar14;
  int unaff_EBP;
  char local_22;
  char local_21;
  int local_20 [4];
  
  FUN_000559f2();
  uVar12 = param_14;
  uVar11 = param_13;
  uVar10 = param_9;
  uVar9 = param_8;
  uVar8 = param_7;
  uVar7 = param_6;
  iVar14 = *(int *)(*(int *)(unaff_EBP + 0x205d72) + 0xc);
  if (iVar14 == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00069d00(unaff_EBP + 0xfdc0a,0x69,unaff_EBP + 0x110e6a,param_15);
  }
  if (*(char *)(*(int *)(iVar14 + 4) + 4) == '\0') {
    iVar14 = FUN_001890d0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,
                          param_11 == 0);
  }
  else {
    iVar14 = FUN_00187430(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,
                          param_11 == 0);
  }
  if (iVar14 == 0) {
    return 0;
  }
  FUN_0017b220(iVar14,param_2,param_3,param_5,uVar7,uVar8,uVar9,uVar10,param_10,param_11,param_12,
               uVar11 & 0xff,uVar12 & 0xff,param_4 == 5);
  if (local_20[0] == 0) {
    if ((param_11 != 0) &&
       ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21), cVar13 == '\0'
        || (local_21 != '\0')))) {
      if (param_3 == 0) {
        return iVar14;
      }
      *(byte *)(iVar14 + 0x2a) = *(byte *)(iVar14 + 0x2a) | 8;
      return iVar14;
    }
    FUN_00177f20(param_1,iVar14);
    return iVar14;
  }
  cVar13 = FUN_001ca200(local_20[0],param_10,param_4);
  if (cVar13 != '\0') {
    FUN_001cb410(param_1,local_20[0],iVar14);
  }
  if (local_22 == '\0') {
    if ((param_4 == 5) &&
       ((param_11 == 0 ||
        ((cVar13 = FUN_0016e020(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),
         cVar13 != '\0' && (local_21 == '\0')))))) {
      FUN_00177f20(param_1,local_20[0]);
    }
    iVar1 = *(int *)(iVar14 + 0x24);
    if (iVar1 != 0) {
      iVar2 = *(int *)(iVar1 + 8);
      if (iVar2 != 0) {
        iVar3 = *(int *)(iVar2 + 8);
        if (iVar3 != 0) {
          iVar4 = *(int *)(iVar3 + 8);
          if (iVar4 != 0) {
            iVar5 = *(int *)(iVar4 + 8);
            if (iVar5 != 0) {
              iVar6 = *(int *)(iVar5 + 8);
              if (iVar6 != 0) {
                FUN_0017afa0(iVar6);
                FUN_001e6d90(iVar6,0xc);
              }
              FUN_001e6d90(iVar5,0xc);
            }
            FUN_001e6d90(iVar4,0xc);
          }
          FUN_001e6d90(iVar3,0xc);
        }
        FUN_001e6d90(iVar2,0xc);
      }
      FUN_001e6d90(iVar1,0xc);
    }
    FUN_001e6d90(iVar14,0x40);
    return local_20[0];
  }
  return iVar14;
}

