
/* 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<32> * do_define_in_output_data<32>(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<32> * __thiscall
gold::Symbol_table::do_define_in_output_data<32>
          (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;
  bool bVar7;
  Sized_symbol<32> *this_01;
  char *pcVar8;
  Sized_symbol<32> *pSVar9;
  char *local_58;
  char *local_50;
  bool resolve_oldsym;
  bool is_global;
  Sized_symbol<32> *oldsym;
  
  local_58 = version;
  local_50 = name;
  if (parameters->target_ == (Target *)0x0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/parameters.h",0x69,"target");
  }
  if (*(char *)(*(long *)(parameters->target_ + 8) + 4) == '\0') {
    this_01 = define_special_symbol<32,_false>
                        (this,&local_50,&local_58,only_if_ref,visibility,&oldsym,&resolve_oldsym,
                         binding == STB_LOCAL);
  }
  else {
    this_01 = define_special_symbol<32,_true>
                        (this,&local_50,&local_58,only_if_ref,visibility,&oldsym,&resolve_oldsym,
                         binding == STB_LOCAL);
  }
  if (this_01 == (Sized_symbol<32> *)0x0) {
    return (Sized_symbol<32> *)0x0;
  }
  Sized_symbol<32>::init_output_data
            (this_01,local_50,local_58,od,value,symsize,type,binding,visibility,nonvis,
             offset_is_from_end,defined == PREDEFINED);
  if (oldsym == (Sized_symbol<32> *)0x0) {
    if ((binding != STB_LOCAL) &&
       ((bVar7 = Version_script_info::get_symbol_version
                           (this->version_script_,local_50,(string *)0x0,&is_global), !bVar7 ||
        (is_global != false)))) {
      if (local_58 == (char *)0x0) {
        return this_01;
      }
      puVar1 = &(this_01->super_Symbol).field_0x3a;
      *puVar1 = *puVar1 | 8;
      return this_01;
    }
    force_local(this,&this_01->super_Symbol);
    return this_01;
  }
  bVar7 = should_override_with_special(&oldsym->super_Symbol,type,defined);
  if (bVar7) {
    pSVar9 = oldsym;
    override_with_special<32>(this,oldsym,this_01);
    type = (STT)pSVar9;
  }
  if (resolve_oldsym != false) {
    return this_01;
  }
  if (defined == PREDEFINED) {
    if (binding != STB_LOCAL) {
      pcVar8 = local_50;
      bVar7 = Version_script_info::get_symbol_version
                        (this->version_script_,local_50,(string *)0x0,&is_global);
      type = (STT)pcVar8;
      if ((!bVar7) || (is_global != false)) goto LAB_0027e46a;
    }
    pSVar9 = oldsym;
    force_local(this,&oldsym->super_Symbol);
    type = (STT)pSVar9;
  }
LAB_0027e46a:
  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,type);
              operator_delete(this_00,0x10);
            }
            operator_delete(pGVar6,0x10);
          }
          operator_delete(pGVar5,0x10);
        }
        operator_delete(pGVar4,0x10);
      }
      operator_delete(pGVar3,0x10);
    }
    operator_delete(pGVar2,0x10);
  }
  operator_delete(this_01,0x48);
  return oldsym;
}



long FUN_0027e340(long param_1,undefined8 param_2,long param_3,int param_4,undefined8 param_5,
                 undefined4 param_6,undefined4 param_7,undefined4 param_8,int param_9,
                 undefined4 param_10,undefined1 param_11,undefined1 param_12,undefined4 param_13)

{
  long lVar1;
  long lVar2;
  long lVar3;
  long lVar4;
  long lVar5;
  long lVar6;
  char cVar7;
  long lVar8;
  long local_58;
  undefined8 local_50;
  char local_42;
  char local_41;
  long local_40 [2];
  
  local_58 = param_3;
  local_50 = param_2;
  if (*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0017c650("../../gold/parameters.h",0x69,"target",param_13);
  }
  if (*(char *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 4) == '\0') {
    lVar8 = FUN_0027de40();
  }
  else {
    lVar8 = FUN_0027c240(param_1,&local_50,&local_58,(char)param_13,param_10,local_40,&local_42,
                         param_9 == 0);
  }
  if (lVar8 == 0) {
    return 0;
  }
  FUN_00274650(lVar8,local_50,local_58,param_5,param_6,param_7,param_8,param_9,param_10,param_11,
               param_12,param_4 == 5);
  if (local_40[0] == 0) {
    if ((param_9 != 0) &&
       ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'
        || (local_41 != '\0')))) {
      if (local_58 == 0) {
        return lVar8;
      }
      *(byte *)(lVar8 + 0x3a) = *(byte *)(lVar8 + 0x3a) | 8;
      return lVar8;
    }
    FUN_002719b0(param_1,lVar8);
    return lVar8;
  }
  cVar7 = FUN_002bf240(local_40[0],param_8,param_4);
  if (cVar7 != '\0') {
    FUN_002c01b0(param_1,local_40[0],lVar8);
  }
  if (local_42 == '\0') {
    if ((param_4 == 5) &&
       ((param_9 == 0 ||
        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'
         && (local_41 == '\0')))))) {
      FUN_002719b0(param_1,local_40[0]);
    }
    lVar1 = *(long *)(lVar8 + 0x30);
    if (lVar1 != 0) {
      lVar2 = *(long *)(lVar1 + 8);
      if (lVar2 != 0) {
        lVar3 = *(long *)(lVar2 + 8);
        if (lVar3 != 0) {
          lVar4 = *(long *)(lVar3 + 8);
          if (lVar4 != 0) {
            lVar5 = *(long *)(lVar4 + 8);
            if (lVar5 != 0) {
              lVar6 = *(long *)(lVar5 + 8);
              if (lVar6 != 0) {
                FUN_002745e0(lVar6);
                thunk_FUN_002dac70(lVar6,0x10);
              }
              thunk_FUN_002dac70(lVar5,0x10);
            }
            thunk_FUN_002dac70(lVar4,0x10);
          }
          thunk_FUN_002dac70(lVar3,0x10);
        }
        thunk_FUN_002dac70(lVar2,0x10);
      }
      thunk_FUN_002dac70(lVar1,0x10);
    }
    thunk_FUN_002dac70(lVar8,0x48);
    return local_40[0];
  }
  return lVar8;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
MOV R12D,ECX
PUSH RBP
PUSH RBX
SUB RSP,0x38
MOV qword ptr [RSP + 0x10],RDX
MOV RDX,qword ptr [0x0043e6b0]
MOV dword ptr [RSP + 0x8],R9D
MOV R9D,dword ptr [RSP + 0x80]
MOV RDX,qword ptr [RDX + 0x18]
MOV qword ptr [RSP + 0x18],RSI
TEST R9D,R9D
MOV EBX,dword ptr [RSP + 0x90]
MOV EBP,dword ptr [RSP + 0x98]
MOV ECX,dword ptr [RSP + 0xa0]
SETZ AL
TEST RDX,RDX
JZ 0x0027e615
MOV RDX,qword ptr [RDX + 0x8]
MOV R13,RDI
MOV R14,R8
MOVZX EAX,AL
MOVZX ECX,CL
LEA RSI,[RSP + 0x18]
CMP byte ptr [RDX + 0x4],0x0
LEA RDX,[RSP + 0x10]
JNZ 0x0027e530
PUSH RAX
LEA RAX,[RSP + 0x2e]
PUSH RAX
MOV R8D,dword ptr [RSP + 0x98]
LEA R9,[RSP + 0x38]
CALL 0x0027de40
POP RCX
POP RSI
MOV R15,RAX
TEST R15,R15
JZ 0x0027e517
XOR EAX,EAX
CMP R12D,0x5
MOVZX EBP,BPL
MOVZX EBX,BL
SETZ AL
MOV RDI,R15
MOV RCX,R14
PUSH RAX
PUSH RBP
PUSH RBX
MOV EAX,dword ptr [RSP + 0xa0]
PUSH RAX
MOV EAX,dword ptr [RSP + 0xa0]
PUSH RAX
MOV EAX,dword ptr [RSP + 0xa0]
PUSH RAX
MOV R9D,dword ptr [RSP + 0xa0]
MOV R8D,dword ptr [RSP + 0x38]
MOV RDX,qword ptr [RSP + 0x40]
MOV RSI,qword ptr [RSP + 0x48]
CALL 0x00274650
MOV RDI,qword ptr [RSP + 0x58]
ADD RSP,0x30
TEST RDI,RDI
JZ 0x0027e558
MOV ESI,dword ptr [RSP + 0x78]
MOV EDX,R12D
CALL 0x002bf240
TEST AL,AL
JNZ 0x0027e600
CMP byte ptr [RSP + 0x26],0x0
JNZ 0x0027e517
CMP R12D,0x5
JZ 0x0027e5b0
MOV RBX,qword ptr [R15 + 0x30]
TEST RBX,RBX
JZ 0x0027e505
MOV RBP,qword ptr [RBX + 0x8]
TEST RBP,RBP
JZ 0x0027e4f8
MOV R12,qword ptr [RBP + 0x8]
TEST R12,R12
JZ 0x0027e4eb
MOV R13,qword ptr [R12 + 0x8]
TEST R13,R13
JZ 0x0027e4de
MOV R14,qword ptr [R13 + 0x8]
TEST R14,R14
JZ 0x0027e4d1
MOV RAX,qword ptr [R14 + 0x8]
TEST RAX,RAX
JZ 0x0027e4c4
MOV RDI,RAX
MOV qword ptr [RSP + 0x8],RAX
CALL 0x002745e0
MOV RAX,qword ptr [RSP + 0x8]
MOV ESI,0x10
MOV RDI,RAX
CALL 0x002dac60
MOV ESI,0x10
MOV RDI,R14
CALL 0x002dac60
MOV ESI,0x10
MOV RDI,R13
CALL 0x002dac60
MOV ESI,0x10
MOV RDI,R12
CALL 0x002dac60
MOV ESI,0x10
MOV RDI,RBP
CALL 0x002dac60
MOV ESI,0x10
MOV RDI,RBX
CALL 0x002dac60
MOV RDI,R15
MOV ESI,0x48
CALL 0x002dac60
MOV R15,qword ptr [RSP + 0x28]
ADD RSP,0x38
MOV RAX,R15
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
PUSH RAX
LEA RAX,[RSP + 0x2e]
PUSH RAX
MOV R8D,dword ptr [RSP + 0x98]
LEA R9,[RSP + 0x38]
CALL 0x0027c240
POP RDI
POP R8
MOV R15,RAX
JMP 0x0027e3d9
MOV EDX,dword ptr [RSP + 0x80]
TEST EDX,EDX
JZ 0x0027e598
MOV RDI,qword ptr [R13 + 0x288]
MOV RSI,qword ptr [RSP + 0x18]
XOR EDX,EDX
LEA RCX,[RSP + 0x27]
CALL 0x002682d0
TEST AL,AL
JZ 0x0027e586
CMP byte ptr [RSP + 0x27],0x0
JZ 0x0027e598
CMP qword ptr [RSP + 0x10],0x0
JZ 0x0027e517
OR byte ptr [R15 + 0x3a],0x8
JMP 0x0027e517
MOV RSI,R15
MOV RDI,R13
CALL 0x002719b0
JMP 0x0027e517
MOV EAX,dword ptr [RSP + 0x80]
TEST EAX,EAX
JZ 0x0027e5e6
MOV RDI,qword ptr [R13 + 0x288]
MOV RSI,qword ptr [RSP + 0x18]
XOR EDX,EDX
LEA RCX,[RSP + 0x27]
CALL 0x002682d0
TEST AL,AL
JZ 0x0027e46a
CMP byte ptr [RSP + 0x27],0x0
JNZ 0x0027e46a
MOV RSI,qword ptr [RSP + 0x28]
MOV RDI,R13
CALL 0x002719b0
JMP 0x0027e46a
MOV RSI,qword ptr [RSP + 0x28]
MOV RDX,R15
MOV RDI,R13
CALL 0x002c01b0
JMP 0x0027e455
LEA RDX,[0x3874cb]
MOV ESI,0x69
LEA RDI,[0x3726d0]
CALL 0x0017c650
(translation_unit "long FUN_0027e340(long param_1,undefined8 param_2,long param_3,int param_4,undefined8 param_5,\n                 undefined4 param_6,undefined4 param_7,undefined4 param_8,int param_9,\n                 undefined4 param_10,undefined1 param_11,undefined1 param_12,undefined4 param_13)\n\n{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  char cVar7;\n  long lVar8;\n  long local_58;\n  undefined8 local_50;\n  char local_42;\n  char local_41;\n  long local_40 [2];\n  \n  local_58 = param_3;\n  local_50 = param_2;\n  if (*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/parameters.h",0x69,"target",param_13);\n  }\n  if (*(char *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 4) == '\0') {\n    lVar8 = FUN_0027de40();\n  }\n  else {\n    lVar8 = FUN_0027c240(param_1,&local_50,&local_58,(char)param_13,param_10,local_40,&local_42,\n                         param_9 == 0);\n  }\n  if (lVar8 == 0) {\n    return 0;\n  }\n  FUN_00274650(lVar8,local_50,local_58,param_5,param_6,param_7,param_8,param_9,param_10,param_11,\n               param_12,param_4 == 5);\n  if (local_40[0] == 0) {\n    if ((param_9 != 0) &&\n       ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0')))) {\n      if (local_58 == 0) {\n        return lVar8;\n      }\n      *(byte *)(lVar8 + 0x3a) = *(byte *)(lVar8 + 0x3a) | 8;\n      return lVar8;\n    }\n    FUN_002719b0(param_1,lVar8);\n    return lVar8;\n  }\n  cVar7 = FUN_002bf240(local_40[0],param_8,param_4);\n  if (cVar7 != '\0') {\n    FUN_002c01b0(param_1,local_40[0],lVar8);\n  }\n  if (local_42 == '\0') {\n    if ((param_4 == 5) &&\n       ((param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')))))) {\n      FUN_002719b0(param_1,local_40[0]);\n    }\n    lVar1 = *(long *)(lVar8 + 0x30);\n    if (lVar1 != 0) {\n      lVar2 = *(long *)(lVar1 + 8);\n      if (lVar2 != 0) {\n        lVar3 = *(long *)(lVar2 + 8);\n        if (lVar3 != 0) {\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }\n        thunk_FUN_002dac70(lVar2,0x10);\n      }\n      thunk_FUN_002dac70(lVar1,0x10);\n    }\n    thunk_FUN_002dac70(lVar8,0x48);\n    return local_40[0];\n  }\n  return lVar8;\n}\n\n" (function_definition "long FUN_0027e340(long param_1,undefined8 param_2,long param_3,int param_4,undefined8 param_5,\n                 undefined4 param_6,undefined4 param_7,undefined4 param_8,int param_9,\n                 undefined4 param_10,undefined1 param_11,undefined1 param_12,undefined4 param_13)\n\n{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  char cVar7;\n  long lVar8;\n  long local_58;\n  undefined8 local_50;\n  char local_42;\n  char local_41;\n  long local_40 [2];\n  \n  local_58 = param_3;\n  local_50 = param_2;\n  if (*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/parameters.h",0x69,"target",param_13);\n  }\n  if (*(char *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 4) == '\0') {\n    lVar8 = FUN_0027de40();\n  }\n  else {\n    lVar8 = FUN_0027c240(param_1,&local_50,&local_58,(char)param_13,param_10,local_40,&local_42,\n                         param_9 == 0);\n  }\n  if (lVar8 == 0) {\n    return 0;\n  }\n  FUN_00274650(lVar8,local_50,local_58,param_5,param_6,param_7,param_8,param_9,param_10,param_11,\n               param_12,param_4 == 5);\n  if (local_40[0] == 0) {\n    if ((param_9 != 0) &&\n       ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0')))) {\n      if (local_58 == 0) {\n        return lVar8;\n      }\n      *(byte *)(lVar8 + 0x3a) = *(byte *)(lVar8 + 0x3a) | 8;\n      return lVar8;\n    }\n    FUN_002719b0(param_1,lVar8);\n    return lVar8;\n  }\n  cVar7 = FUN_002bf240(local_40[0],param_8,param_4);\n  if (cVar7 != '\0') {\n    FUN_002c01b0(param_1,local_40[0],lVar8);\n  }\n  if (local_42 == '\0') {\n    if ((param_4 == 5) &&\n       ((param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')))))) {\n      FUN_002719b0(param_1,local_40[0]);\n    }\n    lVar1 = *(long *)(lVar8 + 0x30);\n    if (lVar1 != 0) {\n      lVar2 = *(long *)(lVar1 + 8);\n      if (lVar2 != 0) {\n        lVar3 = *(long *)(lVar2 + 8);\n        if (lVar3 != 0) {\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }\n        thunk_FUN_002dac70(lVar2,0x10);\n      }\n      thunk_FUN_002dac70(lVar1,0x10);\n    }\n    thunk_FUN_002dac70(lVar8,0x48);\n    return local_40[0];\n  }\n  return lVar8;\n}" (sized_type_specifier "long" long) (function_declarator "FUN_0027e340(long param_1,undefined8 param_2,long param_3,int param_4,undefined8 param_5,\n                 undefined4 param_6,undefined4 param_7,undefined4 param_8,int param_9,\n                 undefined4 param_10,undefined1 param_11,undefined1 param_12,undefined4 param_13)" identifier (parameter_list "(long param_1,undefined8 param_2,long param_3,int param_4,undefined8 param_5,\n                 undefined4 param_6,undefined4 param_7,undefined4 param_8,int param_9,\n                 undefined4 param_10,undefined1 param_11,undefined1 param_12,undefined4 param_13)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "undefined8 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 "int param_9" primitive_type identifier) , (parameter_declaration "undefined4 param_10" type_identifier identifier) , (parameter_declaration "undefined1 param_11" type_identifier identifier) , (parameter_declaration "undefined1 param_12" type_identifier identifier) , (parameter_declaration "undefined4 param_13" type_identifier identifier) ))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  char cVar7;\n  long lVar8;\n  long local_58;\n  undefined8 local_50;\n  char local_42;\n  char local_41;\n  long local_40 [2];\n  \n  local_58 = param_3;\n  local_50 = param_2;\n  if (*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/parameters.h",0x69,"target",param_13);\n  }\n  if (*(char *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 4) == '\0') {\n    lVar8 = FUN_0027de40();\n  }\n  else {\n    lVar8 = FUN_0027c240(param_1,&local_50,&local_58,(char)param_13,param_10,local_40,&local_42,\n                         param_9 == 0);\n  }\n  if (lVar8 == 0) {\n    return 0;\n  }\n  FUN_00274650(lVar8,local_50,local_58,param_5,param_6,param_7,param_8,param_9,param_10,param_11,\n               param_12,param_4 == 5);\n  if (local_40[0] == 0) {\n    if ((param_9 != 0) &&\n       ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0')))) {\n      if (local_58 == 0) {\n        return lVar8;\n      }\n      *(byte *)(lVar8 + 0x3a) = *(byte *)(lVar8 + 0x3a) | 8;\n      return lVar8;\n    }\n    FUN_002719b0(param_1,lVar8);\n    return lVar8;\n  }\n  cVar7 = FUN_002bf240(local_40[0],param_8,param_4);\n  if (cVar7 != '\0') {\n    FUN_002c01b0(param_1,local_40[0],lVar8);\n  }\n  if (local_42 == '\0') {\n    if ((param_4 == 5) &&\n       ((param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')))))) {\n      FUN_002719b0(param_1,local_40[0]);\n    }\n    lVar1 = *(long *)(lVar8 + 0x30);\n    if (lVar1 != 0) {\n      lVar2 = *(long *)(lVar1 + 8);\n      if (lVar2 != 0) {\n        lVar3 = *(long *)(lVar2 + 8);\n        if (lVar3 != 0) {\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }\n        thunk_FUN_002dac70(lVar2,0x10);\n      }\n      thunk_FUN_002dac70(lVar1,0x10);\n    }\n    thunk_FUN_002dac70(lVar8,0x48);\n    return local_40[0];\n  }\n  return lVar8;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_58;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 local_50;" type_identifier identifier ;) (declaration "char local_42;" primitive_type identifier ;) (declaration "char local_41;" primitive_type identifier ;) (declaration "long local_40 [2];" (sized_type_specifier "long" long) (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (expression_statement "local_58 = param_3;" (assignment_expression "local_58 = param_3" identifier = identifier) ;) (expression_statement "local_50 = param_2;" (assignment_expression "local_50 = param_2" identifier = identifier) ;) (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/parameters.h",0x69,"target",param_13);\n  }" if (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x18)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x18)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x18" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/parameters.h",0x69,"target",param_13);\n  }" { comment (expression_statement "FUN_0017c650("../../gold/parameters.h",0x69,"target",param_13);" (call_expression "FUN_0017c650("../../gold/parameters.h",0x69,"target",param_13)" identifier (argument_list "("../../gold/parameters.h",0x69,"target",param_13)" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") , identifier ))) ;) })) (if_statement "if (*(char *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 4) == '\0') {\n    lVar8 = FUN_0027de40();\n  }\n  else {\n    lVar8 = FUN_0027c240(param_1,&local_50,&local_58,(char)param_13,param_10,local_40,&local_42,\n                         param_9 == 0);\n  }" if (parenthesized_expression "(*(char *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 4) == '\0')" ( (binary_expression "*(char *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 4) == '\0'" (pointer_expression "*(char *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 4)" * (cast_expression "(char *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 4)" ( (binary_expression "*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 4" (pointer_expression "*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8)" * (cast_expression "(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x18)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x18)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x18" identifier + number_literal) )))) + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    lVar8 = FUN_0027de40();\n  }" { (expression_statement "lVar8 = FUN_0027de40();" (assignment_expression "lVar8 = FUN_0027de40()" identifier = (call_expression "FUN_0027de40()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n    lVar8 = FUN_0027c240(param_1,&local_50,&local_58,(char)param_13,param_10,local_40,&local_42,\n                         param_9 == 0);\n  }" else (compound_statement "{\n    lVar8 = FUN_0027c240(param_1,&local_50,&local_58,(char)param_13,param_10,local_40,&local_42,\n                         param_9 == 0);\n  }" { (expression_statement "lVar8 = FUN_0027c240(param_1,&local_50,&local_58,(char)param_13,param_10,local_40,&local_42,\n                         param_9 == 0);" (assignment_expression "lVar8 = FUN_0027c240(param_1,&local_50,&local_58,(char)param_13,param_10,local_40,&local_42,\n                         param_9 == 0)" identifier = (call_expression "FUN_0027c240(param_1,&local_50,&local_58,(char)param_13,param_10,local_40,&local_42,\n                         param_9 == 0)" identifier (argument_list "(param_1,&local_50,&local_58,(char)param_13,param_10,local_40,&local_42,\n                         param_9 == 0)" ( identifier , (pointer_expression "&local_50" & identifier) , (pointer_expression "&local_58" & identifier) , (cast_expression "(char)param_13" ( (type_descriptor "char" primitive_type) ) identifier) , identifier , identifier , (pointer_expression "&local_42" & identifier) , (binary_expression "param_9 == 0" identifier == number_literal) )))) ;) }))) (if_statement "if (lVar8 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(lVar8 == 0)" ( (binary_expression "lVar8 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "FUN_00274650(lVar8,local_50,local_58,param_5,param_6,param_7,param_8,param_9,param_10,param_11,\n               param_12,param_4 == 5);" (call_expression "FUN_00274650(lVar8,local_50,local_58,param_5,param_6,param_7,param_8,param_9,param_10,param_11,\n               param_12,param_4 == 5)" identifier (argument_list "(lVar8,local_50,local_58,param_5,param_6,param_7,param_8,param_9,param_10,param_11,\n               param_12,param_4 == 5)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , (binary_expression "param_4 == 5" identifier == number_literal) ))) ;) (if_statement "if (local_40[0] == 0) {\n    if ((param_9 != 0) &&\n       ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0')))) {\n      if (local_58 == 0) {\n        return lVar8;\n      }\n      *(byte *)(lVar8 + 0x3a) = *(byte *)(lVar8 + 0x3a) | 8;\n      return lVar8;\n    }\n    FUN_002719b0(param_1,lVar8);\n    return lVar8;\n  }" if (parenthesized_expression "(local_40[0] == 0)" ( (binary_expression "local_40[0] == 0" (subscript_expression "local_40[0]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    if ((param_9 != 0) &&\n       ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0')))) {\n      if (local_58 == 0) {\n        return lVar8;\n      }\n      *(byte *)(lVar8 + 0x3a) = *(byte *)(lVar8 + 0x3a) | 8;\n      return lVar8;\n    }\n    FUN_002719b0(param_1,lVar8);\n    return lVar8;\n  }" { (if_statement "if ((param_9 != 0) &&\n       ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0')))) {\n      if (local_58 == 0) {\n        return lVar8;\n      }\n      *(byte *)(lVar8 + 0x3a) = *(byte *)(lVar8 + 0x3a) | 8;\n      return lVar8;\n    }" if (parenthesized_expression "((param_9 != 0) &&\n       ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0'))))" ( (binary_expression "(param_9 != 0) &&\n       ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0')))" (parenthesized_expression "(param_9 != 0)" ( (binary_expression "param_9 != 0" identifier != number_literal) )) && (parenthesized_expression "((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0')))" ( (parenthesized_expression "(cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0'))" ( (comma_expression "cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0')" (assignment_expression "cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41)" identifier = (call_expression "FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41)" identifier (argument_list "(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41)" ( (pointer_expression "*(undefined8 *)(param_1 + 0x288)" * (cast_expression "(undefined8 *)(param_1 + 0x288)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x288)" ( (binary_expression "param_1 + 0x288" identifier + number_literal) )))) , identifier , number_literal , (pointer_expression "&local_41" & identifier) )))) , (binary_expression "cVar7 == '\0'\n        || (local_41 != '\0')" (binary_expression "cVar7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "(local_41 != '\0')" ( (binary_expression "local_41 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )))) )) ))) )) (compound_statement "{\n      if (local_58 == 0) {\n        return lVar8;\n      }\n      *(byte *)(lVar8 + 0x3a) = *(byte *)(lVar8 + 0x3a) | 8;\n      return lVar8;\n    }" { (if_statement "if (local_58 == 0) {\n        return lVar8;\n      }" if (parenthesized_expression "(local_58 == 0)" ( (binary_expression "local_58 == 0" identifier == number_literal) )) (compound_statement "{\n        return lVar8;\n      }" { (return_statement "return lVar8;" return identifier ;) })) (expression_statement "*(byte *)(lVar8 + 0x3a) = *(byte *)(lVar8 + 0x3a) | 8;" (assignment_expression "*(byte *)(lVar8 + 0x3a) = *(byte *)(lVar8 + 0x3a) | 8" (pointer_expression "*(byte *)(lVar8 + 0x3a)" * (cast_expression "(byte *)(lVar8 + 0x3a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x3a)" ( (binary_expression "lVar8 + 0x3a" identifier + number_literal) )))) = (binary_expression "*(byte *)(lVar8 + 0x3a) | 8" (pointer_expression "*(byte *)(lVar8 + 0x3a)" * (cast_expression "(byte *)(lVar8 + 0x3a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x3a)" ( (binary_expression "lVar8 + 0x3a" identifier + number_literal) )))) | number_literal)) ;) (return_statement "return lVar8;" return identifier ;) })) (expression_statement "FUN_002719b0(param_1,lVar8);" (call_expression "FUN_002719b0(param_1,lVar8)" identifier (argument_list "(param_1,lVar8)" ( identifier , identifier ))) ;) (return_statement "return lVar8;" return identifier ;) })) (expression_statement "cVar7 = FUN_002bf240(local_40[0],param_8,param_4);" (assignment_expression "cVar7 = FUN_002bf240(local_40[0],param_8,param_4)" identifier = (call_expression "FUN_002bf240(local_40[0],param_8,param_4)" identifier (argument_list "(local_40[0],param_8,param_4)" ( (subscript_expression "local_40[0]" identifier [ number_literal ]) , identifier , identifier )))) ;) (if_statement "if (cVar7 != '\0') {\n    FUN_002c01b0(param_1,local_40[0],lVar8);\n  }" if (parenthesized_expression "(cVar7 != '\0')" ( (binary_expression "cVar7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    FUN_002c01b0(param_1,local_40[0],lVar8);\n  }" { (expression_statement "FUN_002c01b0(param_1,local_40[0],lVar8);" (call_expression "FUN_002c01b0(param_1,local_40[0],lVar8)" identifier (argument_list "(param_1,local_40[0],lVar8)" ( identifier , (subscript_expression "local_40[0]" identifier [ number_literal ]) , identifier ))) ;) })) (if_statement "if (local_42 == '\0') {\n    if ((param_4 == 5) &&\n       ((param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')))))) {\n      FUN_002719b0(param_1,local_40[0]);\n    }\n    lVar1 = *(long *)(lVar8 + 0x30);\n    if (lVar1 != 0) {\n      lVar2 = *(long *)(lVar1 + 8);\n      if (lVar2 != 0) {\n        lVar3 = *(long *)(lVar2 + 8);\n        if (lVar3 != 0) {\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }\n        thunk_FUN_002dac70(lVar2,0x10);\n      }\n      thunk_FUN_002dac70(lVar1,0x10);\n    }\n    thunk_FUN_002dac70(lVar8,0x48);\n    return local_40[0];\n  }" if (parenthesized_expression "(local_42 == '\0')" ( (binary_expression "local_42 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if ((param_4 == 5) &&\n       ((param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')))))) {\n      FUN_002719b0(param_1,local_40[0]);\n    }\n    lVar1 = *(long *)(lVar8 + 0x30);\n    if (lVar1 != 0) {\n      lVar2 = *(long *)(lVar1 + 8);\n      if (lVar2 != 0) {\n        lVar3 = *(long *)(lVar2 + 8);\n        if (lVar3 != 0) {\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }\n        thunk_FUN_002dac70(lVar2,0x10);\n      }\n      thunk_FUN_002dac70(lVar1,0x10);\n    }\n    thunk_FUN_002dac70(lVar8,0x48);\n    return local_40[0];\n  }" { (if_statement "if ((param_4 == 5) &&\n       ((param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')))))) {\n      FUN_002719b0(param_1,local_40[0]);\n    }" if (parenthesized_expression "((param_4 == 5) &&\n       ((param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0'))))))" ( (binary_expression "(param_4 == 5) &&\n       ((param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')))))" (parenthesized_expression "(param_4 == 5)" ( (binary_expression "param_4 == 5" identifier == number_literal) )) && (parenthesized_expression "((param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')))))" ( (parenthesized_expression "(param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0'))))" ( (binary_expression "param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')))" (binary_expression "param_9 == 0" identifier == number_literal) || (parenthesized_expression "((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')))" ( (parenthesized_expression "(cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0'))" ( (comma_expression "cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')" (assignment_expression "cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41)" identifier = (call_expression "FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41)" identifier (argument_list "(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41)" ( (pointer_expression "*(undefined8 *)(param_1 + 0x288)" * (cast_expression "(undefined8 *)(param_1 + 0x288)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x288)" ( (binary_expression "param_1 + 0x288" identifier + number_literal) )))) , identifier , number_literal , (pointer_expression "&local_41" & identifier) )))) , (binary_expression "cVar7 != '\0'\n         && (local_41 == '\0')" (binary_expression "cVar7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) && (parenthesized_expression "(local_41 == '\0')" ( (binary_expression "local_41 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )))) )) ))) )) ))) )) (compound_statement "{\n      FUN_002719b0(param_1,local_40[0]);\n    }" { (expression_statement "FUN_002719b0(param_1,local_40[0]);" (call_expression "FUN_002719b0(param_1,local_40[0])" identifier (argument_list "(param_1,local_40[0])" ( identifier , (subscript_expression "local_40[0]" identifier [ number_literal ]) ))) ;) })) (expression_statement "lVar1 = *(long *)(lVar8 + 0x30);" (assignment_expression "lVar1 = *(long *)(lVar8 + 0x30)" identifier = (pointer_expression "*(long *)(lVar8 + 0x30)" * (cast_expression "(long *)(lVar8 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x30)" ( (binary_expression "lVar8 + 0x30" identifier + number_literal) ))))) ;) (if_statement "if (lVar1 != 0) {\n      lVar2 = *(long *)(lVar1 + 8);\n      if (lVar2 != 0) {\n        lVar3 = *(long *)(lVar2 + 8);\n        if (lVar3 != 0) {\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }\n        thunk_FUN_002dac70(lVar2,0x10);\n      }\n      thunk_FUN_002dac70(lVar1,0x10);\n    }" if (parenthesized_expression "(lVar1 != 0)" ( (binary_expression "lVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      lVar2 = *(long *)(lVar1 + 8);\n      if (lVar2 != 0) {\n        lVar3 = *(long *)(lVar2 + 8);\n        if (lVar3 != 0) {\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }\n        thunk_FUN_002dac70(lVar2,0x10);\n      }\n      thunk_FUN_002dac70(lVar1,0x10);\n    }" { (expression_statement "lVar2 = *(long *)(lVar1 + 8);" (assignment_expression "lVar2 = *(long *)(lVar1 + 8)" identifier = (pointer_expression "*(long *)(lVar1 + 8)" * (cast_expression "(long *)(lVar1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 8)" ( (binary_expression "lVar1 + 8" identifier + number_literal) ))))) ;) (if_statement "if (lVar2 != 0) {\n        lVar3 = *(long *)(lVar2 + 8);\n        if (lVar3 != 0) {\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }\n        thunk_FUN_002dac70(lVar2,0x10);\n      }" if (parenthesized_expression "(lVar2 != 0)" ( (binary_expression "lVar2 != 0" identifier != number_literal) )) (compound_statement "{\n        lVar3 = *(long *)(lVar2 + 8);\n        if (lVar3 != 0) {\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }\n        thunk_FUN_002dac70(lVar2,0x10);\n      }" { (expression_statement "lVar3 = *(long *)(lVar2 + 8);" (assignment_expression "lVar3 = *(long *)(lVar2 + 8)" identifier = (pointer_expression "*(long *)(lVar2 + 8)" * (cast_expression "(long *)(lVar2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) ))))) ;) (if_statement "if (lVar3 != 0) {\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }" if (parenthesized_expression "(lVar3 != 0)" ( (binary_expression "lVar3 != 0" identifier != number_literal) )) (compound_statement "{\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }" { (expression_statement "lVar4 = *(long *)(lVar3 + 8);" (assignment_expression "lVar4 = *(long *)(lVar3 + 8)" identifier = (pointer_expression "*(long *)(lVar3 + 8)" * (cast_expression "(long *)(lVar3 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 8)" ( (binary_expression "lVar3 + 8" identifier + number_literal) ))))) ;) (if_statement "if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (compound_statement "{\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }" { (expression_statement "lVar5 = *(long *)(lVar4 + 8);" (assignment_expression "lVar5 = *(long *)(lVar4 + 8)" identifier = (pointer_expression "*(long *)(lVar4 + 8)" * (cast_expression "(long *)(lVar4 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 8)" ( (binary_expression "lVar4 + 8" identifier + number_literal) ))))) ;) (if_statement "if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }" if (parenthesized_expression "(lVar5 != 0)" ( (binary_expression "lVar5 != 0" identifier != number_literal) )) (compound_statement "{\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }" { (expression_statement "lVar6 = *(long *)(lVar5 + 8);" (assignment_expression "lVar6 = *(long *)(lVar5 + 8)" identifier = (pointer_expression "*(long *)(lVar5 + 8)" * (cast_expression "(long *)(lVar5 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 8)" ( (binary_expression "lVar5 + 8" identifier + number_literal) ))))) ;) (if_statement "if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }" if (parenthesized_expression "(lVar6 != 0)" ( (binary_expression "lVar6 != 0" identifier != number_literal) )) (compound_statement "{\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }" { (expression_statement "FUN_002745e0(lVar6);" (call_expression "FUN_002745e0(lVar6)" identifier (argument_list "(lVar6)" ( identifier ))) ;) (expression_statement "thunk_FUN_002dac70(lVar6,0x10);" (call_expression "thunk_FUN_002dac70(lVar6,0x10)" identifier (argument_list "(lVar6,0x10)" ( identifier , number_literal ))) ;) })) (expression_statement "thunk_FUN_002dac70(lVar5,0x10);" (call_expression "thunk_FUN_002dac70(lVar5,0x10)" identifier (argument_list "(lVar5,0x10)" ( identifier , number_literal ))) ;) })) (expression_statement "thunk_FUN_002dac70(lVar4,0x10);" (call_expression "thunk_FUN_002dac70(lVar4,0x10)" identifier (argument_list "(lVar4,0x10)" ( identifier , number_literal ))) ;) })) (expression_statement "thunk_FUN_002dac70(lVar3,0x10);" (call_expression "thunk_FUN_002dac70(lVar3,0x10)" identifier (argument_list "(lVar3,0x10)" ( identifier , number_literal ))) ;) })) (expression_statement "thunk_FUN_002dac70(lVar2,0x10);" (call_expression "thunk_FUN_002dac70(lVar2,0x10)" identifier (argument_list "(lVar2,0x10)" ( identifier , number_literal ))) ;) })) (expression_statement "thunk_FUN_002dac70(lVar1,0x10);" (call_expression "thunk_FUN_002dac70(lVar1,0x10)" identifier (argument_list "(lVar1,0x10)" ( identifier , number_literal ))) ;) })) (expression_statement "thunk_FUN_002dac70(lVar8,0x48);" (call_expression "thunk_FUN_002dac70(lVar8,0x48)" identifier (argument_list "(lVar8,0x48)" ( identifier , number_literal ))) ;) (return_statement "return local_40[0];" return (subscript_expression "local_40[0]" identifier [ number_literal ]) ;) })) (return_statement "return lVar8;" return identifier ;) })))
(translation_unit "/* 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<32> * do_define_in_output_data<32>(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<32> * __thiscall\ngold::Symbol_table::do_define_in_output_data<32>\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  bool bVar7;\n  Sized_symbol<32> *this_01;\n  char *pcVar8;\n  Sized_symbol<32> *pSVar9;\n  char *local_58;\n  char *local_50;\n  bool resolve_oldsym;\n  bool is_global;\n  Sized_symbol<32> *oldsym;\n  \n  local_58 = version;\n  local_50 = name;\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 *)(*(long *)(parameters->target_ + 8) + 4) == '\0') {\n    this_01 = define_special_symbol<32,_false>\n                        (this,&local_50,&local_58,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL);\n  }\n  else {\n    this_01 = define_special_symbol<32,_true>\n                        (this,&local_50,&local_58,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL);\n  }\n  if (this_01 == (Sized_symbol<32> *)0x0) {\n    return (Sized_symbol<32> *)0x0;\n  }\n  Sized_symbol<32>::init_output_data\n            (this_01,local_50,local_58,od,value,symsize,type,binding,visibility,nonvis,\n             offset_is_from_end,defined == PREDEFINED);\n  if (oldsym == (Sized_symbol<32> *)0x0) {\n    if ((binding != STB_LOCAL) &&\n       ((bVar7 = Version_script_info::get_symbol_version\n                           (this->version_script_,local_50,(string *)0x0,&is_global), !bVar7 ||\n        (is_global != false)))) {\n      if (local_58 == (char *)0x0) {\n        return this_01;\n      }\n      puVar1 = &(this_01->super_Symbol).field_0x3a;\n      *puVar1 = *puVar1 | 8;\n      return this_01;\n    }\n    force_local(this,&this_01->super_Symbol);\n    return this_01;\n  }\n  bVar7 = should_override_with_special(&oldsym->super_Symbol,type,defined);\n  if (bVar7) {\n    pSVar9 = oldsym;\n    override_with_special<32>(this,oldsym,this_01);\n    type = (STT)pSVar9;\n  }\n  if (resolve_oldsym != false) {\n    return this_01;\n  }\n  if (defined == PREDEFINED) {\n    if (binding != STB_LOCAL) {\n      pcVar8 = local_50;\n      bVar7 = Version_script_info::get_symbol_version\n                        (this->version_script_,local_50,(string *)0x0,&is_global);\n      type = (STT)pcVar8;\n      if ((!bVar7) || (is_global != false)) goto LAB_0027e46a;\n    }\n    pSVar9 = oldsym;\n    force_local(this,&oldsym->super_Symbol);\n    type = (STT)pSVar9;\n  }\nLAB_0027e46a:\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,type);\n              operator_delete(this_00,0x10);\n            }\n            operator_delete(pGVar6,0x10);\n          }\n          operator_delete(pGVar5,0x10);\n        }\n        operator_delete(pGVar4,0x10);\n      }\n      operator_delete(pGVar3,0x10);\n    }\n    operator_delete(pGVar2,0x10);\n  }\n  operator_delete(this_01,0x48);\n  return oldsym;\n}\n\n" comment comment comment comment (ERROR "Sized_symbol<32> * __thiscall\ngold::Symbol_table::do_define_in_output_data<32>\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<32> * __thiscall\ngold::Symbol_table::do_define_in_output_data<32>\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<32> * __thiscall\ngold::Symbol_table::do_define_in_output_data<32" (binary_expression "Sized_symbol<32> * __thiscall" (binary_expression "Sized_symbol<32" 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  bool bVar7;\n  Sized_symbol<32> *this_01;\n  char *pcVar8;\n  Sized_symbol<32> *pSVar9;\n  char *local_58;\n  char *local_50;\n  bool resolve_oldsym;\n  bool is_global;\n  Sized_symbol<32> *oldsym;\n  \n  local_58 = version;\n  local_50 = name;\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 *)(*(long *)(parameters->target_ + 8) + 4) == '\0') {\n    this_01 = define_special_symbol<32,_false>\n                        (this,&local_50,&local_58,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL);\n  }\n  else {\n    this_01 = define_special_symbol<32,_true>\n                        (this,&local_50,&local_58,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL);\n  }\n  if (this_01 == (Sized_symbol<32> *)0x0) {\n    return (Sized_symbol<32> *)0x0;\n  }\n  Sized_symbol<32>::init_output_data\n            (this_01,local_50,local_58,od,value,symsize,type,binding,visibility,nonvis,\n             offset_is_from_end,defined == PREDEFINED);\n  if (oldsym == (Sized_symbol<32> *)0x0) {\n    if ((binding != STB_LOCAL) &&\n       ((bVar7 = Version_script_info::get_symbol_version\n                           (this->version_script_,local_50,(string *)0x0,&is_global), !bVar7 ||\n        (is_global != false)))) {\n      if (local_58 == (char *)0x0) {\n        return this_01;\n      }\n      puVar1 = &(this_01->super_Symbol).field_0x3a;\n      *puVar1 = *puVar1 | 8;\n      return this_01;\n    }\n    force_local(this,&this_01->super_Symbol);\n    return this_01;\n  }\n  bVar7 = should_override_with_special(&oldsym->super_Symbol,type,defined);\n  if (bVar7) {\n    pSVar9 = oldsym;\n    override_with_special<32>(this,oldsym,this_01);\n    type = (STT)pSVar9;\n  }\n  if (resolve_oldsym != false) {\n    return this_01;\n  }\n  if (defined == PREDEFINED) {\n    if (binding != STB_LOCAL) {\n      pcVar8 = local_50;\n      bVar7 = Version_script_info::get_symbol_version\n                        (this->version_script_,local_50,(string *)0x0,&is_global);\n      type = (STT)pcVar8;\n      if ((!bVar7) || (is_global != false)) goto LAB_0027e46a;\n    }\n    pSVar9 = oldsym;\n    force_local(this,&oldsym->super_Symbol);\n    type = (STT)pSVar9;\n  }\nLAB_0027e46a:\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,type);\n              operator_delete(this_00,0x10);\n            }\n            operator_delete(pGVar6,0x10);\n          }\n          operator_delete(pGVar5,0x10);\n        }\n        operator_delete(pGVar4,0x10);\n      }\n      operator_delete(pGVar3,0x10);\n    }\n    operator_delete(pGVar2,0x10);\n  }\n  operator_delete(this_01,0x48);\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 "bool bVar7;" primitive_type identifier ;) (expression_statement "Sized_symbol<32> *this_01;" (binary_expression "Sized_symbol<32> *this_01" (binary_expression "Sized_symbol<32" identifier < number_literal) > (pointer_expression "*this_01" * identifier)) ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (expression_statement "Sized_symbol<32> *pSVar9;" (binary_expression "Sized_symbol<32> *pSVar9" (binary_expression "Sized_symbol<32" identifier < number_literal) > (pointer_expression "*pSVar9" * identifier)) ;) (declaration "char *local_58;" primitive_type (pointer_declarator "*local_58" * identifier) ;) (declaration "char *local_50;" primitive_type (pointer_declarator "*local_50" * identifier) ;) (declaration "bool resolve_oldsym;" primitive_type identifier ;) (declaration "bool is_global;" primitive_type identifier ;) (expression_statement "Sized_symbol<32> *oldsym;" (binary_expression "Sized_symbol<32> *oldsym" (binary_expression "Sized_symbol<32" identifier < number_literal) > (pointer_expression "*oldsym" * identifier)) ;) (expression_statement "local_58 = version;" (assignment_expression "local_58 = version" identifier = identifier) ;) (expression_statement "local_50 = name;" (assignment_expression "local_50 = name" 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 *)(*(long *)(parameters->target_ + 8) + 4) == '\0') {\n    this_01 = define_special_symbol<32,_false>\n                        (this,&local_50,&local_58,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL);\n  }\n  else {\n    this_01 = define_special_symbol<32,_true>\n                        (this,&local_50,&local_58,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL);\n  }" if (parenthesized_expression "(*(char *)(*(long *)(parameters->target_ + 8) + 4) == '\0')" ( (binary_expression "*(char *)(*(long *)(parameters->target_ + 8) + 4) == '\0'" (pointer_expression "*(char *)(*(long *)(parameters->target_ + 8) + 4)" * (cast_expression "(char *)(*(long *)(parameters->target_ + 8) + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(parameters->target_ + 8) + 4)" ( (binary_expression "*(long *)(parameters->target_ + 8) + 4" (pointer_expression "*(long *)(parameters->target_ + 8)" * (cast_expression "(long *)(parameters->target_ + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(parameters->target_ + 8)" ( (binary_expression "parameters->target_ + 8" (field_expression "parameters->target_" identifier -> field_identifier) + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    this_01 = define_special_symbol<32,_false>\n                        (this,&local_50,&local_58,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL);\n  }" { (expression_statement "this_01 = define_special_symbol<32,_false>\n                        (this,&local_50,&local_58,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL);" (comma_expression "this_01 = define_special_symbol<32,_false>\n                        (this,&local_50,&local_58,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL)" (assignment_expression "this_01 = define_special_symbol<32" identifier = (binary_expression "define_special_symbol<32" identifier < number_literal)) , (binary_expression "_false>\n                        (this,&local_50,&local_58,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL)" identifier > (parenthesized_expression "(this,&local_50,&local_58,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL)" ( (comma_expression "this,&local_50,&local_58,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL" identifier , (comma_expression "&local_50,&local_58,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL" (pointer_expression "&local_50" & identifier) , (comma_expression "&local_58,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL" (pointer_expression "&local_58" & 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<32,_true>\n                        (this,&local_50,&local_58,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL);\n  }" else (compound_statement "{\n    this_01 = define_special_symbol<32,_true>\n                        (this,&local_50,&local_58,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL);\n  }" { (expression_statement "this_01 = define_special_symbol<32,_true>\n                        (this,&local_50,&local_58,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL);" (comma_expression "this_01 = define_special_symbol<32,_true>\n                        (this,&local_50,&local_58,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL)" (assignment_expression "this_01 = define_special_symbol<32" identifier = (binary_expression "define_special_symbol<32" identifier < number_literal)) , (binary_expression "_true>\n                        (this,&local_50,&local_58,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL)" identifier > (parenthesized_expression "(this,&local_50,&local_58,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL)" ( (comma_expression "this,&local_50,&local_58,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL" identifier , (comma_expression "&local_50,&local_58,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL" (pointer_expression "&local_50" & identifier) , (comma_expression "&local_58,only_if_ref,visibility,&oldsym,&resolve_oldsym,\n                         binding == STB_LOCAL" (pointer_expression "&local_58" & 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<32> *)0x0) {\n    return (Sized_symbol<32> *)0x0;\n  }" if (parenthesized_expression "(this_01 == (Sized_symbol<32> *)0x0)" ( (binary_expression "this_01 == (Sized_symbol<32> *)0x0)" identifier == (parenthesized_expression "(Sized_symbol<32> *)0x0)" ( (binary_expression "Sized_symbol<32> *)0x0" (binary_expression "Sized_symbol<32" identifier < number_literal) > (pointer_expression "*)0x0" * (ERROR ")" )) number_literal)) ))) )) (compound_statement "{\n    return (Sized_symbol<32> *)0x0;\n  }" { (return_statement "return (Sized_symbol<32> *)0x0;" return (parenthesized_expression "(Sized_symbol<32> *)0x0" ( (binary_expression "Sized_symbol<32> *)0x0" (binary_expression "Sized_symbol<32" identifier < number_literal) > (pointer_expression "*)0x0" * (ERROR ")" )) number_literal)) )) ;) })) (expression_statement "Sized_symbol<32>::init_output_data\n            (this_01,local_50,local_58,od,value,symsize,type,binding,visibility,nonvis,\n             offset_is_from_end,defined == PREDEFINED);" (binary_expression "Sized_symbol<32>::init_output_data\n            (this_01,local_50,local_58,od,value,symsize,type,binding,visibility,nonvis,\n             offset_is_from_end,defined == PREDEFINED)" (binary_expression "Sized_symbol<32" identifier < number_literal) > (ERROR "::" : :) (call_expression "init_output_data\n            (this_01,local_50,local_58,od,value,symsize,type,binding,visibility,nonvis,\n             offset_is_from_end,defined == PREDEFINED)" identifier (argument_list "(this_01,local_50,local_58,od,value,symsize,type,binding,visibility,nonvis,\n             offset_is_from_end,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<32> *)0x0) {\n    if ((binding != STB_LOCAL) &&\n       ((bVar7 = Version_script_info::get_symbol_version\n                           (this->version_script_,local_50,(string *)0x0,&is_global), !bVar7 ||\n        (is_global != false)))) {\n      if (local_58 == (char *)0x0) {\n        return this_01;\n      }\n      puVar1 = &(this_01->super_Symbol).field_0x3a;\n      *puVar1 = *puVar1 | 8;\n      return this_01;\n    }\n    force_local(this,&this_01->super_Symbol);\n    return this_01;\n  }" if (parenthesized_expression "(oldsym == (Sized_symbol<32> *)0x0)" ( (binary_expression "oldsym == (Sized_symbol<32> *)0x0)" identifier == (parenthesized_expression "(Sized_symbol<32> *)0x0)" ( (binary_expression "Sized_symbol<32> *)0x0" (binary_expression "Sized_symbol<32" 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_,local_50,(string *)0x0,&is_global), !bVar7 ||\n        (is_global != false)))) {\n      if (local_58 == (char *)0x0) {\n        return this_01;\n      }\n      puVar1 = &(this_01->super_Symbol).field_0x3a;\n      *puVar1 = *puVar1 | 8;\n      return this_01;\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_,local_50,(string *)0x0,&is_global), !bVar7 ||\n        (is_global != false)))) {\n      if (local_58 == (char *)0x0) {\n        return this_01;\n      }\n      puVar1 = &(this_01->super_Symbol).field_0x3a;\n      *puVar1 = *puVar1 | 8;\n      return this_01;\n    }" if (parenthesized_expression "((binding != STB_LOCAL) &&\n       ((bVar7 = Version_script_info::get_symbol_version\n                           (this->version_script_,local_50,(string *)0x0,&is_global), !bVar7 ||\n        (is_global != false))))" ( (binary_expression "(binding != STB_LOCAL) &&\n       ((bVar7 = Version_script_info::get_symbol_version\n                           (this->version_script_,local_50,(string *)0x0,&is_global), !bVar7 ||\n        (is_global != false)))" (parenthesized_expression "(binding != STB_LOCAL)" ( (binary_expression "binding != STB_LOCAL" identifier != identifier) )) && (parenthesized_expression "((bVar7 = Version_script_info::get_symbol_version\n                           (this->version_script_,local_50,(string *)0x0,&is_global), !bVar7 ||\n        (is_global != false)))" ( (parenthesized_expression "(bVar7 = Version_script_info::get_symbol_version\n                           (this->version_script_,local_50,(string *)0x0,&is_global), !bVar7 ||\n        (is_global != false))" ( (ERROR "bVar7 = Version_script_info::" (assignment_expression "bVar7 = Version_script_info" identifier = identifier) : :) (comma_expression "get_symbol_version\n                           (this->version_script_,local_50,(string *)0x0,&is_global), !bVar7 ||\n        (is_global != false)" (call_expression "get_symbol_version\n                           (this->version_script_,local_50,(string *)0x0,&is_global)" identifier (argument_list "(this->version_script_,local_50,(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) ))) , (binary_expression "!bVar7 ||\n        (is_global != false)" (unary_expression "!bVar7" ! identifier) || (parenthesized_expression "(is_global != false)" ( (binary_expression "is_global != false" identifier != false) )))) )) ))) )) (compound_statement "{\n      if (local_58 == (char *)0x0) {\n        return this_01;\n      }\n      puVar1 = &(this_01->super_Symbol).field_0x3a;\n      *puVar1 = *puVar1 | 8;\n      return this_01;\n    }" { (if_statement "if (local_58 == (char *)0x0) {\n        return this_01;\n      }" if (parenthesized_expression "(local_58 == (char *)0x0)" ( (binary_expression "local_58 == (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_0x3a;" (assignment_expression "puVar1 = &(this_01->super_Symbol).field_0x3a" identifier = (pointer_expression "&(this_01->super_Symbol).field_0x3a" & (field_expression "(this_01->super_Symbol).field_0x3a" (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 "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    pSVar9 = oldsym;\n    override_with_special<32>(this,oldsym,this_01);\n    type = (STT)pSVar9;\n  }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n    pSVar9 = oldsym;\n    override_with_special<32>(this,oldsym,this_01);\n    type = (STT)pSVar9;\n  }" { (expression_statement "pSVar9 = oldsym;" (assignment_expression "pSVar9 = oldsym" identifier = identifier) ;) (expression_statement "override_with_special<32>(this,oldsym,this_01);" (binary_expression "override_with_special<32>(this,oldsym,this_01)" (binary_expression "override_with_special<32" identifier < number_literal) > (parenthesized_expression "(this,oldsym,this_01)" ( (comma_expression "this,oldsym,this_01" identifier , (comma_expression "oldsym,this_01" identifier , identifier)) ))) ;) (expression_statement "type = (STT)pSVar9;" (assignment_expression "type = (STT)pSVar9" identifier = (cast_expression "(STT)pSVar9" ( (type_descriptor "STT" type_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      pcVar8 = local_50;\n      bVar7 = Version_script_info::get_symbol_version\n                        (this->version_script_,local_50,(string *)0x0,&is_global);\n      type = (STT)pcVar8;\n      if ((!bVar7) || (is_global != false)) goto LAB_0027e46a;\n    }\n    pSVar9 = oldsym;\n    force_local(this,&oldsym->super_Symbol);\n    type = (STT)pSVar9;\n  }" if (parenthesized_expression "(defined == PREDEFINED)" ( (binary_expression "defined == PREDEFINED" identifier == identifier) )) (compound_statement "{\n    if (binding != STB_LOCAL) {\n      pcVar8 = local_50;\n      bVar7 = Version_script_info::get_symbol_version\n                        (this->version_script_,local_50,(string *)0x0,&is_global);\n      type = (STT)pcVar8;\n      if ((!bVar7) || (is_global != false)) goto LAB_0027e46a;\n    }\n    pSVar9 = oldsym;\n    force_local(this,&oldsym->super_Symbol);\n    type = (STT)pSVar9;\n  }" { (if_statement "if (binding != STB_LOCAL) {\n      pcVar8 = local_50;\n      bVar7 = Version_script_info::get_symbol_version\n                        (this->version_script_,local_50,(string *)0x0,&is_global);\n      type = (STT)pcVar8;\n      if ((!bVar7) || (is_global != false)) goto LAB_0027e46a;\n    }" if (parenthesized_expression "(binding != STB_LOCAL)" ( (binary_expression "binding != STB_LOCAL" identifier != identifier) )) (compound_statement "{\n      pcVar8 = local_50;\n      bVar7 = Version_script_info::get_symbol_version\n                        (this->version_script_,local_50,(string *)0x0,&is_global);\n      type = (STT)pcVar8;\n      if ((!bVar7) || (is_global != false)) goto LAB_0027e46a;\n    }" { (expression_statement "pcVar8 = local_50;" (assignment_expression "pcVar8 = local_50" identifier = identifier) ;) (ERROR "bVar7 = Version_script_info::" (assignment_expression "bVar7 = Version_script_info" identifier = identifier) : :) (expression_statement "get_symbol_version\n                        (this->version_script_,local_50,(string *)0x0,&is_global);" (call_expression "get_symbol_version\n                        (this->version_script_,local_50,(string *)0x0,&is_global)" identifier (argument_list "(this->version_script_,local_50,(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) ))) ;) (expression_statement "type = (STT)pcVar8;" (assignment_expression "type = (STT)pcVar8" identifier = (cast_expression "(STT)pcVar8" ( (type_descriptor "STT" type_identifier) ) identifier)) ;) (if_statement "if ((!bVar7) || (is_global != false)) goto LAB_0027e46a;" 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_0027e46a;" goto statement_identifier ;)) })) (expression_statement "pSVar9 = oldsym;" (assignment_expression "pSVar9 = 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)) ))) ;) (expression_statement "type = (STT)pSVar9;" (assignment_expression "type = (STT)pSVar9" identifier = (cast_expression "(STT)pSVar9" ( (type_descriptor "STT" type_identifier) ) identifier)) ;) })) (labeled_statement "LAB_0027e46a:\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,type);\n              operator_delete(this_00,0x10);\n            }\n            operator_delete(pGVar6,0x10);\n          }\n          operator_delete(pGVar5,0x10);\n        }\n        operator_delete(pGVar4,0x10);\n      }\n      operator_delete(pGVar3,0x10);\n    }\n    operator_delete(pGVar2,0x10);\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,type);\n              operator_delete(this_00,0x10);\n            }\n            operator_delete(pGVar6,0x10);\n          }\n          operator_delete(pGVar5,0x10);\n        }\n        operator_delete(pGVar4,0x10);\n      }\n      operator_delete(pGVar3,0x10);\n    }\n    operator_delete(pGVar2,0x10);\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,type);\n              operator_delete(this_00,0x10);\n            }\n            operator_delete(pGVar6,0x10);\n          }\n          operator_delete(pGVar5,0x10);\n        }\n        operator_delete(pGVar4,0x10);\n      }\n      operator_delete(pGVar3,0x10);\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,type);\n              operator_delete(this_00,0x10);\n            }\n            operator_delete(pGVar6,0x10);\n          }\n          operator_delete(pGVar5,0x10);\n        }\n        operator_delete(pGVar4,0x10);\n      }\n      operator_delete(pGVar3,0x10);\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,type);\n              operator_delete(this_00,0x10);\n            }\n            operator_delete(pGVar6,0x10);\n          }\n          operator_delete(pGVar5,0x10);\n        }\n        operator_delete(pGVar4,0x10);\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,type);\n              operator_delete(this_00,0x10);\n            }\n            operator_delete(pGVar6,0x10);\n          }\n          operator_delete(pGVar5,0x10);\n        }\n        operator_delete(pGVar4,0x10);\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,type);\n              operator_delete(this_00,0x10);\n            }\n            operator_delete(pGVar6,0x10);\n          }\n          operator_delete(pGVar5,0x10);\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,type);\n              operator_delete(this_00,0x10);\n            }\n            operator_delete(pGVar6,0x10);\n          }\n          operator_delete(pGVar5,0x10);\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,type);\n              operator_delete(this_00,0x10);\n            }\n            operator_delete(pGVar6,0x10);\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,type);\n              operator_delete(this_00,0x10);\n            }\n            operator_delete(pGVar6,0x10);\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,type);\n              operator_delete(this_00,0x10);\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,type);\n              operator_delete(this_00,0x10);\n            }" { (labeled_statement "Got_offset_list::~Got_offset_list(this_00,type);" statement_identifier : (ERROR ":" :) (expression_statement "~Got_offset_list(this_00,type);" (unary_expression "~Got_offset_list(this_00,type)" ~ (call_expression "Got_offset_list(this_00,type)" identifier (argument_list "(this_00,type)" ( identifier , identifier )))) ;)) (expression_statement "operator_delete(this_00,0x10);" (call_expression "operator_delete(this_00,0x10)" identifier (argument_list "(this_00,0x10)" ( identifier , number_literal ))) ;) })) (expression_statement "operator_delete(pGVar6,0x10);" (call_expression "operator_delete(pGVar6,0x10)" identifier (argument_list "(pGVar6,0x10)" ( identifier , number_literal ))) ;) })) (expression_statement "operator_delete(pGVar5,0x10);" (call_expression "operator_delete(pGVar5,0x10)" identifier (argument_list "(pGVar5,0x10)" ( identifier , number_literal ))) ;) })) (expression_statement "operator_delete(pGVar4,0x10);" (call_expression "operator_delete(pGVar4,0x10)" identifier (argument_list "(pGVar4,0x10)" ( identifier , number_literal ))) ;) })) (expression_statement "operator_delete(pGVar3,0x10);" (call_expression "operator_delete(pGVar3,0x10)" identifier (argument_list "(pGVar3,0x10)" ( identifier , number_literal ))) ;) })) (expression_statement "operator_delete(pGVar2,0x10);" (call_expression "operator_delete(pGVar2,0x10)" identifier (argument_list "(pGVar2,0x10)" ( identifier , number_literal ))) ;) })) (expression_statement "operator_delete(this_01,0x48);" (call_expression "operator_delete(this_01,0x48)" identifier (argument_list "(this_01,0x48)" ( identifier , number_literal ))) ;) (return_statement "return oldsym;" return identifier ;) }))
(translation_unit "long FUN_0027e340(long param_1,undefined8 param_2,long param_3,int param_4,undefined8 param_5,\n                 undefined4 param_6,undefined4 param_7,undefined4 param_8,int param_9,\n                 undefined4 param_10,undefined1 param_11,undefined1 param_12,undefined4 param_13)\n\n{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  char cVar7;\n  long lVar8;\n  long local_58;\n  undefined8 local_50;\n  char local_42;\n  char local_41;\n  long local_40 [2];\n  \n  local_58 = param_3;\n  local_50 = param_2;\n  if (*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0) {\n                    \n    FUN_0017c650("../../gold/parameters.h",0x69,"target",param_13);\n  }\n  if (*(char *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 4) == '\0') {\n    lVar8 = FUN_0027de40();\n  }\n  else {\n    lVar8 = FUN_0027c240(param_1,&local_50,&local_58,(char)param_13,param_10,local_40,&local_42,\n                         param_9 == 0);\n  }\n  if (lVar8 == 0) {\n    return 0;\n  }\n  FUN_00274650(lVar8,local_50,local_58,param_5,param_6,param_7,param_8,param_9,param_10,param_11,\n               param_12,param_4 == 5);\n  if (local_40[0] == 0) {\n    if ((param_9 != 0) &&\n       ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0')))) {\n      if (local_58 == 0) {\n        return lVar8;\n      }\n      *(byte *)(lVar8 + 0x3a) = *(byte *)(lVar8 + 0x3a) | 8;\n      return lVar8;\n    }\n    FUN_002719b0(param_1,lVar8);\n    return lVar8;\n  }\n  cVar7 = FUN_002bf240(local_40[0],param_8,param_4);\n  if (cVar7 != '\0') {\n    FUN_002c01b0(param_1,local_40[0],lVar8);\n  }\n  if (local_42 == '\0') {\n    if ((param_4 == 5) &&\n       ((param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')))))) {\n      FUN_002719b0(param_1,local_40[0]);\n    }\n    lVar1 = *(long *)(lVar8 + 0x30);\n    if (lVar1 != 0) {\n      lVar2 = *(long *)(lVar1 + 8);\n      if (lVar2 != 0) {\n        lVar3 = *(long *)(lVar2 + 8);\n        if (lVar3 != 0) {\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }\n        thunk_FUN_002dac70(lVar2,0x10);\n      }\n      thunk_FUN_002dac70(lVar1,0x10);\n    }\n    thunk_FUN_002dac70(lVar8,0x48);\n    return local_40[0];\n  }\n  return lVar8;\n}\n\n" (function_definition "long FUN_0027e340(long param_1,undefined8 param_2,long param_3,int param_4,undefined8 param_5,\n                 undefined4 param_6,undefined4 param_7,undefined4 param_8,int param_9,\n                 undefined4 param_10,undefined1 param_11,undefined1 param_12,undefined4 param_13)\n\n{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  char cVar7;\n  long lVar8;\n  long local_58;\n  undefined8 local_50;\n  char local_42;\n  char local_41;\n  long local_40 [2];\n  \n  local_58 = param_3;\n  local_50 = param_2;\n  if (*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0) {\n                    \n    FUN_0017c650("../../gold/parameters.h",0x69,"target",param_13);\n  }\n  if (*(char *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 4) == '\0') {\n    lVar8 = FUN_0027de40();\n  }\n  else {\n    lVar8 = FUN_0027c240(param_1,&local_50,&local_58,(char)param_13,param_10,local_40,&local_42,\n                         param_9 == 0);\n  }\n  if (lVar8 == 0) {\n    return 0;\n  }\n  FUN_00274650(lVar8,local_50,local_58,param_5,param_6,param_7,param_8,param_9,param_10,param_11,\n               param_12,param_4 == 5);\n  if (local_40[0] == 0) {\n    if ((param_9 != 0) &&\n       ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0')))) {\n      if (local_58 == 0) {\n        return lVar8;\n      }\n      *(byte *)(lVar8 + 0x3a) = *(byte *)(lVar8 + 0x3a) | 8;\n      return lVar8;\n    }\n    FUN_002719b0(param_1,lVar8);\n    return lVar8;\n  }\n  cVar7 = FUN_002bf240(local_40[0],param_8,param_4);\n  if (cVar7 != '\0') {\n    FUN_002c01b0(param_1,local_40[0],lVar8);\n  }\n  if (local_42 == '\0') {\n    if ((param_4 == 5) &&\n       ((param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')))))) {\n      FUN_002719b0(param_1,local_40[0]);\n    }\n    lVar1 = *(long *)(lVar8 + 0x30);\n    if (lVar1 != 0) {\n      lVar2 = *(long *)(lVar1 + 8);\n      if (lVar2 != 0) {\n        lVar3 = *(long *)(lVar2 + 8);\n        if (lVar3 != 0) {\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }\n        thunk_FUN_002dac70(lVar2,0x10);\n      }\n      thunk_FUN_002dac70(lVar1,0x10);\n    }\n    thunk_FUN_002dac70(lVar8,0x48);\n    return local_40[0];\n  }\n  return lVar8;\n}" (sized_type_specifier "long" long) (function_declarator "FUN_0027e340(long param_1,undefined8 param_2,long param_3,int param_4,undefined8 param_5,\n                 undefined4 param_6,undefined4 param_7,undefined4 param_8,int param_9,\n                 undefined4 param_10,undefined1 param_11,undefined1 param_12,undefined4 param_13)" identifier (parameter_list "(long param_1,undefined8 param_2,long param_3,int param_4,undefined8 param_5,\n                 undefined4 param_6,undefined4 param_7,undefined4 param_8,int param_9,\n                 undefined4 param_10,undefined1 param_11,undefined1 param_12,undefined4 param_13)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "undefined8 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 "int param_9" primitive_type identifier) , (parameter_declaration "undefined4 param_10" type_identifier identifier) , (parameter_declaration "undefined1 param_11" type_identifier identifier) , (parameter_declaration "undefined1 param_12" type_identifier identifier) , (parameter_declaration "undefined4 param_13" type_identifier identifier) ))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  char cVar7;\n  long lVar8;\n  long local_58;\n  undefined8 local_50;\n  char local_42;\n  char local_41;\n  long local_40 [2];\n  \n  local_58 = param_3;\n  local_50 = param_2;\n  if (*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0) {\n                    \n    FUN_0017c650("../../gold/parameters.h",0x69,"target",param_13);\n  }\n  if (*(char *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 4) == '\0') {\n    lVar8 = FUN_0027de40();\n  }\n  else {\n    lVar8 = FUN_0027c240(param_1,&local_50,&local_58,(char)param_13,param_10,local_40,&local_42,\n                         param_9 == 0);\n  }\n  if (lVar8 == 0) {\n    return 0;\n  }\n  FUN_00274650(lVar8,local_50,local_58,param_5,param_6,param_7,param_8,param_9,param_10,param_11,\n               param_12,param_4 == 5);\n  if (local_40[0] == 0) {\n    if ((param_9 != 0) &&\n       ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0')))) {\n      if (local_58 == 0) {\n        return lVar8;\n      }\n      *(byte *)(lVar8 + 0x3a) = *(byte *)(lVar8 + 0x3a) | 8;\n      return lVar8;\n    }\n    FUN_002719b0(param_1,lVar8);\n    return lVar8;\n  }\n  cVar7 = FUN_002bf240(local_40[0],param_8,param_4);\n  if (cVar7 != '\0') {\n    FUN_002c01b0(param_1,local_40[0],lVar8);\n  }\n  if (local_42 == '\0') {\n    if ((param_4 == 5) &&\n       ((param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')))))) {\n      FUN_002719b0(param_1,local_40[0]);\n    }\n    lVar1 = *(long *)(lVar8 + 0x30);\n    if (lVar1 != 0) {\n      lVar2 = *(long *)(lVar1 + 8);\n      if (lVar2 != 0) {\n        lVar3 = *(long *)(lVar2 + 8);\n        if (lVar3 != 0) {\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }\n        thunk_FUN_002dac70(lVar2,0x10);\n      }\n      thunk_FUN_002dac70(lVar1,0x10);\n    }\n    thunk_FUN_002dac70(lVar8,0x48);\n    return local_40[0];\n  }\n  return lVar8;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_58;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 local_50;" type_identifier identifier ;) (declaration "char local_42;" primitive_type identifier ;) (declaration "char local_41;" primitive_type identifier ;) (declaration "long local_40 [2];" (sized_type_specifier "long" long) (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (expression_statement "local_58 = param_3;" (assignment_expression "local_58 = param_3" identifier = identifier) ;) (expression_statement "local_50 = param_2;" (assignment_expression "local_50 = param_2" identifier = identifier) ;) (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0) {\n                    \n    FUN_0017c650("../../gold/parameters.h",0x69,"target",param_13);\n  }" if (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x18)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x18)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x18" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n    FUN_0017c650("../../gold/parameters.h",0x69,"target",param_13);\n  }" { (expression_statement "FUN_0017c650("../../gold/parameters.h",0x69,"target",param_13);" (call_expression "FUN_0017c650("../../gold/parameters.h",0x69,"target",param_13)" identifier (argument_list "("../../gold/parameters.h",0x69,"target",param_13)" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") , identifier ))) ;) })) (if_statement "if (*(char *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 4) == '\0') {\n    lVar8 = FUN_0027de40();\n  }\n  else {\n    lVar8 = FUN_0027c240(param_1,&local_50,&local_58,(char)param_13,param_10,local_40,&local_42,\n                         param_9 == 0);\n  }" if (parenthesized_expression "(*(char *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 4) == '\0')" ( (binary_expression "*(char *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 4) == '\0'" (pointer_expression "*(char *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 4)" * (cast_expression "(char *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 4)" ( (binary_expression "*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 4" (pointer_expression "*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8)" * (cast_expression "(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x18)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x18)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x18" identifier + number_literal) )))) + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    lVar8 = FUN_0027de40();\n  }" { (expression_statement "lVar8 = FUN_0027de40();" (assignment_expression "lVar8 = FUN_0027de40()" identifier = (call_expression "FUN_0027de40()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n    lVar8 = FUN_0027c240(param_1,&local_50,&local_58,(char)param_13,param_10,local_40,&local_42,\n                         param_9 == 0);\n  }" else (compound_statement "{\n    lVar8 = FUN_0027c240(param_1,&local_50,&local_58,(char)param_13,param_10,local_40,&local_42,\n                         param_9 == 0);\n  }" { (expression_statement "lVar8 = FUN_0027c240(param_1,&local_50,&local_58,(char)param_13,param_10,local_40,&local_42,\n                         param_9 == 0);" (assignment_expression "lVar8 = FUN_0027c240(param_1,&local_50,&local_58,(char)param_13,param_10,local_40,&local_42,\n                         param_9 == 0)" identifier = (call_expression "FUN_0027c240(param_1,&local_50,&local_58,(char)param_13,param_10,local_40,&local_42,\n                         param_9 == 0)" identifier (argument_list "(param_1,&local_50,&local_58,(char)param_13,param_10,local_40,&local_42,\n                         param_9 == 0)" ( identifier , (pointer_expression "&local_50" & identifier) , (pointer_expression "&local_58" & identifier) , (cast_expression "(char)param_13" ( (type_descriptor "char" primitive_type) ) identifier) , identifier , identifier , (pointer_expression "&local_42" & identifier) , (binary_expression "param_9 == 0" identifier == number_literal) )))) ;) }))) (if_statement "if (lVar8 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(lVar8 == 0)" ( (binary_expression "lVar8 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "FUN_00274650(lVar8,local_50,local_58,param_5,param_6,param_7,param_8,param_9,param_10,param_11,\n               param_12,param_4 == 5);" (call_expression "FUN_00274650(lVar8,local_50,local_58,param_5,param_6,param_7,param_8,param_9,param_10,param_11,\n               param_12,param_4 == 5)" identifier (argument_list "(lVar8,local_50,local_58,param_5,param_6,param_7,param_8,param_9,param_10,param_11,\n               param_12,param_4 == 5)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , (binary_expression "param_4 == 5" identifier == number_literal) ))) ;) (if_statement "if (local_40[0] == 0) {\n    if ((param_9 != 0) &&\n       ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0')))) {\n      if (local_58 == 0) {\n        return lVar8;\n      }\n      *(byte *)(lVar8 + 0x3a) = *(byte *)(lVar8 + 0x3a) | 8;\n      return lVar8;\n    }\n    FUN_002719b0(param_1,lVar8);\n    return lVar8;\n  }" if (parenthesized_expression "(local_40[0] == 0)" ( (binary_expression "local_40[0] == 0" (subscript_expression "local_40[0]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    if ((param_9 != 0) &&\n       ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0')))) {\n      if (local_58 == 0) {\n        return lVar8;\n      }\n      *(byte *)(lVar8 + 0x3a) = *(byte *)(lVar8 + 0x3a) | 8;\n      return lVar8;\n    }\n    FUN_002719b0(param_1,lVar8);\n    return lVar8;\n  }" { (if_statement "if ((param_9 != 0) &&\n       ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0')))) {\n      if (local_58 == 0) {\n        return lVar8;\n      }\n      *(byte *)(lVar8 + 0x3a) = *(byte *)(lVar8 + 0x3a) | 8;\n      return lVar8;\n    }" if (parenthesized_expression "((param_9 != 0) &&\n       ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0'))))" ( (binary_expression "(param_9 != 0) &&\n       ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0')))" (parenthesized_expression "(param_9 != 0)" ( (binary_expression "param_9 != 0" identifier != number_literal) )) && (parenthesized_expression "((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0')))" ( (parenthesized_expression "(cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0'))" ( (comma_expression "cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0')" (assignment_expression "cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41)" identifier = (call_expression "FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41)" identifier (argument_list "(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41)" ( (pointer_expression "*(undefined8 *)(param_1 + 0x288)" * (cast_expression "(undefined8 *)(param_1 + 0x288)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x288)" ( (binary_expression "param_1 + 0x288" identifier + number_literal) )))) , identifier , number_literal , (pointer_expression "&local_41" & identifier) )))) , (binary_expression "cVar7 == '\0'\n        || (local_41 != '\0')" (binary_expression "cVar7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "(local_41 != '\0')" ( (binary_expression "local_41 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )))) )) ))) )) (compound_statement "{\n      if (local_58 == 0) {\n        return lVar8;\n      }\n      *(byte *)(lVar8 + 0x3a) = *(byte *)(lVar8 + 0x3a) | 8;\n      return lVar8;\n    }" { (if_statement "if (local_58 == 0) {\n        return lVar8;\n      }" if (parenthesized_expression "(local_58 == 0)" ( (binary_expression "local_58 == 0" identifier == number_literal) )) (compound_statement "{\n        return lVar8;\n      }" { (return_statement "return lVar8;" return identifier ;) })) (expression_statement "*(byte *)(lVar8 + 0x3a) = *(byte *)(lVar8 + 0x3a) | 8;" (assignment_expression "*(byte *)(lVar8 + 0x3a) = *(byte *)(lVar8 + 0x3a) | 8" (pointer_expression "*(byte *)(lVar8 + 0x3a)" * (cast_expression "(byte *)(lVar8 + 0x3a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x3a)" ( (binary_expression "lVar8 + 0x3a" identifier + number_literal) )))) = (binary_expression "*(byte *)(lVar8 + 0x3a) | 8" (pointer_expression "*(byte *)(lVar8 + 0x3a)" * (cast_expression "(byte *)(lVar8 + 0x3a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x3a)" ( (binary_expression "lVar8 + 0x3a" identifier + number_literal) )))) | number_literal)) ;) (return_statement "return lVar8;" return identifier ;) })) (expression_statement "FUN_002719b0(param_1,lVar8);" (call_expression "FUN_002719b0(param_1,lVar8)" identifier (argument_list "(param_1,lVar8)" ( identifier , identifier ))) ;) (return_statement "return lVar8;" return identifier ;) })) (expression_statement "cVar7 = FUN_002bf240(local_40[0],param_8,param_4);" (assignment_expression "cVar7 = FUN_002bf240(local_40[0],param_8,param_4)" identifier = (call_expression "FUN_002bf240(local_40[0],param_8,param_4)" identifier (argument_list "(local_40[0],param_8,param_4)" ( (subscript_expression "local_40[0]" identifier [ number_literal ]) , identifier , identifier )))) ;) (if_statement "if (cVar7 != '\0') {\n    FUN_002c01b0(param_1,local_40[0],lVar8);\n  }" if (parenthesized_expression "(cVar7 != '\0')" ( (binary_expression "cVar7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    FUN_002c01b0(param_1,local_40[0],lVar8);\n  }" { (expression_statement "FUN_002c01b0(param_1,local_40[0],lVar8);" (call_expression "FUN_002c01b0(param_1,local_40[0],lVar8)" identifier (argument_list "(param_1,local_40[0],lVar8)" ( identifier , (subscript_expression "local_40[0]" identifier [ number_literal ]) , identifier ))) ;) })) (if_statement "if (local_42 == '\0') {\n    if ((param_4 == 5) &&\n       ((param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')))))) {\n      FUN_002719b0(param_1,local_40[0]);\n    }\n    lVar1 = *(long *)(lVar8 + 0x30);\n    if (lVar1 != 0) {\n      lVar2 = *(long *)(lVar1 + 8);\n      if (lVar2 != 0) {\n        lVar3 = *(long *)(lVar2 + 8);\n        if (lVar3 != 0) {\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }\n        thunk_FUN_002dac70(lVar2,0x10);\n      }\n      thunk_FUN_002dac70(lVar1,0x10);\n    }\n    thunk_FUN_002dac70(lVar8,0x48);\n    return local_40[0];\n  }" if (parenthesized_expression "(local_42 == '\0')" ( (binary_expression "local_42 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if ((param_4 == 5) &&\n       ((param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')))))) {\n      FUN_002719b0(param_1,local_40[0]);\n    }\n    lVar1 = *(long *)(lVar8 + 0x30);\n    if (lVar1 != 0) {\n      lVar2 = *(long *)(lVar1 + 8);\n      if (lVar2 != 0) {\n        lVar3 = *(long *)(lVar2 + 8);\n        if (lVar3 != 0) {\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }\n        thunk_FUN_002dac70(lVar2,0x10);\n      }\n      thunk_FUN_002dac70(lVar1,0x10);\n    }\n    thunk_FUN_002dac70(lVar8,0x48);\n    return local_40[0];\n  }" { (if_statement "if ((param_4 == 5) &&\n       ((param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')))))) {\n      FUN_002719b0(param_1,local_40[0]);\n    }" if (parenthesized_expression "((param_4 == 5) &&\n       ((param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0'))))))" ( (binary_expression "(param_4 == 5) &&\n       ((param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')))))" (parenthesized_expression "(param_4 == 5)" ( (binary_expression "param_4 == 5" identifier == number_literal) )) && (parenthesized_expression "((param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')))))" ( (parenthesized_expression "(param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0'))))" ( (binary_expression "param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')))" (binary_expression "param_9 == 0" identifier == number_literal) || (parenthesized_expression "((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')))" ( (parenthesized_expression "(cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0'))" ( (comma_expression "cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')" (assignment_expression "cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41)" identifier = (call_expression "FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41)" identifier (argument_list "(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41)" ( (pointer_expression "*(undefined8 *)(param_1 + 0x288)" * (cast_expression "(undefined8 *)(param_1 + 0x288)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x288)" ( (binary_expression "param_1 + 0x288" identifier + number_literal) )))) , identifier , number_literal , (pointer_expression "&local_41" & identifier) )))) , (binary_expression "cVar7 != '\0'\n         && (local_41 == '\0')" (binary_expression "cVar7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) && (parenthesized_expression "(local_41 == '\0')" ( (binary_expression "local_41 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )))) )) ))) )) ))) )) (compound_statement "{\n      FUN_002719b0(param_1,local_40[0]);\n    }" { (expression_statement "FUN_002719b0(param_1,local_40[0]);" (call_expression "FUN_002719b0(param_1,local_40[0])" identifier (argument_list "(param_1,local_40[0])" ( identifier , (subscript_expression "local_40[0]" identifier [ number_literal ]) ))) ;) })) (expression_statement "lVar1 = *(long *)(lVar8 + 0x30);" (assignment_expression "lVar1 = *(long *)(lVar8 + 0x30)" identifier = (pointer_expression "*(long *)(lVar8 + 0x30)" * (cast_expression "(long *)(lVar8 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x30)" ( (binary_expression "lVar8 + 0x30" identifier + number_literal) ))))) ;) (if_statement "if (lVar1 != 0) {\n      lVar2 = *(long *)(lVar1 + 8);\n      if (lVar2 != 0) {\n        lVar3 = *(long *)(lVar2 + 8);\n        if (lVar3 != 0) {\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }\n        thunk_FUN_002dac70(lVar2,0x10);\n      }\n      thunk_FUN_002dac70(lVar1,0x10);\n    }" if (parenthesized_expression "(lVar1 != 0)" ( (binary_expression "lVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      lVar2 = *(long *)(lVar1 + 8);\n      if (lVar2 != 0) {\n        lVar3 = *(long *)(lVar2 + 8);\n        if (lVar3 != 0) {\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }\n        thunk_FUN_002dac70(lVar2,0x10);\n      }\n      thunk_FUN_002dac70(lVar1,0x10);\n    }" { (expression_statement "lVar2 = *(long *)(lVar1 + 8);" (assignment_expression "lVar2 = *(long *)(lVar1 + 8)" identifier = (pointer_expression "*(long *)(lVar1 + 8)" * (cast_expression "(long *)(lVar1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 8)" ( (binary_expression "lVar1 + 8" identifier + number_literal) ))))) ;) (if_statement "if (lVar2 != 0) {\n        lVar3 = *(long *)(lVar2 + 8);\n        if (lVar3 != 0) {\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }\n        thunk_FUN_002dac70(lVar2,0x10);\n      }" if (parenthesized_expression "(lVar2 != 0)" ( (binary_expression "lVar2 != 0" identifier != number_literal) )) (compound_statement "{\n        lVar3 = *(long *)(lVar2 + 8);\n        if (lVar3 != 0) {\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }\n        thunk_FUN_002dac70(lVar2,0x10);\n      }" { (expression_statement "lVar3 = *(long *)(lVar2 + 8);" (assignment_expression "lVar3 = *(long *)(lVar2 + 8)" identifier = (pointer_expression "*(long *)(lVar2 + 8)" * (cast_expression "(long *)(lVar2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) ))))) ;) (if_statement "if (lVar3 != 0) {\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }" if (parenthesized_expression "(lVar3 != 0)" ( (binary_expression "lVar3 != 0" identifier != number_literal) )) (compound_statement "{\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }" { (expression_statement "lVar4 = *(long *)(lVar3 + 8);" (assignment_expression "lVar4 = *(long *)(lVar3 + 8)" identifier = (pointer_expression "*(long *)(lVar3 + 8)" * (cast_expression "(long *)(lVar3 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 8)" ( (binary_expression "lVar3 + 8" identifier + number_literal) ))))) ;) (if_statement "if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (compound_statement "{\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }" { (expression_statement "lVar5 = *(long *)(lVar4 + 8);" (assignment_expression "lVar5 = *(long *)(lVar4 + 8)" identifier = (pointer_expression "*(long *)(lVar4 + 8)" * (cast_expression "(long *)(lVar4 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 8)" ( (binary_expression "lVar4 + 8" identifier + number_literal) ))))) ;) (if_statement "if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }" if (parenthesized_expression "(lVar5 != 0)" ( (binary_expression "lVar5 != 0" identifier != number_literal) )) (compound_statement "{\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }" { (expression_statement "lVar6 = *(long *)(lVar5 + 8);" (assignment_expression "lVar6 = *(long *)(lVar5 + 8)" identifier = (pointer_expression "*(long *)(lVar5 + 8)" * (cast_expression "(long *)(lVar5 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 8)" ( (binary_expression "lVar5 + 8" identifier + number_literal) ))))) ;) (if_statement "if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }" if (parenthesized_expression "(lVar6 != 0)" ( (binary_expression "lVar6 != 0" identifier != number_literal) )) (compound_statement "{\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }" { (expression_statement "FUN_002745e0(lVar6);" (call_expression "FUN_002745e0(lVar6)" identifier (argument_list "(lVar6)" ( identifier ))) ;) (expression_statement "thunk_FUN_002dac70(lVar6,0x10);" (call_expression "thunk_FUN_002dac70(lVar6,0x10)" identifier (argument_list "(lVar6,0x10)" ( identifier , number_literal ))) ;) })) (expression_statement "thunk_FUN_002dac70(lVar5,0x10);" (call_expression "thunk_FUN_002dac70(lVar5,0x10)" identifier (argument_list "(lVar5,0x10)" ( identifier , number_literal ))) ;) })) (expression_statement "thunk_FUN_002dac70(lVar4,0x10);" (call_expression "thunk_FUN_002dac70(lVar4,0x10)" identifier (argument_list "(lVar4,0x10)" ( identifier , number_literal ))) ;) })) (expression_statement "thunk_FUN_002dac70(lVar3,0x10);" (call_expression "thunk_FUN_002dac70(lVar3,0x10)" identifier (argument_list "(lVar3,0x10)" ( identifier , number_literal ))) ;) })) (expression_statement "thunk_FUN_002dac70(lVar2,0x10);" (call_expression "thunk_FUN_002dac70(lVar2,0x10)" identifier (argument_list "(lVar2,0x10)" ( identifier , number_literal ))) ;) })) (expression_statement "thunk_FUN_002dac70(lVar1,0x10);" (call_expression "thunk_FUN_002dac70(lVar1,0x10)" identifier (argument_list "(lVar1,0x10)" ( identifier , number_literal ))) ;) })) (expression_statement "thunk_FUN_002dac70(lVar8,0x48);" (call_expression "thunk_FUN_002dac70(lVar8,0x48)" identifier (argument_list "(lVar8,0x48)" ( identifier , number_literal ))) ;) (return_statement "return local_40[0];" return (subscript_expression "local_40[0]" identifier [ number_literal ]) ;) })) (return_statement "return lVar8;" return identifier ;) })))
(translation_unit (function_definition (sized_type_specifier long) (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) 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 (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , 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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , (pointer_expression & IDENT) , (cast_expression ( (type_descriptor TYPE) ) IDENT) , 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) ))) ;) (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 (sized_type_specifier long) (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 (sized_type_specifier long) (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 (sized_type_specifier long) (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 (sized_type_specifier long) (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 (sized_type_specifier long) (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 (sized_type_specifier long) (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 "long FUN_0027e340(long param_1,undefined8 param_2,long param_3,int param_4,undefined8 param_5,\n                 undefined4 param_6,undefined4 param_7,undefined4 param_8,int param_9,\n                 undefined4 param_10,undefined1 param_11,undefined1 param_12,undefined4 param_13)\n\n{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  char cVar7;\n  long lVar8;\n  long local_58;\n  undefined8 local_50;\n  char local_42;\n  char local_41;\n  long local_40 [2];\n  \n  local_58 = param_3;\n  local_50 = param_2;\n  if (*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0) {\n                    \n    FUN_0017c650("../../gold/parameters.h",0x69,"target",param_13);\n  }\n  if (*(char *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 4) == '\0') {\n    lVar8 = FUN_0027de40();\n  }\n  else {\n    lVar8 = FUN_0027c240(param_1,&local_50,&local_58,(char)param_13,param_10,local_40,&local_42,\n                         param_9 == 0);\n  }\n  if (lVar8 == 0) {\n    return 0;\n  }\n  FUN_00274650(lVar8,local_50,local_58,param_5,param_6,param_7,param_8,param_9,param_10,param_11,\n               param_12,param_4 == 5);\n  if (local_40[0] == 0) {\n    if ((param_9 != 0) &&\n       ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0')))) {\n      if (local_58 == 0) {\n        return lVar8;\n      }\n      *(byte *)(lVar8 + 0x3a) = *(byte *)(lVar8 + 0x3a) | 8;\n      return lVar8;\n    }\n    FUN_002719b0(param_1,lVar8);\n    return lVar8;\n  }\n  cVar7 = FUN_002bf240(local_40[0],param_8,param_4);\n  if (cVar7 != '\0') {\n    FUN_002c01b0(param_1,local_40[0],lVar8);\n  }\n  if (local_42 == '\0') {\n    if ((param_4 == 5) &&\n       ((param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')))))) {\n      FUN_002719b0(param_1,local_40[0]);\n    }\n    lVar1 = *(long *)(lVar8 + 0x30);\n    if (lVar1 != 0) {\n      lVar2 = *(long *)(lVar1 + 8);\n      if (lVar2 != 0) {\n        lVar3 = *(long *)(lVar2 + 8);\n        if (lVar3 != 0) {\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }\n        thunk_FUN_002dac70(lVar2,0x10);\n      }\n      thunk_FUN_002dac70(lVar1,0x10);\n    }\n    thunk_FUN_002dac70(lVar8,0x48);\n    return local_40[0];\n  }\n  return lVar8;\n}" (sized_type_specifier "long" (long "long")) (function_declarator "FUN_0027e340(long param_1,undefined8 param_2,long param_3,int param_4,undefined8 param_5,\n                 undefined4 param_6,undefined4 param_7,undefined4 param_8,int param_9,\n                 undefined4 param_10,undefined1 param_11,undefined1 param_12,undefined4 param_13)" (identifier "FUN_0027e340") (parameter_list "(long param_1,undefined8 param_2,long param_3,int param_4,undefined8 param_5,\n                 undefined4 param_6,undefined4 param_7,undefined4 param_8,int param_9,\n                 undefined4 param_10,undefined1 param_11,undefined1 param_12,undefined4 param_13)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "undefined8 param_5" (type_identifier "undefined8") (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 "int param_9" (primitive_type "int") (identifier "param_9")) (, ",") (parameter_declaration "undefined4 param_10" (type_identifier "undefined4") (identifier "param_10")) (, ",") (parameter_declaration "undefined1 param_11" (type_identifier "undefined1") (identifier "param_11")) (, ",") (parameter_declaration "undefined1 param_12" (type_identifier "undefined1") (identifier "param_12")) (, ",") (parameter_declaration "undefined4 param_13" (type_identifier "undefined4") (identifier "param_13")) () ")"))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  char cVar7;\n  long lVar8;\n  long local_58;\n  undefined8 local_50;\n  char local_42;\n  char local_41;\n  long local_40 [2];\n  \n  local_58 = param_3;\n  local_50 = param_2;\n  if (*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0) {\n                    \n    FUN_0017c650("../../gold/parameters.h",0x69,"target",param_13);\n  }\n  if (*(char *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 4) == '\0') {\n    lVar8 = FUN_0027de40();\n  }\n  else {\n    lVar8 = FUN_0027c240(param_1,&local_50,&local_58,(char)param_13,param_10,local_40,&local_42,\n                         param_9 == 0);\n  }\n  if (lVar8 == 0) {\n    return 0;\n  }\n  FUN_00274650(lVar8,local_50,local_58,param_5,param_6,param_7,param_8,param_9,param_10,param_11,\n               param_12,param_4 == 5);\n  if (local_40[0] == 0) {\n    if ((param_9 != 0) &&\n       ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0')))) {\n      if (local_58 == 0) {\n        return lVar8;\n      }\n      *(byte *)(lVar8 + 0x3a) = *(byte *)(lVar8 + 0x3a) | 8;\n      return lVar8;\n    }\n    FUN_002719b0(param_1,lVar8);\n    return lVar8;\n  }\n  cVar7 = FUN_002bf240(local_40[0],param_8,param_4);\n  if (cVar7 != '\0') {\n    FUN_002c01b0(param_1,local_40[0],lVar8);\n  }\n  if (local_42 == '\0') {\n    if ((param_4 == 5) &&\n       ((param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')))))) {\n      FUN_002719b0(param_1,local_40[0]);\n    }\n    lVar1 = *(long *)(lVar8 + 0x30);\n    if (lVar1 != 0) {\n      lVar2 = *(long *)(lVar1 + 8);\n      if (lVar2 != 0) {\n        lVar3 = *(long *)(lVar2 + 8);\n        if (lVar3 != 0) {\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }\n        thunk_FUN_002dac70(lVar2,0x10);\n      }\n      thunk_FUN_002dac70(lVar1,0x10);\n    }\n    thunk_FUN_002dac70(lVar8,0x48);\n    return local_40[0];\n  }\n  return lVar8;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "char cVar7;" (primitive_type "char") (identifier "cVar7") (; ";")) (declaration "long lVar8;" (sized_type_specifier "long" (long "long")) (identifier "lVar8") (; ";")) (declaration "long local_58;" (sized_type_specifier "long" (long "long")) (identifier "local_58") (; ";")) (declaration "undefined8 local_50;" (type_identifier "undefined8") (identifier "local_50") (; ";")) (declaration "char local_42;" (primitive_type "char") (identifier "local_42") (; ";")) (declaration "char local_41;" (primitive_type "char") (identifier "local_41") (; ";")) (declaration "long local_40 [2];" (sized_type_specifier "long" (long "long")) (array_declarator "local_40 [2]" (identifier "local_40") ([ "[") (number_literal "2") (] "]")) (; ";")) (expression_statement "local_58 = param_3;" (assignment_expression "local_58 = param_3" (identifier "local_58") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_50 = param_2;" (assignment_expression "local_50 = param_2" (identifier "local_50") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0) {\n                    \n    FUN_0017c650("../../gold/parameters.h",0x69,"target",param_13);\n  }" (if "if") (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0)" (( "(") (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x18)" (* "*") (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x18)" (( "(") (binary_expression "PTR_DAT_0043e6b0 + 0x18" (identifier "PTR_DAT_0043e6b0") (+ "+") (number_literal "0x18")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_0017c650("../../gold/parameters.h",0x69,"target",param_13);\n  }" ({ "{") (expression_statement "FUN_0017c650("../../gold/parameters.h",0x69,"target",param_13);" (call_expression "FUN_0017c650("../../gold/parameters.h",0x69,"target",param_13)" (identifier "FUN_0017c650") (argument_list "("../../gold/parameters.h",0x69,"target",param_13)" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x69") (, ",") (string_literal ""target"" (" """) (string_content "target") (" """)) (, ",") (identifier "param_13") () ")"))) (; ";")) (} "}"))) (if_statement "if (*(char *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 4) == '\0') {\n    lVar8 = FUN_0027de40();\n  }\n  else {\n    lVar8 = FUN_0027c240(param_1,&local_50,&local_58,(char)param_13,param_10,local_40,&local_42,\n                         param_9 == 0);\n  }" (if "if") (parenthesized_expression "(*(char *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 4) == '\0')" (( "(") (binary_expression "*(char *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 4) == '\0'" (pointer_expression "*(char *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 4)" (* "*") (cast_expression "(char *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 4)" (( "(") (binary_expression "*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 4" (pointer_expression "*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8)" (* "*") (cast_expression "(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8)" (( "(") (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x18)" (* "*") (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x18)" (( "(") (binary_expression "PTR_DAT_0043e6b0 + 0x18" (identifier "PTR_DAT_0043e6b0") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "4")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    lVar8 = FUN_0027de40();\n  }" ({ "{") (expression_statement "lVar8 = FUN_0027de40();" (assignment_expression "lVar8 = FUN_0027de40()" (identifier "lVar8") (= "=") (call_expression "FUN_0027de40()" (identifier "FUN_0027de40") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (else_clause "else {\n    lVar8 = FUN_0027c240(param_1,&local_50,&local_58,(char)param_13,param_10,local_40,&local_42,\n                         param_9 == 0);\n  }" (else "else") (compound_statement "{\n    lVar8 = FUN_0027c240(param_1,&local_50,&local_58,(char)param_13,param_10,local_40,&local_42,\n                         param_9 == 0);\n  }" ({ "{") (expression_statement "lVar8 = FUN_0027c240(param_1,&local_50,&local_58,(char)param_13,param_10,local_40,&local_42,\n                         param_9 == 0);" (assignment_expression "lVar8 = FUN_0027c240(param_1,&local_50,&local_58,(char)param_13,param_10,local_40,&local_42,\n                         param_9 == 0)" (identifier "lVar8") (= "=") (call_expression "FUN_0027c240(param_1,&local_50,&local_58,(char)param_13,param_10,local_40,&local_42,\n                         param_9 == 0)" (identifier "FUN_0027c240") (argument_list "(param_1,&local_50,&local_58,(char)param_13,param_10,local_40,&local_42,\n                         param_9 == 0)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&local_50" (& "&") (identifier "local_50")) (, ",") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (cast_expression "(char)param_13" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "param_13")) (, ",") (identifier "param_10") (, ",") (identifier "local_40") (, ",") (pointer_expression "&local_42" (& "&") (identifier "local_42")) (, ",") (binary_expression "param_9 == 0" (identifier "param_9") (== "==") (number_literal "0")) () ")")))) (; ";")) (} "}")))) (if_statement "if (lVar8 == 0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(lVar8 == 0)" (( "(") (binary_expression "lVar8 == 0" (identifier "lVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "FUN_00274650(lVar8,local_50,local_58,param_5,param_6,param_7,param_8,param_9,param_10,param_11,\n               param_12,param_4 == 5);" (call_expression "FUN_00274650(lVar8,local_50,local_58,param_5,param_6,param_7,param_8,param_9,param_10,param_11,\n               param_12,param_4 == 5)" (identifier "FUN_00274650") (argument_list "(lVar8,local_50,local_58,param_5,param_6,param_7,param_8,param_9,param_10,param_11,\n               param_12,param_4 == 5)" (( "(") (identifier "lVar8") (, ",") (identifier "local_50") (, ",") (identifier "local_58") (, ",") (identifier "param_5") (, ",") (identifier "param_6") (, ",") (identifier "param_7") (, ",") (identifier "param_8") (, ",") (identifier "param_9") (, ",") (identifier "param_10") (, ",") (identifier "param_11") (, ",") (identifier "param_12") (, ",") (binary_expression "param_4 == 5" (identifier "param_4") (== "==") (number_literal "5")) () ")"))) (; ";")) (if_statement "if (local_40[0] == 0) {\n    if ((param_9 != 0) &&\n       ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0')))) {\n      if (local_58 == 0) {\n        return lVar8;\n      }\n      *(byte *)(lVar8 + 0x3a) = *(byte *)(lVar8 + 0x3a) | 8;\n      return lVar8;\n    }\n    FUN_002719b0(param_1,lVar8);\n    return lVar8;\n  }" (if "if") (parenthesized_expression "(local_40[0] == 0)" (( "(") (binary_expression "local_40[0] == 0" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if ((param_9 != 0) &&\n       ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0')))) {\n      if (local_58 == 0) {\n        return lVar8;\n      }\n      *(byte *)(lVar8 + 0x3a) = *(byte *)(lVar8 + 0x3a) | 8;\n      return lVar8;\n    }\n    FUN_002719b0(param_1,lVar8);\n    return lVar8;\n  }" ({ "{") (if_statement "if ((param_9 != 0) &&\n       ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0')))) {\n      if (local_58 == 0) {\n        return lVar8;\n      }\n      *(byte *)(lVar8 + 0x3a) = *(byte *)(lVar8 + 0x3a) | 8;\n      return lVar8;\n    }" (if "if") (parenthesized_expression "((param_9 != 0) &&\n       ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0'))))" (( "(") (binary_expression "(param_9 != 0) &&\n       ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0')))" (parenthesized_expression "(param_9 != 0)" (( "(") (binary_expression "param_9 != 0" (identifier "param_9") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0')))" (( "(") (parenthesized_expression "(cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0'))" (( "(") (comma_expression "cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'\n        || (local_41 != '\0')" (assignment_expression "cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41)" (identifier "cVar7") (= "=") (call_expression "FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41)" (identifier "FUN_002682d0") (argument_list "(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41)" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 0x288)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x288)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x288)" (( "(") (binary_expression "param_1 + 0x288" (identifier "param_1") (+ "+") (number_literal "0x288")) () ")")))) (, ",") (identifier "local_50") (, ",") (number_literal "0") (, ",") (pointer_expression "&local_41" (& "&") (identifier "local_41")) () ")")))) (, ",") (binary_expression "cVar7 == '\0'\n        || (local_41 != '\0')" (binary_expression "cVar7 == '\0'" (identifier "cVar7") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (|| "||") (parenthesized_expression "(local_41 != '\0')" (( "(") (binary_expression "local_41 != '\0'" (identifier "local_41") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")))) () ")")) () ")"))) () ")")) (compound_statement "{\n      if (local_58 == 0) {\n        return lVar8;\n      }\n      *(byte *)(lVar8 + 0x3a) = *(byte *)(lVar8 + 0x3a) | 8;\n      return lVar8;\n    }" ({ "{") (if_statement "if (local_58 == 0) {\n        return lVar8;\n      }" (if "if") (parenthesized_expression "(local_58 == 0)" (( "(") (binary_expression "local_58 == 0" (identifier "local_58") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return lVar8;\n      }" ({ "{") (return_statement "return lVar8;" (return "return") (identifier "lVar8") (; ";")) (} "}"))) (expression_statement "*(byte *)(lVar8 + 0x3a) = *(byte *)(lVar8 + 0x3a) | 8;" (assignment_expression "*(byte *)(lVar8 + 0x3a) = *(byte *)(lVar8 + 0x3a) | 8" (pointer_expression "*(byte *)(lVar8 + 0x3a)" (* "*") (cast_expression "(byte *)(lVar8 + 0x3a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x3a)" (( "(") (binary_expression "lVar8 + 0x3a" (identifier "lVar8") (+ "+") (number_literal "0x3a")) () ")")))) (= "=") (binary_expression "*(byte *)(lVar8 + 0x3a) | 8" (pointer_expression "*(byte *)(lVar8 + 0x3a)" (* "*") (cast_expression "(byte *)(lVar8 + 0x3a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x3a)" (( "(") (binary_expression "lVar8 + 0x3a" (identifier "lVar8") (+ "+") (number_literal "0x3a")) () ")")))) (| "|") (number_literal "8"))) (; ";")) (return_statement "return lVar8;" (return "return") (identifier "lVar8") (; ";")) (} "}"))) (expression_statement "FUN_002719b0(param_1,lVar8);" (call_expression "FUN_002719b0(param_1,lVar8)" (identifier "FUN_002719b0") (argument_list "(param_1,lVar8)" (( "(") (identifier "param_1") (, ",") (identifier "lVar8") () ")"))) (; ";")) (return_statement "return lVar8;" (return "return") (identifier "lVar8") (; ";")) (} "}"))) (expression_statement "cVar7 = FUN_002bf240(local_40[0],param_8,param_4);" (assignment_expression "cVar7 = FUN_002bf240(local_40[0],param_8,param_4)" (identifier "cVar7") (= "=") (call_expression "FUN_002bf240(local_40[0],param_8,param_4)" (identifier "FUN_002bf240") (argument_list "(local_40[0],param_8,param_4)" (( "(") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (, ",") (identifier "param_8") (, ",") (identifier "param_4") () ")")))) (; ";")) (if_statement "if (cVar7 != '\0') {\n    FUN_002c01b0(param_1,local_40[0],lVar8);\n  }" (if "if") (parenthesized_expression "(cVar7 != '\0')" (( "(") (binary_expression "cVar7 != '\0'" (identifier "cVar7") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    FUN_002c01b0(param_1,local_40[0],lVar8);\n  }" ({ "{") (expression_statement "FUN_002c01b0(param_1,local_40[0],lVar8);" (call_expression "FUN_002c01b0(param_1,local_40[0],lVar8)" (identifier "FUN_002c01b0") (argument_list "(param_1,local_40[0],lVar8)" (( "(") (identifier "param_1") (, ",") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (, ",") (identifier "lVar8") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_42 == '\0') {\n    if ((param_4 == 5) &&\n       ((param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')))))) {\n      FUN_002719b0(param_1,local_40[0]);\n    }\n    lVar1 = *(long *)(lVar8 + 0x30);\n    if (lVar1 != 0) {\n      lVar2 = *(long *)(lVar1 + 8);\n      if (lVar2 != 0) {\n        lVar3 = *(long *)(lVar2 + 8);\n        if (lVar3 != 0) {\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }\n        thunk_FUN_002dac70(lVar2,0x10);\n      }\n      thunk_FUN_002dac70(lVar1,0x10);\n    }\n    thunk_FUN_002dac70(lVar8,0x48);\n    return local_40[0];\n  }" (if "if") (parenthesized_expression "(local_42 == '\0')" (( "(") (binary_expression "local_42 == '\0'" (identifier "local_42") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    if ((param_4 == 5) &&\n       ((param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')))))) {\n      FUN_002719b0(param_1,local_40[0]);\n    }\n    lVar1 = *(long *)(lVar8 + 0x30);\n    if (lVar1 != 0) {\n      lVar2 = *(long *)(lVar1 + 8);\n      if (lVar2 != 0) {\n        lVar3 = *(long *)(lVar2 + 8);\n        if (lVar3 != 0) {\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }\n        thunk_FUN_002dac70(lVar2,0x10);\n      }\n      thunk_FUN_002dac70(lVar1,0x10);\n    }\n    thunk_FUN_002dac70(lVar8,0x48);\n    return local_40[0];\n  }" ({ "{") (if_statement "if ((param_4 == 5) &&\n       ((param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')))))) {\n      FUN_002719b0(param_1,local_40[0]);\n    }" (if "if") (parenthesized_expression "((param_4 == 5) &&\n       ((param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0'))))))" (( "(") (binary_expression "(param_4 == 5) &&\n       ((param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')))))" (parenthesized_expression "(param_4 == 5)" (( "(") (binary_expression "param_4 == 5" (identifier "param_4") (== "==") (number_literal "5")) () ")")) (&& "&&") (parenthesized_expression "((param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')))))" (( "(") (parenthesized_expression "(param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0'))))" (( "(") (binary_expression "param_9 == 0 ||\n        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')))" (binary_expression "param_9 == 0" (identifier "param_9") (== "==") (number_literal "0")) (|| "||") (parenthesized_expression "((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')))" (( "(") (parenthesized_expression "(cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0'))" (( "(") (comma_expression "cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'\n         && (local_41 == '\0')" (assignment_expression "cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41)" (identifier "cVar7") (= "=") (call_expression "FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41)" (identifier "FUN_002682d0") (argument_list "(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41)" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 0x288)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x288)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x288)" (( "(") (binary_expression "param_1 + 0x288" (identifier "param_1") (+ "+") (number_literal "0x288")) () ")")))) (, ",") (identifier "local_50") (, ",") (number_literal "0") (, ",") (pointer_expression "&local_41" (& "&") (identifier "local_41")) () ")")))) (, ",") (binary_expression "cVar7 != '\0'\n         && (local_41 == '\0')" (binary_expression "cVar7 != '\0'" (identifier "cVar7") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (&& "&&") (parenthesized_expression "(local_41 == '\0')" (( "(") (binary_expression "local_41 == '\0'" (identifier "local_41") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")))) () ")")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n      FUN_002719b0(param_1,local_40[0]);\n    }" ({ "{") (expression_statement "FUN_002719b0(param_1,local_40[0]);" (call_expression "FUN_002719b0(param_1,local_40[0])" (identifier "FUN_002719b0") (argument_list "(param_1,local_40[0])" (( "(") (identifier "param_1") (, ",") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) () ")"))) (; ";")) (} "}"))) (expression_statement "lVar1 = *(long *)(lVar8 + 0x30);" (assignment_expression "lVar1 = *(long *)(lVar8 + 0x30)" (identifier "lVar1") (= "=") (pointer_expression "*(long *)(lVar8 + 0x30)" (* "*") (cast_expression "(long *)(lVar8 + 0x30)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x30)" (( "(") (binary_expression "lVar8 + 0x30" (identifier "lVar8") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (if_statement "if (lVar1 != 0) {\n      lVar2 = *(long *)(lVar1 + 8);\n      if (lVar2 != 0) {\n        lVar3 = *(long *)(lVar2 + 8);\n        if (lVar3 != 0) {\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }\n        thunk_FUN_002dac70(lVar2,0x10);\n      }\n      thunk_FUN_002dac70(lVar1,0x10);\n    }" (if "if") (parenthesized_expression "(lVar1 != 0)" (( "(") (binary_expression "lVar1 != 0" (identifier "lVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      lVar2 = *(long *)(lVar1 + 8);\n      if (lVar2 != 0) {\n        lVar3 = *(long *)(lVar2 + 8);\n        if (lVar3 != 0) {\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }\n        thunk_FUN_002dac70(lVar2,0x10);\n      }\n      thunk_FUN_002dac70(lVar1,0x10);\n    }" ({ "{") (expression_statement "lVar2 = *(long *)(lVar1 + 8);" (assignment_expression "lVar2 = *(long *)(lVar1 + 8)" (identifier "lVar2") (= "=") (pointer_expression "*(long *)(lVar1 + 8)" (* "*") (cast_expression "(long *)(lVar1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 8)" (( "(") (binary_expression "lVar1 + 8" (identifier "lVar1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (lVar2 != 0) {\n        lVar3 = *(long *)(lVar2 + 8);\n        if (lVar3 != 0) {\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }\n        thunk_FUN_002dac70(lVar2,0x10);\n      }" (if "if") (parenthesized_expression "(lVar2 != 0)" (( "(") (binary_expression "lVar2 != 0" (identifier "lVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        lVar3 = *(long *)(lVar2 + 8);\n        if (lVar3 != 0) {\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }\n        thunk_FUN_002dac70(lVar2,0x10);\n      }" ({ "{") (expression_statement "lVar3 = *(long *)(lVar2 + 8);" (assignment_expression "lVar3 = *(long *)(lVar2 + 8)" (identifier "lVar3") (= "=") (pointer_expression "*(long *)(lVar2 + 8)" (* "*") (cast_expression "(long *)(lVar2 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 8)" (( "(") (binary_expression "lVar2 + 8" (identifier "lVar2") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (lVar3 != 0) {\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }" (if "if") (parenthesized_expression "(lVar3 != 0)" (( "(") (binary_expression "lVar3 != 0" (identifier "lVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          lVar4 = *(long *)(lVar3 + 8);\n          if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }\n          thunk_FUN_002dac70(lVar3,0x10);\n        }" ({ "{") (expression_statement "lVar4 = *(long *)(lVar3 + 8);" (assignment_expression "lVar4 = *(long *)(lVar3 + 8)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(lVar3 + 8)" (* "*") (cast_expression "(long *)(lVar3 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 8)" (( "(") (binary_expression "lVar3 + 8" (identifier "lVar3") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (lVar4 != 0) {\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }" (if "if") (parenthesized_expression "(lVar4 != 0)" (( "(") (binary_expression "lVar4 != 0" (identifier "lVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            lVar5 = *(long *)(lVar4 + 8);\n            if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }\n            thunk_FUN_002dac70(lVar4,0x10);\n          }" ({ "{") (expression_statement "lVar5 = *(long *)(lVar4 + 8);" (assignment_expression "lVar5 = *(long *)(lVar4 + 8)" (identifier "lVar5") (= "=") (pointer_expression "*(long *)(lVar4 + 8)" (* "*") (cast_expression "(long *)(lVar4 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 8)" (( "(") (binary_expression "lVar4 + 8" (identifier "lVar4") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (lVar5 != 0) {\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }" (if "if") (parenthesized_expression "(lVar5 != 0)" (( "(") (binary_expression "lVar5 != 0" (identifier "lVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              lVar6 = *(long *)(lVar5 + 8);\n              if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }\n              thunk_FUN_002dac70(lVar5,0x10);\n            }" ({ "{") (expression_statement "lVar6 = *(long *)(lVar5 + 8);" (assignment_expression "lVar6 = *(long *)(lVar5 + 8)" (identifier "lVar6") (= "=") (pointer_expression "*(long *)(lVar5 + 8)" (* "*") (cast_expression "(long *)(lVar5 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 8)" (( "(") (binary_expression "lVar5 + 8" (identifier "lVar5") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (lVar6 != 0) {\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }" (if "if") (parenthesized_expression "(lVar6 != 0)" (( "(") (binary_expression "lVar6 != 0" (identifier "lVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                FUN_002745e0(lVar6);\n                thunk_FUN_002dac70(lVar6,0x10);\n              }" ({ "{") (expression_statement "FUN_002745e0(lVar6);" (call_expression "FUN_002745e0(lVar6)" (identifier "FUN_002745e0") (argument_list "(lVar6)" (( "(") (identifier "lVar6") () ")"))) (; ";")) (expression_statement "thunk_FUN_002dac70(lVar6,0x10);" (call_expression "thunk_FUN_002dac70(lVar6,0x10)" (identifier "thunk_FUN_002dac70") (argument_list "(lVar6,0x10)" (( "(") (identifier "lVar6") (, ",") (number_literal "0x10") () ")"))) (; ";")) (} "}"))) (expression_statement "thunk_FUN_002dac70(lVar5,0x10);" (call_expression "thunk_FUN_002dac70(lVar5,0x10)" (identifier "thunk_FUN_002dac70") (argument_list "(lVar5,0x10)" (( "(") (identifier "lVar5") (, ",") (number_literal "0x10") () ")"))) (; ";")) (} "}"))) (expression_statement "thunk_FUN_002dac70(lVar4,0x10);" (call_expression "thunk_FUN_002dac70(lVar4,0x10)" (identifier "thunk_FUN_002dac70") (argument_list "(lVar4,0x10)" (( "(") (identifier "lVar4") (, ",") (number_literal "0x10") () ")"))) (; ";")) (} "}"))) (expression_statement "thunk_FUN_002dac70(lVar3,0x10);" (call_expression "thunk_FUN_002dac70(lVar3,0x10)" (identifier "thunk_FUN_002dac70") (argument_list "(lVar3,0x10)" (( "(") (identifier "lVar3") (, ",") (number_literal "0x10") () ")"))) (; ";")) (} "}"))) (expression_statement "thunk_FUN_002dac70(lVar2,0x10);" (call_expression "thunk_FUN_002dac70(lVar2,0x10)" (identifier "thunk_FUN_002dac70") (argument_list "(lVar2,0x10)" (( "(") (identifier "lVar2") (, ",") (number_literal "0x10") () ")"))) (; ";")) (} "}"))) (expression_statement "thunk_FUN_002dac70(lVar1,0x10);" (call_expression "thunk_FUN_002dac70(lVar1,0x10)" (identifier "thunk_FUN_002dac70") (argument_list "(lVar1,0x10)" (( "(") (identifier "lVar1") (, ",") (number_literal "0x10") () ")"))) (; ";")) (} "}"))) (expression_statement "thunk_FUN_002dac70(lVar8,0x48);" (call_expression "thunk_FUN_002dac70(lVar8,0x48)" (identifier "thunk_FUN_002dac70") (argument_list "(lVar8,0x48)" (( "(") (identifier "lVar8") (, ",") (number_literal "0x48") () ")"))) (; ";")) (return_statement "return local_40[0];" (return "return") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (; ";")) (} "}"))) (return_statement "return lVar8;" (return "return") (identifier "lVar8") (; ";")) (} "}")))

/* 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<32> * do_define_in_output_data<32>(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<32> * __thiscall
gold::Symbol_table::do_define_in_output_data<32>
          (Symbol_table *this,char *name,char *version,Defined var_10,Output_data *od,
          Elf_Addr value,Elf_WXword symsize,type_5 type,STB var_5,STV visibility,uchar 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;
  bool bVar7;
  var_1<32> *var_8;
  char *pcVar8;
  var_1<32> *pSVar9;
  char *var_15;
  char *local_50;
  bool var_19;
  bool var_14;
  var_1<32> *var_12;
  
  var_15 = version;
  local_50 = name;
  if (parameters->target_ == (type_3 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("../../gold/parameters.h",0x69,"target");
  }
  if (*(char *)(*(long *)(parameters->target_ + 8) + 4) == '\0') {
    var_8 = var_3<32,var_4>
                        (this,&local_50,&var_15,only_if_ref,visibility,&var_12,&var_19,
                         var_5 == var_6);
  }
  else {
    var_8 = var_3<32,var_7>
                        (this,&local_50,&var_15,only_if_ref,visibility,&var_12,&var_19,
                         var_5 == var_6);
  }
  if (var_8 == (var_1<32> *)0x0) {
    return (var_1<32> *)0x0;
  }
  var_1<32>::var_9
            (var_8,local_50,var_15,od,value,symsize,type,var_5,visibility,nonvis,
             offset_is_from_end,var_10 == var_11);
  if (var_12 == (var_1<32> *)0x0) {
    if ((var_5 != var_6) &&
       ((bVar7 = Version_script_info::var_13
                           (this->version_script_,local_50,(type_4 *)0x0,&var_14), !bVar7 ||
        (var_14 != false)))) {
      if (var_15 == (char *)0x0) {
        return var_8;
      }
      puVar1 = &(var_8->super_Symbol).field_0x3a;
      *puVar1 = *puVar1 | 8;
      return var_8;
    }
    var_16(this,&var_8->super_Symbol);
    return var_8;
  }
  bVar7 = var_17(&var_12->super_Symbol,type,var_10);
  if (bVar7) {
    pSVar9 = var_12;
    var_18<32>(this,var_12,var_8);
    type = (type_5)pSVar9;
  }
  if (var_19 != false) {
    return var_8;
  }
  if (var_10 == var_11) {
    if (var_5 != var_6) {
      pcVar8 = local_50;
      bVar7 = Version_script_info::var_13
                        (this->version_script_,local_50,(type_4 *)0x0,&var_14);
      type = (type_5)pcVar8;
      if ((!bVar7) || (var_14 != false)) goto LAB_0027e46a;
    }
    pSVar9 = var_12;
    var_16(this,&var_12->super_Symbol);
    type = (type_5)pSVar9;
  }
LAB_0027e46a:
  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,type);
              var_26(var_25,0x10);
            }
            var_26(var_24,0x10);
          }
          var_26(var_23,0x10);
        }
        var_26(var_22,0x10);
      }
      var_26(var_21,0x10);
    }
    var_26(var_20,0x10);
  }
  var_26(var_8,0x48);
  return var_12;
}


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

long MASKED(long param_1,undefined8 param_2,long param_3,int param_4,undefined8 param_5,
                 undefined4 param_6,undefined4 param_7,undefined4 param_8,int param_9,
                 undefined4 param_10,undefined1 param_11,undefined1 param_12,undefined4 param_13)

{
  long lVar1;
  long lVar2;
  long lVar3;
  long lVar4;
  long lVar5;
  long lVar6;
  char cVar7;
  long lVar8;
  long local_58;
  undefined8 local_50;
  char local_42;
  char local_41;
  long local_40 [2];
  
  local_58 = param_3;
  local_50 = param_2;
  if (*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0017c650("../../gold/parameters.h",0x69,"target",param_13);
  }
  if (*(char *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 4) == '\0') {
    lVar8 = FUN_0027de40();
  }
  else {
    lVar8 = FUN_0027c240(param_1,&local_50,&local_58,(char)param_13,param_10,local_40,&local_42,
                         param_9 == 0);
  }
  if (lVar8 == 0) {
    return 0;
  }
  FUN_00274650(lVar8,local_50,local_58,param_5,param_6,param_7,param_8,param_9,param_10,param_11,
               param_12,param_4 == 5);
  if (local_40[0] == 0) {
    if ((param_9 != 0) &&
       ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 == '\0'
        || (local_41 != '\0')))) {
      if (local_58 == 0) {
        return lVar8;
      }
      *(byte *)(lVar8 + 0x3a) = *(byte *)(lVar8 + 0x3a) | 8;
      return lVar8;
    }
    FUN_002719b0(param_1,lVar8);
    return lVar8;
  }
  cVar7 = FUN_002bf240(local_40[0],param_8,param_4);
  if (cVar7 != '\0') {
    FUN_002c01b0(param_1,local_40[0],lVar8);
  }
  if (local_42 == '\0') {
    if ((param_4 == 5) &&
       ((param_9 == 0 ||
        ((cVar7 = FUN_002682d0(*(undefined8 *)(param_1 + 0x288),local_50,0,&local_41), cVar7 != '\0'
         && (local_41 == '\0')))))) {
      FUN_002719b0(param_1,local_40[0]);
    }
    lVar1 = *(long *)(lVar8 + 0x30);
    if (lVar1 != 0) {
      lVar2 = *(long *)(lVar1 + 8);
      if (lVar2 != 0) {
        lVar3 = *(long *)(lVar2 + 8);
        if (lVar3 != 0) {
          lVar4 = *(long *)(lVar3 + 8);
          if (lVar4 != 0) {
            lVar5 = *(long *)(lVar4 + 8);
            if (lVar5 != 0) {
              lVar6 = *(long *)(lVar5 + 8);
              if (lVar6 != 0) {
                FUN_002745e0(lVar6);
                thunk_FUN_002dac70(lVar6,0x10);
              }
              thunk_FUN_002dac70(lVar5,0x10);
            }
            thunk_FUN_002dac70(lVar4,0x10);
          }
          thunk_FUN_002dac70(lVar3,0x10);
        }
        thunk_FUN_002dac70(lVar2,0x10);
      }
      thunk_FUN_002dac70(lVar1,0x10);
    }
    thunk_FUN_002dac70(lVar8,0x48);
    return local_40[0];
  }
  return lVar8;
}

