
/* WARNING: Enum "STT": Some values do not have unique names */
/* WARNING: Enum "STB": Some values do not have unique names */
/* DWARF original prototype: Sized_symbol<64> * do_define_in_output_segment<64>(Symbol_table * this,
   char * name, char * version, Defined defined, Output_segment * os, Elf_Addr value, Elf_WXword
   symsize, STT type, STB binding, STV visibility, uchar nonvis, Segment_offset_base offset_base,
   bool only_if_ref) */

Sized_symbol<64> * __thiscall
gold::Symbol_table::do_define_in_output_segment<64>
          (Symbol_table *this,char *name,char *version,Defined defined,Output_segment *os,
          Elf_Addr value,Elf_WXword symsize,STT type,STB binding,STV visibility,uchar nonvis,
          Segment_offset_base offset_base,bool only_if_ref)

{
  undefined1 *puVar1;
  ushort uVar2;
  Got_offset_list *pGVar3;
  Got_offset_list *pGVar4;
  Got_offset_list *pGVar5;
  Got_offset_list *pGVar6;
  Got_offset_list *pGVar7;
  Got_offset_list *this_00;
  Elf_Addr EVar8;
  Elf_WXword EVar9;
  STV SVar10;
  int iVar11;
  bool bVar12;
  Sized_symbol<64> *fromsym;
  int unaff_EDI;
  undefined3 in_stack_00000035;
  undefined3 in_stack_0000003d;
  Sized_symbol<64> *__in_chrg;
  bool resolve_oldsym;
  bool is_global;
  Sized_symbol<64> *oldsym;
  
  __x86_get_pc_thunk_di();
  iVar11 = _nonvis;
  SVar10 = visibility;
  EVar9 = symsize;
  EVar8 = value;
  if (*(int *)(*(int *)(&LAB_0028bae1 + unaff_EDI) + 0xc) == 0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable((char *)(unaff_EDI + 0xe9586),0x69,&UNK_0013b229 + unaff_EDI);
  }
  if (*(char *)(*(int *)(*(int *)(*(int *)(&LAB_0028bae1 + unaff_EDI) + 0xc) + 4) + 4) == '\0') {
    fromsym = define_special_symbol<64,_false>
                        (this,&name,&version,SUB41(_only_if_ref,0),visibility,&oldsym,
                         &resolve_oldsym,binding == STB_LOCAL);
  }
  else {
    fromsym = define_special_symbol<64,_true>
                        (this,&name,&version,SUB41(_only_if_ref,0),visibility,&oldsym,
                         &resolve_oldsym,binding == STB_LOCAL);
  }
  if (fromsym == (Sized_symbol<64> *)0x0) {
    return (Sized_symbol<64> *)0x0;
  }
  (fromsym->super_Symbol).symtab_index_ = 0;
  (fromsym->super_Symbol).version_ = version;
  (fromsym->super_Symbol).field_0x29 = (byte)(iVar11 << 2) | (byte)SVar10 & 3;
  (fromsym->super_Symbol).name_ = name;
  (fromsym->super_Symbol).dynsym_index_ = 0;
  (fromsym->super_Symbol).field_0x28 = (undefined1)type & STT_HIPROC | (undefined1)binding << 4;
  (fromsym->super_Symbol).plt_offset_ = 0xffffffff;
  (fromsym->super_Symbol).u1_.output_segment = os;
  (fromsym->super_Symbol).got_offsets_.got_type_ = 0xffffffff;
  (fromsym->super_Symbol).u2_.offset_base = offset_base;
  uVar2 = *(ushort *)&(fromsym->super_Symbol).field_0x2a;
  (fromsym->super_Symbol).got_offsets_.got_offset_ = 0;
  (fromsym->super_Symbol).got_offsets_.got_next_ = (Got_offset_list *)0x0;
  *(ushort *)&(fromsym->super_Symbol).field_0x2a = uVar2 & 0x200 | 0x4082;
  (fromsym->super_Symbol).field_0x2c =
       (fromsym->super_Symbol).field_0x2c & 0xe0 | (defined == PREDEFINED) << 2;
  fromsym->value_ = EVar8;
  fromsym->symsize_ = EVar9;
  if (oldsym == (Sized_symbol<64> *)0x0) {
    if (binding != STB_LOCAL) {
      bVar12 = Version_script_info::get_symbol_version
                         (this->version_script_,name,(string *)0x0,&is_global);
      if ((!bVar12) || (is_global != false)) {
        if (version == (char *)0x0) {
          return fromsym;
        }
        puVar1 = &(fromsym->super_Symbol).field_0x2a;
        *puVar1 = *puVar1 | 8;
        return fromsym;
      }
    }
    force_local(this,&fromsym->super_Symbol);
    return fromsym;
  }
  bVar12 = should_override_with_special(&oldsym->super_Symbol,type,defined);
  if (bVar12) {
    override_with_special<64>(this,oldsym,fromsym);
  }
  if (resolve_oldsym != false) {
    return fromsym;
  }
  if (binding != STB_LOCAL) {
    __in_chrg = (Sized_symbol<64> *)name;
    bVar12 = Version_script_info::get_symbol_version
                       (this->version_script_,name,(string *)0x0,&is_global);
    if ((!bVar12) || (is_global != false)) goto LAB_0035ee7f;
  }
  __in_chrg = oldsym;
  force_local(this,&oldsym->super_Symbol);
LAB_0035ee7f:
  pGVar3 = (fromsym->super_Symbol).got_offsets_.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) {
          pGVar7 = pGVar6->got_next_;
          if (pGVar7 != (Got_offset_list *)0x0) {
            this_00 = pGVar7->got_next_;
            if (this_00 != (Got_offset_list *)0x0) {
              Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);
              operator_delete(this_00,0xc);
            }
            operator_delete(pGVar7,0xc);
          }
          operator_delete(pGVar6,0xc);
        }
        operator_delete(pGVar5,0xc);
      }
      operator_delete(pGVar4,0xc);
    }
    operator_delete(pGVar3,0xc);
  }
  operator_delete(fromsym,0x40);
  return oldsym;
}



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

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  undefined4 uVar11;
  char cVar12;
  undefined4 *puVar13;
  int unaff_EDI;
  char local_22;
  char local_21;
  undefined4 *local_20 [4];
  
  FUN_00074f0a();
  iVar2 = param_13;
  uVar11 = param_12;
  uVar10 = param_9;
  uVar9 = param_8;
  uVar8 = param_7;
  uVar7 = param_6;
  iVar1 = *(int *)(*(int *)(unaff_EDI + 0x28bae1) + 0xc);
  if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_002446e0(unaff_EDI + 0xe9586,0x69,&UNK_0013b229 + unaff_EDI,param_15);
  }
  if (*(char *)(*(int *)(iVar1 + 4) + 4) == '\0') {
    puVar13 = (undefined4 *)
              FUN_0035e0b0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,
                           param_11 == 0);
  }
  else {
    puVar13 = (undefined4 *)
              FUN_0035c410(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,
                           param_11 == 0);
  }
  if (puVar13 != (undefined4 *)0x0) {
    puVar13[4] = 0;
    puVar13[1] = param_3;
    *(byte *)((int)puVar13 + 0x29) = (byte)(iVar2 << 2) | (byte)uVar11 & 3;
    *puVar13 = param_2;
    puVar13[5] = 0;
    *(byte *)(puVar13 + 10) = (byte)param_10 & 0xf | (char)param_11 << 4;
    puVar13[6] = 0xffffffff;
    puVar13[2] = param_5;
    puVar13[7] = 0xffffffff;
    puVar13[3] = param_14;
    puVar13[8] = 0;
    puVar13[9] = 0;
    *(ushort *)((int)puVar13 + 0x2a) = *(ushort *)((int)puVar13 + 0x2a) & 0x200 | 0x4082;
    *(byte *)(puVar13 + 0xb) = *(byte *)(puVar13 + 0xb) & 0xe0 | (param_4 == 5) << 2;
    puVar13[0xc] = uVar7;
    puVar13[0xd] = uVar8;
    puVar13[0xe] = uVar9;
    puVar13[0xf] = uVar10;
    if (local_20[0] == (undefined4 *)0x0) {
      if ((param_11 == 0) ||
         ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),
          cVar12 != '\0' && (local_21 == '\0')))) {
        FUN_0034d3d0(param_1,puVar13);
        return puVar13;
      }
      if (param_3 != 0) {
        *(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8;
      }
    }
    else {
      cVar12 = FUN_0032bf30(local_20[0],param_10,param_4);
      if (cVar12 != '\0') {
        FUN_0032d440(param_1,local_20[0],puVar13);
      }
      if (local_22 == '\0') {
        if ((param_11 == 0) ||
           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),
            cVar12 != '\0' && (local_21 == '\0')))) {
          FUN_0034d3d0(param_1,local_20[0]);
        }
        iVar1 = puVar13[9];
        if (iVar1 != 0) {
          iVar2 = *(int *)(iVar1 + 8);
          if (iVar2 != 0) {
            iVar3 = *(int *)(iVar2 + 8);
            if (iVar3 != 0) {
              iVar4 = *(int *)(iVar3 + 8);
              if (iVar4 != 0) {
                iVar5 = *(int *)(iVar4 + 8);
                if (iVar5 != 0) {
                  iVar6 = *(int *)(iVar5 + 8);
                  if (iVar6 != 0) {
                    FUN_00350410(iVar6);
                    FUN_003ae060(iVar6,0xc);
                  }
                  FUN_003ae060(iVar5,0xc);
                }
                FUN_003ae060(iVar4,0xc);
              }
              FUN_003ae060(iVar3,0xc);
            }
            FUN_003ae060(iVar2,0xc);
          }
          FUN_003ae060(iVar1,0xc);
        }
        FUN_003ae060(puVar13,0x40);
        puVar13 = local_20[0];
      }
    }
  }
  return puVar13;
}


PUSH EBP
PUSH EDI
CALL 0x00074f0a
ADD EDI,0x28b319
PUSH ESI
PUSH EBX
SUB ESP,0x3c
MOV EDX,dword ptr [ESP + 0x68]
MOV EAX,dword ptr [ESP + 0x64]
LEA ECX,[EDI + 0x7c8]
MOV EBP,dword ptr [ESP + 0x7c]
MOV dword ptr [ESP + 0xc],EDX
MOV EDX,dword ptr [ESP + 0x70]
MOV ECX,dword ptr [ECX]
MOV EBX,dword ptr [ESP + 0x80]
MOV dword ptr [ESP + 0x8],EAX
MOV dword ptr [ESP + 0x14],EDX
MOV EDX,dword ptr [ESP + 0x78]
MOV EAX,dword ptr [ESP + 0x6c]
MOV ECX,dword ptr [ECX + 0xc]
TEST EDX,EDX
MOV dword ptr [ESP + 0x10],EAX
SETZ DL
MOV EAX,dword ptr [ESP + 0x88]
TEST ECX,ECX
JZ 0x0035f08a
MOV ECX,dword ptr [ECX + 0x4]
MOVZX EDX,DL
MOVZX EAX,AL
CMP byte ptr [ECX + 0x4],0x0
JNZ 0x0035efa0
PUSH EDX
LEA EDX,[ESP + 0x2e]
PUSH EDX
LEA EDX,[ESP + 0x34]
PUSH EDX
PUSH EBP
PUSH EAX
LEA EAX,[ESP + 0x6c]
PUSH EAX
LEA EAX,[ESP + 0x6c]
PUSH EAX
PUSH dword ptr [ESP + 0x6c]
CALL 0x0035e0b0
ADD ESP,0x20
MOV ESI,EAX
TEST ESI,ESI
JZ 0x0035ef8c
MOV EAX,dword ptr [ESP + 0x58]
MOVZX ECX,byte ptr [ESP + 0x78]
SHL EBX,0x2
AND EBP,0x3
OR EBX,EBP
MOV EDX,dword ptr [ESP + 0x54]
MOV dword ptr [ESI + 0x10],0x0
MOV dword ptr [ESI + 0x4],EAX
MOVZX EAX,byte ptr [ESP + 0x74]
SHL ECX,0x4
MOV byte ptr [ESI + 0x29],BL
AND EAX,0xf
MOV dword ptr [ESI],EDX
OR EAX,ECX
MOV dword ptr [ESI + 0x14],0x0
MOV byte ptr [ESI + 0x28],AL
MOV EAX,dword ptr [ESP + 0x60]
MOV dword ptr [ESI + 0x18],0xffffffff
MOV dword ptr [ESI + 0x8],EAX
MOV EAX,dword ptr [ESP + 0x84]
MOV dword ptr [ESI + 0x1c],0xffffffff
MOV dword ptr [ESI + 0xc],EAX
MOVZX EAX,word ptr [ESI + 0x2a]
MOV dword ptr [ESI + 0x20],0x0
AND AX,0x200
MOV dword ptr [ESI + 0x24],0x0
OR AX,0x4082
CMP dword ptr [ESP + 0x5c],0x5
MOV word ptr [ESI + 0x2a],AX
MOVZX EAX,byte ptr [ESI + 0x2c]
SETZ CL
SHL ECX,0x2
AND EAX,0xffffffe0
OR EAX,ECX
MOV byte ptr [ESI + 0x2c],AL
MOV ECX,dword ptr [ESP + 0x8]
MOV EBX,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [ESP + 0x2c]
MOV dword ptr [ESI + 0x30],ECX
MOV ECX,dword ptr [ESP + 0x10]
MOV dword ptr [ESI + 0x34],EBX
MOV EBX,dword ptr [ESP + 0x14]
MOV dword ptr [ESI + 0x38],ECX
MOV dword ptr [ESI + 0x3c],EBX
TEST EAX,EAX
JZ 0x0035efd0
SUB ESP,0x4
MOV EBX,EDI
PUSH dword ptr [ESP + 0x60]
PUSH dword ptr [ESP + 0x7c]
PUSH EAX
CALL 0x0032bf30
ADD ESP,0x10
TEST AL,AL
JNZ 0x0035f018
CMP byte ptr [ESP + 0x2a],0x0
JNZ 0x0035ef8c
MOV ECX,dword ptr [ESP + 0x78]
TEST ECX,ECX
JNZ 0x0035f038
SUB ESP,0x8
PUSH dword ptr [ESP + 0x34]
PUSH dword ptr [ESP + 0x5c]
CALL 0x0034d3d0
ADD ESP,0x10
MOV ECX,dword ptr [ESI + 0x24]
TEST ECX,ECX
JZ 0x0035ef78
MOV EBP,dword ptr [ECX + 0x8]
TEST EBP,EBP
JZ 0x0035ef68
MOV EAX,dword ptr [EBP + 0x8]
TEST EAX,EAX
JZ 0x0035ef50
MOV EDX,dword ptr [EAX + 0x8]
TEST EDX,EDX
JZ 0x0035ef38
MOV EBX,dword ptr [EDX + 0x8]
MOV dword ptr [ESP + 0x8],EBX
TEST EBX,EBX
JZ 0x0035ef18
MOV EBX,dword ptr [EBX + 0x8]
TEST EBX,EBX
JZ 0x0035eeed
MOV dword ptr [ESP + 0x1c],EDX
SUB ESP,0xc
MOV dword ptr [ESP + 0x24],EAX
MOV dword ptr [ESP + 0x1c],ECX
PUSH EBX
CALL 0x00350410
POP EAX
POP EDX
PUSH 0xc
PUSH EBX
MOV EBX,EDI
CALL 0x003ae060
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [ESP + 0x18]
MOV ECX,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x1c],EDX
SUB ESP,0x8
MOV EBX,EDI
MOV dword ptr [ESP + 0x20],EAX
MOV dword ptr [ESP + 0x18],ECX
PUSH 0xc
PUSH dword ptr [ESP + 0x14]
CALL 0x003ae060
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [ESP + 0x18]
MOV ECX,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x10],EAX
SUB ESP,0x8
MOV EBX,EDI
MOV dword ptr [ESP + 0x10],ECX
PUSH 0xc
PUSH EDX
CALL 0x003ae060
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x10]
MOV ECX,dword ptr [ESP + 0x8]
MOV dword ptr [ESP + 0x8],ECX
SUB ESP,0x8
MOV EBX,EDI
PUSH 0xc
PUSH EAX
CALL 0x003ae060
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x8]
MOV dword ptr [ESP + 0x8],ECX
SUB ESP,0x8
MOV EBX,EDI
PUSH 0xc
PUSH EBP
CALL 0x003ae060
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x8]
SUB ESP,0x8
MOV EBX,EDI
PUSH 0xc
PUSH ECX
CALL 0x003ae060
ADD ESP,0x10
SUB ESP,0x8
MOV EBX,EDI
PUSH 0x40
PUSH ESI
CALL 0x003ae060
MOV ESI,dword ptr [ESP + 0x3c]
ADD ESP,0x10
ADD ESP,0x3c
MOV EAX,ESI
POP EBX
POP ESI
POP EDI
POP EBP
RET
PUSH EDX
LEA EDX,[ESP + 0x2e]
PUSH EDX
LEA EDX,[ESP + 0x34]
PUSH EDX
PUSH EBP
PUSH EAX
LEA EAX,[ESP + 0x6c]
PUSH EAX
LEA EAX,[ESP + 0x6c]
PUSH EAX
PUSH dword ptr [ESP + 0x6c]
CALL 0x0035c410
ADD ESP,0x20
MOV ESI,EAX
JMP 0x0035ed78
MOV EBP,dword ptr [ESP + 0x78]
TEST EBP,EBP
JZ 0x0035f070
LEA EAX,[ESP + 0x2b]
MOV EBX,EDI
PUSH EAX
PUSH 0x0
PUSH EDX
MOV EAX,dword ptr [ESP + 0x5c]
PUSH dword ptr [EAX + 0x154]
CALL 0x003434d0
ADD ESP,0x10
TEST AL,AL
JZ 0x0035f003
CMP byte ptr [ESP + 0x2b],0x0
JZ 0x0035f070
MOV EBX,dword ptr [ESP + 0x58]
TEST EBX,EBX
JZ 0x0035ef8c
OR byte ptr [ESI + 0x2a],0x8
JMP 0x0035ef8c
SUB ESP,0x4
PUSH ESI
PUSH dword ptr [ESP + 0x34]
PUSH dword ptr [ESP + 0x5c]
CALL 0x0032d440
ADD ESP,0x10
JMP 0x0035ee55
LEA EAX,[ESP + 0x2b]
MOV EBX,EDI
PUSH EAX
PUSH 0x0
PUSH dword ptr [ESP + 0x5c]
MOV EAX,dword ptr [ESP + 0x5c]
PUSH dword ptr [EAX + 0x154]
CALL 0x003434d0
ADD ESP,0x10
TEST AL,AL
JZ 0x0035ee7f
CMP byte ptr [ESP + 0x2b],0x0
JNZ 0x0035ee7f
JMP 0x0035ee6c
SUB ESP,0x8
PUSH ESI
PUSH dword ptr [ESP + 0x5c]
CALL 0x0034d3d0
ADD ESP,0x10
MOV EAX,ESI
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
PUSH EAX
LEA EAX,[EDI + 0xffeaff10]
MOV EBX,EDI
PUSH EAX
LEA EAX,[EDI + 0xffe5e26d]
PUSH 0x69
PUSH EAX
CALL 0x002446e0
(translation_unit "undefined4 *\nFUN_0035ece0(int param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n            undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n            undefined4 param_10,int param_11,undefined4 param_12,int param_13,undefined4 param_14,\n            uint param_15)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  undefined4 uVar11;\n  char cVar12;\n  undefined4 *puVar13;\n  int unaff_EDI;\n  char local_22;\n  char local_21;\n  undefined4 *local_20 [4];\n  \n  FUN_00074f0a();\n  iVar2 = param_13;\n  uVar11 = param_12;\n  uVar10 = param_9;\n  uVar9 = param_8;\n  uVar8 = param_7;\n  uVar7 = param_6;\n  iVar1 = *(int *)(*(int *)(unaff_EDI + 0x28bae1) + 0xc);\n  if (iVar1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0(unaff_EDI + 0xe9586,0x69,&UNK_0013b229 + unaff_EDI,param_15);\n  }\n  if (*(char *)(*(int *)(iVar1 + 4) + 4) == '\0') {\n    puVar13 = (undefined4 *)\n              FUN_0035e0b0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);\n  }\n  else {\n    puVar13 = (undefined4 *)\n              FUN_0035c410(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);\n  }\n  if (puVar13 != (undefined4 *)0x0) {\n    puVar13[4] = 0;\n    puVar13[1] = param_3;\n    *(byte *)((int)puVar13 + 0x29) = (byte)(iVar2 << 2) | (byte)uVar11 & 3;\n    *puVar13 = param_2;\n    puVar13[5] = 0;\n    *(byte *)(puVar13 + 10) = (byte)param_10 & 0xf | (char)param_11 << 4;\n    puVar13[6] = 0xffffffff;\n    puVar13[2] = param_5;\n    puVar13[7] = 0xffffffff;\n    puVar13[3] = param_14;\n    puVar13[8] = 0;\n    puVar13[9] = 0;\n    *(ushort *)((int)puVar13 + 0x2a) = *(ushort *)((int)puVar13 + 0x2a) & 0x200 | 0x4082;\n    *(byte *)(puVar13 + 0xb) = *(byte *)(puVar13 + 0xb) & 0xe0 | (param_4 == 5) << 2;\n    puVar13[0xc] = uVar7;\n    puVar13[0xd] = uVar8;\n    puVar13[0xe] = uVar9;\n    puVar13[0xf] = uVar10;\n    if (local_20[0] == (undefined4 *)0x0) {\n      if ((param_11 == 0) ||\n         ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')))) {\n        FUN_0034d3d0(param_1,puVar13);\n        return puVar13;\n      }\n      if (param_3 != 0) {\n        *(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8;\n      }\n    }\n    else {\n      cVar12 = FUN_0032bf30(local_20[0],param_10,param_4);\n      if (cVar12 != '\0') {\n        FUN_0032d440(param_1,local_20[0],puVar13);\n      }\n      if (local_22 == '\0') {\n        if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }\n        iVar1 = puVar13[9];\n        if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }\n        FUN_003ae060(puVar13,0x40);\n        puVar13 = local_20[0];\n      }\n    }\n  }\n  return puVar13;\n}\n\n" (function_definition "undefined4 *\nFUN_0035ece0(int param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n            undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n            undefined4 param_10,int param_11,undefined4 param_12,int param_13,undefined4 param_14,\n            uint param_15)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  undefined4 uVar11;\n  char cVar12;\n  undefined4 *puVar13;\n  int unaff_EDI;\n  char local_22;\n  char local_21;\n  undefined4 *local_20 [4];\n  \n  FUN_00074f0a();\n  iVar2 = param_13;\n  uVar11 = param_12;\n  uVar10 = param_9;\n  uVar9 = param_8;\n  uVar8 = param_7;\n  uVar7 = param_6;\n  iVar1 = *(int *)(*(int *)(unaff_EDI + 0x28bae1) + 0xc);\n  if (iVar1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0(unaff_EDI + 0xe9586,0x69,&UNK_0013b229 + unaff_EDI,param_15);\n  }\n  if (*(char *)(*(int *)(iVar1 + 4) + 4) == '\0') {\n    puVar13 = (undefined4 *)\n              FUN_0035e0b0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);\n  }\n  else {\n    puVar13 = (undefined4 *)\n              FUN_0035c410(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);\n  }\n  if (puVar13 != (undefined4 *)0x0) {\n    puVar13[4] = 0;\n    puVar13[1] = param_3;\n    *(byte *)((int)puVar13 + 0x29) = (byte)(iVar2 << 2) | (byte)uVar11 & 3;\n    *puVar13 = param_2;\n    puVar13[5] = 0;\n    *(byte *)(puVar13 + 10) = (byte)param_10 & 0xf | (char)param_11 << 4;\n    puVar13[6] = 0xffffffff;\n    puVar13[2] = param_5;\n    puVar13[7] = 0xffffffff;\n    puVar13[3] = param_14;\n    puVar13[8] = 0;\n    puVar13[9] = 0;\n    *(ushort *)((int)puVar13 + 0x2a) = *(ushort *)((int)puVar13 + 0x2a) & 0x200 | 0x4082;\n    *(byte *)(puVar13 + 0xb) = *(byte *)(puVar13 + 0xb) & 0xe0 | (param_4 == 5) << 2;\n    puVar13[0xc] = uVar7;\n    puVar13[0xd] = uVar8;\n    puVar13[0xe] = uVar9;\n    puVar13[0xf] = uVar10;\n    if (local_20[0] == (undefined4 *)0x0) {\n      if ((param_11 == 0) ||\n         ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')))) {\n        FUN_0034d3d0(param_1,puVar13);\n        return puVar13;\n      }\n      if (param_3 != 0) {\n        *(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8;\n      }\n    }\n    else {\n      cVar12 = FUN_0032bf30(local_20[0],param_10,param_4);\n      if (cVar12 != '\0') {\n        FUN_0032d440(param_1,local_20[0],puVar13);\n      }\n      if (local_22 == '\0') {\n        if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }\n        iVar1 = puVar13[9];\n        if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }\n        FUN_003ae060(puVar13,0x40);\n        puVar13 = local_20[0];\n      }\n    }\n  }\n  return puVar13;\n}" type_identifier (pointer_declarator "*\nFUN_0035ece0(int param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n            undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n            undefined4 param_10,int param_11,undefined4 param_12,int param_13,undefined4 param_14,\n            uint param_15)" * (function_declarator "FUN_0035ece0(int param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n            undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n            undefined4 param_10,int param_11,undefined4 param_12,int param_13,undefined4 param_14,\n            uint param_15)" identifier (parameter_list "(int param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n            undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n            undefined4 param_10,int param_11,undefined4 param_12,int param_13,undefined4 param_14,\n            uint param_15)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "undefined4 param_7" type_identifier identifier) , (parameter_declaration "undefined4 param_8" type_identifier identifier) , (parameter_declaration "undefined4 param_9" type_identifier identifier) , (parameter_declaration "undefined4 param_10" type_identifier identifier) , (parameter_declaration "int param_11" primitive_type identifier) , (parameter_declaration "undefined4 param_12" type_identifier identifier) , (parameter_declaration "int param_13" primitive_type identifier) , (parameter_declaration "undefined4 param_14" type_identifier identifier) , (parameter_declaration "uint param_15" type_identifier identifier) )))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  undefined4 uVar11;\n  char cVar12;\n  undefined4 *puVar13;\n  int unaff_EDI;\n  char local_22;\n  char local_21;\n  undefined4 *local_20 [4];\n  \n  FUN_00074f0a();\n  iVar2 = param_13;\n  uVar11 = param_12;\n  uVar10 = param_9;\n  uVar9 = param_8;\n  uVar8 = param_7;\n  uVar7 = param_6;\n  iVar1 = *(int *)(*(int *)(unaff_EDI + 0x28bae1) + 0xc);\n  if (iVar1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0(unaff_EDI + 0xe9586,0x69,&UNK_0013b229 + unaff_EDI,param_15);\n  }\n  if (*(char *)(*(int *)(iVar1 + 4) + 4) == '\0') {\n    puVar13 = (undefined4 *)\n              FUN_0035e0b0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);\n  }\n  else {\n    puVar13 = (undefined4 *)\n              FUN_0035c410(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);\n  }\n  if (puVar13 != (undefined4 *)0x0) {\n    puVar13[4] = 0;\n    puVar13[1] = param_3;\n    *(byte *)((int)puVar13 + 0x29) = (byte)(iVar2 << 2) | (byte)uVar11 & 3;\n    *puVar13 = param_2;\n    puVar13[5] = 0;\n    *(byte *)(puVar13 + 10) = (byte)param_10 & 0xf | (char)param_11 << 4;\n    puVar13[6] = 0xffffffff;\n    puVar13[2] = param_5;\n    puVar13[7] = 0xffffffff;\n    puVar13[3] = param_14;\n    puVar13[8] = 0;\n    puVar13[9] = 0;\n    *(ushort *)((int)puVar13 + 0x2a) = *(ushort *)((int)puVar13 + 0x2a) & 0x200 | 0x4082;\n    *(byte *)(puVar13 + 0xb) = *(byte *)(puVar13 + 0xb) & 0xe0 | (param_4 == 5) << 2;\n    puVar13[0xc] = uVar7;\n    puVar13[0xd] = uVar8;\n    puVar13[0xe] = uVar9;\n    puVar13[0xf] = uVar10;\n    if (local_20[0] == (undefined4 *)0x0) {\n      if ((param_11 == 0) ||\n         ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')))) {\n        FUN_0034d3d0(param_1,puVar13);\n        return puVar13;\n      }\n      if (param_3 != 0) {\n        *(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8;\n      }\n    }\n    else {\n      cVar12 = FUN_0032bf30(local_20[0],param_10,param_4);\n      if (cVar12 != '\0') {\n        FUN_0032d440(param_1,local_20[0],puVar13);\n      }\n      if (local_22 == '\0') {\n        if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }\n        iVar1 = puVar13[9];\n        if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }\n        FUN_003ae060(puVar13,0x40);\n        puVar13 = local_20[0];\n      }\n    }\n  }\n  return puVar13;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "char cVar12;" primitive_type identifier ;) (declaration "undefined4 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "char local_22;" primitive_type identifier ;) (declaration "char local_21;" primitive_type identifier ;) (declaration "undefined4 *local_20 [4];" type_identifier (pointer_declarator "*local_20 [4]" * (array_declarator "local_20 [4]" identifier [ number_literal ])) ;) (expression_statement "FUN_00074f0a();" (call_expression "FUN_00074f0a()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar2 = param_13;" (assignment_expression "iVar2 = param_13" identifier = identifier) ;) (expression_statement "uVar11 = param_12;" (assignment_expression "uVar11 = param_12" identifier = identifier) ;) (expression_statement "uVar10 = param_9;" (assignment_expression "uVar10 = param_9" identifier = identifier) ;) (expression_statement "uVar9 = param_8;" (assignment_expression "uVar9 = param_8" identifier = identifier) ;) (expression_statement "uVar8 = param_7;" (assignment_expression "uVar8 = param_7" identifier = identifier) ;) (expression_statement "uVar7 = param_6;" (assignment_expression "uVar7 = param_6" identifier = identifier) ;) (expression_statement "iVar1 = *(int *)(*(int *)(unaff_EDI + 0x28bae1) + 0xc);" (assignment_expression "iVar1 = *(int *)(*(int *)(unaff_EDI + 0x28bae1) + 0xc)" identifier = (pointer_expression "*(int *)(*(int *)(unaff_EDI + 0x28bae1) + 0xc)" * (cast_expression "(int *)(*(int *)(unaff_EDI + 0x28bae1) + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(unaff_EDI + 0x28bae1) + 0xc)" ( (binary_expression "*(int *)(unaff_EDI + 0x28bae1) + 0xc" (pointer_expression "*(int *)(unaff_EDI + 0x28bae1)" * (cast_expression "(int *)(unaff_EDI + 0x28bae1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x28bae1)" ( (binary_expression "unaff_EDI + 0x28bae1" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (iVar1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0(unaff_EDI + 0xe9586,0x69,&UNK_0013b229 + unaff_EDI,param_15);\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0(unaff_EDI + 0xe9586,0x69,&UNK_0013b229 + unaff_EDI,param_15);\n  }" { comment (expression_statement "FUN_002446e0(unaff_EDI + 0xe9586,0x69,&UNK_0013b229 + unaff_EDI,param_15);" (call_expression "FUN_002446e0(unaff_EDI + 0xe9586,0x69,&UNK_0013b229 + unaff_EDI,param_15)" identifier (argument_list "(unaff_EDI + 0xe9586,0x69,&UNK_0013b229 + unaff_EDI,param_15)" ( (binary_expression "unaff_EDI + 0xe9586" identifier + number_literal) , number_literal , (binary_expression "&UNK_0013b229 + unaff_EDI" (pointer_expression "&UNK_0013b229" & identifier) + identifier) , identifier ))) ;) })) (if_statement "if (*(char *)(*(int *)(iVar1 + 4) + 4) == '\0') {\n    puVar13 = (undefined4 *)\n              FUN_0035e0b0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);\n  }\n  else {\n    puVar13 = (undefined4 *)\n              FUN_0035c410(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);\n  }" if (parenthesized_expression "(*(char *)(*(int *)(iVar1 + 4) + 4) == '\0')" ( (binary_expression "*(char *)(*(int *)(iVar1 + 4) + 4) == '\0'" (pointer_expression "*(char *)(*(int *)(iVar1 + 4) + 4)" * (cast_expression "(char *)(*(int *)(iVar1 + 4) + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + 4) + 4)" ( (binary_expression "*(int *)(iVar1 + 4) + 4" (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    puVar13 = (undefined4 *)\n              FUN_0035e0b0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);\n  }" { (expression_statement "puVar13 = (undefined4 *)\n              FUN_0035e0b0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);" (assignment_expression "puVar13 = (undefined4 *)\n              FUN_0035e0b0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0)" identifier = (cast_expression "(undefined4 *)\n              FUN_0035e0b0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0035e0b0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0)" identifier (argument_list "(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0)" ( identifier , (pointer_expression "&param_2" & identifier) , (pointer_expression "&param_3" & identifier) , (binary_expression "param_15 & 0xff" identifier & number_literal) , identifier , identifier , (pointer_expression "&local_22" & identifier) , (binary_expression "param_11 == 0" identifier == number_literal) ))))) ;) }) (else_clause "else {\n    puVar13 = (undefined4 *)\n              FUN_0035c410(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);\n  }" else (compound_statement "{\n    puVar13 = (undefined4 *)\n              FUN_0035c410(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);\n  }" { (expression_statement "puVar13 = (undefined4 *)\n              FUN_0035c410(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);" (assignment_expression "puVar13 = (undefined4 *)\n              FUN_0035c410(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0)" identifier = (cast_expression "(undefined4 *)\n              FUN_0035c410(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0035c410(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0)" identifier (argument_list "(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0)" ( identifier , (pointer_expression "&param_2" & identifier) , (pointer_expression "&param_3" & identifier) , (binary_expression "param_15 & 0xff" identifier & number_literal) , identifier , identifier , (pointer_expression "&local_22" & identifier) , (binary_expression "param_11 == 0" identifier == number_literal) ))))) ;) }))) (if_statement "if (puVar13 != (undefined4 *)0x0) {\n    puVar13[4] = 0;\n    puVar13[1] = param_3;\n    *(byte *)((int)puVar13 + 0x29) = (byte)(iVar2 << 2) | (byte)uVar11 & 3;\n    *puVar13 = param_2;\n    puVar13[5] = 0;\n    *(byte *)(puVar13 + 10) = (byte)param_10 & 0xf | (char)param_11 << 4;\n    puVar13[6] = 0xffffffff;\n    puVar13[2] = param_5;\n    puVar13[7] = 0xffffffff;\n    puVar13[3] = param_14;\n    puVar13[8] = 0;\n    puVar13[9] = 0;\n    *(ushort *)((int)puVar13 + 0x2a) = *(ushort *)((int)puVar13 + 0x2a) & 0x200 | 0x4082;\n    *(byte *)(puVar13 + 0xb) = *(byte *)(puVar13 + 0xb) & 0xe0 | (param_4 == 5) << 2;\n    puVar13[0xc] = uVar7;\n    puVar13[0xd] = uVar8;\n    puVar13[0xe] = uVar9;\n    puVar13[0xf] = uVar10;\n    if (local_20[0] == (undefined4 *)0x0) {\n      if ((param_11 == 0) ||\n         ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')))) {\n        FUN_0034d3d0(param_1,puVar13);\n        return puVar13;\n      }\n      if (param_3 != 0) {\n        *(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8;\n      }\n    }\n    else {\n      cVar12 = FUN_0032bf30(local_20[0],param_10,param_4);\n      if (cVar12 != '\0') {\n        FUN_0032d440(param_1,local_20[0],puVar13);\n      }\n      if (local_22 == '\0') {\n        if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }\n        iVar1 = puVar13[9];\n        if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }\n        FUN_003ae060(puVar13,0x40);\n        puVar13 = local_20[0];\n      }\n    }\n  }" if (parenthesized_expression "(puVar13 != (undefined4 *)0x0)" ( (binary_expression "puVar13 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar13[4] = 0;\n    puVar13[1] = param_3;\n    *(byte *)((int)puVar13 + 0x29) = (byte)(iVar2 << 2) | (byte)uVar11 & 3;\n    *puVar13 = param_2;\n    puVar13[5] = 0;\n    *(byte *)(puVar13 + 10) = (byte)param_10 & 0xf | (char)param_11 << 4;\n    puVar13[6] = 0xffffffff;\n    puVar13[2] = param_5;\n    puVar13[7] = 0xffffffff;\n    puVar13[3] = param_14;\n    puVar13[8] = 0;\n    puVar13[9] = 0;\n    *(ushort *)((int)puVar13 + 0x2a) = *(ushort *)((int)puVar13 + 0x2a) & 0x200 | 0x4082;\n    *(byte *)(puVar13 + 0xb) = *(byte *)(puVar13 + 0xb) & 0xe0 | (param_4 == 5) << 2;\n    puVar13[0xc] = uVar7;\n    puVar13[0xd] = uVar8;\n    puVar13[0xe] = uVar9;\n    puVar13[0xf] = uVar10;\n    if (local_20[0] == (undefined4 *)0x0) {\n      if ((param_11 == 0) ||\n         ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')))) {\n        FUN_0034d3d0(param_1,puVar13);\n        return puVar13;\n      }\n      if (param_3 != 0) {\n        *(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8;\n      }\n    }\n    else {\n      cVar12 = FUN_0032bf30(local_20[0],param_10,param_4);\n      if (cVar12 != '\0') {\n        FUN_0032d440(param_1,local_20[0],puVar13);\n      }\n      if (local_22 == '\0') {\n        if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }\n        iVar1 = puVar13[9];\n        if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }\n        FUN_003ae060(puVar13,0x40);\n        puVar13 = local_20[0];\n      }\n    }\n  }" { (expression_statement "puVar13[4] = 0;" (assignment_expression "puVar13[4] = 0" (subscript_expression "puVar13[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar13[1] = param_3;" (assignment_expression "puVar13[1] = param_3" (subscript_expression "puVar13[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(byte *)((int)puVar13 + 0x29) = (byte)(iVar2 << 2) | (byte)uVar11 & 3;" (assignment_expression "*(byte *)((int)puVar13 + 0x29) = (byte)(iVar2 << 2) | (byte)uVar11 & 3" (pointer_expression "*(byte *)((int)puVar13 + 0x29)" * (cast_expression "(byte *)((int)puVar13 + 0x29)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + 0x29)" ( (binary_expression "(int)puVar13 + 0x29" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(byte)(iVar2 << 2) | (byte)uVar11 & 3" (call_expression "(byte)(iVar2 << 2)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(iVar2 << 2)" ( (binary_expression "iVar2 << 2" identifier << number_literal) ))) | (binary_expression "(byte)uVar11 & 3" (cast_expression "(byte)uVar11" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal))) ;) (expression_statement "*puVar13 = param_2;" (assignment_expression "*puVar13 = param_2" (pointer_expression "*puVar13" * identifier) = identifier) ;) (expression_statement "puVar13[5] = 0;" (assignment_expression "puVar13[5] = 0" (subscript_expression "puVar13[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)(puVar13 + 10) = (byte)param_10 & 0xf | (char)param_11 << 4;" (assignment_expression "*(byte *)(puVar13 + 10) = (byte)param_10 & 0xf | (char)param_11 << 4" (pointer_expression "*(byte *)(puVar13 + 10)" * (cast_expression "(byte *)(puVar13 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 10)" ( (binary_expression "puVar13 + 10" identifier + number_literal) )))) = (binary_expression "(byte)param_10 & 0xf | (char)param_11 << 4" (binary_expression "(byte)param_10 & 0xf" (cast_expression "(byte)param_10" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) | (binary_expression "(char)param_11 << 4" (cast_expression "(char)param_11" ( (type_descriptor "char" primitive_type) ) identifier) << number_literal))) ;) (expression_statement "puVar13[6] = 0xffffffff;" (assignment_expression "puVar13[6] = 0xffffffff" (subscript_expression "puVar13[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar13[2] = param_5;" (assignment_expression "puVar13[2] = param_5" (subscript_expression "puVar13[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar13[7] = 0xffffffff;" (assignment_expression "puVar13[7] = 0xffffffff" (subscript_expression "puVar13[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar13[3] = param_14;" (assignment_expression "puVar13[3] = param_14" (subscript_expression "puVar13[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar13[8] = 0;" (assignment_expression "puVar13[8] = 0" (subscript_expression "puVar13[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar13[9] = 0;" (assignment_expression "puVar13[9] = 0" (subscript_expression "puVar13[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(ushort *)((int)puVar13 + 0x2a) = *(ushort *)((int)puVar13 + 0x2a) & 0x200 | 0x4082;" (assignment_expression "*(ushort *)((int)puVar13 + 0x2a) = *(ushort *)((int)puVar13 + 0x2a) & 0x200 | 0x4082" (pointer_expression "*(ushort *)((int)puVar13 + 0x2a)" * (cast_expression "(ushort *)((int)puVar13 + 0x2a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + 0x2a)" ( (binary_expression "(int)puVar13 + 0x2a" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(ushort *)((int)puVar13 + 0x2a) & 0x200 | 0x4082" (binary_expression "*(ushort *)((int)puVar13 + 0x2a) & 0x200" (pointer_expression "*(ushort *)((int)puVar13 + 0x2a)" * (cast_expression "(ushort *)((int)puVar13 + 0x2a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + 0x2a)" ( (binary_expression "(int)puVar13 + 0x2a" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "*(byte *)(puVar13 + 0xb) = *(byte *)(puVar13 + 0xb) & 0xe0 | (param_4 == 5) << 2;" (assignment_expression "*(byte *)(puVar13 + 0xb) = *(byte *)(puVar13 + 0xb) & 0xe0 | (param_4 == 5) << 2" (pointer_expression "*(byte *)(puVar13 + 0xb)" * (cast_expression "(byte *)(puVar13 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 0xb)" ( (binary_expression "puVar13 + 0xb" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar13 + 0xb) & 0xe0 | (param_4 == 5) << 2" (binary_expression "*(byte *)(puVar13 + 0xb) & 0xe0" (pointer_expression "*(byte *)(puVar13 + 0xb)" * (cast_expression "(byte *)(puVar13 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 0xb)" ( (binary_expression "puVar13 + 0xb" identifier + number_literal) )))) & number_literal) | (binary_expression "(param_4 == 5) << 2" (parenthesized_expression "(param_4 == 5)" ( (binary_expression "param_4 == 5" identifier == number_literal) )) << number_literal))) ;) (expression_statement "puVar13[0xc] = uVar7;" (assignment_expression "puVar13[0xc] = uVar7" (subscript_expression "puVar13[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar13[0xd] = uVar8;" (assignment_expression "puVar13[0xd] = uVar8" (subscript_expression "puVar13[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar13[0xe] = uVar9;" (assignment_expression "puVar13[0xe] = uVar9" (subscript_expression "puVar13[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar13[0xf] = uVar10;" (assignment_expression "puVar13[0xf] = uVar10" (subscript_expression "puVar13[0xf]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (local_20[0] == (undefined4 *)0x0) {\n      if ((param_11 == 0) ||\n         ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')))) {\n        FUN_0034d3d0(param_1,puVar13);\n        return puVar13;\n      }\n      if (param_3 != 0) {\n        *(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8;\n      }\n    }\n    else {\n      cVar12 = FUN_0032bf30(local_20[0],param_10,param_4);\n      if (cVar12 != '\0') {\n        FUN_0032d440(param_1,local_20[0],puVar13);\n      }\n      if (local_22 == '\0') {\n        if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }\n        iVar1 = puVar13[9];\n        if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }\n        FUN_003ae060(puVar13,0x40);\n        puVar13 = local_20[0];\n      }\n    }" if (parenthesized_expression "(local_20[0] == (undefined4 *)0x0)" ( (binary_expression "local_20[0] == (undefined4 *)0x0" (subscript_expression "local_20[0]" identifier [ number_literal ]) == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if ((param_11 == 0) ||\n         ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')))) {\n        FUN_0034d3d0(param_1,puVar13);\n        return puVar13;\n      }\n      if (param_3 != 0) {\n        *(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8;\n      }\n    }" { (if_statement "if ((param_11 == 0) ||\n         ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')))) {\n        FUN_0034d3d0(param_1,puVar13);\n        return puVar13;\n      }" if (parenthesized_expression "((param_11 == 0) ||\n         ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0'))))" ( (binary_expression "(param_11 == 0) ||\n         ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')))" (parenthesized_expression "(param_11 == 0)" ( (binary_expression "param_11 == 0" identifier == number_literal) )) || (parenthesized_expression "((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')))" ( (parenthesized_expression "(cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0'))" ( (comma_expression "cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')" (assignment_expression "cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" identifier = (call_expression "FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x154)" * (cast_expression "(undefined4 *)(param_1 + 0x154)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x154)" ( (binary_expression "param_1 + 0x154" identifier + number_literal) )))) , identifier , number_literal , (pointer_expression "&local_21" & identifier) )))) , (binary_expression "cVar12 != '\0' && (local_21 == '\0')" (binary_expression "cVar12 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) && (parenthesized_expression "(local_21 == '\0')" ( (binary_expression "local_21 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )))) )) ))) )) (compound_statement "{\n        FUN_0034d3d0(param_1,puVar13);\n        return puVar13;\n      }" { (expression_statement "FUN_0034d3d0(param_1,puVar13);" (call_expression "FUN_0034d3d0(param_1,puVar13)" identifier (argument_list "(param_1,puVar13)" ( identifier , identifier ))) ;) (return_statement "return puVar13;" return identifier ;) })) (if_statement "if (param_3 != 0) {\n        *(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8;\n      }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n        *(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8;\n      }" { (expression_statement "*(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8;" (assignment_expression "*(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8" (pointer_expression "*(byte *)((int)puVar13 + 0x2a)" * (cast_expression "(byte *)((int)puVar13 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + 0x2a)" ( (binary_expression "(int)puVar13 + 0x2a" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((int)puVar13 + 0x2a) | 8" (pointer_expression "*(byte *)((int)puVar13 + 0x2a)" * (cast_expression "(byte *)((int)puVar13 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + 0x2a)" ( (binary_expression "(int)puVar13 + 0x2a" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | number_literal)) ;) })) }) (else_clause "else {\n      cVar12 = FUN_0032bf30(local_20[0],param_10,param_4);\n      if (cVar12 != '\0') {\n        FUN_0032d440(param_1,local_20[0],puVar13);\n      }\n      if (local_22 == '\0') {\n        if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }\n        iVar1 = puVar13[9];\n        if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }\n        FUN_003ae060(puVar13,0x40);\n        puVar13 = local_20[0];\n      }\n    }" else (compound_statement "{\n      cVar12 = FUN_0032bf30(local_20[0],param_10,param_4);\n      if (cVar12 != '\0') {\n        FUN_0032d440(param_1,local_20[0],puVar13);\n      }\n      if (local_22 == '\0') {\n        if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }\n        iVar1 = puVar13[9];\n        if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }\n        FUN_003ae060(puVar13,0x40);\n        puVar13 = local_20[0];\n      }\n    }" { (expression_statement "cVar12 = FUN_0032bf30(local_20[0],param_10,param_4);" (assignment_expression "cVar12 = FUN_0032bf30(local_20[0],param_10,param_4)" identifier = (call_expression "FUN_0032bf30(local_20[0],param_10,param_4)" identifier (argument_list "(local_20[0],param_10,param_4)" ( (subscript_expression "local_20[0]" identifier [ number_literal ]) , identifier , identifier )))) ;) (if_statement "if (cVar12 != '\0') {\n        FUN_0032d440(param_1,local_20[0],puVar13);\n      }" if (parenthesized_expression "(cVar12 != '\0')" ( (binary_expression "cVar12 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        FUN_0032d440(param_1,local_20[0],puVar13);\n      }" { (expression_statement "FUN_0032d440(param_1,local_20[0],puVar13);" (call_expression "FUN_0032d440(param_1,local_20[0],puVar13)" identifier (argument_list "(param_1,local_20[0],puVar13)" ( identifier , (subscript_expression "local_20[0]" identifier [ number_literal ]) , identifier ))) ;) })) (if_statement "if (local_22 == '\0') {\n        if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }\n        iVar1 = puVar13[9];\n        if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }\n        FUN_003ae060(puVar13,0x40);\n        puVar13 = local_20[0];\n      }" if (parenthesized_expression "(local_22 == '\0')" ( (binary_expression "local_22 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }\n        iVar1 = puVar13[9];\n        if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }\n        FUN_003ae060(puVar13,0x40);\n        puVar13 = local_20[0];\n      }" { (if_statement "if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }" if (parenthesized_expression "((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0'))))" ( (binary_expression "(param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))" (parenthesized_expression "(param_11 == 0)" ( (binary_expression "param_11 == 0" identifier == number_literal) )) || (parenthesized_expression "((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))" ( (parenthesized_expression "(cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0'))" ( (comma_expression "cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')" (assignment_expression "cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" identifier = (call_expression "FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x154)" * (cast_expression "(undefined4 *)(param_1 + 0x154)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x154)" ( (binary_expression "param_1 + 0x154" identifier + number_literal) )))) , identifier , number_literal , (pointer_expression "&local_21" & identifier) )))) , (binary_expression "cVar12 != '\0' && (local_21 == '\0')" (binary_expression "cVar12 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) && (parenthesized_expression "(local_21 == '\0')" ( (binary_expression "local_21 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )))) )) ))) )) (compound_statement "{\n          FUN_0034d3d0(param_1,local_20[0]);\n        }" { (expression_statement "FUN_0034d3d0(param_1,local_20[0]);" (call_expression "FUN_0034d3d0(param_1,local_20[0])" identifier (argument_list "(param_1,local_20[0])" ( identifier , (subscript_expression "local_20[0]" identifier [ number_literal ]) ))) ;) })) (expression_statement "iVar1 = puVar13[9];" (assignment_expression "iVar1 = puVar13[9]" identifier = (subscript_expression "puVar13[9]" identifier [ number_literal ])) ;) (if_statement "if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }" { (expression_statement "iVar2 = *(int *)(iVar1 + 8);" (assignment_expression "iVar2 = *(int *)(iVar1 + 8)" identifier = (pointer_expression "*(int *)(iVar1 + 8)" * (cast_expression "(int *)(iVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }" { (expression_statement "iVar3 = *(int *)(iVar2 + 8);" (assignment_expression "iVar3 = *(int *)(iVar2 + 8)" identifier = (pointer_expression "*(int *)(iVar2 + 8)" * (cast_expression "(int *)(iVar2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }" { (expression_statement "iVar4 = *(int *)(iVar3 + 8);" (assignment_expression "iVar4 = *(int *)(iVar3 + 8)" identifier = (pointer_expression "*(int *)(iVar3 + 8)" * (cast_expression "(int *)(iVar3 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }" { (expression_statement "iVar5 = *(int *)(iVar4 + 8);" (assignment_expression "iVar5 = *(int *)(iVar4 + 8)" identifier = (pointer_expression "*(int *)(iVar4 + 8)" * (cast_expression "(int *)(iVar4 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 8)" ( (binary_expression "iVar4 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }" { (expression_statement "iVar6 = *(int *)(iVar5 + 8);" (assignment_expression "iVar6 = *(int *)(iVar5 + 8)" identifier = (pointer_expression "*(int *)(iVar5 + 8)" * (cast_expression "(int *)(iVar5 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 8)" ( (binary_expression "iVar5 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }" { (expression_statement "FUN_00350410(iVar6);" (call_expression "FUN_00350410(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))) ;) (expression_statement "FUN_003ae060(iVar6,0xc);" (call_expression "FUN_003ae060(iVar6,0xc)" identifier (argument_list "(iVar6,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "FUN_003ae060(iVar5,0xc);" (call_expression "FUN_003ae060(iVar5,0xc)" identifier (argument_list "(iVar5,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "FUN_003ae060(iVar4,0xc);" (call_expression "FUN_003ae060(iVar4,0xc)" identifier (argument_list "(iVar4,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "FUN_003ae060(iVar3,0xc);" (call_expression "FUN_003ae060(iVar3,0xc)" identifier (argument_list "(iVar3,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "FUN_003ae060(iVar2,0xc);" (call_expression "FUN_003ae060(iVar2,0xc)" identifier (argument_list "(iVar2,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "FUN_003ae060(iVar1,0xc);" (call_expression "FUN_003ae060(iVar1,0xc)" identifier (argument_list "(iVar1,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "FUN_003ae060(puVar13,0x40);" (call_expression "FUN_003ae060(puVar13,0x40)" identifier (argument_list "(puVar13,0x40)" ( identifier , number_literal ))) ;) (expression_statement "puVar13 = local_20[0];" (assignment_expression "puVar13 = local_20[0]" identifier = (subscript_expression "local_20[0]" identifier [ number_literal ])) ;) })) }))) })) (return_statement "return puVar13;" 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/* DWARF original prototype: Sized_symbol<64> * do_define_in_output_segment<64>(Symbol_table * this,\n   char * name, char * version, Defined defined, Output_segment * os, Elf_Addr value, Elf_WXword\n   symsize, STT type, STB binding, STV visibility, uchar nonvis, Segment_offset_base offset_base,\n   bool only_if_ref) */\n\nSized_symbol<64> * __thiscall\ngold::Symbol_table::do_define_in_output_segment<64>\n          (Symbol_table *this,char *name,char *version,Defined defined,Output_segment *os,\n          Elf_Addr value,Elf_WXword symsize,STT type,STB binding,STV visibility,uchar nonvis,\n          Segment_offset_base offset_base,bool only_if_ref)\n\n{\n  undefined1 *puVar1;\n  ushort uVar2;\n  Got_offset_list *pGVar3;\n  Got_offset_list *pGVar4;\n  Got_offset_list *pGVar5;\n  Got_offset_list *pGVar6;\n  Got_offset_list *pGVar7;\n  Got_offset_list *this_00;\n  Elf_Addr EVar8;\n  Elf_WXword EVar9;\n  STV SVar10;\n  int iVar11;\n  bool bVar12;\n  Sized_symbol<64> *fromsym;\n  int unaff_EDI;\n  undefined3 in_stack_00000035;\n  undefined3 in_stack_0000003d;\n  Sized_symbol<64> *__in_chrg;\n  bool resolve_oldsym;\n  bool is_global;\n  Sized_symbol<64> *oldsym;\n  \n  __x86_get_pc_thunk_di();\n  iVar11 = _nonvis;\n  SVar10 = visibility;\n  EVar9 = symsize;\n  EVar8 = value;\n  if (*(int *)(*(int *)(&LAB_0028bae1 + unaff_EDI) + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + 0xe9586),0x69,&UNK_0013b229 + unaff_EDI);\n  }\n  if (*(char *)(*(int *)(*(int *)(*(int *)(&LAB_0028bae1 + unaff_EDI) + 0xc) + 4) + 4) == '\0') {\n    fromsym = define_special_symbol<64,_false>\n                        (this,&name,&version,SUB41(_only_if_ref,0),visibility,&oldsym,\n                         &resolve_oldsym,binding == STB_LOCAL);\n  }\n  else {\n    fromsym = define_special_symbol<64,_true>\n                        (this,&name,&version,SUB41(_only_if_ref,0),visibility,&oldsym,\n                         &resolve_oldsym,binding == STB_LOCAL);\n  }\n  if (fromsym == (Sized_symbol<64> *)0x0) {\n    return (Sized_symbol<64> *)0x0;\n  }\n  (fromsym->super_Symbol).symtab_index_ = 0;\n  (fromsym->super_Symbol).version_ = version;\n  (fromsym->super_Symbol).field_0x29 = (byte)(iVar11 << 2) | (byte)SVar10 & 3;\n  (fromsym->super_Symbol).name_ = name;\n  (fromsym->super_Symbol).dynsym_index_ = 0;\n  (fromsym->super_Symbol).field_0x28 = (undefined1)type & STT_HIPROC | (undefined1)binding << 4;\n  (fromsym->super_Symbol).plt_offset_ = 0xffffffff;\n  (fromsym->super_Symbol).u1_.output_segment = os;\n  (fromsym->super_Symbol).got_offsets_.got_type_ = 0xffffffff;\n  (fromsym->super_Symbol).u2_.offset_base = offset_base;\n  uVar2 = *(ushort *)&(fromsym->super_Symbol).field_0x2a;\n  (fromsym->super_Symbol).got_offsets_.got_offset_ = 0;\n  (fromsym->super_Symbol).got_offsets_.got_next_ = (Got_offset_list *)0x0;\n  *(ushort *)&(fromsym->super_Symbol).field_0x2a = uVar2 & 0x200 | 0x4082;\n  (fromsym->super_Symbol).field_0x2c =\n       (fromsym->super_Symbol).field_0x2c & 0xe0 | (defined == PREDEFINED) << 2;\n  fromsym->value_ = EVar8;\n  fromsym->symsize_ = EVar9;\n  if (oldsym == (Sized_symbol<64> *)0x0) {\n    if (binding != STB_LOCAL) {\n      bVar12 = Version_script_info::get_symbol_version\n                         (this->version_script_,name,(string *)0x0,&is_global);\n      if ((!bVar12) || (is_global != false)) {\n        if (version == (char *)0x0) {\n          return fromsym;\n        }\n        puVar1 = &(fromsym->super_Symbol).field_0x2a;\n        *puVar1 = *puVar1 | 8;\n        return fromsym;\n      }\n    }\n    force_local(this,&fromsym->super_Symbol);\n    return fromsym;\n  }\n  bVar12 = should_override_with_special(&oldsym->super_Symbol,type,defined);\n  if (bVar12) {\n    override_with_special<64>(this,oldsym,fromsym);\n  }\n  if (resolve_oldsym != false) {\n    return fromsym;\n  }\n  if (binding != STB_LOCAL) {\n    __in_chrg = (Sized_symbol<64> *)name;\n    bVar12 = Version_script_info::get_symbol_version\n                       (this->version_script_,name,(string *)0x0,&is_global);\n    if ((!bVar12) || (is_global != false)) goto LAB_0035ee7f;\n  }\n  __in_chrg = oldsym;\n  force_local(this,&oldsym->super_Symbol);\nLAB_0035ee7f:\n  pGVar3 = (fromsym->super_Symbol).got_offsets_.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          pGVar7 = pGVar6->got_next_;\n          if (pGVar7 != (Got_offset_list *)0x0) {\n            this_00 = pGVar7->got_next_;\n            if (this_00 != (Got_offset_list *)0x0) {\n              Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);\n              operator_delete(this_00,0xc);\n            }\n            operator_delete(pGVar7,0xc);\n          }\n          operator_delete(pGVar6,0xc);\n        }\n        operator_delete(pGVar5,0xc);\n      }\n      operator_delete(pGVar4,0xc);\n    }\n    operator_delete(pGVar3,0xc);\n  }\n  operator_delete(fromsym,0x40);\n  return oldsym;\n}\n\n" comment comment comment (ERROR "Sized_symbol<64> * __thiscall\ngold::Symbol_table::do_define_in_output_segment<64>\n          (Symbol_table *this,char *name,char *version,Defined defined,Output_segment *os,\n          Elf_Addr value,Elf_WXword symsize,STT type,STB binding,STV visibility,uchar nonvis,\n          Segment_offset_base offset_base,bool only_if_ref)" (binary_expression "Sized_symbol<64> * __thiscall\ngold::Symbol_table::do_define_in_output_segment<64>\n          (Symbol_table *this,char *name,char *version,Defined defined,Output_segment *os,\n          Elf_Addr value,Elf_WXword symsize,STT type,STB binding,STV visibility,uchar nonvis,\n          Segment_offset_base offset_base,bool only_if_ref)" (binary_expression "Sized_symbol<64> * __thiscall\ngold::Symbol_table::do_define_in_output_segment<64" (binary_expression "Sized_symbol<64> * __thiscall\ngold::Symbol_table::do_define_in_output_segment" (binary_expression "Sized_symbol<64" identifier < number_literal) > (ERROR "* __thiscall\ngold::Symbol_table::" (pointer_expression "* __thiscall" * identifier) identifier : : identifier : :) identifier) < number_literal) > (parenthesized_expression "(Symbol_table *this,char *name,char *version,Defined defined,Output_segment *os,\n          Elf_Addr value,Elf_WXword symsize,STT type,STB binding,STV visibility,uchar nonvis,\n          Segment_offset_base offset_base,bool only_if_ref)" ( (comma_expression "Symbol_table *this,char *name,char *version,Defined defined,Output_segment *os,\n          Elf_Addr value,Elf_WXword symsize,STT type,STB binding,STV visibility,uchar nonvis,\n          Segment_offset_base offset_base,bool only_if_ref" (binary_expression "Symbol_table *this" identifier * identifier) , (comma_expression "char *name,char *version,Defined defined,Output_segment *os,\n          Elf_Addr value,Elf_WXword symsize,STT type,STB binding,STV visibility,uchar nonvis,\n          Segment_offset_base offset_base,bool only_if_ref" (binary_expression "char *name" identifier * identifier) , (comma_expression "char *version,Defined defined,Output_segment *os,\n          Elf_Addr value,Elf_WXword symsize,STT type,STB binding,STV visibility,uchar nonvis,\n          Segment_offset_base offset_base,bool only_if_ref" (binary_expression "char *version" identifier * identifier) , (ERROR "Defined defined,Output_segment *os,\n          Elf_Addr value,Elf_WXword symsize,STT type,STB" identifier (comma_expression "defined,Output_segment *os,\n          Elf_Addr value,Elf_WXword symsize,STT type,STB" identifier , (comma_expression "Output_segment *os,\n          Elf_Addr value,Elf_WXword symsize,STT type,STB" (binary_expression "Output_segment *os" 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          Segment_offset_base offset_base,bool only_if_ref" identifier , (ERROR "STV" identifier) (comma_expression "visibility,uchar nonvis,\n          Segment_offset_base offset_base,bool only_if_ref" identifier , (ERROR "uchar" identifier) (comma_expression "nonvis,\n          Segment_offset_base offset_base,bool only_if_ref" identifier , (comma_expression "Segment_offset_base offset_base,bool only_if_ref" identifier (ERROR "offset_base" identifier) , (ERROR "bool" identifier) identifier))))))) )))) (compound_statement "{\n  undefined1 *puVar1;\n  ushort uVar2;\n  Got_offset_list *pGVar3;\n  Got_offset_list *pGVar4;\n  Got_offset_list *pGVar5;\n  Got_offset_list *pGVar6;\n  Got_offset_list *pGVar7;\n  Got_offset_list *this_00;\n  Elf_Addr EVar8;\n  Elf_WXword EVar9;\n  STV SVar10;\n  int iVar11;\n  bool bVar12;\n  Sized_symbol<64> *fromsym;\n  int unaff_EDI;\n  undefined3 in_stack_00000035;\n  undefined3 in_stack_0000003d;\n  Sized_symbol<64> *__in_chrg;\n  bool resolve_oldsym;\n  bool is_global;\n  Sized_symbol<64> *oldsym;\n  \n  __x86_get_pc_thunk_di();\n  iVar11 = _nonvis;\n  SVar10 = visibility;\n  EVar9 = symsize;\n  EVar8 = value;\n  if (*(int *)(*(int *)(&LAB_0028bae1 + unaff_EDI) + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + 0xe9586),0x69,&UNK_0013b229 + unaff_EDI);\n  }\n  if (*(char *)(*(int *)(*(int *)(*(int *)(&LAB_0028bae1 + unaff_EDI) + 0xc) + 4) + 4) == '\0') {\n    fromsym = define_special_symbol<64,_false>\n                        (this,&name,&version,SUB41(_only_if_ref,0),visibility,&oldsym,\n                         &resolve_oldsym,binding == STB_LOCAL);\n  }\n  else {\n    fromsym = define_special_symbol<64,_true>\n                        (this,&name,&version,SUB41(_only_if_ref,0),visibility,&oldsym,\n                         &resolve_oldsym,binding == STB_LOCAL);\n  }\n  if (fromsym == (Sized_symbol<64> *)0x0) {\n    return (Sized_symbol<64> *)0x0;\n  }\n  (fromsym->super_Symbol).symtab_index_ = 0;\n  (fromsym->super_Symbol).version_ = version;\n  (fromsym->super_Symbol).field_0x29 = (byte)(iVar11 << 2) | (byte)SVar10 & 3;\n  (fromsym->super_Symbol).name_ = name;\n  (fromsym->super_Symbol).dynsym_index_ = 0;\n  (fromsym->super_Symbol).field_0x28 = (undefined1)type & STT_HIPROC | (undefined1)binding << 4;\n  (fromsym->super_Symbol).plt_offset_ = 0xffffffff;\n  (fromsym->super_Symbol).u1_.output_segment = os;\n  (fromsym->super_Symbol).got_offsets_.got_type_ = 0xffffffff;\n  (fromsym->super_Symbol).u2_.offset_base = offset_base;\n  uVar2 = *(ushort *)&(fromsym->super_Symbol).field_0x2a;\n  (fromsym->super_Symbol).got_offsets_.got_offset_ = 0;\n  (fromsym->super_Symbol).got_offsets_.got_next_ = (Got_offset_list *)0x0;\n  *(ushort *)&(fromsym->super_Symbol).field_0x2a = uVar2 & 0x200 | 0x4082;\n  (fromsym->super_Symbol).field_0x2c =\n       (fromsym->super_Symbol).field_0x2c & 0xe0 | (defined == PREDEFINED) << 2;\n  fromsym->value_ = EVar8;\n  fromsym->symsize_ = EVar9;\n  if (oldsym == (Sized_symbol<64> *)0x0) {\n    if (binding != STB_LOCAL) {\n      bVar12 = Version_script_info::get_symbol_version\n                         (this->version_script_,name,(string *)0x0,&is_global);\n      if ((!bVar12) || (is_global != false)) {\n        if (version == (char *)0x0) {\n          return fromsym;\n        }\n        puVar1 = &(fromsym->super_Symbol).field_0x2a;\n        *puVar1 = *puVar1 | 8;\n        return fromsym;\n      }\n    }\n    force_local(this,&fromsym->super_Symbol);\n    return fromsym;\n  }\n  bVar12 = should_override_with_special(&oldsym->super_Symbol,type,defined);\n  if (bVar12) {\n    override_with_special<64>(this,oldsym,fromsym);\n  }\n  if (resolve_oldsym != false) {\n    return fromsym;\n  }\n  if (binding != STB_LOCAL) {\n    __in_chrg = (Sized_symbol<64> *)name;\n    bVar12 = Version_script_info::get_symbol_version\n                       (this->version_script_,name,(string *)0x0,&is_global);\n    if ((!bVar12) || (is_global != false)) goto LAB_0035ee7f;\n  }\n  __in_chrg = oldsym;\n  force_local(this,&oldsym->super_Symbol);\nLAB_0035ee7f:\n  pGVar3 = (fromsym->super_Symbol).got_offsets_.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          pGVar7 = pGVar6->got_next_;\n          if (pGVar7 != (Got_offset_list *)0x0) {\n            this_00 = pGVar7->got_next_;\n            if (this_00 != (Got_offset_list *)0x0) {\n              Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);\n              operator_delete(this_00,0xc);\n            }\n            operator_delete(pGVar7,0xc);\n          }\n          operator_delete(pGVar6,0xc);\n        }\n        operator_delete(pGVar5,0xc);\n      }\n      operator_delete(pGVar4,0xc);\n    }\n    operator_delete(pGVar3,0xc);\n  }\n  operator_delete(fromsym,0x40);\n  return oldsym;\n}" { (declaration "undefined1 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "ushort uVar2;" type_identifier 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 *pGVar7;" type_identifier (pointer_declarator "*pGVar7" * identifier) ;) (declaration "Got_offset_list *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "Elf_Addr EVar8;" type_identifier identifier ;) (declaration "Elf_WXword EVar9;" type_identifier identifier ;) (declaration "STV SVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (expression_statement "Sized_symbol<64> *fromsym;" (binary_expression "Sized_symbol<64> *fromsym" (binary_expression "Sized_symbol<64" identifier < number_literal) > (pointer_expression "*fromsym" * identifier)) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined3 in_stack_00000035;" type_identifier identifier ;) (declaration "undefined3 in_stack_0000003d;" type_identifier identifier ;) (expression_statement "Sized_symbol<64> *__in_chrg;" (binary_expression "Sized_symbol<64> *__in_chrg" (binary_expression "Sized_symbol<64" identifier < number_literal) > (pointer_expression "*__in_chrg" * identifier)) ;) (declaration "bool resolve_oldsym;" primitive_type identifier ;) (declaration "bool is_global;" primitive_type identifier ;) (expression_statement "Sized_symbol<64> *oldsym;" (binary_expression "Sized_symbol<64> *oldsym" (binary_expression "Sized_symbol<64" identifier < number_literal) > (pointer_expression "*oldsym" * identifier)) ;) (expression_statement "__x86_get_pc_thunk_di();" (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar11 = _nonvis;" (assignment_expression "iVar11 = _nonvis" identifier = identifier) ;) (expression_statement "SVar10 = visibility;" (assignment_expression "SVar10 = visibility" identifier = identifier) ;) (expression_statement "EVar9 = symsize;" (assignment_expression "EVar9 = symsize" identifier = identifier) ;) (expression_statement "EVar8 = value;" (assignment_expression "EVar8 = value" identifier = identifier) ;) (if_statement "if (*(int *)(*(int *)(&LAB_0028bae1 + unaff_EDI) + 0xc) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + 0xe9586),0x69,&UNK_0013b229 + unaff_EDI);\n  }" if (parenthesized_expression "(*(int *)(*(int *)(&LAB_0028bae1 + unaff_EDI) + 0xc) == 0)" ( (binary_expression "*(int *)(*(int *)(&LAB_0028bae1 + unaff_EDI) + 0xc) == 0" (pointer_expression "*(int *)(*(int *)(&LAB_0028bae1 + unaff_EDI) + 0xc)" * (cast_expression "(int *)(*(int *)(&LAB_0028bae1 + unaff_EDI) + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(&LAB_0028bae1 + unaff_EDI) + 0xc)" ( (binary_expression "*(int *)(&LAB_0028bae1 + unaff_EDI) + 0xc" (pointer_expression "*(int *)(&LAB_0028bae1 + unaff_EDI)" * (cast_expression "(int *)(&LAB_0028bae1 + unaff_EDI)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&LAB_0028bae1 + unaff_EDI)" ( (binary_expression "&LAB_0028bae1 + unaff_EDI" (pointer_expression "&LAB_0028bae1" & identifier) + identifier) )))) + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable((char *)(unaff_EDI + 0xe9586),0x69,&UNK_0013b229 + unaff_EDI);\n  }" { comment (expression_statement "do_gold_unreachable((char *)(unaff_EDI + 0xe9586),0x69,&UNK_0013b229 + unaff_EDI);" (call_expression "do_gold_unreachable((char *)(unaff_EDI + 0xe9586),0x69,&UNK_0013b229 + unaff_EDI)" identifier (argument_list "((char *)(unaff_EDI + 0xe9586),0x69,&UNK_0013b229 + unaff_EDI)" ( (cast_expression "(char *)(unaff_EDI + 0xe9586)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0xe9586)" ( (binary_expression "unaff_EDI + 0xe9586" identifier + number_literal) ))) , number_literal , (binary_expression "&UNK_0013b229 + unaff_EDI" (pointer_expression "&UNK_0013b229" & identifier) + identifier) ))) ;) })) (if_statement "if (*(char *)(*(int *)(*(int *)(*(int *)(&LAB_0028bae1 + unaff_EDI) + 0xc) + 4) + 4) == '\0') {\n    fromsym = define_special_symbol<64,_false>\n                        (this,&name,&version,SUB41(_only_if_ref,0),visibility,&oldsym,\n                         &resolve_oldsym,binding == STB_LOCAL);\n  }\n  else {\n    fromsym = define_special_symbol<64,_true>\n                        (this,&name,&version,SUB41(_only_if_ref,0),visibility,&oldsym,\n                         &resolve_oldsym,binding == STB_LOCAL);\n  }" if (parenthesized_expression "(*(char *)(*(int *)(*(int *)(*(int *)(&LAB_0028bae1 + unaff_EDI) + 0xc) + 4) + 4) == '\0')" ( (binary_expression "*(char *)(*(int *)(*(int *)(*(int *)(&LAB_0028bae1 + unaff_EDI) + 0xc) + 4) + 4) == '\0'" (pointer_expression "*(char *)(*(int *)(*(int *)(*(int *)(&LAB_0028bae1 + unaff_EDI) + 0xc) + 4) + 4)" * (cast_expression "(char *)(*(int *)(*(int *)(*(int *)(&LAB_0028bae1 + unaff_EDI) + 0xc) + 4) + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(*(int *)(&LAB_0028bae1 + unaff_EDI) + 0xc) + 4) + 4)" ( (binary_expression "*(int *)(*(int *)(*(int *)(&LAB_0028bae1 + unaff_EDI) + 0xc) + 4) + 4" (pointer_expression "*(int *)(*(int *)(*(int *)(&LAB_0028bae1 + unaff_EDI) + 0xc) + 4)" * (cast_expression "(int *)(*(int *)(*(int *)(&LAB_0028bae1 + unaff_EDI) + 0xc) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(&LAB_0028bae1 + unaff_EDI) + 0xc) + 4)" ( (binary_expression "*(int *)(*(int *)(&LAB_0028bae1 + unaff_EDI) + 0xc) + 4" (pointer_expression "*(int *)(*(int *)(&LAB_0028bae1 + unaff_EDI) + 0xc)" * (cast_expression "(int *)(*(int *)(&LAB_0028bae1 + unaff_EDI) + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(&LAB_0028bae1 + unaff_EDI) + 0xc)" ( (binary_expression "*(int *)(&LAB_0028bae1 + unaff_EDI) + 0xc" (pointer_expression "*(int *)(&LAB_0028bae1 + unaff_EDI)" * (cast_expression "(int *)(&LAB_0028bae1 + unaff_EDI)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&LAB_0028bae1 + unaff_EDI)" ( (binary_expression "&LAB_0028bae1 + unaff_EDI" (pointer_expression "&LAB_0028bae1" & identifier) + identifier) )))) + number_literal) )))) + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    fromsym = define_special_symbol<64,_false>\n                        (this,&name,&version,SUB41(_only_if_ref,0),visibility,&oldsym,\n                         &resolve_oldsym,binding == STB_LOCAL);\n  }" { (expression_statement "fromsym = define_special_symbol<64,_false>\n                        (this,&name,&version,SUB41(_only_if_ref,0),visibility,&oldsym,\n                         &resolve_oldsym,binding == STB_LOCAL);" (comma_expression "fromsym = define_special_symbol<64,_false>\n                        (this,&name,&version,SUB41(_only_if_ref,0),visibility,&oldsym,\n                         &resolve_oldsym,binding == STB_LOCAL)" (assignment_expression "fromsym = define_special_symbol<64" identifier = (binary_expression "define_special_symbol<64" identifier < number_literal)) , (binary_expression "_false>\n                        (this,&name,&version,SUB41(_only_if_ref,0),visibility,&oldsym,\n                         &resolve_oldsym,binding == STB_LOCAL)" identifier > (parenthesized_expression "(this,&name,&version,SUB41(_only_if_ref,0),visibility,&oldsym,\n                         &resolve_oldsym,binding == STB_LOCAL)" ( (comma_expression "this,&name,&version,SUB41(_only_if_ref,0),visibility,&oldsym,\n                         &resolve_oldsym,binding == STB_LOCAL" identifier , (comma_expression "&name,&version,SUB41(_only_if_ref,0),visibility,&oldsym,\n                         &resolve_oldsym,binding == STB_LOCAL" (pointer_expression "&name" & identifier) , (comma_expression "&version,SUB41(_only_if_ref,0),visibility,&oldsym,\n                         &resolve_oldsym,binding == STB_LOCAL" (pointer_expression "&version" & identifier) , (comma_expression "SUB41(_only_if_ref,0),visibility,&oldsym,\n                         &resolve_oldsym,binding == STB_LOCAL" (call_expression "SUB41(_only_if_ref,0)" identifier (argument_list "(_only_if_ref,0)" ( identifier , number_literal ))) , (comma_expression "visibility,&oldsym,\n                         &resolve_oldsym,binding == STB_LOCAL" identifier , (comma_expression "&oldsym,\n                         &resolve_oldsym,binding == STB_LOCAL" (pointer_expression "&oldsym" & identifier) , (comma_expression "&resolve_oldsym,binding == STB_LOCAL" (pointer_expression "&resolve_oldsym" & identifier) , (binary_expression "binding == STB_LOCAL" identifier == identifier)))))))) )))) ;) }) (else_clause "else {\n    fromsym = define_special_symbol<64,_true>\n                        (this,&name,&version,SUB41(_only_if_ref,0),visibility,&oldsym,\n                         &resolve_oldsym,binding == STB_LOCAL);\n  }" else (compound_statement "{\n    fromsym = define_special_symbol<64,_true>\n                        (this,&name,&version,SUB41(_only_if_ref,0),visibility,&oldsym,\n                         &resolve_oldsym,binding == STB_LOCAL);\n  }" { (expression_statement "fromsym = define_special_symbol<64,_true>\n                        (this,&name,&version,SUB41(_only_if_ref,0),visibility,&oldsym,\n                         &resolve_oldsym,binding == STB_LOCAL);" (comma_expression "fromsym = define_special_symbol<64,_true>\n                        (this,&name,&version,SUB41(_only_if_ref,0),visibility,&oldsym,\n                         &resolve_oldsym,binding == STB_LOCAL)" (assignment_expression "fromsym = define_special_symbol<64" identifier = (binary_expression "define_special_symbol<64" identifier < number_literal)) , (binary_expression "_true>\n                        (this,&name,&version,SUB41(_only_if_ref,0),visibility,&oldsym,\n                         &resolve_oldsym,binding == STB_LOCAL)" identifier > (parenthesized_expression "(this,&name,&version,SUB41(_only_if_ref,0),visibility,&oldsym,\n                         &resolve_oldsym,binding == STB_LOCAL)" ( (comma_expression "this,&name,&version,SUB41(_only_if_ref,0),visibility,&oldsym,\n                         &resolve_oldsym,binding == STB_LOCAL" identifier , (comma_expression "&name,&version,SUB41(_only_if_ref,0),visibility,&oldsym,\n                         &resolve_oldsym,binding == STB_LOCAL" (pointer_expression "&name" & identifier) , (comma_expression "&version,SUB41(_only_if_ref,0),visibility,&oldsym,\n                         &resolve_oldsym,binding == STB_LOCAL" (pointer_expression "&version" & identifier) , (comma_expression "SUB41(_only_if_ref,0),visibility,&oldsym,\n                         &resolve_oldsym,binding == STB_LOCAL" (call_expression "SUB41(_only_if_ref,0)" identifier (argument_list "(_only_if_ref,0)" ( identifier , number_literal ))) , (comma_expression "visibility,&oldsym,\n                         &resolve_oldsym,binding == STB_LOCAL" identifier , (comma_expression "&oldsym,\n                         &resolve_oldsym,binding == STB_LOCAL" (pointer_expression "&oldsym" & identifier) , (comma_expression "&resolve_oldsym,binding == STB_LOCAL" (pointer_expression "&resolve_oldsym" & identifier) , (binary_expression "binding == STB_LOCAL" identifier == identifier)))))))) )))) ;) }))) (if_statement "if (fromsym == (Sized_symbol<64> *)0x0) {\n    return (Sized_symbol<64> *)0x0;\n  }" if (parenthesized_expression "(fromsym == (Sized_symbol<64> *)0x0)" ( (binary_expression "fromsym == (Sized_symbol<64> *)0x0)" identifier == (parenthesized_expression "(Sized_symbol<64> *)0x0)" ( (binary_expression "Sized_symbol<64> *)0x0" (binary_expression "Sized_symbol<64" identifier < number_literal) > (pointer_expression "*)0x0" * (ERROR ")" )) number_literal)) ))) )) (compound_statement "{\n    return (Sized_symbol<64> *)0x0;\n  }" { (return_statement "return (Sized_symbol<64> *)0x0;" return (parenthesized_expression "(Sized_symbol<64> *)0x0" ( (binary_expression "Sized_symbol<64> *)0x0" (binary_expression "Sized_symbol<64" identifier < number_literal) > (pointer_expression "*)0x0" * (ERROR ")" )) number_literal)) )) ;) })) (expression_statement "(fromsym->super_Symbol).symtab_index_ = 0;" (assignment_expression "(fromsym->super_Symbol).symtab_index_ = 0" (field_expression "(fromsym->super_Symbol).symtab_index_" (parenthesized_expression "(fromsym->super_Symbol)" ( (field_expression "fromsym->super_Symbol" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(fromsym->super_Symbol).version_ = version;" (assignment_expression "(fromsym->super_Symbol).version_ = version" (field_expression "(fromsym->super_Symbol).version_" (parenthesized_expression "(fromsym->super_Symbol)" ( (field_expression "fromsym->super_Symbol" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(fromsym->super_Symbol).field_0x29 = (byte)(iVar11 << 2) | (byte)SVar10 & 3;" (assignment_expression "(fromsym->super_Symbol).field_0x29 = (byte)(iVar11 << 2) | (byte)SVar10 & 3" (field_expression "(fromsym->super_Symbol).field_0x29" (parenthesized_expression "(fromsym->super_Symbol)" ( (field_expression "fromsym->super_Symbol" identifier -> field_identifier) )) . field_identifier) = (binary_expression "(byte)(iVar11 << 2) | (byte)SVar10 & 3" (call_expression "(byte)(iVar11 << 2)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(iVar11 << 2)" ( (binary_expression "iVar11 << 2" identifier << number_literal) ))) | (binary_expression "(byte)SVar10 & 3" (cast_expression "(byte)SVar10" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal))) ;) (expression_statement "(fromsym->super_Symbol).name_ = name;" (assignment_expression "(fromsym->super_Symbol).name_ = name" (field_expression "(fromsym->super_Symbol).name_" (parenthesized_expression "(fromsym->super_Symbol)" ( (field_expression "fromsym->super_Symbol" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(fromsym->super_Symbol).dynsym_index_ = 0;" (assignment_expression "(fromsym->super_Symbol).dynsym_index_ = 0" (field_expression "(fromsym->super_Symbol).dynsym_index_" (parenthesized_expression "(fromsym->super_Symbol)" ( (field_expression "fromsym->super_Symbol" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(fromsym->super_Symbol).field_0x28 = (undefined1)type & STT_HIPROC | (undefined1)binding << 4;" (assignment_expression "(fromsym->super_Symbol).field_0x28 = (undefined1)type & STT_HIPROC | (undefined1)binding << 4" (field_expression "(fromsym->super_Symbol).field_0x28" (parenthesized_expression "(fromsym->super_Symbol)" ( (field_expression "fromsym->super_Symbol" identifier -> field_identifier) )) . field_identifier) = (binary_expression "(undefined1)type & STT_HIPROC | (undefined1)binding << 4" (binary_expression "(undefined1)type & STT_HIPROC" (cast_expression "(undefined1)type" ( (type_descriptor "undefined1" type_identifier) ) identifier) & identifier) | (binary_expression "(undefined1)binding << 4" (cast_expression "(undefined1)binding" ( (type_descriptor "undefined1" type_identifier) ) identifier) << number_literal))) ;) (expression_statement "(fromsym->super_Symbol).plt_offset_ = 0xffffffff;" (assignment_expression "(fromsym->super_Symbol).plt_offset_ = 0xffffffff" (field_expression "(fromsym->super_Symbol).plt_offset_" (parenthesized_expression "(fromsym->super_Symbol)" ( (field_expression "fromsym->super_Symbol" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(fromsym->super_Symbol).u1_.output_segment = os;" (assignment_expression "(fromsym->super_Symbol).u1_.output_segment = os" (field_expression "(fromsym->super_Symbol).u1_.output_segment" (field_expression "(fromsym->super_Symbol).u1_" (parenthesized_expression "(fromsym->super_Symbol)" ( (field_expression "fromsym->super_Symbol" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(fromsym->super_Symbol).got_offsets_.got_type_ = 0xffffffff;" (assignment_expression "(fromsym->super_Symbol).got_offsets_.got_type_ = 0xffffffff" (field_expression "(fromsym->super_Symbol).got_offsets_.got_type_" (field_expression "(fromsym->super_Symbol).got_offsets_" (parenthesized_expression "(fromsym->super_Symbol)" ( (field_expression "fromsym->super_Symbol" identifier -> field_identifier) )) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "(fromsym->super_Symbol).u2_.offset_base = offset_base;" (assignment_expression "(fromsym->super_Symbol).u2_.offset_base = offset_base" (field_expression "(fromsym->super_Symbol).u2_.offset_base" (field_expression "(fromsym->super_Symbol).u2_" (parenthesized_expression "(fromsym->super_Symbol)" ( (field_expression "fromsym->super_Symbol" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "uVar2 = *(ushort *)&(fromsym->super_Symbol).field_0x2a;" (assignment_expression "uVar2 = *(ushort *)&(fromsym->super_Symbol).field_0x2a" identifier = (pointer_expression "*(ushort *)&(fromsym->super_Symbol).field_0x2a" * (cast_expression "(ushort *)&(fromsym->super_Symbol).field_0x2a" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(fromsym->super_Symbol).field_0x2a" & (field_expression "(fromsym->super_Symbol).field_0x2a" (parenthesized_expression "(fromsym->super_Symbol)" ( (field_expression "fromsym->super_Symbol" identifier -> field_identifier) )) . field_identifier))))) ;) (expression_statement "(fromsym->super_Symbol).got_offsets_.got_offset_ = 0;" (assignment_expression "(fromsym->super_Symbol).got_offsets_.got_offset_ = 0" (field_expression "(fromsym->super_Symbol).got_offsets_.got_offset_" (field_expression "(fromsym->super_Symbol).got_offsets_" (parenthesized_expression "(fromsym->super_Symbol)" ( (field_expression "fromsym->super_Symbol" identifier -> field_identifier) )) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "(fromsym->super_Symbol).got_offsets_.got_next_ = (Got_offset_list *)0x0;" (assignment_expression "(fromsym->super_Symbol).got_offsets_.got_next_ = (Got_offset_list *)0x0" (field_expression "(fromsym->super_Symbol).got_offsets_.got_next_" (field_expression "(fromsym->super_Symbol).got_offsets_" (parenthesized_expression "(fromsym->super_Symbol)" ( (field_expression "fromsym->super_Symbol" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (cast_expression "(Got_offset_list *)0x0" ( (type_descriptor "Got_offset_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(ushort *)&(fromsym->super_Symbol).field_0x2a = uVar2 & 0x200 | 0x4082;" (assignment_expression "*(ushort *)&(fromsym->super_Symbol).field_0x2a = uVar2 & 0x200 | 0x4082" (pointer_expression "*(ushort *)&(fromsym->super_Symbol).field_0x2a" * (cast_expression "(ushort *)&(fromsym->super_Symbol).field_0x2a" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(fromsym->super_Symbol).field_0x2a" & (field_expression "(fromsym->super_Symbol).field_0x2a" (parenthesized_expression "(fromsym->super_Symbol)" ( (field_expression "fromsym->super_Symbol" identifier -> field_identifier) )) . field_identifier)))) = (binary_expression "uVar2 & 0x200 | 0x4082" (binary_expression "uVar2 & 0x200" identifier & number_literal) | number_literal)) ;) (expression_statement "(fromsym->super_Symbol).field_0x2c =\n       (fromsym->super_Symbol).field_0x2c & 0xe0 | (defined == PREDEFINED) << 2;" (assignment_expression "(fromsym->super_Symbol).field_0x2c =\n       (fromsym->super_Symbol).field_0x2c & 0xe0 | (defined == PREDEFINED) << 2" (field_expression "(fromsym->super_Symbol).field_0x2c" (parenthesized_expression "(fromsym->super_Symbol)" ( (field_expression "fromsym->super_Symbol" identifier -> field_identifier) )) . field_identifier) = (binary_expression "(fromsym->super_Symbol).field_0x2c & 0xe0 | (defined == PREDEFINED) << 2" (binary_expression "(fromsym->super_Symbol).field_0x2c & 0xe0" (field_expression "(fromsym->super_Symbol).field_0x2c" (parenthesized_expression "(fromsym->super_Symbol)" ( (field_expression "fromsym->super_Symbol" identifier -> field_identifier) )) . field_identifier) & number_literal) | (binary_expression "(defined == PREDEFINED) << 2" (parenthesized_expression "(defined == PREDEFINED)" ( (binary_expression "defined == PREDEFINED" identifier == identifier) )) << number_literal))) ;) (expression_statement "fromsym->value_ = EVar8;" (assignment_expression "fromsym->value_ = EVar8" (field_expression "fromsym->value_" identifier -> field_identifier) = identifier) ;) (expression_statement "fromsym->symsize_ = EVar9;" (assignment_expression "fromsym->symsize_ = EVar9" (field_expression "fromsym->symsize_" identifier -> field_identifier) = identifier) ;) (if_statement "if (oldsym == (Sized_symbol<64> *)0x0) {\n    if (binding != STB_LOCAL) {\n      bVar12 = Version_script_info::get_symbol_version\n                         (this->version_script_,name,(string *)0x0,&is_global);\n      if ((!bVar12) || (is_global != false)) {\n        if (version == (char *)0x0) {\n          return fromsym;\n        }\n        puVar1 = &(fromsym->super_Symbol).field_0x2a;\n        *puVar1 = *puVar1 | 8;\n        return fromsym;\n      }\n    }\n    force_local(this,&fromsym->super_Symbol);\n    return fromsym;\n  }" if (parenthesized_expression "(oldsym == (Sized_symbol<64> *)0x0)" ( (binary_expression "oldsym == (Sized_symbol<64> *)0x0)" identifier == (parenthesized_expression "(Sized_symbol<64> *)0x0)" ( (binary_expression "Sized_symbol<64> *)0x0" (binary_expression "Sized_symbol<64" identifier < number_literal) > (pointer_expression "*)0x0" * (ERROR ")" )) number_literal)) ))) )) (compound_statement "{\n    if (binding != STB_LOCAL) {\n      bVar12 = Version_script_info::get_symbol_version\n                         (this->version_script_,name,(string *)0x0,&is_global);\n      if ((!bVar12) || (is_global != false)) {\n        if (version == (char *)0x0) {\n          return fromsym;\n        }\n        puVar1 = &(fromsym->super_Symbol).field_0x2a;\n        *puVar1 = *puVar1 | 8;\n        return fromsym;\n      }\n    }\n    force_local(this,&fromsym->super_Symbol);\n    return fromsym;\n  }" { (if_statement "if (binding != STB_LOCAL) {\n      bVar12 = Version_script_info::get_symbol_version\n                         (this->version_script_,name,(string *)0x0,&is_global);\n      if ((!bVar12) || (is_global != false)) {\n        if (version == (char *)0x0) {\n          return fromsym;\n        }\n        puVar1 = &(fromsym->super_Symbol).field_0x2a;\n        *puVar1 = *puVar1 | 8;\n        return fromsym;\n      }\n    }" if (parenthesized_expression "(binding != STB_LOCAL)" ( (binary_expression "binding != STB_LOCAL" identifier != identifier) )) (compound_statement "{\n      bVar12 = Version_script_info::get_symbol_version\n                         (this->version_script_,name,(string *)0x0,&is_global);\n      if ((!bVar12) || (is_global != false)) {\n        if (version == (char *)0x0) {\n          return fromsym;\n        }\n        puVar1 = &(fromsym->super_Symbol).field_0x2a;\n        *puVar1 = *puVar1 | 8;\n        return fromsym;\n      }\n    }" { (ERROR "bVar12 = Version_script_info::" (assignment_expression "bVar12 = Version_script_info" identifier = identifier) : :) (expression_statement "get_symbol_version\n                         (this->version_script_,name,(string *)0x0,&is_global);" (call_expression "get_symbol_version\n                         (this->version_script_,name,(string *)0x0,&is_global)" identifier (argument_list "(this->version_script_,name,(string *)0x0,&is_global)" ( (field_expression "this->version_script_" identifier -> field_identifier) , identifier , (cast_expression "(string *)0x0" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (pointer_expression "&is_global" & identifier) ))) ;) (if_statement "if ((!bVar12) || (is_global != false)) {\n        if (version == (char *)0x0) {\n          return fromsym;\n        }\n        puVar1 = &(fromsym->super_Symbol).field_0x2a;\n        *puVar1 = *puVar1 | 8;\n        return fromsym;\n      }" if (parenthesized_expression "((!bVar12) || (is_global != false))" ( (binary_expression "(!bVar12) || (is_global != false)" (parenthesized_expression "(!bVar12)" ( (unary_expression "!bVar12" ! identifier) )) || (parenthesized_expression "(is_global != false)" ( (binary_expression "is_global != false" identifier != false) ))) )) (compound_statement "{\n        if (version == (char *)0x0) {\n          return fromsym;\n        }\n        puVar1 = &(fromsym->super_Symbol).field_0x2a;\n        *puVar1 = *puVar1 | 8;\n        return fromsym;\n      }" { (if_statement "if (version == (char *)0x0) {\n          return fromsym;\n        }" if (parenthesized_expression "(version == (char *)0x0)" ( (binary_expression "version == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          return fromsym;\n        }" { (return_statement "return fromsym;" return identifier ;) })) (expression_statement "puVar1 = &(fromsym->super_Symbol).field_0x2a;" (assignment_expression "puVar1 = &(fromsym->super_Symbol).field_0x2a" identifier = (pointer_expression "&(fromsym->super_Symbol).field_0x2a" & (field_expression "(fromsym->super_Symbol).field_0x2a" (parenthesized_expression "(fromsym->super_Symbol)" ( (field_expression "fromsym->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 fromsym;" return identifier ;) })) })) (expression_statement "force_local(this,&fromsym->super_Symbol);" (call_expression "force_local(this,&fromsym->super_Symbol)" identifier (argument_list "(this,&fromsym->super_Symbol)" ( identifier , (pointer_expression "&fromsym->super_Symbol" & (field_expression "fromsym->super_Symbol" identifier -> field_identifier)) ))) ;) (return_statement "return fromsym;" return identifier ;) })) (expression_statement "bVar12 = should_override_with_special(&oldsym->super_Symbol,type,defined);" (assignment_expression "bVar12 = 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 (bVar12) {\n    override_with_special<64>(this,oldsym,fromsym);\n  }" if (parenthesized_expression "(bVar12)" ( identifier )) (compound_statement "{\n    override_with_special<64>(this,oldsym,fromsym);\n  }" { (expression_statement "override_with_special<64>(this,oldsym,fromsym);" (binary_expression "override_with_special<64>(this,oldsym,fromsym)" (binary_expression "override_with_special<64" identifier < number_literal) > (parenthesized_expression "(this,oldsym,fromsym)" ( (comma_expression "this,oldsym,fromsym" identifier , (comma_expression "oldsym,fromsym" identifier , identifier)) ))) ;) })) (if_statement "if (resolve_oldsym != false) {\n    return fromsym;\n  }" if (parenthesized_expression "(resolve_oldsym != false)" ( (binary_expression "resolve_oldsym != false" identifier != false) )) (compound_statement "{\n    return fromsym;\n  }" { (return_statement "return fromsym;" return identifier ;) })) (if_statement "if (binding != STB_LOCAL) {\n    __in_chrg = (Sized_symbol<64> *)name;\n    bVar12 = Version_script_info::get_symbol_version\n                       (this->version_script_,name,(string *)0x0,&is_global);\n    if ((!bVar12) || (is_global != false)) goto LAB_0035ee7f;\n  }" if (parenthesized_expression "(binding != STB_LOCAL)" ( (binary_expression "binding != STB_LOCAL" identifier != identifier) )) (compound_statement "{\n    __in_chrg = (Sized_symbol<64> *)name;\n    bVar12 = Version_script_info::get_symbol_version\n                       (this->version_script_,name,(string *)0x0,&is_global);\n    if ((!bVar12) || (is_global != false)) goto LAB_0035ee7f;\n  }" { (expression_statement "__in_chrg = (Sized_symbol<64> *)name;" (assignment_expression "__in_chrg = (Sized_symbol<64> *)name" identifier = (parenthesized_expression "(Sized_symbol<64> *)name" ( (binary_expression "Sized_symbol<64> *)name" (binary_expression "Sized_symbol<64" identifier < number_literal) > (pointer_expression "*)name" * (ERROR ")" )) identifier)) ))) ;) (ERROR "bVar12 = Version_script_info::" (assignment_expression "bVar12 = Version_script_info" identifier = identifier) : :) (expression_statement "get_symbol_version\n                       (this->version_script_,name,(string *)0x0,&is_global);" (call_expression "get_symbol_version\n                       (this->version_script_,name,(string *)0x0,&is_global)" identifier (argument_list "(this->version_script_,name,(string *)0x0,&is_global)" ( (field_expression "this->version_script_" identifier -> field_identifier) , identifier , (cast_expression "(string *)0x0" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (pointer_expression "&is_global" & identifier) ))) ;) (if_statement "if ((!bVar12) || (is_global != false)) goto LAB_0035ee7f;" if (parenthesized_expression "((!bVar12) || (is_global != false))" ( (binary_expression "(!bVar12) || (is_global != false)" (parenthesized_expression "(!bVar12)" ( (unary_expression "!bVar12" ! identifier) )) || (parenthesized_expression "(is_global != false)" ( (binary_expression "is_global != false" identifier != false) ))) )) (goto_statement "goto LAB_0035ee7f;" goto statement_identifier ;)) })) (expression_statement "__in_chrg = oldsym;" (assignment_expression "__in_chrg = oldsym" identifier = identifier) ;) (expression_statement "force_local(this,&oldsym->super_Symbol);" (call_expression "force_local(this,&oldsym->super_Symbol)" identifier (argument_list "(this,&oldsym->super_Symbol)" ( identifier , (pointer_expression "&oldsym->super_Symbol" & (field_expression "oldsym->super_Symbol" identifier -> field_identifier)) ))) ;) (labeled_statement "LAB_0035ee7f:\n  pGVar3 = (fromsym->super_Symbol).got_offsets_.got_next_;" statement_identifier : (expression_statement "pGVar3 = (fromsym->super_Symbol).got_offsets_.got_next_;" (assignment_expression "pGVar3 = (fromsym->super_Symbol).got_offsets_.got_next_" identifier = (field_expression "(fromsym->super_Symbol).got_offsets_.got_next_" (field_expression "(fromsym->super_Symbol).got_offsets_" (parenthesized_expression "(fromsym->super_Symbol)" ( (field_expression "fromsym->super_Symbol" identifier -> field_identifier) )) . field_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          pGVar7 = pGVar6->got_next_;\n          if (pGVar7 != (Got_offset_list *)0x0) {\n            this_00 = pGVar7->got_next_;\n            if (this_00 != (Got_offset_list *)0x0) {\n              Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);\n              operator_delete(this_00,0xc);\n            }\n            operator_delete(pGVar7,0xc);\n          }\n          operator_delete(pGVar6,0xc);\n        }\n        operator_delete(pGVar5,0xc);\n      }\n      operator_delete(pGVar4,0xc);\n    }\n    operator_delete(pGVar3,0xc);\n  }" if (parenthesized_expression "(pGVar3 != (Got_offset_list *)0x0)" ( (binary_expression "pGVar3 != (Got_offset_list *)0x0" identifier != (cast_expression "(Got_offset_list *)0x0" ( (type_descriptor "Got_offset_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pGVar4 = pGVar3->got_next_;\n    if (pGVar4 != (Got_offset_list *)0x0) {\n      pGVar5 = pGVar4->got_next_;\n      if (pGVar5 != (Got_offset_list *)0x0) {\n        pGVar6 = pGVar5->got_next_;\n        if (pGVar6 != (Got_offset_list *)0x0) {\n          pGVar7 = pGVar6->got_next_;\n          if (pGVar7 != (Got_offset_list *)0x0) {\n            this_00 = pGVar7->got_next_;\n            if (this_00 != (Got_offset_list *)0x0) {\n              Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);\n              operator_delete(this_00,0xc);\n            }\n            operator_delete(pGVar7,0xc);\n          }\n          operator_delete(pGVar6,0xc);\n        }\n        operator_delete(pGVar5,0xc);\n      }\n      operator_delete(pGVar4,0xc);\n    }\n    operator_delete(pGVar3,0xc);\n  }" { (expression_statement "pGVar4 = pGVar3->got_next_;" (assignment_expression "pGVar4 = pGVar3->got_next_" identifier = (field_expression "pGVar3->got_next_" identifier -> field_identifier)) ;) (if_statement "if (pGVar4 != (Got_offset_list *)0x0) {\n      pGVar5 = pGVar4->got_next_;\n      if (pGVar5 != (Got_offset_list *)0x0) {\n        pGVar6 = pGVar5->got_next_;\n        if (pGVar6 != (Got_offset_list *)0x0) {\n          pGVar7 = pGVar6->got_next_;\n          if (pGVar7 != (Got_offset_list *)0x0) {\n            this_00 = pGVar7->got_next_;\n            if (this_00 != (Got_offset_list *)0x0) {\n              Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);\n              operator_delete(this_00,0xc);\n            }\n            operator_delete(pGVar7,0xc);\n          }\n          operator_delete(pGVar6,0xc);\n        }\n        operator_delete(pGVar5,0xc);\n      }\n      operator_delete(pGVar4,0xc);\n    }" if (parenthesized_expression "(pGVar4 != (Got_offset_list *)0x0)" ( (binary_expression "pGVar4 != (Got_offset_list *)0x0" identifier != (cast_expression "(Got_offset_list *)0x0" ( (type_descriptor "Got_offset_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pGVar5 = pGVar4->got_next_;\n      if (pGVar5 != (Got_offset_list *)0x0) {\n        pGVar6 = pGVar5->got_next_;\n        if (pGVar6 != (Got_offset_list *)0x0) {\n          pGVar7 = pGVar6->got_next_;\n          if (pGVar7 != (Got_offset_list *)0x0) {\n            this_00 = pGVar7->got_next_;\n            if (this_00 != (Got_offset_list *)0x0) {\n              Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);\n              operator_delete(this_00,0xc);\n            }\n            operator_delete(pGVar7,0xc);\n          }\n          operator_delete(pGVar6,0xc);\n        }\n        operator_delete(pGVar5,0xc);\n      }\n      operator_delete(pGVar4,0xc);\n    }" { (expression_statement "pGVar5 = pGVar4->got_next_;" (assignment_expression "pGVar5 = pGVar4->got_next_" identifier = (field_expression "pGVar4->got_next_" identifier -> field_identifier)) ;) (if_statement "if (pGVar5 != (Got_offset_list *)0x0) {\n        pGVar6 = pGVar5->got_next_;\n        if (pGVar6 != (Got_offset_list *)0x0) {\n          pGVar7 = pGVar6->got_next_;\n          if (pGVar7 != (Got_offset_list *)0x0) {\n            this_00 = pGVar7->got_next_;\n            if (this_00 != (Got_offset_list *)0x0) {\n              Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);\n              operator_delete(this_00,0xc);\n            }\n            operator_delete(pGVar7,0xc);\n          }\n          operator_delete(pGVar6,0xc);\n        }\n        operator_delete(pGVar5,0xc);\n      }" if (parenthesized_expression "(pGVar5 != (Got_offset_list *)0x0)" ( (binary_expression "pGVar5 != (Got_offset_list *)0x0" identifier != (cast_expression "(Got_offset_list *)0x0" ( (type_descriptor "Got_offset_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pGVar6 = pGVar5->got_next_;\n        if (pGVar6 != (Got_offset_list *)0x0) {\n          pGVar7 = pGVar6->got_next_;\n          if (pGVar7 != (Got_offset_list *)0x0) {\n            this_00 = pGVar7->got_next_;\n            if (this_00 != (Got_offset_list *)0x0) {\n              Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);\n              operator_delete(this_00,0xc);\n            }\n            operator_delete(pGVar7,0xc);\n          }\n          operator_delete(pGVar6,0xc);\n        }\n        operator_delete(pGVar5,0xc);\n      }" { (expression_statement "pGVar6 = pGVar5->got_next_;" (assignment_expression "pGVar6 = pGVar5->got_next_" identifier = (field_expression "pGVar5->got_next_" identifier -> field_identifier)) ;) (if_statement "if (pGVar6 != (Got_offset_list *)0x0) {\n          pGVar7 = pGVar6->got_next_;\n          if (pGVar7 != (Got_offset_list *)0x0) {\n            this_00 = pGVar7->got_next_;\n            if (this_00 != (Got_offset_list *)0x0) {\n              Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);\n              operator_delete(this_00,0xc);\n            }\n            operator_delete(pGVar7,0xc);\n          }\n          operator_delete(pGVar6,0xc);\n        }" if (parenthesized_expression "(pGVar6 != (Got_offset_list *)0x0)" ( (binary_expression "pGVar6 != (Got_offset_list *)0x0" identifier != (cast_expression "(Got_offset_list *)0x0" ( (type_descriptor "Got_offset_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pGVar7 = pGVar6->got_next_;\n          if (pGVar7 != (Got_offset_list *)0x0) {\n            this_00 = pGVar7->got_next_;\n            if (this_00 != (Got_offset_list *)0x0) {\n              Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);\n              operator_delete(this_00,0xc);\n            }\n            operator_delete(pGVar7,0xc);\n          }\n          operator_delete(pGVar6,0xc);\n        }" { (expression_statement "pGVar7 = pGVar6->got_next_;" (assignment_expression "pGVar7 = pGVar6->got_next_" identifier = (field_expression "pGVar6->got_next_" identifier -> field_identifier)) ;) (if_statement "if (pGVar7 != (Got_offset_list *)0x0) {\n            this_00 = pGVar7->got_next_;\n            if (this_00 != (Got_offset_list *)0x0) {\n              Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);\n              operator_delete(this_00,0xc);\n            }\n            operator_delete(pGVar7,0xc);\n          }" if (parenthesized_expression "(pGVar7 != (Got_offset_list *)0x0)" ( (binary_expression "pGVar7 != (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 = pGVar7->got_next_;\n            if (this_00 != (Got_offset_list *)0x0) {\n              Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);\n              operator_delete(this_00,0xc);\n            }\n            operator_delete(pGVar7,0xc);\n          }" { (expression_statement "this_00 = pGVar7->got_next_;" (assignment_expression "this_00 = pGVar7->got_next_" identifier = (field_expression "pGVar7->got_next_" identifier -> field_identifier)) ;) (if_statement "if (this_00 != (Got_offset_list *)0x0) {\n              Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);\n              operator_delete(this_00,0xc);\n            }" if (parenthesized_expression "(this_00 != (Got_offset_list *)0x0)" ( (binary_expression "this_00 != (Got_offset_list *)0x0" identifier != (cast_expression "(Got_offset_list *)0x0" ( (type_descriptor "Got_offset_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);\n              operator_delete(this_00,0xc);\n            }" { (labeled_statement "Got_offset_list::~Got_offset_list(this_00,(int)__in_chrg);" statement_identifier : (ERROR ":" :) (expression_statement "~Got_offset_list(this_00,(int)__in_chrg);" (unary_expression "~Got_offset_list(this_00,(int)__in_chrg)" ~ (call_expression "Got_offset_list(this_00,(int)__in_chrg)" identifier (argument_list "(this_00,(int)__in_chrg)" ( identifier , (cast_expression "(int)__in_chrg" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;)) (expression_statement "operator_delete(this_00,0xc);" (call_expression "operator_delete(this_00,0xc)" identifier (argument_list "(this_00,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "operator_delete(pGVar7,0xc);" (call_expression "operator_delete(pGVar7,0xc)" identifier (argument_list "(pGVar7,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "operator_delete(pGVar6,0xc);" (call_expression "operator_delete(pGVar6,0xc)" identifier (argument_list "(pGVar6,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "operator_delete(pGVar5,0xc);" (call_expression "operator_delete(pGVar5,0xc)" identifier (argument_list "(pGVar5,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "operator_delete(pGVar4,0xc);" (call_expression "operator_delete(pGVar4,0xc)" identifier (argument_list "(pGVar4,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "operator_delete(pGVar3,0xc);" (call_expression "operator_delete(pGVar3,0xc)" identifier (argument_list "(pGVar3,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "operator_delete(fromsym,0x40);" (call_expression "operator_delete(fromsym,0x40)" identifier (argument_list "(fromsym,0x40)" ( identifier , number_literal ))) ;) (return_statement "return oldsym;" return identifier ;) }))
(translation_unit "undefined4 *\nFUN_0035ece0(int param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n            undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n            undefined4 param_10,int param_11,undefined4 param_12,int param_13,undefined4 param_14,\n            uint param_15)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  undefined4 uVar11;\n  char cVar12;\n  undefined4 *puVar13;\n  int unaff_EDI;\n  char local_22;\n  char local_21;\n  undefined4 *local_20 [4];\n  \n  FUN_00074f0a();\n  iVar2 = param_13;\n  uVar11 = param_12;\n  uVar10 = param_9;\n  uVar9 = param_8;\n  uVar8 = param_7;\n  uVar7 = param_6;\n  iVar1 = *(int *)(*(int *)(unaff_EDI + 0x28bae1) + 0xc);\n  if (iVar1 == 0) {\n                    \n    FUN_002446e0(unaff_EDI + 0xe9586,0x69,&UNK_0013b229 + unaff_EDI,param_15);\n  }\n  if (*(char *)(*(int *)(iVar1 + 4) + 4) == '\0') {\n    puVar13 = (undefined4 *)\n              FUN_0035e0b0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);\n  }\n  else {\n    puVar13 = (undefined4 *)\n              FUN_0035c410(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);\n  }\n  if (puVar13 != (undefined4 *)0x0) {\n    puVar13[4] = 0;\n    puVar13[1] = param_3;\n    *(byte *)((int)puVar13 + 0x29) = (byte)(iVar2 << 2) | (byte)uVar11 & 3;\n    *puVar13 = param_2;\n    puVar13[5] = 0;\n    *(byte *)(puVar13 + 10) = (byte)param_10 & 0xf | (char)param_11 << 4;\n    puVar13[6] = 0xffffffff;\n    puVar13[2] = param_5;\n    puVar13[7] = 0xffffffff;\n    puVar13[3] = param_14;\n    puVar13[8] = 0;\n    puVar13[9] = 0;\n    *(ushort *)((int)puVar13 + 0x2a) = *(ushort *)((int)puVar13 + 0x2a) & 0x200 | 0x4082;\n    *(byte *)(puVar13 + 0xb) = *(byte *)(puVar13 + 0xb) & 0xe0 | (param_4 == 5) << 2;\n    puVar13[0xc] = uVar7;\n    puVar13[0xd] = uVar8;\n    puVar13[0xe] = uVar9;\n    puVar13[0xf] = uVar10;\n    if (local_20[0] == (undefined4 *)0x0) {\n      if ((param_11 == 0) ||\n         ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')))) {\n        FUN_0034d3d0(param_1,puVar13);\n        return puVar13;\n      }\n      if (param_3 != 0) {\n        *(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8;\n      }\n    }\n    else {\n      cVar12 = FUN_0032bf30(local_20[0],param_10,param_4);\n      if (cVar12 != '\0') {\n        FUN_0032d440(param_1,local_20[0],puVar13);\n      }\n      if (local_22 == '\0') {\n        if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }\n        iVar1 = puVar13[9];\n        if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }\n        FUN_003ae060(puVar13,0x40);\n        puVar13 = local_20[0];\n      }\n    }\n  }\n  return puVar13;\n}\n\n" (function_definition "undefined4 *\nFUN_0035ece0(int param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n            undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n            undefined4 param_10,int param_11,undefined4 param_12,int param_13,undefined4 param_14,\n            uint param_15)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  undefined4 uVar11;\n  char cVar12;\n  undefined4 *puVar13;\n  int unaff_EDI;\n  char local_22;\n  char local_21;\n  undefined4 *local_20 [4];\n  \n  FUN_00074f0a();\n  iVar2 = param_13;\n  uVar11 = param_12;\n  uVar10 = param_9;\n  uVar9 = param_8;\n  uVar8 = param_7;\n  uVar7 = param_6;\n  iVar1 = *(int *)(*(int *)(unaff_EDI + 0x28bae1) + 0xc);\n  if (iVar1 == 0) {\n                    \n    FUN_002446e0(unaff_EDI + 0xe9586,0x69,&UNK_0013b229 + unaff_EDI,param_15);\n  }\n  if (*(char *)(*(int *)(iVar1 + 4) + 4) == '\0') {\n    puVar13 = (undefined4 *)\n              FUN_0035e0b0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);\n  }\n  else {\n    puVar13 = (undefined4 *)\n              FUN_0035c410(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);\n  }\n  if (puVar13 != (undefined4 *)0x0) {\n    puVar13[4] = 0;\n    puVar13[1] = param_3;\n    *(byte *)((int)puVar13 + 0x29) = (byte)(iVar2 << 2) | (byte)uVar11 & 3;\n    *puVar13 = param_2;\n    puVar13[5] = 0;\n    *(byte *)(puVar13 + 10) = (byte)param_10 & 0xf | (char)param_11 << 4;\n    puVar13[6] = 0xffffffff;\n    puVar13[2] = param_5;\n    puVar13[7] = 0xffffffff;\n    puVar13[3] = param_14;\n    puVar13[8] = 0;\n    puVar13[9] = 0;\n    *(ushort *)((int)puVar13 + 0x2a) = *(ushort *)((int)puVar13 + 0x2a) & 0x200 | 0x4082;\n    *(byte *)(puVar13 + 0xb) = *(byte *)(puVar13 + 0xb) & 0xe0 | (param_4 == 5) << 2;\n    puVar13[0xc] = uVar7;\n    puVar13[0xd] = uVar8;\n    puVar13[0xe] = uVar9;\n    puVar13[0xf] = uVar10;\n    if (local_20[0] == (undefined4 *)0x0) {\n      if ((param_11 == 0) ||\n         ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')))) {\n        FUN_0034d3d0(param_1,puVar13);\n        return puVar13;\n      }\n      if (param_3 != 0) {\n        *(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8;\n      }\n    }\n    else {\n      cVar12 = FUN_0032bf30(local_20[0],param_10,param_4);\n      if (cVar12 != '\0') {\n        FUN_0032d440(param_1,local_20[0],puVar13);\n      }\n      if (local_22 == '\0') {\n        if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }\n        iVar1 = puVar13[9];\n        if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }\n        FUN_003ae060(puVar13,0x40);\n        puVar13 = local_20[0];\n      }\n    }\n  }\n  return puVar13;\n}" type_identifier (pointer_declarator "*\nFUN_0035ece0(int param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n            undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n            undefined4 param_10,int param_11,undefined4 param_12,int param_13,undefined4 param_14,\n            uint param_15)" * (function_declarator "FUN_0035ece0(int param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n            undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n            undefined4 param_10,int param_11,undefined4 param_12,int param_13,undefined4 param_14,\n            uint param_15)" identifier (parameter_list "(int param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n            undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n            undefined4 param_10,int param_11,undefined4 param_12,int param_13,undefined4 param_14,\n            uint param_15)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "undefined4 param_7" type_identifier identifier) , (parameter_declaration "undefined4 param_8" type_identifier identifier) , (parameter_declaration "undefined4 param_9" type_identifier identifier) , (parameter_declaration "undefined4 param_10" type_identifier identifier) , (parameter_declaration "int param_11" primitive_type identifier) , (parameter_declaration "undefined4 param_12" type_identifier identifier) , (parameter_declaration "int param_13" primitive_type identifier) , (parameter_declaration "undefined4 param_14" type_identifier identifier) , (parameter_declaration "uint param_15" type_identifier identifier) )))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  undefined4 uVar11;\n  char cVar12;\n  undefined4 *puVar13;\n  int unaff_EDI;\n  char local_22;\n  char local_21;\n  undefined4 *local_20 [4];\n  \n  FUN_00074f0a();\n  iVar2 = param_13;\n  uVar11 = param_12;\n  uVar10 = param_9;\n  uVar9 = param_8;\n  uVar8 = param_7;\n  uVar7 = param_6;\n  iVar1 = *(int *)(*(int *)(unaff_EDI + 0x28bae1) + 0xc);\n  if (iVar1 == 0) {\n                    \n    FUN_002446e0(unaff_EDI + 0xe9586,0x69,&UNK_0013b229 + unaff_EDI,param_15);\n  }\n  if (*(char *)(*(int *)(iVar1 + 4) + 4) == '\0') {\n    puVar13 = (undefined4 *)\n              FUN_0035e0b0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);\n  }\n  else {\n    puVar13 = (undefined4 *)\n              FUN_0035c410(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);\n  }\n  if (puVar13 != (undefined4 *)0x0) {\n    puVar13[4] = 0;\n    puVar13[1] = param_3;\n    *(byte *)((int)puVar13 + 0x29) = (byte)(iVar2 << 2) | (byte)uVar11 & 3;\n    *puVar13 = param_2;\n    puVar13[5] = 0;\n    *(byte *)(puVar13 + 10) = (byte)param_10 & 0xf | (char)param_11 << 4;\n    puVar13[6] = 0xffffffff;\n    puVar13[2] = param_5;\n    puVar13[7] = 0xffffffff;\n    puVar13[3] = param_14;\n    puVar13[8] = 0;\n    puVar13[9] = 0;\n    *(ushort *)((int)puVar13 + 0x2a) = *(ushort *)((int)puVar13 + 0x2a) & 0x200 | 0x4082;\n    *(byte *)(puVar13 + 0xb) = *(byte *)(puVar13 + 0xb) & 0xe0 | (param_4 == 5) << 2;\n    puVar13[0xc] = uVar7;\n    puVar13[0xd] = uVar8;\n    puVar13[0xe] = uVar9;\n    puVar13[0xf] = uVar10;\n    if (local_20[0] == (undefined4 *)0x0) {\n      if ((param_11 == 0) ||\n         ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')))) {\n        FUN_0034d3d0(param_1,puVar13);\n        return puVar13;\n      }\n      if (param_3 != 0) {\n        *(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8;\n      }\n    }\n    else {\n      cVar12 = FUN_0032bf30(local_20[0],param_10,param_4);\n      if (cVar12 != '\0') {\n        FUN_0032d440(param_1,local_20[0],puVar13);\n      }\n      if (local_22 == '\0') {\n        if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }\n        iVar1 = puVar13[9];\n        if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }\n        FUN_003ae060(puVar13,0x40);\n        puVar13 = local_20[0];\n      }\n    }\n  }\n  return puVar13;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "char cVar12;" primitive_type identifier ;) (declaration "undefined4 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "char local_22;" primitive_type identifier ;) (declaration "char local_21;" primitive_type identifier ;) (declaration "undefined4 *local_20 [4];" type_identifier (pointer_declarator "*local_20 [4]" * (array_declarator "local_20 [4]" identifier [ number_literal ])) ;) (expression_statement "FUN_00074f0a();" (call_expression "FUN_00074f0a()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar2 = param_13;" (assignment_expression "iVar2 = param_13" identifier = identifier) ;) (expression_statement "uVar11 = param_12;" (assignment_expression "uVar11 = param_12" identifier = identifier) ;) (expression_statement "uVar10 = param_9;" (assignment_expression "uVar10 = param_9" identifier = identifier) ;) (expression_statement "uVar9 = param_8;" (assignment_expression "uVar9 = param_8" identifier = identifier) ;) (expression_statement "uVar8 = param_7;" (assignment_expression "uVar8 = param_7" identifier = identifier) ;) (expression_statement "uVar7 = param_6;" (assignment_expression "uVar7 = param_6" identifier = identifier) ;) (expression_statement "iVar1 = *(int *)(*(int *)(unaff_EDI + 0x28bae1) + 0xc);" (assignment_expression "iVar1 = *(int *)(*(int *)(unaff_EDI + 0x28bae1) + 0xc)" identifier = (pointer_expression "*(int *)(*(int *)(unaff_EDI + 0x28bae1) + 0xc)" * (cast_expression "(int *)(*(int *)(unaff_EDI + 0x28bae1) + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(unaff_EDI + 0x28bae1) + 0xc)" ( (binary_expression "*(int *)(unaff_EDI + 0x28bae1) + 0xc" (pointer_expression "*(int *)(unaff_EDI + 0x28bae1)" * (cast_expression "(int *)(unaff_EDI + 0x28bae1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x28bae1)" ( (binary_expression "unaff_EDI + 0x28bae1" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (iVar1 == 0) {\n                    \n    FUN_002446e0(unaff_EDI + 0xe9586,0x69,&UNK_0013b229 + unaff_EDI,param_15);\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    FUN_002446e0(unaff_EDI + 0xe9586,0x69,&UNK_0013b229 + unaff_EDI,param_15);\n  }" { (expression_statement "FUN_002446e0(unaff_EDI + 0xe9586,0x69,&UNK_0013b229 + unaff_EDI,param_15);" (call_expression "FUN_002446e0(unaff_EDI + 0xe9586,0x69,&UNK_0013b229 + unaff_EDI,param_15)" identifier (argument_list "(unaff_EDI + 0xe9586,0x69,&UNK_0013b229 + unaff_EDI,param_15)" ( (binary_expression "unaff_EDI + 0xe9586" identifier + number_literal) , number_literal , (binary_expression "&UNK_0013b229 + unaff_EDI" (pointer_expression "&UNK_0013b229" & identifier) + identifier) , identifier ))) ;) })) (if_statement "if (*(char *)(*(int *)(iVar1 + 4) + 4) == '\0') {\n    puVar13 = (undefined4 *)\n              FUN_0035e0b0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);\n  }\n  else {\n    puVar13 = (undefined4 *)\n              FUN_0035c410(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);\n  }" if (parenthesized_expression "(*(char *)(*(int *)(iVar1 + 4) + 4) == '\0')" ( (binary_expression "*(char *)(*(int *)(iVar1 + 4) + 4) == '\0'" (pointer_expression "*(char *)(*(int *)(iVar1 + 4) + 4)" * (cast_expression "(char *)(*(int *)(iVar1 + 4) + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + 4) + 4)" ( (binary_expression "*(int *)(iVar1 + 4) + 4" (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    puVar13 = (undefined4 *)\n              FUN_0035e0b0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);\n  }" { (expression_statement "puVar13 = (undefined4 *)\n              FUN_0035e0b0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);" (assignment_expression "puVar13 = (undefined4 *)\n              FUN_0035e0b0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0)" identifier = (cast_expression "(undefined4 *)\n              FUN_0035e0b0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0035e0b0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0)" identifier (argument_list "(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0)" ( identifier , (pointer_expression "&param_2" & identifier) , (pointer_expression "&param_3" & identifier) , (binary_expression "param_15 & 0xff" identifier & number_literal) , identifier , identifier , (pointer_expression "&local_22" & identifier) , (binary_expression "param_11 == 0" identifier == number_literal) ))))) ;) }) (else_clause "else {\n    puVar13 = (undefined4 *)\n              FUN_0035c410(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);\n  }" else (compound_statement "{\n    puVar13 = (undefined4 *)\n              FUN_0035c410(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);\n  }" { (expression_statement "puVar13 = (undefined4 *)\n              FUN_0035c410(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);" (assignment_expression "puVar13 = (undefined4 *)\n              FUN_0035c410(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0)" identifier = (cast_expression "(undefined4 *)\n              FUN_0035c410(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0035c410(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0)" identifier (argument_list "(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0)" ( identifier , (pointer_expression "&param_2" & identifier) , (pointer_expression "&param_3" & identifier) , (binary_expression "param_15 & 0xff" identifier & number_literal) , identifier , identifier , (pointer_expression "&local_22" & identifier) , (binary_expression "param_11 == 0" identifier == number_literal) ))))) ;) }))) (if_statement "if (puVar13 != (undefined4 *)0x0) {\n    puVar13[4] = 0;\n    puVar13[1] = param_3;\n    *(byte *)((int)puVar13 + 0x29) = (byte)(iVar2 << 2) | (byte)uVar11 & 3;\n    *puVar13 = param_2;\n    puVar13[5] = 0;\n    *(byte *)(puVar13 + 10) = (byte)param_10 & 0xf | (char)param_11 << 4;\n    puVar13[6] = 0xffffffff;\n    puVar13[2] = param_5;\n    puVar13[7] = 0xffffffff;\n    puVar13[3] = param_14;\n    puVar13[8] = 0;\n    puVar13[9] = 0;\n    *(ushort *)((int)puVar13 + 0x2a) = *(ushort *)((int)puVar13 + 0x2a) & 0x200 | 0x4082;\n    *(byte *)(puVar13 + 0xb) = *(byte *)(puVar13 + 0xb) & 0xe0 | (param_4 == 5) << 2;\n    puVar13[0xc] = uVar7;\n    puVar13[0xd] = uVar8;\n    puVar13[0xe] = uVar9;\n    puVar13[0xf] = uVar10;\n    if (local_20[0] == (undefined4 *)0x0) {\n      if ((param_11 == 0) ||\n         ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')))) {\n        FUN_0034d3d0(param_1,puVar13);\n        return puVar13;\n      }\n      if (param_3 != 0) {\n        *(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8;\n      }\n    }\n    else {\n      cVar12 = FUN_0032bf30(local_20[0],param_10,param_4);\n      if (cVar12 != '\0') {\n        FUN_0032d440(param_1,local_20[0],puVar13);\n      }\n      if (local_22 == '\0') {\n        if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }\n        iVar1 = puVar13[9];\n        if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }\n        FUN_003ae060(puVar13,0x40);\n        puVar13 = local_20[0];\n      }\n    }\n  }" if (parenthesized_expression "(puVar13 != (undefined4 *)0x0)" ( (binary_expression "puVar13 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar13[4] = 0;\n    puVar13[1] = param_3;\n    *(byte *)((int)puVar13 + 0x29) = (byte)(iVar2 << 2) | (byte)uVar11 & 3;\n    *puVar13 = param_2;\n    puVar13[5] = 0;\n    *(byte *)(puVar13 + 10) = (byte)param_10 & 0xf | (char)param_11 << 4;\n    puVar13[6] = 0xffffffff;\n    puVar13[2] = param_5;\n    puVar13[7] = 0xffffffff;\n    puVar13[3] = param_14;\n    puVar13[8] = 0;\n    puVar13[9] = 0;\n    *(ushort *)((int)puVar13 + 0x2a) = *(ushort *)((int)puVar13 + 0x2a) & 0x200 | 0x4082;\n    *(byte *)(puVar13 + 0xb) = *(byte *)(puVar13 + 0xb) & 0xe0 | (param_4 == 5) << 2;\n    puVar13[0xc] = uVar7;\n    puVar13[0xd] = uVar8;\n    puVar13[0xe] = uVar9;\n    puVar13[0xf] = uVar10;\n    if (local_20[0] == (undefined4 *)0x0) {\n      if ((param_11 == 0) ||\n         ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')))) {\n        FUN_0034d3d0(param_1,puVar13);\n        return puVar13;\n      }\n      if (param_3 != 0) {\n        *(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8;\n      }\n    }\n    else {\n      cVar12 = FUN_0032bf30(local_20[0],param_10,param_4);\n      if (cVar12 != '\0') {\n        FUN_0032d440(param_1,local_20[0],puVar13);\n      }\n      if (local_22 == '\0') {\n        if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }\n        iVar1 = puVar13[9];\n        if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }\n        FUN_003ae060(puVar13,0x40);\n        puVar13 = local_20[0];\n      }\n    }\n  }" { (expression_statement "puVar13[4] = 0;" (assignment_expression "puVar13[4] = 0" (subscript_expression "puVar13[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar13[1] = param_3;" (assignment_expression "puVar13[1] = param_3" (subscript_expression "puVar13[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(byte *)((int)puVar13 + 0x29) = (byte)(iVar2 << 2) | (byte)uVar11 & 3;" (assignment_expression "*(byte *)((int)puVar13 + 0x29) = (byte)(iVar2 << 2) | (byte)uVar11 & 3" (pointer_expression "*(byte *)((int)puVar13 + 0x29)" * (cast_expression "(byte *)((int)puVar13 + 0x29)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + 0x29)" ( (binary_expression "(int)puVar13 + 0x29" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(byte)(iVar2 << 2) | (byte)uVar11 & 3" (call_expression "(byte)(iVar2 << 2)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(iVar2 << 2)" ( (binary_expression "iVar2 << 2" identifier << number_literal) ))) | (binary_expression "(byte)uVar11 & 3" (cast_expression "(byte)uVar11" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal))) ;) (expression_statement "*puVar13 = param_2;" (assignment_expression "*puVar13 = param_2" (pointer_expression "*puVar13" * identifier) = identifier) ;) (expression_statement "puVar13[5] = 0;" (assignment_expression "puVar13[5] = 0" (subscript_expression "puVar13[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)(puVar13 + 10) = (byte)param_10 & 0xf | (char)param_11 << 4;" (assignment_expression "*(byte *)(puVar13 + 10) = (byte)param_10 & 0xf | (char)param_11 << 4" (pointer_expression "*(byte *)(puVar13 + 10)" * (cast_expression "(byte *)(puVar13 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 10)" ( (binary_expression "puVar13 + 10" identifier + number_literal) )))) = (binary_expression "(byte)param_10 & 0xf | (char)param_11 << 4" (binary_expression "(byte)param_10 & 0xf" (cast_expression "(byte)param_10" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) | (binary_expression "(char)param_11 << 4" (cast_expression "(char)param_11" ( (type_descriptor "char" primitive_type) ) identifier) << number_literal))) ;) (expression_statement "puVar13[6] = 0xffffffff;" (assignment_expression "puVar13[6] = 0xffffffff" (subscript_expression "puVar13[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar13[2] = param_5;" (assignment_expression "puVar13[2] = param_5" (subscript_expression "puVar13[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar13[7] = 0xffffffff;" (assignment_expression "puVar13[7] = 0xffffffff" (subscript_expression "puVar13[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar13[3] = param_14;" (assignment_expression "puVar13[3] = param_14" (subscript_expression "puVar13[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar13[8] = 0;" (assignment_expression "puVar13[8] = 0" (subscript_expression "puVar13[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar13[9] = 0;" (assignment_expression "puVar13[9] = 0" (subscript_expression "puVar13[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(ushort *)((int)puVar13 + 0x2a) = *(ushort *)((int)puVar13 + 0x2a) & 0x200 | 0x4082;" (assignment_expression "*(ushort *)((int)puVar13 + 0x2a) = *(ushort *)((int)puVar13 + 0x2a) & 0x200 | 0x4082" (pointer_expression "*(ushort *)((int)puVar13 + 0x2a)" * (cast_expression "(ushort *)((int)puVar13 + 0x2a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + 0x2a)" ( (binary_expression "(int)puVar13 + 0x2a" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(ushort *)((int)puVar13 + 0x2a) & 0x200 | 0x4082" (binary_expression "*(ushort *)((int)puVar13 + 0x2a) & 0x200" (pointer_expression "*(ushort *)((int)puVar13 + 0x2a)" * (cast_expression "(ushort *)((int)puVar13 + 0x2a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + 0x2a)" ( (binary_expression "(int)puVar13 + 0x2a" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "*(byte *)(puVar13 + 0xb) = *(byte *)(puVar13 + 0xb) & 0xe0 | (param_4 == 5) << 2;" (assignment_expression "*(byte *)(puVar13 + 0xb) = *(byte *)(puVar13 + 0xb) & 0xe0 | (param_4 == 5) << 2" (pointer_expression "*(byte *)(puVar13 + 0xb)" * (cast_expression "(byte *)(puVar13 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 0xb)" ( (binary_expression "puVar13 + 0xb" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar13 + 0xb) & 0xe0 | (param_4 == 5) << 2" (binary_expression "*(byte *)(puVar13 + 0xb) & 0xe0" (pointer_expression "*(byte *)(puVar13 + 0xb)" * (cast_expression "(byte *)(puVar13 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 0xb)" ( (binary_expression "puVar13 + 0xb" identifier + number_literal) )))) & number_literal) | (binary_expression "(param_4 == 5) << 2" (parenthesized_expression "(param_4 == 5)" ( (binary_expression "param_4 == 5" identifier == number_literal) )) << number_literal))) ;) (expression_statement "puVar13[0xc] = uVar7;" (assignment_expression "puVar13[0xc] = uVar7" (subscript_expression "puVar13[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar13[0xd] = uVar8;" (assignment_expression "puVar13[0xd] = uVar8" (subscript_expression "puVar13[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar13[0xe] = uVar9;" (assignment_expression "puVar13[0xe] = uVar9" (subscript_expression "puVar13[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar13[0xf] = uVar10;" (assignment_expression "puVar13[0xf] = uVar10" (subscript_expression "puVar13[0xf]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (local_20[0] == (undefined4 *)0x0) {\n      if ((param_11 == 0) ||\n         ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')))) {\n        FUN_0034d3d0(param_1,puVar13);\n        return puVar13;\n      }\n      if (param_3 != 0) {\n        *(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8;\n      }\n    }\n    else {\n      cVar12 = FUN_0032bf30(local_20[0],param_10,param_4);\n      if (cVar12 != '\0') {\n        FUN_0032d440(param_1,local_20[0],puVar13);\n      }\n      if (local_22 == '\0') {\n        if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }\n        iVar1 = puVar13[9];\n        if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }\n        FUN_003ae060(puVar13,0x40);\n        puVar13 = local_20[0];\n      }\n    }" if (parenthesized_expression "(local_20[0] == (undefined4 *)0x0)" ( (binary_expression "local_20[0] == (undefined4 *)0x0" (subscript_expression "local_20[0]" identifier [ number_literal ]) == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if ((param_11 == 0) ||\n         ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')))) {\n        FUN_0034d3d0(param_1,puVar13);\n        return puVar13;\n      }\n      if (param_3 != 0) {\n        *(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8;\n      }\n    }" { (if_statement "if ((param_11 == 0) ||\n         ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')))) {\n        FUN_0034d3d0(param_1,puVar13);\n        return puVar13;\n      }" if (parenthesized_expression "((param_11 == 0) ||\n         ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0'))))" ( (binary_expression "(param_11 == 0) ||\n         ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')))" (parenthesized_expression "(param_11 == 0)" ( (binary_expression "param_11 == 0" identifier == number_literal) )) || (parenthesized_expression "((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')))" ( (parenthesized_expression "(cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0'))" ( (comma_expression "cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')" (assignment_expression "cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" identifier = (call_expression "FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x154)" * (cast_expression "(undefined4 *)(param_1 + 0x154)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x154)" ( (binary_expression "param_1 + 0x154" identifier + number_literal) )))) , identifier , number_literal , (pointer_expression "&local_21" & identifier) )))) , (binary_expression "cVar12 != '\0' && (local_21 == '\0')" (binary_expression "cVar12 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) && (parenthesized_expression "(local_21 == '\0')" ( (binary_expression "local_21 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )))) )) ))) )) (compound_statement "{\n        FUN_0034d3d0(param_1,puVar13);\n        return puVar13;\n      }" { (expression_statement "FUN_0034d3d0(param_1,puVar13);" (call_expression "FUN_0034d3d0(param_1,puVar13)" identifier (argument_list "(param_1,puVar13)" ( identifier , identifier ))) ;) (return_statement "return puVar13;" return identifier ;) })) (if_statement "if (param_3 != 0) {\n        *(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8;\n      }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n        *(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8;\n      }" { (expression_statement "*(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8;" (assignment_expression "*(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8" (pointer_expression "*(byte *)((int)puVar13 + 0x2a)" * (cast_expression "(byte *)((int)puVar13 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + 0x2a)" ( (binary_expression "(int)puVar13 + 0x2a" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((int)puVar13 + 0x2a) | 8" (pointer_expression "*(byte *)((int)puVar13 + 0x2a)" * (cast_expression "(byte *)((int)puVar13 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + 0x2a)" ( (binary_expression "(int)puVar13 + 0x2a" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | number_literal)) ;) })) }) (else_clause "else {\n      cVar12 = FUN_0032bf30(local_20[0],param_10,param_4);\n      if (cVar12 != '\0') {\n        FUN_0032d440(param_1,local_20[0],puVar13);\n      }\n      if (local_22 == '\0') {\n        if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }\n        iVar1 = puVar13[9];\n        if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }\n        FUN_003ae060(puVar13,0x40);\n        puVar13 = local_20[0];\n      }\n    }" else (compound_statement "{\n      cVar12 = FUN_0032bf30(local_20[0],param_10,param_4);\n      if (cVar12 != '\0') {\n        FUN_0032d440(param_1,local_20[0],puVar13);\n      }\n      if (local_22 == '\0') {\n        if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }\n        iVar1 = puVar13[9];\n        if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }\n        FUN_003ae060(puVar13,0x40);\n        puVar13 = local_20[0];\n      }\n    }" { (expression_statement "cVar12 = FUN_0032bf30(local_20[0],param_10,param_4);" (assignment_expression "cVar12 = FUN_0032bf30(local_20[0],param_10,param_4)" identifier = (call_expression "FUN_0032bf30(local_20[0],param_10,param_4)" identifier (argument_list "(local_20[0],param_10,param_4)" ( (subscript_expression "local_20[0]" identifier [ number_literal ]) , identifier , identifier )))) ;) (if_statement "if (cVar12 != '\0') {\n        FUN_0032d440(param_1,local_20[0],puVar13);\n      }" if (parenthesized_expression "(cVar12 != '\0')" ( (binary_expression "cVar12 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        FUN_0032d440(param_1,local_20[0],puVar13);\n      }" { (expression_statement "FUN_0032d440(param_1,local_20[0],puVar13);" (call_expression "FUN_0032d440(param_1,local_20[0],puVar13)" identifier (argument_list "(param_1,local_20[0],puVar13)" ( identifier , (subscript_expression "local_20[0]" identifier [ number_literal ]) , identifier ))) ;) })) (if_statement "if (local_22 == '\0') {\n        if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }\n        iVar1 = puVar13[9];\n        if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }\n        FUN_003ae060(puVar13,0x40);\n        puVar13 = local_20[0];\n      }" if (parenthesized_expression "(local_22 == '\0')" ( (binary_expression "local_22 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }\n        iVar1 = puVar13[9];\n        if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }\n        FUN_003ae060(puVar13,0x40);\n        puVar13 = local_20[0];\n      }" { (if_statement "if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }" if (parenthesized_expression "((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0'))))" ( (binary_expression "(param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))" (parenthesized_expression "(param_11 == 0)" ( (binary_expression "param_11 == 0" identifier == number_literal) )) || (parenthesized_expression "((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))" ( (parenthesized_expression "(cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0'))" ( (comma_expression "cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')" (assignment_expression "cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" identifier = (call_expression "FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x154)" * (cast_expression "(undefined4 *)(param_1 + 0x154)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x154)" ( (binary_expression "param_1 + 0x154" identifier + number_literal) )))) , identifier , number_literal , (pointer_expression "&local_21" & identifier) )))) , (binary_expression "cVar12 != '\0' && (local_21 == '\0')" (binary_expression "cVar12 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) && (parenthesized_expression "(local_21 == '\0')" ( (binary_expression "local_21 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )))) )) ))) )) (compound_statement "{\n          FUN_0034d3d0(param_1,local_20[0]);\n        }" { (expression_statement "FUN_0034d3d0(param_1,local_20[0]);" (call_expression "FUN_0034d3d0(param_1,local_20[0])" identifier (argument_list "(param_1,local_20[0])" ( identifier , (subscript_expression "local_20[0]" identifier [ number_literal ]) ))) ;) })) (expression_statement "iVar1 = puVar13[9];" (assignment_expression "iVar1 = puVar13[9]" identifier = (subscript_expression "puVar13[9]" identifier [ number_literal ])) ;) (if_statement "if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }" { (expression_statement "iVar2 = *(int *)(iVar1 + 8);" (assignment_expression "iVar2 = *(int *)(iVar1 + 8)" identifier = (pointer_expression "*(int *)(iVar1 + 8)" * (cast_expression "(int *)(iVar1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }" { (expression_statement "iVar3 = *(int *)(iVar2 + 8);" (assignment_expression "iVar3 = *(int *)(iVar2 + 8)" identifier = (pointer_expression "*(int *)(iVar2 + 8)" * (cast_expression "(int *)(iVar2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }" { (expression_statement "iVar4 = *(int *)(iVar3 + 8);" (assignment_expression "iVar4 = *(int *)(iVar3 + 8)" identifier = (pointer_expression "*(int *)(iVar3 + 8)" * (cast_expression "(int *)(iVar3 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }" { (expression_statement "iVar5 = *(int *)(iVar4 + 8);" (assignment_expression "iVar5 = *(int *)(iVar4 + 8)" identifier = (pointer_expression "*(int *)(iVar4 + 8)" * (cast_expression "(int *)(iVar4 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 8)" ( (binary_expression "iVar4 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }" { (expression_statement "iVar6 = *(int *)(iVar5 + 8);" (assignment_expression "iVar6 = *(int *)(iVar5 + 8)" identifier = (pointer_expression "*(int *)(iVar5 + 8)" * (cast_expression "(int *)(iVar5 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 8)" ( (binary_expression "iVar5 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }" { (expression_statement "FUN_00350410(iVar6);" (call_expression "FUN_00350410(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))) ;) (expression_statement "FUN_003ae060(iVar6,0xc);" (call_expression "FUN_003ae060(iVar6,0xc)" identifier (argument_list "(iVar6,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "FUN_003ae060(iVar5,0xc);" (call_expression "FUN_003ae060(iVar5,0xc)" identifier (argument_list "(iVar5,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "FUN_003ae060(iVar4,0xc);" (call_expression "FUN_003ae060(iVar4,0xc)" identifier (argument_list "(iVar4,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "FUN_003ae060(iVar3,0xc);" (call_expression "FUN_003ae060(iVar3,0xc)" identifier (argument_list "(iVar3,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "FUN_003ae060(iVar2,0xc);" (call_expression "FUN_003ae060(iVar2,0xc)" identifier (argument_list "(iVar2,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "FUN_003ae060(iVar1,0xc);" (call_expression "FUN_003ae060(iVar1,0xc)" identifier (argument_list "(iVar1,0xc)" ( identifier , number_literal ))) ;) })) (expression_statement "FUN_003ae060(puVar13,0x40);" (call_expression "FUN_003ae060(puVar13,0x40)" identifier (argument_list "(puVar13,0x40)" ( identifier , number_literal ))) ;) (expression_statement "puVar13 = local_20[0];" (assignment_expression "puVar13 = local_20[0]" identifier = (subscript_expression "local_20[0]" identifier [ number_literal ])) ;) })) }))) })) (return_statement "return puVar13;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression (pointer_expression & IDENT) + IDENT) , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , (pointer_expression & IDENT) , (binary_expression IDENT & LIT) , IDENT , IDENT , (pointer_expression & IDENT) , (binary_expression IDENT == LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , (pointer_expression & IDENT) , (binary_expression IDENT & LIT) , IDENT , IDENT , (pointer_expression & IDENT) , (binary_expression IDENT == LIT) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT << LIT) ))) | (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) | (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) << LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) | LIT)) ;) })) }) (else_clause else (compound_statement { (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 ( (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 = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) }))) })) (return_statement return IDENT ;) })))
(function_definition "undefined4 *\nFUN_0035ece0(int param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n            undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n            undefined4 param_10,int param_11,undefined4 param_12,int param_13,undefined4 param_14,\n            uint param_15)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  undefined4 uVar11;\n  char cVar12;\n  undefined4 *puVar13;\n  int unaff_EDI;\n  char local_22;\n  char local_21;\n  undefined4 *local_20 [4];\n  \n  FUN_00074f0a();\n  iVar2 = param_13;\n  uVar11 = param_12;\n  uVar10 = param_9;\n  uVar9 = param_8;\n  uVar8 = param_7;\n  uVar7 = param_6;\n  iVar1 = *(int *)(*(int *)(unaff_EDI + 0x28bae1) + 0xc);\n  if (iVar1 == 0) {\n                    \n    FUN_002446e0(unaff_EDI + 0xe9586,0x69,&UNK_0013b229 + unaff_EDI,param_15);\n  }\n  if (*(char *)(*(int *)(iVar1 + 4) + 4) == '\0') {\n    puVar13 = (undefined4 *)\n              FUN_0035e0b0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);\n  }\n  else {\n    puVar13 = (undefined4 *)\n              FUN_0035c410(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);\n  }\n  if (puVar13 != (undefined4 *)0x0) {\n    puVar13[4] = 0;\n    puVar13[1] = param_3;\n    *(byte *)((int)puVar13 + 0x29) = (byte)(iVar2 << 2) | (byte)uVar11 & 3;\n    *puVar13 = param_2;\n    puVar13[5] = 0;\n    *(byte *)(puVar13 + 10) = (byte)param_10 & 0xf | (char)param_11 << 4;\n    puVar13[6] = 0xffffffff;\n    puVar13[2] = param_5;\n    puVar13[7] = 0xffffffff;\n    puVar13[3] = param_14;\n    puVar13[8] = 0;\n    puVar13[9] = 0;\n    *(ushort *)((int)puVar13 + 0x2a) = *(ushort *)((int)puVar13 + 0x2a) & 0x200 | 0x4082;\n    *(byte *)(puVar13 + 0xb) = *(byte *)(puVar13 + 0xb) & 0xe0 | (param_4 == 5) << 2;\n    puVar13[0xc] = uVar7;\n    puVar13[0xd] = uVar8;\n    puVar13[0xe] = uVar9;\n    puVar13[0xf] = uVar10;\n    if (local_20[0] == (undefined4 *)0x0) {\n      if ((param_11 == 0) ||\n         ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')))) {\n        FUN_0034d3d0(param_1,puVar13);\n        return puVar13;\n      }\n      if (param_3 != 0) {\n        *(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8;\n      }\n    }\n    else {\n      cVar12 = FUN_0032bf30(local_20[0],param_10,param_4);\n      if (cVar12 != '\0') {\n        FUN_0032d440(param_1,local_20[0],puVar13);\n      }\n      if (local_22 == '\0') {\n        if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }\n        iVar1 = puVar13[9];\n        if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }\n        FUN_003ae060(puVar13,0x40);\n        puVar13 = local_20[0];\n      }\n    }\n  }\n  return puVar13;\n}" (type_identifier "undefined4") (pointer_declarator "*\nFUN_0035ece0(int param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n            undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n            undefined4 param_10,int param_11,undefined4 param_12,int param_13,undefined4 param_14,\n            uint param_15)" (* "*") (function_declarator "FUN_0035ece0(int param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n            undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n            undefined4 param_10,int param_11,undefined4 param_12,int param_13,undefined4 param_14,\n            uint param_15)" (identifier "FUN_0035ece0") (parameter_list "(int param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n            undefined4 param_6,undefined4 param_7,undefined4 param_8,undefined4 param_9,\n            undefined4 param_10,int param_11,undefined4 param_12,int param_13,undefined4 param_14,\n            uint param_15)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) (, ",") (parameter_declaration "undefined4 param_6" (type_identifier "undefined4") (identifier "param_6")) (, ",") (parameter_declaration "undefined4 param_7" (type_identifier "undefined4") (identifier "param_7")) (, ",") (parameter_declaration "undefined4 param_8" (type_identifier "undefined4") (identifier "param_8")) (, ",") (parameter_declaration "undefined4 param_9" (type_identifier "undefined4") (identifier "param_9")) (, ",") (parameter_declaration "undefined4 param_10" (type_identifier "undefined4") (identifier "param_10")) (, ",") (parameter_declaration "int param_11" (primitive_type "int") (identifier "param_11")) (, ",") (parameter_declaration "undefined4 param_12" (type_identifier "undefined4") (identifier "param_12")) (, ",") (parameter_declaration "int param_13" (primitive_type "int") (identifier "param_13")) (, ",") (parameter_declaration "undefined4 param_14" (type_identifier "undefined4") (identifier "param_14")) (, ",") (parameter_declaration "uint param_15" (type_identifier "uint") (identifier "param_15")) () ")")))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  undefined4 uVar11;\n  char cVar12;\n  undefined4 *puVar13;\n  int unaff_EDI;\n  char local_22;\n  char local_21;\n  undefined4 *local_20 [4];\n  \n  FUN_00074f0a();\n  iVar2 = param_13;\n  uVar11 = param_12;\n  uVar10 = param_9;\n  uVar9 = param_8;\n  uVar8 = param_7;\n  uVar7 = param_6;\n  iVar1 = *(int *)(*(int *)(unaff_EDI + 0x28bae1) + 0xc);\n  if (iVar1 == 0) {\n                    \n    FUN_002446e0(unaff_EDI + 0xe9586,0x69,&UNK_0013b229 + unaff_EDI,param_15);\n  }\n  if (*(char *)(*(int *)(iVar1 + 4) + 4) == '\0') {\n    puVar13 = (undefined4 *)\n              FUN_0035e0b0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);\n  }\n  else {\n    puVar13 = (undefined4 *)\n              FUN_0035c410(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);\n  }\n  if (puVar13 != (undefined4 *)0x0) {\n    puVar13[4] = 0;\n    puVar13[1] = param_3;\n    *(byte *)((int)puVar13 + 0x29) = (byte)(iVar2 << 2) | (byte)uVar11 & 3;\n    *puVar13 = param_2;\n    puVar13[5] = 0;\n    *(byte *)(puVar13 + 10) = (byte)param_10 & 0xf | (char)param_11 << 4;\n    puVar13[6] = 0xffffffff;\n    puVar13[2] = param_5;\n    puVar13[7] = 0xffffffff;\n    puVar13[3] = param_14;\n    puVar13[8] = 0;\n    puVar13[9] = 0;\n    *(ushort *)((int)puVar13 + 0x2a) = *(ushort *)((int)puVar13 + 0x2a) & 0x200 | 0x4082;\n    *(byte *)(puVar13 + 0xb) = *(byte *)(puVar13 + 0xb) & 0xe0 | (param_4 == 5) << 2;\n    puVar13[0xc] = uVar7;\n    puVar13[0xd] = uVar8;\n    puVar13[0xe] = uVar9;\n    puVar13[0xf] = uVar10;\n    if (local_20[0] == (undefined4 *)0x0) {\n      if ((param_11 == 0) ||\n         ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')))) {\n        FUN_0034d3d0(param_1,puVar13);\n        return puVar13;\n      }\n      if (param_3 != 0) {\n        *(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8;\n      }\n    }\n    else {\n      cVar12 = FUN_0032bf30(local_20[0],param_10,param_4);\n      if (cVar12 != '\0') {\n        FUN_0032d440(param_1,local_20[0],puVar13);\n      }\n      if (local_22 == '\0') {\n        if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }\n        iVar1 = puVar13[9];\n        if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }\n        FUN_003ae060(puVar13,0x40);\n        puVar13 = local_20[0];\n      }\n    }\n  }\n  return puVar13;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "undefined4 uVar8;" (type_identifier "undefined4") (identifier "uVar8") (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (declaration "undefined4 uVar10;" (type_identifier "undefined4") (identifier "uVar10") (; ";")) (declaration "undefined4 uVar11;" (type_identifier "undefined4") (identifier "uVar11") (; ";")) (declaration "char cVar12;" (primitive_type "char") (identifier "cVar12") (; ";")) (declaration "undefined4 *puVar13;" (type_identifier "undefined4") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "char local_22;" (primitive_type "char") (identifier "local_22") (; ";")) (declaration "char local_21;" (primitive_type "char") (identifier "local_21") (; ";")) (declaration "undefined4 *local_20 [4];" (type_identifier "undefined4") (pointer_declarator "*local_20 [4]" (* "*") (array_declarator "local_20 [4]" (identifier "local_20") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "FUN_00074f0a();" (call_expression "FUN_00074f0a()" (identifier "FUN_00074f0a") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar2 = param_13;" (assignment_expression "iVar2 = param_13" (identifier "iVar2") (= "=") (identifier "param_13")) (; ";")) (expression_statement "uVar11 = param_12;" (assignment_expression "uVar11 = param_12" (identifier "uVar11") (= "=") (identifier "param_12")) (; ";")) (expression_statement "uVar10 = param_9;" (assignment_expression "uVar10 = param_9" (identifier "uVar10") (= "=") (identifier "param_9")) (; ";")) (expression_statement "uVar9 = param_8;" (assignment_expression "uVar9 = param_8" (identifier "uVar9") (= "=") (identifier "param_8")) (; ";")) (expression_statement "uVar8 = param_7;" (assignment_expression "uVar8 = param_7" (identifier "uVar8") (= "=") (identifier "param_7")) (; ";")) (expression_statement "uVar7 = param_6;" (assignment_expression "uVar7 = param_6" (identifier "uVar7") (= "=") (identifier "param_6")) (; ";")) (expression_statement "iVar1 = *(int *)(*(int *)(unaff_EDI + 0x28bae1) + 0xc);" (assignment_expression "iVar1 = *(int *)(*(int *)(unaff_EDI + 0x28bae1) + 0xc)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(*(int *)(unaff_EDI + 0x28bae1) + 0xc)" (* "*") (cast_expression "(int *)(*(int *)(unaff_EDI + 0x28bae1) + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(unaff_EDI + 0x28bae1) + 0xc)" (( "(") (binary_expression "*(int *)(unaff_EDI + 0x28bae1) + 0xc" (pointer_expression "*(int *)(unaff_EDI + 0x28bae1)" (* "*") (cast_expression "(int *)(unaff_EDI + 0x28bae1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x28bae1)" (( "(") (binary_expression "unaff_EDI + 0x28bae1" (identifier "unaff_EDI") (+ "+") (number_literal "0x28bae1")) () ")")))) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (iVar1 == 0) {\n                    \n    FUN_002446e0(unaff_EDI + 0xe9586,0x69,&UNK_0013b229 + unaff_EDI,param_15);\n  }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_002446e0(unaff_EDI + 0xe9586,0x69,&UNK_0013b229 + unaff_EDI,param_15);\n  }" ({ "{") (expression_statement "FUN_002446e0(unaff_EDI + 0xe9586,0x69,&UNK_0013b229 + unaff_EDI,param_15);" (call_expression "FUN_002446e0(unaff_EDI + 0xe9586,0x69,&UNK_0013b229 + unaff_EDI,param_15)" (identifier "FUN_002446e0") (argument_list "(unaff_EDI + 0xe9586,0x69,&UNK_0013b229 + unaff_EDI,param_15)" (( "(") (binary_expression "unaff_EDI + 0xe9586" (identifier "unaff_EDI") (+ "+") (number_literal "0xe9586")) (, ",") (number_literal "0x69") (, ",") (binary_expression "&UNK_0013b229 + unaff_EDI" (pointer_expression "&UNK_0013b229" (& "&") (identifier "UNK_0013b229")) (+ "+") (identifier "unaff_EDI")) (, ",") (identifier "param_15") () ")"))) (; ";")) (} "}"))) (if_statement "if (*(char *)(*(int *)(iVar1 + 4) + 4) == '\0') {\n    puVar13 = (undefined4 *)\n              FUN_0035e0b0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);\n  }\n  else {\n    puVar13 = (undefined4 *)\n              FUN_0035c410(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);\n  }" (if "if") (parenthesized_expression "(*(char *)(*(int *)(iVar1 + 4) + 4) == '\0')" (( "(") (binary_expression "*(char *)(*(int *)(iVar1 + 4) + 4) == '\0'" (pointer_expression "*(char *)(*(int *)(iVar1 + 4) + 4)" (* "*") (cast_expression "(char *)(*(int *)(iVar1 + 4) + 4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar1 + 4) + 4)" (( "(") (binary_expression "*(int *)(iVar1 + 4) + 4" (pointer_expression "*(int *)(iVar1 + 4)" (* "*") (cast_expression "(int *)(iVar1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 4)" (( "(") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "4")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    puVar13 = (undefined4 *)\n              FUN_0035e0b0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);\n  }" ({ "{") (expression_statement "puVar13 = (undefined4 *)\n              FUN_0035e0b0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);" (assignment_expression "puVar13 = (undefined4 *)\n              FUN_0035e0b0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0)" (identifier "puVar13") (= "=") (cast_expression "(undefined4 *)\n              FUN_0035e0b0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0035e0b0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0)" (identifier "FUN_0035e0b0") (argument_list "(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&param_2" (& "&") (identifier "param_2")) (, ",") (pointer_expression "&param_3" (& "&") (identifier "param_3")) (, ",") (binary_expression "param_15 & 0xff" (identifier "param_15") (& "&") (number_literal "0xff")) (, ",") (identifier "param_12") (, ",") (identifier "local_20") (, ",") (pointer_expression "&local_22" (& "&") (identifier "local_22")) (, ",") (binary_expression "param_11 == 0" (identifier "param_11") (== "==") (number_literal "0")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    puVar13 = (undefined4 *)\n              FUN_0035c410(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);\n  }" (else "else") (compound_statement "{\n    puVar13 = (undefined4 *)\n              FUN_0035c410(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);\n  }" ({ "{") (expression_statement "puVar13 = (undefined4 *)\n              FUN_0035c410(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0);" (assignment_expression "puVar13 = (undefined4 *)\n              FUN_0035c410(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0)" (identifier "puVar13") (= "=") (cast_expression "(undefined4 *)\n              FUN_0035c410(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0035c410(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0)" (identifier "FUN_0035c410") (argument_list "(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,\n                           param_11 == 0)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&param_2" (& "&") (identifier "param_2")) (, ",") (pointer_expression "&param_3" (& "&") (identifier "param_3")) (, ",") (binary_expression "param_15 & 0xff" (identifier "param_15") (& "&") (number_literal "0xff")) (, ",") (identifier "param_12") (, ",") (identifier "local_20") (, ",") (pointer_expression "&local_22" (& "&") (identifier "local_22")) (, ",") (binary_expression "param_11 == 0" (identifier "param_11") (== "==") (number_literal "0")) () ")"))))) (; ";")) (} "}")))) (if_statement "if (puVar13 != (undefined4 *)0x0) {\n    puVar13[4] = 0;\n    puVar13[1] = param_3;\n    *(byte *)((int)puVar13 + 0x29) = (byte)(iVar2 << 2) | (byte)uVar11 & 3;\n    *puVar13 = param_2;\n    puVar13[5] = 0;\n    *(byte *)(puVar13 + 10) = (byte)param_10 & 0xf | (char)param_11 << 4;\n    puVar13[6] = 0xffffffff;\n    puVar13[2] = param_5;\n    puVar13[7] = 0xffffffff;\n    puVar13[3] = param_14;\n    puVar13[8] = 0;\n    puVar13[9] = 0;\n    *(ushort *)((int)puVar13 + 0x2a) = *(ushort *)((int)puVar13 + 0x2a) & 0x200 | 0x4082;\n    *(byte *)(puVar13 + 0xb) = *(byte *)(puVar13 + 0xb) & 0xe0 | (param_4 == 5) << 2;\n    puVar13[0xc] = uVar7;\n    puVar13[0xd] = uVar8;\n    puVar13[0xe] = uVar9;\n    puVar13[0xf] = uVar10;\n    if (local_20[0] == (undefined4 *)0x0) {\n      if ((param_11 == 0) ||\n         ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')))) {\n        FUN_0034d3d0(param_1,puVar13);\n        return puVar13;\n      }\n      if (param_3 != 0) {\n        *(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8;\n      }\n    }\n    else {\n      cVar12 = FUN_0032bf30(local_20[0],param_10,param_4);\n      if (cVar12 != '\0') {\n        FUN_0032d440(param_1,local_20[0],puVar13);\n      }\n      if (local_22 == '\0') {\n        if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }\n        iVar1 = puVar13[9];\n        if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }\n        FUN_003ae060(puVar13,0x40);\n        puVar13 = local_20[0];\n      }\n    }\n  }" (if "if") (parenthesized_expression "(puVar13 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar13 != (undefined4 *)0x0" (identifier "puVar13") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    puVar13[4] = 0;\n    puVar13[1] = param_3;\n    *(byte *)((int)puVar13 + 0x29) = (byte)(iVar2 << 2) | (byte)uVar11 & 3;\n    *puVar13 = param_2;\n    puVar13[5] = 0;\n    *(byte *)(puVar13 + 10) = (byte)param_10 & 0xf | (char)param_11 << 4;\n    puVar13[6] = 0xffffffff;\n    puVar13[2] = param_5;\n    puVar13[7] = 0xffffffff;\n    puVar13[3] = param_14;\n    puVar13[8] = 0;\n    puVar13[9] = 0;\n    *(ushort *)((int)puVar13 + 0x2a) = *(ushort *)((int)puVar13 + 0x2a) & 0x200 | 0x4082;\n    *(byte *)(puVar13 + 0xb) = *(byte *)(puVar13 + 0xb) & 0xe0 | (param_4 == 5) << 2;\n    puVar13[0xc] = uVar7;\n    puVar13[0xd] = uVar8;\n    puVar13[0xe] = uVar9;\n    puVar13[0xf] = uVar10;\n    if (local_20[0] == (undefined4 *)0x0) {\n      if ((param_11 == 0) ||\n         ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')))) {\n        FUN_0034d3d0(param_1,puVar13);\n        return puVar13;\n      }\n      if (param_3 != 0) {\n        *(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8;\n      }\n    }\n    else {\n      cVar12 = FUN_0032bf30(local_20[0],param_10,param_4);\n      if (cVar12 != '\0') {\n        FUN_0032d440(param_1,local_20[0],puVar13);\n      }\n      if (local_22 == '\0') {\n        if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }\n        iVar1 = puVar13[9];\n        if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }\n        FUN_003ae060(puVar13,0x40);\n        puVar13 = local_20[0];\n      }\n    }\n  }" ({ "{") (expression_statement "puVar13[4] = 0;" (assignment_expression "puVar13[4] = 0" (subscript_expression "puVar13[4]" (identifier "puVar13") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar13[1] = param_3;" (assignment_expression "puVar13[1] = param_3" (subscript_expression "puVar13[1]" (identifier "puVar13") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "param_3")) (; ";")) (expression_statement "*(byte *)((int)puVar13 + 0x29) = (byte)(iVar2 << 2) | (byte)uVar11 & 3;" (assignment_expression "*(byte *)((int)puVar13 + 0x29) = (byte)(iVar2 << 2) | (byte)uVar11 & 3" (pointer_expression "*(byte *)((int)puVar13 + 0x29)" (* "*") (cast_expression "(byte *)((int)puVar13 + 0x29)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + 0x29)" (( "(") (binary_expression "(int)puVar13 + 0x29" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "0x29")) () ")")))) (= "=") (binary_expression "(byte)(iVar2 << 2) | (byte)uVar11 & 3" (call_expression "(byte)(iVar2 << 2)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(iVar2 << 2)" (( "(") (binary_expression "iVar2 << 2" (identifier "iVar2") (<< "<<") (number_literal "2")) () ")"))) (| "|") (binary_expression "(byte)uVar11 & 3" (cast_expression "(byte)uVar11" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar11")) (& "&") (number_literal "3")))) (; ";")) (expression_statement "*puVar13 = param_2;" (assignment_expression "*puVar13 = param_2" (pointer_expression "*puVar13" (* "*") (identifier "puVar13")) (= "=") (identifier "param_2")) (; ";")) (expression_statement "puVar13[5] = 0;" (assignment_expression "puVar13[5] = 0" (subscript_expression "puVar13[5]" (identifier "puVar13") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(byte *)(puVar13 + 10) = (byte)param_10 & 0xf | (char)param_11 << 4;" (assignment_expression "*(byte *)(puVar13 + 10) = (byte)param_10 & 0xf | (char)param_11 << 4" (pointer_expression "*(byte *)(puVar13 + 10)" (* "*") (cast_expression "(byte *)(puVar13 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar13 + 10)" (( "(") (binary_expression "puVar13 + 10" (identifier "puVar13") (+ "+") (number_literal "10")) () ")")))) (= "=") (binary_expression "(byte)param_10 & 0xf | (char)param_11 << 4" (binary_expression "(byte)param_10 & 0xf" (cast_expression "(byte)param_10" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "param_10")) (& "&") (number_literal "0xf")) (| "|") (binary_expression "(char)param_11 << 4" (cast_expression "(char)param_11" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "param_11")) (<< "<<") (number_literal "4")))) (; ";")) (expression_statement "puVar13[6] = 0xffffffff;" (assignment_expression "puVar13[6] = 0xffffffff" (subscript_expression "puVar13[6]" (identifier "puVar13") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "puVar13[2] = param_5;" (assignment_expression "puVar13[2] = param_5" (subscript_expression "puVar13[2]" (identifier "puVar13") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "param_5")) (; ";")) (expression_statement "puVar13[7] = 0xffffffff;" (assignment_expression "puVar13[7] = 0xffffffff" (subscript_expression "puVar13[7]" (identifier "puVar13") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "puVar13[3] = param_14;" (assignment_expression "puVar13[3] = param_14" (subscript_expression "puVar13[3]" (identifier "puVar13") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "param_14")) (; ";")) (expression_statement "puVar13[8] = 0;" (assignment_expression "puVar13[8] = 0" (subscript_expression "puVar13[8]" (identifier "puVar13") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar13[9] = 0;" (assignment_expression "puVar13[9] = 0" (subscript_expression "puVar13[9]" (identifier "puVar13") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(ushort *)((int)puVar13 + 0x2a) = *(ushort *)((int)puVar13 + 0x2a) & 0x200 | 0x4082;" (assignment_expression "*(ushort *)((int)puVar13 + 0x2a) = *(ushort *)((int)puVar13 + 0x2a) & 0x200 | 0x4082" (pointer_expression "*(ushort *)((int)puVar13 + 0x2a)" (* "*") (cast_expression "(ushort *)((int)puVar13 + 0x2a)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + 0x2a)" (( "(") (binary_expression "(int)puVar13 + 0x2a" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "0x2a")) () ")")))) (= "=") (binary_expression "*(ushort *)((int)puVar13 + 0x2a) & 0x200 | 0x4082" (binary_expression "*(ushort *)((int)puVar13 + 0x2a) & 0x200" (pointer_expression "*(ushort *)((int)puVar13 + 0x2a)" (* "*") (cast_expression "(ushort *)((int)puVar13 + 0x2a)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + 0x2a)" (( "(") (binary_expression "(int)puVar13 + 0x2a" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "0x2a")) () ")")))) (& "&") (number_literal "0x200")) (| "|") (number_literal "0x4082"))) (; ";")) (expression_statement "*(byte *)(puVar13 + 0xb) = *(byte *)(puVar13 + 0xb) & 0xe0 | (param_4 == 5) << 2;" (assignment_expression "*(byte *)(puVar13 + 0xb) = *(byte *)(puVar13 + 0xb) & 0xe0 | (param_4 == 5) << 2" (pointer_expression "*(byte *)(puVar13 + 0xb)" (* "*") (cast_expression "(byte *)(puVar13 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar13 + 0xb)" (( "(") (binary_expression "puVar13 + 0xb" (identifier "puVar13") (+ "+") (number_literal "0xb")) () ")")))) (= "=") (binary_expression "*(byte *)(puVar13 + 0xb) & 0xe0 | (param_4 == 5) << 2" (binary_expression "*(byte *)(puVar13 + 0xb) & 0xe0" (pointer_expression "*(byte *)(puVar13 + 0xb)" (* "*") (cast_expression "(byte *)(puVar13 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar13 + 0xb)" (( "(") (binary_expression "puVar13 + 0xb" (identifier "puVar13") (+ "+") (number_literal "0xb")) () ")")))) (& "&") (number_literal "0xe0")) (| "|") (binary_expression "(param_4 == 5) << 2" (parenthesized_expression "(param_4 == 5)" (( "(") (binary_expression "param_4 == 5" (identifier "param_4") (== "==") (number_literal "5")) () ")")) (<< "<<") (number_literal "2")))) (; ";")) (expression_statement "puVar13[0xc] = uVar7;" (assignment_expression "puVar13[0xc] = uVar7" (subscript_expression "puVar13[0xc]" (identifier "puVar13") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "puVar13[0xd] = uVar8;" (assignment_expression "puVar13[0xd] = uVar8" (subscript_expression "puVar13[0xd]" (identifier "puVar13") ([ "[") (number_literal "0xd") (] "]")) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "puVar13[0xe] = uVar9;" (assignment_expression "puVar13[0xe] = uVar9" (subscript_expression "puVar13[0xe]" (identifier "puVar13") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "puVar13[0xf] = uVar10;" (assignment_expression "puVar13[0xf] = uVar10" (subscript_expression "puVar13[0xf]" (identifier "puVar13") ([ "[") (number_literal "0xf") (] "]")) (= "=") (identifier "uVar10")) (; ";")) (if_statement "if (local_20[0] == (undefined4 *)0x0) {\n      if ((param_11 == 0) ||\n         ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')))) {\n        FUN_0034d3d0(param_1,puVar13);\n        return puVar13;\n      }\n      if (param_3 != 0) {\n        *(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8;\n      }\n    }\n    else {\n      cVar12 = FUN_0032bf30(local_20[0],param_10,param_4);\n      if (cVar12 != '\0') {\n        FUN_0032d440(param_1,local_20[0],puVar13);\n      }\n      if (local_22 == '\0') {\n        if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }\n        iVar1 = puVar13[9];\n        if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }\n        FUN_003ae060(puVar13,0x40);\n        puVar13 = local_20[0];\n      }\n    }" (if "if") (parenthesized_expression "(local_20[0] == (undefined4 *)0x0)" (( "(") (binary_expression "local_20[0] == (undefined4 *)0x0" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      if ((param_11 == 0) ||\n         ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')))) {\n        FUN_0034d3d0(param_1,puVar13);\n        return puVar13;\n      }\n      if (param_3 != 0) {\n        *(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8;\n      }\n    }" ({ "{") (if_statement "if ((param_11 == 0) ||\n         ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')))) {\n        FUN_0034d3d0(param_1,puVar13);\n        return puVar13;\n      }" (if "if") (parenthesized_expression "((param_11 == 0) ||\n         ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0'))))" (( "(") (binary_expression "(param_11 == 0) ||\n         ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')))" (parenthesized_expression "(param_11 == 0)" (( "(") (binary_expression "param_11 == 0" (identifier "param_11") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')))" (( "(") (parenthesized_expression "(cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0'))" (( "(") (comma_expression "cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n          cVar12 != '\0' && (local_21 == '\0')" (assignment_expression "cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" (identifier "cVar12") (= "=") (call_expression "FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" (identifier "FUN_003434d0") (argument_list "(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x154)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x154)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x154)" (( "(") (binary_expression "param_1 + 0x154" (identifier "param_1") (+ "+") (number_literal "0x154")) () ")")))) (, ",") (identifier "param_2") (, ",") (number_literal "0") (, ",") (pointer_expression "&local_21" (& "&") (identifier "local_21")) () ")")))) (, ",") (binary_expression "cVar12 != '\0' && (local_21 == '\0')" (binary_expression "cVar12 != '\0'" (identifier "cVar12") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (&& "&&") (parenthesized_expression "(local_21 == '\0')" (( "(") (binary_expression "local_21 == '\0'" (identifier "local_21") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")))) () ")")) () ")"))) () ")")) (compound_statement "{\n        FUN_0034d3d0(param_1,puVar13);\n        return puVar13;\n      }" ({ "{") (expression_statement "FUN_0034d3d0(param_1,puVar13);" (call_expression "FUN_0034d3d0(param_1,puVar13)" (identifier "FUN_0034d3d0") (argument_list "(param_1,puVar13)" (( "(") (identifier "param_1") (, ",") (identifier "puVar13") () ")"))) (; ";")) (return_statement "return puVar13;" (return "return") (identifier "puVar13") (; ";")) (} "}"))) (if_statement "if (param_3 != 0) {\n        *(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8;\n      }" (if "if") (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        *(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8;\n      }" ({ "{") (expression_statement "*(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8;" (assignment_expression "*(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8" (pointer_expression "*(byte *)((int)puVar13 + 0x2a)" (* "*") (cast_expression "(byte *)((int)puVar13 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + 0x2a)" (( "(") (binary_expression "(int)puVar13 + 0x2a" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "0x2a")) () ")")))) (= "=") (binary_expression "*(byte *)((int)puVar13 + 0x2a) | 8" (pointer_expression "*(byte *)((int)puVar13 + 0x2a)" (* "*") (cast_expression "(byte *)((int)puVar13 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + 0x2a)" (( "(") (binary_expression "(int)puVar13 + 0x2a" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (number_literal "0x2a")) () ")")))) (| "|") (number_literal "8"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      cVar12 = FUN_0032bf30(local_20[0],param_10,param_4);\n      if (cVar12 != '\0') {\n        FUN_0032d440(param_1,local_20[0],puVar13);\n      }\n      if (local_22 == '\0') {\n        if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }\n        iVar1 = puVar13[9];\n        if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }\n        FUN_003ae060(puVar13,0x40);\n        puVar13 = local_20[0];\n      }\n    }" (else "else") (compound_statement "{\n      cVar12 = FUN_0032bf30(local_20[0],param_10,param_4);\n      if (cVar12 != '\0') {\n        FUN_0032d440(param_1,local_20[0],puVar13);\n      }\n      if (local_22 == '\0') {\n        if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }\n        iVar1 = puVar13[9];\n        if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }\n        FUN_003ae060(puVar13,0x40);\n        puVar13 = local_20[0];\n      }\n    }" ({ "{") (expression_statement "cVar12 = FUN_0032bf30(local_20[0],param_10,param_4);" (assignment_expression "cVar12 = FUN_0032bf30(local_20[0],param_10,param_4)" (identifier "cVar12") (= "=") (call_expression "FUN_0032bf30(local_20[0],param_10,param_4)" (identifier "FUN_0032bf30") (argument_list "(local_20[0],param_10,param_4)" (( "(") (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (, ",") (identifier "param_10") (, ",") (identifier "param_4") () ")")))) (; ";")) (if_statement "if (cVar12 != '\0') {\n        FUN_0032d440(param_1,local_20[0],puVar13);\n      }" (if "if") (parenthesized_expression "(cVar12 != '\0')" (( "(") (binary_expression "cVar12 != '\0'" (identifier "cVar12") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        FUN_0032d440(param_1,local_20[0],puVar13);\n      }" ({ "{") (expression_statement "FUN_0032d440(param_1,local_20[0],puVar13);" (call_expression "FUN_0032d440(param_1,local_20[0],puVar13)" (identifier "FUN_0032d440") (argument_list "(param_1,local_20[0],puVar13)" (( "(") (identifier "param_1") (, ",") (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (, ",") (identifier "puVar13") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_22 == '\0') {\n        if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }\n        iVar1 = puVar13[9];\n        if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }\n        FUN_003ae060(puVar13,0x40);\n        puVar13 = local_20[0];\n      }" (if "if") (parenthesized_expression "(local_22 == '\0')" (( "(") (binary_expression "local_22 == '\0'" (identifier "local_22") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }\n        iVar1 = puVar13[9];\n        if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }\n        FUN_003ae060(puVar13,0x40);\n        puVar13 = local_20[0];\n      }" ({ "{") (if_statement "if ((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))) {\n          FUN_0034d3d0(param_1,local_20[0]);\n        }" (if "if") (parenthesized_expression "((param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0'))))" (( "(") (binary_expression "(param_11 == 0) ||\n           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))" (parenthesized_expression "(param_11 == 0)" (( "(") (binary_expression "param_11 == 0" (identifier "param_11") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')))" (( "(") (parenthesized_expression "(cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0'))" (( "(") (comma_expression "cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),\n            cVar12 != '\0' && (local_21 == '\0')" (assignment_expression "cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" (identifier "cVar12") (= "=") (call_expression "FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" (identifier "FUN_003434d0") (argument_list "(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x154)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x154)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x154)" (( "(") (binary_expression "param_1 + 0x154" (identifier "param_1") (+ "+") (number_literal "0x154")) () ")")))) (, ",") (identifier "param_2") (, ",") (number_literal "0") (, ",") (pointer_expression "&local_21" (& "&") (identifier "local_21")) () ")")))) (, ",") (binary_expression "cVar12 != '\0' && (local_21 == '\0')" (binary_expression "cVar12 != '\0'" (identifier "cVar12") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (&& "&&") (parenthesized_expression "(local_21 == '\0')" (( "(") (binary_expression "local_21 == '\0'" (identifier "local_21") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")))) () ")")) () ")"))) () ")")) (compound_statement "{\n          FUN_0034d3d0(param_1,local_20[0]);\n        }" ({ "{") (expression_statement "FUN_0034d3d0(param_1,local_20[0]);" (call_expression "FUN_0034d3d0(param_1,local_20[0])" (identifier "FUN_0034d3d0") (argument_list "(param_1,local_20[0])" (( "(") (identifier "param_1") (, ",") (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) () ")"))) (; ";")) (} "}"))) (expression_statement "iVar1 = puVar13[9];" (assignment_expression "iVar1 = puVar13[9]" (identifier "iVar1") (= "=") (subscript_expression "puVar13[9]" (identifier "puVar13") ([ "[") (number_literal "9") (] "]"))) (; ";")) (if_statement "if (iVar1 != 0) {\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          iVar2 = *(int *)(iVar1 + 8);\n          if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }\n          FUN_003ae060(iVar1,0xc);\n        }" ({ "{") (expression_statement "iVar2 = *(int *)(iVar1 + 8);" (assignment_expression "iVar2 = *(int *)(iVar1 + 8)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(iVar1 + 8)" (* "*") (cast_expression "(int *)(iVar1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 8)" (( "(") (binary_expression "iVar1 + 8" (identifier "iVar1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar2 != 0) {\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            iVar3 = *(int *)(iVar2 + 8);\n            if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }\n            FUN_003ae060(iVar2,0xc);\n          }" ({ "{") (expression_statement "iVar3 = *(int *)(iVar2 + 8);" (assignment_expression "iVar3 = *(int *)(iVar2 + 8)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(iVar2 + 8)" (* "*") (cast_expression "(int *)(iVar2 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 8)" (( "(") (binary_expression "iVar2 + 8" (identifier "iVar2") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar3 != 0) {\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              iVar4 = *(int *)(iVar3 + 8);\n              if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }\n              FUN_003ae060(iVar3,0xc);\n            }" ({ "{") (expression_statement "iVar4 = *(int *)(iVar3 + 8);" (assignment_expression "iVar4 = *(int *)(iVar3 + 8)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iVar3 + 8)" (* "*") (cast_expression "(int *)(iVar3 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 8)" (( "(") (binary_expression "iVar3 + 8" (identifier "iVar3") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar4 != 0) {\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                iVar5 = *(int *)(iVar4 + 8);\n                if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }\n                FUN_003ae060(iVar4,0xc);\n              }" ({ "{") (expression_statement "iVar5 = *(int *)(iVar4 + 8);" (assignment_expression "iVar5 = *(int *)(iVar4 + 8)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(iVar4 + 8)" (* "*") (cast_expression "(int *)(iVar4 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 8)" (( "(") (binary_expression "iVar4 + 8" (identifier "iVar4") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar5 != 0) {\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  iVar6 = *(int *)(iVar5 + 8);\n                  if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }\n                  FUN_003ae060(iVar5,0xc);\n                }" ({ "{") (expression_statement "iVar6 = *(int *)(iVar5 + 8);" (assignment_expression "iVar6 = *(int *)(iVar5 + 8)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(iVar5 + 8)" (* "*") (cast_expression "(int *)(iVar5 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 8)" (( "(") (binary_expression "iVar5 + 8" (identifier "iVar5") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar6 != 0) {\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    FUN_00350410(iVar6);\n                    FUN_003ae060(iVar6,0xc);\n                  }" ({ "{") (expression_statement "FUN_00350410(iVar6);" (call_expression "FUN_00350410(iVar6)" (identifier "FUN_00350410") (argument_list "(iVar6)" (( "(") (identifier "iVar6") () ")"))) (; ";")) (expression_statement "FUN_003ae060(iVar6,0xc);" (call_expression "FUN_003ae060(iVar6,0xc)" (identifier "FUN_003ae060") (argument_list "(iVar6,0xc)" (( "(") (identifier "iVar6") (, ",") (number_literal "0xc") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_003ae060(iVar5,0xc);" (call_expression "FUN_003ae060(iVar5,0xc)" (identifier "FUN_003ae060") (argument_list "(iVar5,0xc)" (( "(") (identifier "iVar5") (, ",") (number_literal "0xc") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_003ae060(iVar4,0xc);" (call_expression "FUN_003ae060(iVar4,0xc)" (identifier "FUN_003ae060") (argument_list "(iVar4,0xc)" (( "(") (identifier "iVar4") (, ",") (number_literal "0xc") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_003ae060(iVar3,0xc);" (call_expression "FUN_003ae060(iVar3,0xc)" (identifier "FUN_003ae060") (argument_list "(iVar3,0xc)" (( "(") (identifier "iVar3") (, ",") (number_literal "0xc") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_003ae060(iVar2,0xc);" (call_expression "FUN_003ae060(iVar2,0xc)" (identifier "FUN_003ae060") (argument_list "(iVar2,0xc)" (( "(") (identifier "iVar2") (, ",") (number_literal "0xc") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_003ae060(iVar1,0xc);" (call_expression "FUN_003ae060(iVar1,0xc)" (identifier "FUN_003ae060") (argument_list "(iVar1,0xc)" (( "(") (identifier "iVar1") (, ",") (number_literal "0xc") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_003ae060(puVar13,0x40);" (call_expression "FUN_003ae060(puVar13,0x40)" (identifier "FUN_003ae060") (argument_list "(puVar13,0x40)" (( "(") (identifier "puVar13") (, ",") (number_literal "0x40") () ")"))) (; ";")) (expression_statement "puVar13 = local_20[0];" (assignment_expression "puVar13 = local_20[0]" (identifier "puVar13") (= "=") (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]"))) (; ";")) (} "}"))) (} "}")))) (} "}"))) (return_statement "return puVar13;" (return "return") (identifier "puVar13") (; ";")) (} "}")))

/* WARNING: Enum "STT": Some values do not have unique names */
/* WARNING: Enum "STB": Some values do not have unique names */
/* DWARF original prototype: Sized_symbol<64> * do_define_in_output_segment<64>(Symbol_table * this,
   char * name, char * version, Defined defined, Output_segment * os, Elf_Addr value, Elf_WXword
   symsize, STT type, STB binding, STV visibility, uchar nonvis, Segment_offset_base offset_base,
   bool only_if_ref) */

var_1<64> * __thiscall
gold::Symbol_table::do_define_in_output_segment<64>
          (Symbol_table *this,char *name,char *var_20,Defined var_15,Output_segment *os,
          type_4 value,type_5 symsize,STT type,STB var_8,type_6 visibility,uchar nonvis,
          Segment_offset_base offset_base,bool only_if_ref)

{
  type_1 *puVar1;
  type_2 var_14;
  type_3 *var_25;
  type_3 *var_26;
  type_3 *var_27;
  type_3 *var_28;
  type_3 *var_29;
  type_3 *var_30;
  type_4 EVar8;
  type_5 EVar9;
  type_6 SVar10;
  int var_12;
  bool bVar12;
  var_1<64> *var_11;
  int var_3;
  type_7 in_stack_00000035;
  type_7 in_stack_0000003d;
  var_1<64> *__in_chrg;
  bool var_24;
  bool var_19;
  var_1<64> *var_17;
  
  var_2();
  var_12 = _nonvis;
  SVar10 = visibility;
  EVar9 = symsize;
  EVar8 = value;
  if (*(int *)(*(int *)(&LAB_0028bae1 + var_3) + 0xc) == 0) {
                    /* WARNING: Subroutine does not return */
    var_4((char *)(var_3 + 0xe9586),0x69,&UNK_0013b229 + var_3);
  }
  if (*(char *)(*(int *)(*(int *)(*(int *)(&LAB_0028bae1 + var_3) + 0xc) + 4) + 4) == '\0') {
    var_11 = var_5<64,var_6>
                        (this,&name,&var_20,var_7(_only_if_ref,0),visibility,&var_17,
                         &var_24,var_8 == var_9);
  }
  else {
    var_11 = var_5<64,var_10>
                        (this,&name,&var_20,var_7(_only_if_ref,0),visibility,&var_17,
                         &var_24,var_8 == var_9);
  }
  if (var_11 == (var_1<64> *)0x0) {
    return (var_1<64> *)0x0;
  }
  (var_11->super_Symbol).symtab_index_ = 0;
  (var_11->super_Symbol).version_ = var_20;
  (var_11->super_Symbol).field_0x29 = (type_8)(var_12 << 2) | (type_8)SVar10 & 3;
  (var_11->super_Symbol).name_ = name;
  (var_11->super_Symbol).dynsym_index_ = 0;
  (var_11->super_Symbol).field_0x28 = (type_1)type & var_13 | (type_1)var_8 << 4;
  (var_11->super_Symbol).plt_offset_ = 0xffffffff;
  (var_11->super_Symbol).u1_.output_segment = os;
  (var_11->super_Symbol).got_offsets_.got_type_ = 0xffffffff;
  (var_11->super_Symbol).u2_.offset_base = offset_base;
  var_14 = *(type_2 *)&(var_11->super_Symbol).field_0x2a;
  (var_11->super_Symbol).got_offsets_.got_offset_ = 0;
  (var_11->super_Symbol).got_offsets_.got_next_ = (type_3 *)0x0;
  *(type_2 *)&(var_11->super_Symbol).field_0x2a = var_14 & 0x200 | 0x4082;
  (var_11->super_Symbol).field_0x2c =
       (var_11->super_Symbol).field_0x2c & 0xe0 | (var_15 == var_16) << 2;
  var_11->value_ = EVar8;
  var_11->symsize_ = EVar9;
  if (var_17 == (var_1<64> *)0x0) {
    if (var_8 != var_9) {
      bVar12 = Version_script_info::var_18
                         (this->version_script_,name,(type_9 *)0x0,&var_19);
      if ((!bVar12) || (var_19 != false)) {
        if (var_20 == (char *)0x0) {
          return var_11;
        }
        puVar1 = &(var_11->super_Symbol).field_0x2a;
        *puVar1 = *puVar1 | 8;
        return var_11;
      }
    }
    var_21(this,&var_11->super_Symbol);
    return var_11;
  }
  bVar12 = var_22(&var_17->super_Symbol,type,var_15);
  if (bVar12) {
    var_23<64>(this,var_17,var_11);
  }
  if (var_24 != false) {
    return var_11;
  }
  if (var_8 != var_9) {
    __in_chrg = (var_1<64> *)name;
    bVar12 = Version_script_info::var_18
                       (this->version_script_,name,(type_9 *)0x0,&var_19);
    if ((!bVar12) || (var_19 != false)) goto LAB_0035ee7f;
  }
  __in_chrg = var_17;
  var_21(this,&var_17->super_Symbol);
LAB_0035ee7f:
  var_25 = (var_11->super_Symbol).got_offsets_.got_next_;
  if (var_25 != (type_3 *)0x0) {
    var_26 = var_25->got_next_;
    if (var_26 != (type_3 *)0x0) {
      var_27 = var_26->got_next_;
      if (var_27 != (type_3 *)0x0) {
        var_28 = var_27->got_next_;
        if (var_28 != (type_3 *)0x0) {
          var_29 = var_28->got_next_;
          if (var_29 != (type_3 *)0x0) {
            var_30 = var_29->got_next_;
            if (var_30 != (type_3 *)0x0) {
              Got_offset_list::~type_3(var_30,(int)__in_chrg);
              var_31(var_30,0xc);
            }
            var_31(var_29,0xc);
          }
          var_31(var_28,0xc);
        }
        var_31(var_27,0xc);
      }
      var_31(var_26,0xc);
    }
    var_31(var_25,0xc);
  }
  var_31(var_11,0x40);
  return var_17;
}


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

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

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  undefined4 uVar11;
  char cVar12;
  undefined4 *puVar13;
  int unaff_EDI;
  char local_22;
  char local_21;
  undefined4 *local_20 [4];
  
  FUN_00074f0a();
  iVar2 = param_13;
  uVar11 = param_12;
  uVar10 = param_9;
  uVar9 = param_8;
  uVar8 = param_7;
  uVar7 = param_6;
  iVar1 = *(int *)(*(int *)(unaff_EDI + 0x28bae1) + 0xc);
  if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_002446e0(unaff_EDI + 0xe9586,0x69,&UNK_0013b229 + unaff_EDI,param_15);
  }
  if (*(char *)(*(int *)(iVar1 + 4) + 4) == '\0') {
    puVar13 = (undefined4 *)
              FUN_0035e0b0(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,
                           param_11 == 0);
  }
  else {
    puVar13 = (undefined4 *)
              FUN_0035c410(param_1,&param_2,&param_3,param_15 & 0xff,param_12,local_20,&local_22,
                           param_11 == 0);
  }
  if (puVar13 != (undefined4 *)0x0) {
    puVar13[4] = 0;
    puVar13[1] = param_3;
    *(byte *)((int)puVar13 + 0x29) = (byte)(iVar2 << 2) | (byte)uVar11 & 3;
    *puVar13 = param_2;
    puVar13[5] = 0;
    *(byte *)(puVar13 + 10) = (byte)param_10 & 0xf | (char)param_11 << 4;
    puVar13[6] = 0xffffffff;
    puVar13[2] = param_5;
    puVar13[7] = 0xffffffff;
    puVar13[3] = param_14;
    puVar13[8] = 0;
    puVar13[9] = 0;
    *(ushort *)((int)puVar13 + 0x2a) = *(ushort *)((int)puVar13 + 0x2a) & 0x200 | 0x4082;
    *(byte *)(puVar13 + 0xb) = *(byte *)(puVar13 + 0xb) & 0xe0 | (param_4 == 5) << 2;
    puVar13[0xc] = uVar7;
    puVar13[0xd] = uVar8;
    puVar13[0xe] = uVar9;
    puVar13[0xf] = uVar10;
    if (local_20[0] == (undefined4 *)0x0) {
      if ((param_11 == 0) ||
         ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),
          cVar12 != '\0' && (local_21 == '\0')))) {
        FUN_0034d3d0(param_1,puVar13);
        return puVar13;
      }
      if (param_3 != 0) {
        *(byte *)((int)puVar13 + 0x2a) = *(byte *)((int)puVar13 + 0x2a) | 8;
      }
    }
    else {
      cVar12 = FUN_0032bf30(local_20[0],param_10,param_4);
      if (cVar12 != '\0') {
        FUN_0032d440(param_1,local_20[0],puVar13);
      }
      if (local_22 == '\0') {
        if ((param_11 == 0) ||
           ((cVar12 = FUN_003434d0(*(undefined4 *)(param_1 + 0x154),param_2,0,&local_21),
            cVar12 != '\0' && (local_21 == '\0')))) {
          FUN_0034d3d0(param_1,local_20[0]);
        }
        iVar1 = puVar13[9];
        if (iVar1 != 0) {
          iVar2 = *(int *)(iVar1 + 8);
          if (iVar2 != 0) {
            iVar3 = *(int *)(iVar2 + 8);
            if (iVar3 != 0) {
              iVar4 = *(int *)(iVar3 + 8);
              if (iVar4 != 0) {
                iVar5 = *(int *)(iVar4 + 8);
                if (iVar5 != 0) {
                  iVar6 = *(int *)(iVar5 + 8);
                  if (iVar6 != 0) {
                    FUN_00350410(iVar6);
                    FUN_003ae060(iVar6,0xc);
                  }
                  FUN_003ae060(iVar5,0xc);
                }
                FUN_003ae060(iVar4,0xc);
              }
              FUN_003ae060(iVar3,0xc);
            }
            FUN_003ae060(iVar2,0xc);
          }
          FUN_003ae060(iVar1,0xc);
        }
        FUN_003ae060(puVar13,0x40);
        puVar13 = local_20[0];
      }
    }
  }
  return puVar13;
}

