
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */
/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */
/* WARNING: Enum "STT": Some values do not have unique names */
/* WARNING: Enum "STB": Some values do not have unique names */
/* DWARF original prototype: void define_symbols(Symbol_table * this, Layout * layout, int count,
   Define_symbol_in_section * p, bool only_if_ref) */

void __thiscall
gold::Symbol_table::define_symbols
          (Symbol_table *this,Layout *layout,int count,Define_symbol_in_section *p,bool only_if_ref)

{
  uint64_t *puVar1;
  uint64_t *puVar2;
  STT *pSVar3;
  STB *pSVar4;
  STV *pSVar5;
  uchar *puVar6;
  bool *pbVar7;
  char **ppcVar8;
  Output_data *od;
  bool bVar9;
  int iVar10;
  
  if (0 < count) {
    iVar10 = 0;
    do {
      while( true ) {
        od = (Output_data *)(*(code *)PTR_find_output_section_004c1e4c)(layout,p->output_section);
        ppcVar8 = &p->name;
        if (od != (Output_data *)0x0) break;
        puVar1 = &p->size;
        pSVar3 = &p->type;
        pSVar4 = &p->binding;
        pSVar5 = &p->visibility;
        puVar6 = &p->nonvis;
        bVar9 = only_if_ref;
        if (!only_if_ref) {
          bVar9 = p->only_if_ref;
        }
        iVar10 = iVar10 + 1;
        p = p + 1;
        define_as_constant(this,*ppcVar8,(char *)0x0,PREDEFINED,0,*puVar1,*pSVar3,*pSVar4,*pSVar5,
                           *puVar6,bVar9,false);
        if (count == iVar10) {
          return;
        }
      }
      puVar1 = &p->value;
      puVar2 = &p->size;
      pSVar3 = &p->type;
      pSVar4 = &p->binding;
      pSVar5 = &p->visibility;
      puVar6 = &p->nonvis;
      pbVar7 = &p->offset_is_from_end;
      bVar9 = only_if_ref;
      if (!only_if_ref) {
        bVar9 = p->only_if_ref;
      }
      iVar10 = iVar10 + 1;
      p = p + 1;
      define_in_output_data
                (this,*ppcVar8,(char *)0x0,PREDEFINED,od,*puVar1,*puVar2,*pSVar3,*pSVar4,*pSVar5,
                 *puVar6,*pbVar7,bVar9);
    } while (count != iVar10);
  }
  return;
}



/* gold::Symbol_table::define_symbols(gold::Layout const*, int, gold::Define_symbol_in_section
   const*, bool) */

void __thiscall
gold::Symbol_table::define_symbols
          (Symbol_table *this,Layout *param_1,int param_2,Define_symbol_in_section *param_3,
          bool param_4)

{
  Define_symbol_in_section *pDVar1;
  Define_symbol_in_section *pDVar2;
  Define_symbol_in_section *pDVar3;
  Define_symbol_in_section *pDVar4;
  Define_symbol_in_section *pDVar5;
  Define_symbol_in_section *pDVar6;
  int iVar7;
  Define_symbol_in_section DVar8;
  undefined4 uVar9;
  int iVar10;
  
  if (0 < param_2) {
    iVar10 = 0;
    do {
      while( true ) {
        iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4));
        uVar9 = *(undefined4 *)param_3;
        if (iVar7 != 0) break;
        pDVar1 = param_3 + 0x14;
        pDVar2 = param_3 + 0x10;
        pDVar3 = param_3 + 0x18;
        pDVar4 = param_3 + 0x1c;
        pDVar5 = param_3 + 0x20;
        pDVar6 = param_3 + 0x24;
        DVar8 = (Define_symbol_in_section)param_4;
        if (!param_4) {
          DVar8 = param_3[0x26];
        }
        iVar10 = iVar10 + 1;
        param_3 = param_3 + 0x28;
        define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,
                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6
                           ,DVar8,0);
        if (param_2 == iVar10) {
          return;
        }
      }
      iVar10 = iVar10 + 1;
      param_3 = param_3 + 0x28;
      define_in_output_data(this,uVar9,0,5,iVar7);
    } while (param_2 != iVar10);
  }
  return;
}


lui gp,0x21
addiu gp,gp,-0x408
addu gp,gp,t9
addiu sp,sp,-0x70
sw gp,0x40(sp)
sw s2,0x54(sp)
sw ra,0x6c(sp)
sw s7,0x68(sp)
sw s6,0x64(sp)
sw s5,0x60(sp)
sw s4,0x5c(sp)
sw s3,0x58(sp)
sw s1,0x50(sp)
sw s0,0x4c(sp)
blez a2,0x002b97b8
_lbu s2,0x83(sp)
or s3,a2,zero
lw s7,-0x6a6c(gp)
or s4,a0,zero
lw s6,-0x7730(gp)
or s5,a1,zero
or s0,a3,zero
b 0x002b9728
_or s1,zero,zero
or v1,s2,zero
lw t1,0xc(s0)
lw t0,0x8(s0)
lw t3,0x14(s0)
lw t2,0x10(s0)
lw t4,0x18(s0)
lw t5,0x1c(s0)
lw a0,0x20(s0)
lbu t6,0x24(s0)
bne s2,zero,0x002b96d8
_lbu t7,0x25(s0)
lbu v1,0x26(s0)
li a3,0x5
sw a0,0x30(sp)
or a2,zero,zero
sw v1,0x3c(sp)
addiu s1,s1,0x1
sw t7,0x38(sp)
sw t6,0x34(sp)
or a0,s4,zero
sw t5,0x2c(sp)
or t9,s6,zero
sw t4,0x28(sp)
addiu s0,s0,0x28
sw t3,0x24(sp)
sw t2,0x20(sp)
sw t1,0x1c(sp)
sw t0,0x18(sp)
bal 0x002b93a0
_sw v0,0x10(sp)
beq s3,s1,0x002b97b8
_lw gp,0x40(sp)
lw a1,0x4(s0)
lw t9,-0x73f4(gp)
jalr t9
_or a0,s5,zero
bne v0,zero,0x002b96a8
_lw a1,0x0(s0)
or v0,s2,zero
lw t1,0x14(s0)
lw t0,0x10(s0)
lw v1,0x18(s0)
lw t2,0x1c(s0)
lw a0,0x20(s0)
bne s2,zero,0x002b9764
_lbu t3,0x24(s0)
lbu v0,0x26(s0)
or a3,zero,zero
sw a0,0x28(sp)
or a2,zero,zero
sw zero,0x34(sp)
sw a3,0x14(sp)
addiu s1,s1,0x1
sw a2,0x10(sp)
li a3,0x5
or a2,zero,zero
sw v0,0x30(sp)
sw t3,0x2c(sp)
or a0,s4,zero
sw t2,0x24(sp)
or t9,s7,zero
sw v1,0x20(sp)
addiu s0,s0,0x28
sw t1,0x1c(sp)
bal 0x002b9564
_sw t0,0x18(sp)
bne s3,s1,0x002b9728
_lw gp,0x40(sp)
lw ra,0x6c(sp)
lw s7,0x68(sp)
lw s6,0x64(sp)
lw s5,0x60(sp)
lw s4,0x5c(sp)
lw s3,0x58(sp)
lw s2,0x54(sp)
lw s1,0x50(sp)
lw s0,0x4c(sp)
jr ra
_addiu sp,sp,0x70
(translation_unit "/* gold::Symbol_table::define_symbols(gold::Layout const*, int, gold::Define_symbol_in_section\n   const*, bool) */\n\nvoid __thiscall\ngold::Symbol_table::define_symbols\n          (Symbol_table *this,Layout *param_1,int param_2,Define_symbol_in_section *param_3,\n          bool param_4)\n\n{\n  Define_symbol_in_section *pDVar1;\n  Define_symbol_in_section *pDVar2;\n  Define_symbol_in_section *pDVar3;\n  Define_symbol_in_section *pDVar4;\n  Define_symbol_in_section *pDVar5;\n  Define_symbol_in_section *pDVar6;\n  int iVar7;\n  Define_symbol_in_section DVar8;\n  undefined4 uVar9;\n  int iVar10;\n  \n  if (0 < param_2) {\n    iVar10 = 0;\n    do {\n      while( true ) {\n        iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4));\n        uVar9 = *(undefined4 *)param_3;\n        if (iVar7 != 0) break;\n        pDVar1 = param_3 + 0x14;\n        pDVar2 = param_3 + 0x10;\n        pDVar3 = param_3 + 0x18;\n        pDVar4 = param_3 + 0x1c;\n        pDVar5 = param_3 + 0x20;\n        pDVar6 = param_3 + 0x24;\n        DVar8 = (Define_symbol_in_section)param_4;\n        if (!param_4) {\n          DVar8 = param_3[0x26];\n        }\n        iVar10 = iVar10 + 1;\n        param_3 = param_3 + 0x28;\n        define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0);\n        if (param_2 == iVar10) {\n          return;\n        }\n      }\n      iVar10 = iVar10 + 1;\n      param_3 = param_3 + 0x28;\n      define_in_output_data(this,uVar9,0,5,iVar7);\n    } while (param_2 != iVar10);\n  }\n  return;\n}\n\n" comment (function_definition "void __thiscall\ngold::Symbol_table::define_symbols\n          (Symbol_table *this,Layout *param_1,int param_2,Define_symbol_in_section *param_3,\n          bool param_4)\n\n{\n  Define_symbol_in_section *pDVar1;\n  Define_symbol_in_section *pDVar2;\n  Define_symbol_in_section *pDVar3;\n  Define_symbol_in_section *pDVar4;\n  Define_symbol_in_section *pDVar5;\n  Define_symbol_in_section *pDVar6;\n  int iVar7;\n  Define_symbol_in_section DVar8;\n  undefined4 uVar9;\n  int iVar10;\n  \n  if (0 < param_2) {\n    iVar10 = 0;\n    do {\n      while( true ) {\n        iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4));\n        uVar9 = *(undefined4 *)param_3;\n        if (iVar7 != 0) break;\n        pDVar1 = param_3 + 0x14;\n        pDVar2 = param_3 + 0x10;\n        pDVar3 = param_3 + 0x18;\n        pDVar4 = param_3 + 0x1c;\n        pDVar5 = param_3 + 0x20;\n        pDVar6 = param_3 + 0x24;\n        DVar8 = (Define_symbol_in_section)param_4;\n        if (!param_4) {\n          DVar8 = param_3[0x26];\n        }\n        iVar10 = iVar10 + 1;\n        param_3 = param_3 + 0x28;\n        define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0);\n        if (param_2 == iVar10) {\n          return;\n        }\n      }\n      iVar10 = iVar10 + 1;\n      param_3 = param_3 + 0x28;\n      define_in_output_data(this,uVar9,0,5,iVar7);\n    } while (param_2 != iVar10);\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Symbol_table::" identifier : : identifier : :) (function_declarator "define_symbols\n          (Symbol_table *this,Layout *param_1,int param_2,Define_symbol_in_section *param_3,\n          bool param_4)" identifier (parameter_list "(Symbol_table *this,Layout *param_1,int param_2,Define_symbol_in_section *param_3,\n          bool param_4)" ( (parameter_declaration "Symbol_table *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Layout *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "Define_symbol_in_section *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "bool param_4" primitive_type identifier) ))) (compound_statement "{\n  Define_symbol_in_section *pDVar1;\n  Define_symbol_in_section *pDVar2;\n  Define_symbol_in_section *pDVar3;\n  Define_symbol_in_section *pDVar4;\n  Define_symbol_in_section *pDVar5;\n  Define_symbol_in_section *pDVar6;\n  int iVar7;\n  Define_symbol_in_section DVar8;\n  undefined4 uVar9;\n  int iVar10;\n  \n  if (0 < param_2) {\n    iVar10 = 0;\n    do {\n      while( true ) {\n        iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4));\n        uVar9 = *(undefined4 *)param_3;\n        if (iVar7 != 0) break;\n        pDVar1 = param_3 + 0x14;\n        pDVar2 = param_3 + 0x10;\n        pDVar3 = param_3 + 0x18;\n        pDVar4 = param_3 + 0x1c;\n        pDVar5 = param_3 + 0x20;\n        pDVar6 = param_3 + 0x24;\n        DVar8 = (Define_symbol_in_section)param_4;\n        if (!param_4) {\n          DVar8 = param_3[0x26];\n        }\n        iVar10 = iVar10 + 1;\n        param_3 = param_3 + 0x28;\n        define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0);\n        if (param_2 == iVar10) {\n          return;\n        }\n      }\n      iVar10 = iVar10 + 1;\n      param_3 = param_3 + 0x28;\n      define_in_output_data(this,uVar9,0,5,iVar7);\n    } while (param_2 != iVar10);\n  }\n  return;\n}" { (declaration "Define_symbol_in_section *pDVar1;" type_identifier (pointer_declarator "*pDVar1" * identifier) ;) (declaration "Define_symbol_in_section *pDVar2;" type_identifier (pointer_declarator "*pDVar2" * identifier) ;) (declaration "Define_symbol_in_section *pDVar3;" type_identifier (pointer_declarator "*pDVar3" * identifier) ;) (declaration "Define_symbol_in_section *pDVar4;" type_identifier (pointer_declarator "*pDVar4" * identifier) ;) (declaration "Define_symbol_in_section *pDVar5;" type_identifier (pointer_declarator "*pDVar5" * identifier) ;) (declaration "Define_symbol_in_section *pDVar6;" type_identifier (pointer_declarator "*pDVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "Define_symbol_in_section DVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (if_statement "if (0 < param_2) {\n    iVar10 = 0;\n    do {\n      while( true ) {\n        iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4));\n        uVar9 = *(undefined4 *)param_3;\n        if (iVar7 != 0) break;\n        pDVar1 = param_3 + 0x14;\n        pDVar2 = param_3 + 0x10;\n        pDVar3 = param_3 + 0x18;\n        pDVar4 = param_3 + 0x1c;\n        pDVar5 = param_3 + 0x20;\n        pDVar6 = param_3 + 0x24;\n        DVar8 = (Define_symbol_in_section)param_4;\n        if (!param_4) {\n          DVar8 = param_3[0x26];\n        }\n        iVar10 = iVar10 + 1;\n        param_3 = param_3 + 0x28;\n        define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0);\n        if (param_2 == iVar10) {\n          return;\n        }\n      }\n      iVar10 = iVar10 + 1;\n      param_3 = param_3 + 0x28;\n      define_in_output_data(this,uVar9,0,5,iVar7);\n    } while (param_2 != iVar10);\n  }" if (parenthesized_expression "(0 < param_2)" ( (binary_expression "0 < param_2" number_literal < identifier) )) (compound_statement "{\n    iVar10 = 0;\n    do {\n      while( true ) {\n        iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4));\n        uVar9 = *(undefined4 *)param_3;\n        if (iVar7 != 0) break;\n        pDVar1 = param_3 + 0x14;\n        pDVar2 = param_3 + 0x10;\n        pDVar3 = param_3 + 0x18;\n        pDVar4 = param_3 + 0x1c;\n        pDVar5 = param_3 + 0x20;\n        pDVar6 = param_3 + 0x24;\n        DVar8 = (Define_symbol_in_section)param_4;\n        if (!param_4) {\n          DVar8 = param_3[0x26];\n        }\n        iVar10 = iVar10 + 1;\n        param_3 = param_3 + 0x28;\n        define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0);\n        if (param_2 == iVar10) {\n          return;\n        }\n      }\n      iVar10 = iVar10 + 1;\n      param_3 = param_3 + 0x28;\n      define_in_output_data(this,uVar9,0,5,iVar7);\n    } while (param_2 != iVar10);\n  }" { (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n      while( true ) {\n        iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4));\n        uVar9 = *(undefined4 *)param_3;\n        if (iVar7 != 0) break;\n        pDVar1 = param_3 + 0x14;\n        pDVar2 = param_3 + 0x10;\n        pDVar3 = param_3 + 0x18;\n        pDVar4 = param_3 + 0x1c;\n        pDVar5 = param_3 + 0x20;\n        pDVar6 = param_3 + 0x24;\n        DVar8 = (Define_symbol_in_section)param_4;\n        if (!param_4) {\n          DVar8 = param_3[0x26];\n        }\n        iVar10 = iVar10 + 1;\n        param_3 = param_3 + 0x28;\n        define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0);\n        if (param_2 == iVar10) {\n          return;\n        }\n      }\n      iVar10 = iVar10 + 1;\n      param_3 = param_3 + 0x28;\n      define_in_output_data(this,uVar9,0,5,iVar7);\n    } while (param_2 != iVar10);" do (compound_statement "{\n      while( true ) {\n        iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4));\n        uVar9 = *(undefined4 *)param_3;\n        if (iVar7 != 0) break;\n        pDVar1 = param_3 + 0x14;\n        pDVar2 = param_3 + 0x10;\n        pDVar3 = param_3 + 0x18;\n        pDVar4 = param_3 + 0x1c;\n        pDVar5 = param_3 + 0x20;\n        pDVar6 = param_3 + 0x24;\n        DVar8 = (Define_symbol_in_section)param_4;\n        if (!param_4) {\n          DVar8 = param_3[0x26];\n        }\n        iVar10 = iVar10 + 1;\n        param_3 = param_3 + 0x28;\n        define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0);\n        if (param_2 == iVar10) {\n          return;\n        }\n      }\n      iVar10 = iVar10 + 1;\n      param_3 = param_3 + 0x28;\n      define_in_output_data(this,uVar9,0,5,iVar7);\n    }" { (while_statement "while( true ) {\n        iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4));\n        uVar9 = *(undefined4 *)param_3;\n        if (iVar7 != 0) break;\n        pDVar1 = param_3 + 0x14;\n        pDVar2 = param_3 + 0x10;\n        pDVar3 = param_3 + 0x18;\n        pDVar4 = param_3 + 0x1c;\n        pDVar5 = param_3 + 0x20;\n        pDVar6 = param_3 + 0x24;\n        DVar8 = (Define_symbol_in_section)param_4;\n        if (!param_4) {\n          DVar8 = param_3[0x26];\n        }\n        iVar10 = iVar10 + 1;\n        param_3 = param_3 + 0x28;\n        define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0);\n        if (param_2 == iVar10) {\n          return;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4));\n        uVar9 = *(undefined4 *)param_3;\n        if (iVar7 != 0) break;\n        pDVar1 = param_3 + 0x14;\n        pDVar2 = param_3 + 0x10;\n        pDVar3 = param_3 + 0x18;\n        pDVar4 = param_3 + 0x1c;\n        pDVar5 = param_3 + 0x20;\n        pDVar6 = param_3 + 0x24;\n        DVar8 = (Define_symbol_in_section)param_4;\n        if (!param_4) {\n          DVar8 = param_3[0x26];\n        }\n        iVar10 = iVar10 + 1;\n        param_3 = param_3 + 0x28;\n        define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0);\n        if (param_2 == iVar10) {\n          return;\n        }\n      }" { (expression_statement "iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4));" (assignment_expression "iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4))" identifier = (call_expression "(*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4))" (parenthesized_expression "(*(code *)PTR_find_output_section_004c1e4c)" ( (pointer_expression "*(code *)PTR_find_output_section_004c1e4c" * (cast_expression "(code *)PTR_find_output_section_004c1e4c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,*(undefined4 *)(param_3 + 4))" ( identifier , (pointer_expression "*(undefined4 *)(param_3 + 4)" * (cast_expression "(undefined4 *)(param_3 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) )))) ;) (expression_statement "uVar9 = *(undefined4 *)param_3;" (assignment_expression "uVar9 = *(undefined4 *)param_3" identifier = (pointer_expression "*(undefined4 *)param_3" * (cast_expression "(undefined4 *)param_3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (iVar7 != 0) break;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "pDVar1 = param_3 + 0x14;" (assignment_expression "pDVar1 = param_3 + 0x14" identifier = (binary_expression "param_3 + 0x14" identifier + number_literal)) ;) (expression_statement "pDVar2 = param_3 + 0x10;" (assignment_expression "pDVar2 = param_3 + 0x10" identifier = (binary_expression "param_3 + 0x10" identifier + number_literal)) ;) (expression_statement "pDVar3 = param_3 + 0x18;" (assignment_expression "pDVar3 = param_3 + 0x18" identifier = (binary_expression "param_3 + 0x18" identifier + number_literal)) ;) (expression_statement "pDVar4 = param_3 + 0x1c;" (assignment_expression "pDVar4 = param_3 + 0x1c" identifier = (binary_expression "param_3 + 0x1c" identifier + number_literal)) ;) (expression_statement "pDVar5 = param_3 + 0x20;" (assignment_expression "pDVar5 = param_3 + 0x20" identifier = (binary_expression "param_3 + 0x20" identifier + number_literal)) ;) (expression_statement "pDVar6 = param_3 + 0x24;" (assignment_expression "pDVar6 = param_3 + 0x24" identifier = (binary_expression "param_3 + 0x24" identifier + number_literal)) ;) (expression_statement "DVar8 = (Define_symbol_in_section)param_4;" (assignment_expression "DVar8 = (Define_symbol_in_section)param_4" identifier = (cast_expression "(Define_symbol_in_section)param_4" ( (type_descriptor "Define_symbol_in_section" type_identifier) ) identifier)) ;) (if_statement "if (!param_4) {\n          DVar8 = param_3[0x26];\n        }" if (parenthesized_expression "(!param_4)" ( (unary_expression "!param_4" ! identifier) )) (compound_statement "{\n          DVar8 = param_3[0x26];\n        }" { (expression_statement "DVar8 = param_3[0x26];" (assignment_expression "DVar8 = param_3[0x26]" identifier = (subscript_expression "param_3[0x26]" identifier [ number_literal ])) ;) })) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "param_3 = param_3 + 0x28;" (assignment_expression "param_3 = param_3 + 0x28" identifier = (binary_expression "param_3 + 0x28" identifier + number_literal)) ;) (expression_statement "define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0);" (call_expression "define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0)" identifier (argument_list "(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0)" ( identifier , identifier , number_literal , number_literal , number_literal , number_literal , (pointer_expression "*(undefined4 *)pDVar2" * (cast_expression "(undefined4 *)pDVar2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (pointer_expression "*(undefined4 *)pDVar1" * (cast_expression "(undefined4 *)pDVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (pointer_expression "*(undefined4 *)pDVar3" * (cast_expression "(undefined4 *)pDVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (pointer_expression "*(undefined4 *)pDVar4" * (cast_expression "(undefined4 *)pDVar4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (pointer_expression "*(undefined4 *)pDVar5" * (cast_expression "(undefined4 *)pDVar5" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (pointer_expression "*pDVar6" * identifier) , identifier , number_literal ))) ;) (if_statement "if (param_2 == iVar10) {\n          return;\n        }" if (parenthesized_expression "(param_2 == iVar10)" ( (binary_expression "param_2 == iVar10" identifier == identifier) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) })) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "param_3 = param_3 + 0x28;" (assignment_expression "param_3 = param_3 + 0x28" identifier = (binary_expression "param_3 + 0x28" identifier + number_literal)) ;) (expression_statement "define_in_output_data(this,uVar9,0,5,iVar7);" (call_expression "define_in_output_data(this,uVar9,0,5,iVar7)" identifier (argument_list "(this,uVar9,0,5,iVar7)" ( identifier , identifier , number_literal , number_literal , identifier ))) ;) }) while (parenthesized_expression "(param_2 != iVar10)" ( (binary_expression "param_2 != iVar10" identifier != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */\n/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */\n/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */\n/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */\n/* 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: void define_symbols(Symbol_table * this, Layout * layout, int count,\n   Define_symbol_in_section * p, bool only_if_ref) */\n\nvoid __thiscall\ngold::Symbol_table::define_symbols\n          (Symbol_table *this,Layout *layout,int count,Define_symbol_in_section *p,bool only_if_ref)\n\n{\n  uint64_t *puVar1;\n  uint64_t *puVar2;\n  STT *pSVar3;\n  STB *pSVar4;\n  STV *pSVar5;\n  uchar *puVar6;\n  bool *pbVar7;\n  char **ppcVar8;\n  Output_data *od;\n  bool bVar9;\n  int iVar10;\n  \n  if (0 < count) {\n    iVar10 = 0;\n    do {\n      while( true ) {\n        od = (Output_data *)(*(code *)PTR_find_output_section_004c1e4c)(layout,p->output_section);\n        ppcVar8 = &p->name;\n        if (od != (Output_data *)0x0) break;\n        puVar1 = &p->size;\n        pSVar3 = &p->type;\n        pSVar4 = &p->binding;\n        pSVar5 = &p->visibility;\n        puVar6 = &p->nonvis;\n        bVar9 = only_if_ref;\n        if (!only_if_ref) {\n          bVar9 = p->only_if_ref;\n        }\n        iVar10 = iVar10 + 1;\n        p = p + 1;\n        define_as_constant(this,*ppcVar8,(char *)0x0,PREDEFINED,0,*puVar1,*pSVar3,*pSVar4,*pSVar5,\n                           *puVar6,bVar9,false);\n        if (count == iVar10) {\n          return;\n        }\n      }\n      puVar1 = &p->value;\n      puVar2 = &p->size;\n      pSVar3 = &p->type;\n      pSVar4 = &p->binding;\n      pSVar5 = &p->visibility;\n      puVar6 = &p->nonvis;\n      pbVar7 = &p->offset_is_from_end;\n      bVar9 = only_if_ref;\n      if (!only_if_ref) {\n        bVar9 = p->only_if_ref;\n      }\n      iVar10 = iVar10 + 1;\n      p = p + 1;\n      define_in_output_data\n                (this,*ppcVar8,(char *)0x0,PREDEFINED,od,*puVar1,*puVar2,*pSVar3,*pSVar4,*pSVar5,\n                 *puVar6,*pbVar7,bVar9);\n    } while (count != iVar10);\n  }\n  return;\n}\n\n" comment comment comment comment comment comment comment comment comment (function_definition "void __thiscall\ngold::Symbol_table::define_symbols\n          (Symbol_table *this,Layout *layout,int count,Define_symbol_in_section *p,bool only_if_ref)\n\n{\n  uint64_t *puVar1;\n  uint64_t *puVar2;\n  STT *pSVar3;\n  STB *pSVar4;\n  STV *pSVar5;\n  uchar *puVar6;\n  bool *pbVar7;\n  char **ppcVar8;\n  Output_data *od;\n  bool bVar9;\n  int iVar10;\n  \n  if (0 < count) {\n    iVar10 = 0;\n    do {\n      while( true ) {\n        od = (Output_data *)(*(code *)PTR_find_output_section_004c1e4c)(layout,p->output_section);\n        ppcVar8 = &p->name;\n        if (od != (Output_data *)0x0) break;\n        puVar1 = &p->size;\n        pSVar3 = &p->type;\n        pSVar4 = &p->binding;\n        pSVar5 = &p->visibility;\n        puVar6 = &p->nonvis;\n        bVar9 = only_if_ref;\n        if (!only_if_ref) {\n          bVar9 = p->only_if_ref;\n        }\n        iVar10 = iVar10 + 1;\n        p = p + 1;\n        define_as_constant(this,*ppcVar8,(char *)0x0,PREDEFINED,0,*puVar1,*pSVar3,*pSVar4,*pSVar5,\n                           *puVar6,bVar9,false);\n        if (count == iVar10) {\n          return;\n        }\n      }\n      puVar1 = &p->value;\n      puVar2 = &p->size;\n      pSVar3 = &p->type;\n      pSVar4 = &p->binding;\n      pSVar5 = &p->visibility;\n      puVar6 = &p->nonvis;\n      pbVar7 = &p->offset_is_from_end;\n      bVar9 = only_if_ref;\n      if (!only_if_ref) {\n        bVar9 = p->only_if_ref;\n      }\n      iVar10 = iVar10 + 1;\n      p = p + 1;\n      define_in_output_data\n                (this,*ppcVar8,(char *)0x0,PREDEFINED,od,*puVar1,*puVar2,*pSVar3,*pSVar4,*pSVar5,\n                 *puVar6,*pbVar7,bVar9);\n    } while (count != iVar10);\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Symbol_table::" identifier : : identifier : :) (function_declarator "define_symbols\n          (Symbol_table *this,Layout *layout,int count,Define_symbol_in_section *p,bool only_if_ref)" identifier (parameter_list "(Symbol_table *this,Layout *layout,int count,Define_symbol_in_section *p,bool only_if_ref)" ( (parameter_declaration "Symbol_table *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Layout *layout" type_identifier (pointer_declarator "*layout" * identifier)) , (parameter_declaration "int count" primitive_type identifier) , (parameter_declaration "Define_symbol_in_section *p" type_identifier (pointer_declarator "*p" * identifier)) , (parameter_declaration "bool only_if_ref" primitive_type identifier) ))) (compound_statement "{\n  uint64_t *puVar1;\n  uint64_t *puVar2;\n  STT *pSVar3;\n  STB *pSVar4;\n  STV *pSVar5;\n  uchar *puVar6;\n  bool *pbVar7;\n  char **ppcVar8;\n  Output_data *od;\n  bool bVar9;\n  int iVar10;\n  \n  if (0 < count) {\n    iVar10 = 0;\n    do {\n      while( true ) {\n        od = (Output_data *)(*(code *)PTR_find_output_section_004c1e4c)(layout,p->output_section);\n        ppcVar8 = &p->name;\n        if (od != (Output_data *)0x0) break;\n        puVar1 = &p->size;\n        pSVar3 = &p->type;\n        pSVar4 = &p->binding;\n        pSVar5 = &p->visibility;\n        puVar6 = &p->nonvis;\n        bVar9 = only_if_ref;\n        if (!only_if_ref) {\n          bVar9 = p->only_if_ref;\n        }\n        iVar10 = iVar10 + 1;\n        p = p + 1;\n        define_as_constant(this,*ppcVar8,(char *)0x0,PREDEFINED,0,*puVar1,*pSVar3,*pSVar4,*pSVar5,\n                           *puVar6,bVar9,false);\n        if (count == iVar10) {\n          return;\n        }\n      }\n      puVar1 = &p->value;\n      puVar2 = &p->size;\n      pSVar3 = &p->type;\n      pSVar4 = &p->binding;\n      pSVar5 = &p->visibility;\n      puVar6 = &p->nonvis;\n      pbVar7 = &p->offset_is_from_end;\n      bVar9 = only_if_ref;\n      if (!only_if_ref) {\n        bVar9 = p->only_if_ref;\n      }\n      iVar10 = iVar10 + 1;\n      p = p + 1;\n      define_in_output_data\n                (this,*ppcVar8,(char *)0x0,PREDEFINED,od,*puVar1,*puVar2,*pSVar3,*pSVar4,*pSVar5,\n                 *puVar6,*pbVar7,bVar9);\n    } while (count != iVar10);\n  }\n  return;\n}" { (declaration "uint64_t *puVar1;" primitive_type (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint64_t *puVar2;" primitive_type (pointer_declarator "*puVar2" * identifier) ;) (declaration "STT *pSVar3;" type_identifier (pointer_declarator "*pSVar3" * identifier) ;) (declaration "STB *pSVar4;" type_identifier (pointer_declarator "*pSVar4" * identifier) ;) (declaration "STV *pSVar5;" type_identifier (pointer_declarator "*pSVar5" * identifier) ;) (declaration "uchar *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "bool *pbVar7;" primitive_type (pointer_declarator "*pbVar7" * identifier) ;) (declaration "char **ppcVar8;" primitive_type (pointer_declarator "**ppcVar8" * (pointer_declarator "*ppcVar8" * identifier)) ;) (declaration "Output_data *od;" type_identifier (pointer_declarator "*od" * identifier) ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (if_statement "if (0 < count) {\n    iVar10 = 0;\n    do {\n      while( true ) {\n        od = (Output_data *)(*(code *)PTR_find_output_section_004c1e4c)(layout,p->output_section);\n        ppcVar8 = &p->name;\n        if (od != (Output_data *)0x0) break;\n        puVar1 = &p->size;\n        pSVar3 = &p->type;\n        pSVar4 = &p->binding;\n        pSVar5 = &p->visibility;\n        puVar6 = &p->nonvis;\n        bVar9 = only_if_ref;\n        if (!only_if_ref) {\n          bVar9 = p->only_if_ref;\n        }\n        iVar10 = iVar10 + 1;\n        p = p + 1;\n        define_as_constant(this,*ppcVar8,(char *)0x0,PREDEFINED,0,*puVar1,*pSVar3,*pSVar4,*pSVar5,\n                           *puVar6,bVar9,false);\n        if (count == iVar10) {\n          return;\n        }\n      }\n      puVar1 = &p->value;\n      puVar2 = &p->size;\n      pSVar3 = &p->type;\n      pSVar4 = &p->binding;\n      pSVar5 = &p->visibility;\n      puVar6 = &p->nonvis;\n      pbVar7 = &p->offset_is_from_end;\n      bVar9 = only_if_ref;\n      if (!only_if_ref) {\n        bVar9 = p->only_if_ref;\n      }\n      iVar10 = iVar10 + 1;\n      p = p + 1;\n      define_in_output_data\n                (this,*ppcVar8,(char *)0x0,PREDEFINED,od,*puVar1,*puVar2,*pSVar3,*pSVar4,*pSVar5,\n                 *puVar6,*pbVar7,bVar9);\n    } while (count != iVar10);\n  }" if (parenthesized_expression "(0 < count)" ( (binary_expression "0 < count" number_literal < identifier) )) (compound_statement "{\n    iVar10 = 0;\n    do {\n      while( true ) {\n        od = (Output_data *)(*(code *)PTR_find_output_section_004c1e4c)(layout,p->output_section);\n        ppcVar8 = &p->name;\n        if (od != (Output_data *)0x0) break;\n        puVar1 = &p->size;\n        pSVar3 = &p->type;\n        pSVar4 = &p->binding;\n        pSVar5 = &p->visibility;\n        puVar6 = &p->nonvis;\n        bVar9 = only_if_ref;\n        if (!only_if_ref) {\n          bVar9 = p->only_if_ref;\n        }\n        iVar10 = iVar10 + 1;\n        p = p + 1;\n        define_as_constant(this,*ppcVar8,(char *)0x0,PREDEFINED,0,*puVar1,*pSVar3,*pSVar4,*pSVar5,\n                           *puVar6,bVar9,false);\n        if (count == iVar10) {\n          return;\n        }\n      }\n      puVar1 = &p->value;\n      puVar2 = &p->size;\n      pSVar3 = &p->type;\n      pSVar4 = &p->binding;\n      pSVar5 = &p->visibility;\n      puVar6 = &p->nonvis;\n      pbVar7 = &p->offset_is_from_end;\n      bVar9 = only_if_ref;\n      if (!only_if_ref) {\n        bVar9 = p->only_if_ref;\n      }\n      iVar10 = iVar10 + 1;\n      p = p + 1;\n      define_in_output_data\n                (this,*ppcVar8,(char *)0x0,PREDEFINED,od,*puVar1,*puVar2,*pSVar3,*pSVar4,*pSVar5,\n                 *puVar6,*pbVar7,bVar9);\n    } while (count != iVar10);\n  }" { (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n      while( true ) {\n        od = (Output_data *)(*(code *)PTR_find_output_section_004c1e4c)(layout,p->output_section);\n        ppcVar8 = &p->name;\n        if (od != (Output_data *)0x0) break;\n        puVar1 = &p->size;\n        pSVar3 = &p->type;\n        pSVar4 = &p->binding;\n        pSVar5 = &p->visibility;\n        puVar6 = &p->nonvis;\n        bVar9 = only_if_ref;\n        if (!only_if_ref) {\n          bVar9 = p->only_if_ref;\n        }\n        iVar10 = iVar10 + 1;\n        p = p + 1;\n        define_as_constant(this,*ppcVar8,(char *)0x0,PREDEFINED,0,*puVar1,*pSVar3,*pSVar4,*pSVar5,\n                           *puVar6,bVar9,false);\n        if (count == iVar10) {\n          return;\n        }\n      }\n      puVar1 = &p->value;\n      puVar2 = &p->size;\n      pSVar3 = &p->type;\n      pSVar4 = &p->binding;\n      pSVar5 = &p->visibility;\n      puVar6 = &p->nonvis;\n      pbVar7 = &p->offset_is_from_end;\n      bVar9 = only_if_ref;\n      if (!only_if_ref) {\n        bVar9 = p->only_if_ref;\n      }\n      iVar10 = iVar10 + 1;\n      p = p + 1;\n      define_in_output_data\n                (this,*ppcVar8,(char *)0x0,PREDEFINED,od,*puVar1,*puVar2,*pSVar3,*pSVar4,*pSVar5,\n                 *puVar6,*pbVar7,bVar9);\n    } while (count != iVar10);" do (compound_statement "{\n      while( true ) {\n        od = (Output_data *)(*(code *)PTR_find_output_section_004c1e4c)(layout,p->output_section);\n        ppcVar8 = &p->name;\n        if (od != (Output_data *)0x0) break;\n        puVar1 = &p->size;\n        pSVar3 = &p->type;\n        pSVar4 = &p->binding;\n        pSVar5 = &p->visibility;\n        puVar6 = &p->nonvis;\n        bVar9 = only_if_ref;\n        if (!only_if_ref) {\n          bVar9 = p->only_if_ref;\n        }\n        iVar10 = iVar10 + 1;\n        p = p + 1;\n        define_as_constant(this,*ppcVar8,(char *)0x0,PREDEFINED,0,*puVar1,*pSVar3,*pSVar4,*pSVar5,\n                           *puVar6,bVar9,false);\n        if (count == iVar10) {\n          return;\n        }\n      }\n      puVar1 = &p->value;\n      puVar2 = &p->size;\n      pSVar3 = &p->type;\n      pSVar4 = &p->binding;\n      pSVar5 = &p->visibility;\n      puVar6 = &p->nonvis;\n      pbVar7 = &p->offset_is_from_end;\n      bVar9 = only_if_ref;\n      if (!only_if_ref) {\n        bVar9 = p->only_if_ref;\n      }\n      iVar10 = iVar10 + 1;\n      p = p + 1;\n      define_in_output_data\n                (this,*ppcVar8,(char *)0x0,PREDEFINED,od,*puVar1,*puVar2,*pSVar3,*pSVar4,*pSVar5,\n                 *puVar6,*pbVar7,bVar9);\n    }" { (while_statement "while( true ) {\n        od = (Output_data *)(*(code *)PTR_find_output_section_004c1e4c)(layout,p->output_section);\n        ppcVar8 = &p->name;\n        if (od != (Output_data *)0x0) break;\n        puVar1 = &p->size;\n        pSVar3 = &p->type;\n        pSVar4 = &p->binding;\n        pSVar5 = &p->visibility;\n        puVar6 = &p->nonvis;\n        bVar9 = only_if_ref;\n        if (!only_if_ref) {\n          bVar9 = p->only_if_ref;\n        }\n        iVar10 = iVar10 + 1;\n        p = p + 1;\n        define_as_constant(this,*ppcVar8,(char *)0x0,PREDEFINED,0,*puVar1,*pSVar3,*pSVar4,*pSVar5,\n                           *puVar6,bVar9,false);\n        if (count == iVar10) {\n          return;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        od = (Output_data *)(*(code *)PTR_find_output_section_004c1e4c)(layout,p->output_section);\n        ppcVar8 = &p->name;\n        if (od != (Output_data *)0x0) break;\n        puVar1 = &p->size;\n        pSVar3 = &p->type;\n        pSVar4 = &p->binding;\n        pSVar5 = &p->visibility;\n        puVar6 = &p->nonvis;\n        bVar9 = only_if_ref;\n        if (!only_if_ref) {\n          bVar9 = p->only_if_ref;\n        }\n        iVar10 = iVar10 + 1;\n        p = p + 1;\n        define_as_constant(this,*ppcVar8,(char *)0x0,PREDEFINED,0,*puVar1,*pSVar3,*pSVar4,*pSVar5,\n                           *puVar6,bVar9,false);\n        if (count == iVar10) {\n          return;\n        }\n      }" { (expression_statement "od = (Output_data *)(*(code *)PTR_find_output_section_004c1e4c)(layout,p->output_section);" (assignment_expression "od = (Output_data *)(*(code *)PTR_find_output_section_004c1e4c)(layout,p->output_section)" identifier = (cast_expression "(Output_data *)(*(code *)PTR_find_output_section_004c1e4c)(layout,p->output_section)" ( (type_descriptor "Output_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_find_output_section_004c1e4c)(layout,p->output_section)" (parenthesized_expression "(*(code *)PTR_find_output_section_004c1e4c)" ( (pointer_expression "*(code *)PTR_find_output_section_004c1e4c" * (cast_expression "(code *)PTR_find_output_section_004c1e4c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(layout,p->output_section)" ( identifier , (field_expression "p->output_section" identifier -> field_identifier) ))))) ;) (expression_statement "ppcVar8 = &p->name;" (assignment_expression "ppcVar8 = &p->name" identifier = (pointer_expression "&p->name" & (field_expression "p->name" identifier -> field_identifier))) ;) (if_statement "if (od != (Output_data *)0x0) break;" if (parenthesized_expression "(od != (Output_data *)0x0)" ( (binary_expression "od != (Output_data *)0x0" identifier != (cast_expression "(Output_data *)0x0" ( (type_descriptor "Output_data *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "puVar1 = &p->size;" (assignment_expression "puVar1 = &p->size" identifier = (pointer_expression "&p->size" & (field_expression "p->size" identifier -> field_identifier))) ;) (expression_statement "pSVar3 = &p->type;" (assignment_expression "pSVar3 = &p->type" identifier = (pointer_expression "&p->type" & (field_expression "p->type" identifier -> field_identifier))) ;) (expression_statement "pSVar4 = &p->binding;" (assignment_expression "pSVar4 = &p->binding" identifier = (pointer_expression "&p->binding" & (field_expression "p->binding" identifier -> field_identifier))) ;) (expression_statement "pSVar5 = &p->visibility;" (assignment_expression "pSVar5 = &p->visibility" identifier = (pointer_expression "&p->visibility" & (field_expression "p->visibility" identifier -> field_identifier))) ;) (expression_statement "puVar6 = &p->nonvis;" (assignment_expression "puVar6 = &p->nonvis" identifier = (pointer_expression "&p->nonvis" & (field_expression "p->nonvis" identifier -> field_identifier))) ;) (expression_statement "bVar9 = only_if_ref;" (assignment_expression "bVar9 = only_if_ref" identifier = identifier) ;) (if_statement "if (!only_if_ref) {\n          bVar9 = p->only_if_ref;\n        }" if (parenthesized_expression "(!only_if_ref)" ( (unary_expression "!only_if_ref" ! identifier) )) (compound_statement "{\n          bVar9 = p->only_if_ref;\n        }" { (expression_statement "bVar9 = p->only_if_ref;" (assignment_expression "bVar9 = p->only_if_ref" identifier = (field_expression "p->only_if_ref" identifier -> field_identifier)) ;) })) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "p = p + 1;" (assignment_expression "p = p + 1" identifier = (binary_expression "p + 1" identifier + number_literal)) ;) (expression_statement "define_as_constant(this,*ppcVar8,(char *)0x0,PREDEFINED,0,*puVar1,*pSVar3,*pSVar4,*pSVar5,\n                           *puVar6,bVar9,false);" (call_expression "define_as_constant(this,*ppcVar8,(char *)0x0,PREDEFINED,0,*puVar1,*pSVar3,*pSVar4,*pSVar5,\n                           *puVar6,bVar9,false)" identifier (argument_list "(this,*ppcVar8,(char *)0x0,PREDEFINED,0,*puVar1,*pSVar3,*pSVar4,*pSVar5,\n                           *puVar6,bVar9,false)" ( identifier , (pointer_expression "*ppcVar8" * identifier) , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , identifier , number_literal , (pointer_expression "*puVar1" * identifier) , (pointer_expression "*pSVar3" * identifier) , (pointer_expression "*pSVar4" * identifier) , (pointer_expression "*pSVar5" * identifier) , (pointer_expression "*puVar6" * identifier) , identifier , false ))) ;) (if_statement "if (count == iVar10) {\n          return;\n        }" if (parenthesized_expression "(count == iVar10)" ( (binary_expression "count == iVar10" identifier == identifier) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) })) (expression_statement "puVar1 = &p->value;" (assignment_expression "puVar1 = &p->value" identifier = (pointer_expression "&p->value" & (field_expression "p->value" identifier -> field_identifier))) ;) (expression_statement "puVar2 = &p->size;" (assignment_expression "puVar2 = &p->size" identifier = (pointer_expression "&p->size" & (field_expression "p->size" identifier -> field_identifier))) ;) (expression_statement "pSVar3 = &p->type;" (assignment_expression "pSVar3 = &p->type" identifier = (pointer_expression "&p->type" & (field_expression "p->type" identifier -> field_identifier))) ;) (expression_statement "pSVar4 = &p->binding;" (assignment_expression "pSVar4 = &p->binding" identifier = (pointer_expression "&p->binding" & (field_expression "p->binding" identifier -> field_identifier))) ;) (expression_statement "pSVar5 = &p->visibility;" (assignment_expression "pSVar5 = &p->visibility" identifier = (pointer_expression "&p->visibility" & (field_expression "p->visibility" identifier -> field_identifier))) ;) (expression_statement "puVar6 = &p->nonvis;" (assignment_expression "puVar6 = &p->nonvis" identifier = (pointer_expression "&p->nonvis" & (field_expression "p->nonvis" identifier -> field_identifier))) ;) (expression_statement "pbVar7 = &p->offset_is_from_end;" (assignment_expression "pbVar7 = &p->offset_is_from_end" identifier = (pointer_expression "&p->offset_is_from_end" & (field_expression "p->offset_is_from_end" identifier -> field_identifier))) ;) (expression_statement "bVar9 = only_if_ref;" (assignment_expression "bVar9 = only_if_ref" identifier = identifier) ;) (if_statement "if (!only_if_ref) {\n        bVar9 = p->only_if_ref;\n      }" if (parenthesized_expression "(!only_if_ref)" ( (unary_expression "!only_if_ref" ! identifier) )) (compound_statement "{\n        bVar9 = p->only_if_ref;\n      }" { (expression_statement "bVar9 = p->only_if_ref;" (assignment_expression "bVar9 = p->only_if_ref" identifier = (field_expression "p->only_if_ref" identifier -> field_identifier)) ;) })) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "p = p + 1;" (assignment_expression "p = p + 1" identifier = (binary_expression "p + 1" identifier + number_literal)) ;) (expression_statement "define_in_output_data\n                (this,*ppcVar8,(char *)0x0,PREDEFINED,od,*puVar1,*puVar2,*pSVar3,*pSVar4,*pSVar5,\n                 *puVar6,*pbVar7,bVar9);" (call_expression "define_in_output_data\n                (this,*ppcVar8,(char *)0x0,PREDEFINED,od,*puVar1,*puVar2,*pSVar3,*pSVar4,*pSVar5,\n                 *puVar6,*pbVar7,bVar9)" identifier (argument_list "(this,*ppcVar8,(char *)0x0,PREDEFINED,od,*puVar1,*puVar2,*pSVar3,*pSVar4,*pSVar5,\n                 *puVar6,*pbVar7,bVar9)" ( identifier , (pointer_expression "*ppcVar8" * identifier) , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , identifier , identifier , (pointer_expression "*puVar1" * identifier) , (pointer_expression "*puVar2" * identifier) , (pointer_expression "*pSVar3" * identifier) , (pointer_expression "*pSVar4" * identifier) , (pointer_expression "*pSVar5" * identifier) , (pointer_expression "*puVar6" * identifier) , (pointer_expression "*pbVar7" * identifier) , identifier ))) ;) }) while (parenthesized_expression "(count != iVar10)" ( (binary_expression "count != iVar10" identifier != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void __thiscall\ngold::Symbol_table::define_symbols\n          (Symbol_table *this,Layout *param_1,int param_2,Define_symbol_in_section *param_3,\n          bool param_4)\n\n{\n  Define_symbol_in_section *pDVar1;\n  Define_symbol_in_section *pDVar2;\n  Define_symbol_in_section *pDVar3;\n  Define_symbol_in_section *pDVar4;\n  Define_symbol_in_section *pDVar5;\n  Define_symbol_in_section *pDVar6;\n  int iVar7;\n  Define_symbol_in_section DVar8;\n  undefined4 uVar9;\n  int iVar10;\n  \n  if (0 < param_2) {\n    iVar10 = 0;\n    do {\n      while( true ) {\n        iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4));\n        uVar9 = *(undefined4 *)param_3;\n        if (iVar7 != 0) break;\n        pDVar1 = param_3 + 0x14;\n        pDVar2 = param_3 + 0x10;\n        pDVar3 = param_3 + 0x18;\n        pDVar4 = param_3 + 0x1c;\n        pDVar5 = param_3 + 0x20;\n        pDVar6 = param_3 + 0x24;\n        DVar8 = (Define_symbol_in_section)param_4;\n        if (!param_4) {\n          DVar8 = param_3[0x26];\n        }\n        iVar10 = iVar10 + 1;\n        param_3 = param_3 + 0x28;\n        define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0);\n        if (param_2 == iVar10) {\n          return;\n        }\n      }\n      iVar10 = iVar10 + 1;\n      param_3 = param_3 + 0x28;\n      define_in_output_data(this,uVar9,0,5,iVar7);\n    } while (param_2 != iVar10);\n  }\n  return;\n}\n\n" (function_definition "void __thiscall\ngold::Symbol_table::define_symbols\n          (Symbol_table *this,Layout *param_1,int param_2,Define_symbol_in_section *param_3,\n          bool param_4)\n\n{\n  Define_symbol_in_section *pDVar1;\n  Define_symbol_in_section *pDVar2;\n  Define_symbol_in_section *pDVar3;\n  Define_symbol_in_section *pDVar4;\n  Define_symbol_in_section *pDVar5;\n  Define_symbol_in_section *pDVar6;\n  int iVar7;\n  Define_symbol_in_section DVar8;\n  undefined4 uVar9;\n  int iVar10;\n  \n  if (0 < param_2) {\n    iVar10 = 0;\n    do {\n      while( true ) {\n        iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4));\n        uVar9 = *(undefined4 *)param_3;\n        if (iVar7 != 0) break;\n        pDVar1 = param_3 + 0x14;\n        pDVar2 = param_3 + 0x10;\n        pDVar3 = param_3 + 0x18;\n        pDVar4 = param_3 + 0x1c;\n        pDVar5 = param_3 + 0x20;\n        pDVar6 = param_3 + 0x24;\n        DVar8 = (Define_symbol_in_section)param_4;\n        if (!param_4) {\n          DVar8 = param_3[0x26];\n        }\n        iVar10 = iVar10 + 1;\n        param_3 = param_3 + 0x28;\n        define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0);\n        if (param_2 == iVar10) {\n          return;\n        }\n      }\n      iVar10 = iVar10 + 1;\n      param_3 = param_3 + 0x28;\n      define_in_output_data(this,uVar9,0,5,iVar7);\n    } while (param_2 != iVar10);\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Symbol_table::" identifier : : identifier : :) (function_declarator "define_symbols\n          (Symbol_table *this,Layout *param_1,int param_2,Define_symbol_in_section *param_3,\n          bool param_4)" identifier (parameter_list "(Symbol_table *this,Layout *param_1,int param_2,Define_symbol_in_section *param_3,\n          bool param_4)" ( (parameter_declaration "Symbol_table *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Layout *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "Define_symbol_in_section *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "bool param_4" primitive_type identifier) ))) (compound_statement "{\n  Define_symbol_in_section *pDVar1;\n  Define_symbol_in_section *pDVar2;\n  Define_symbol_in_section *pDVar3;\n  Define_symbol_in_section *pDVar4;\n  Define_symbol_in_section *pDVar5;\n  Define_symbol_in_section *pDVar6;\n  int iVar7;\n  Define_symbol_in_section DVar8;\n  undefined4 uVar9;\n  int iVar10;\n  \n  if (0 < param_2) {\n    iVar10 = 0;\n    do {\n      while( true ) {\n        iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4));\n        uVar9 = *(undefined4 *)param_3;\n        if (iVar7 != 0) break;\n        pDVar1 = param_3 + 0x14;\n        pDVar2 = param_3 + 0x10;\n        pDVar3 = param_3 + 0x18;\n        pDVar4 = param_3 + 0x1c;\n        pDVar5 = param_3 + 0x20;\n        pDVar6 = param_3 + 0x24;\n        DVar8 = (Define_symbol_in_section)param_4;\n        if (!param_4) {\n          DVar8 = param_3[0x26];\n        }\n        iVar10 = iVar10 + 1;\n        param_3 = param_3 + 0x28;\n        define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0);\n        if (param_2 == iVar10) {\n          return;\n        }\n      }\n      iVar10 = iVar10 + 1;\n      param_3 = param_3 + 0x28;\n      define_in_output_data(this,uVar9,0,5,iVar7);\n    } while (param_2 != iVar10);\n  }\n  return;\n}" { (declaration "Define_symbol_in_section *pDVar1;" type_identifier (pointer_declarator "*pDVar1" * identifier) ;) (declaration "Define_symbol_in_section *pDVar2;" type_identifier (pointer_declarator "*pDVar2" * identifier) ;) (declaration "Define_symbol_in_section *pDVar3;" type_identifier (pointer_declarator "*pDVar3" * identifier) ;) (declaration "Define_symbol_in_section *pDVar4;" type_identifier (pointer_declarator "*pDVar4" * identifier) ;) (declaration "Define_symbol_in_section *pDVar5;" type_identifier (pointer_declarator "*pDVar5" * identifier) ;) (declaration "Define_symbol_in_section *pDVar6;" type_identifier (pointer_declarator "*pDVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "Define_symbol_in_section DVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (if_statement "if (0 < param_2) {\n    iVar10 = 0;\n    do {\n      while( true ) {\n        iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4));\n        uVar9 = *(undefined4 *)param_3;\n        if (iVar7 != 0) break;\n        pDVar1 = param_3 + 0x14;\n        pDVar2 = param_3 + 0x10;\n        pDVar3 = param_3 + 0x18;\n        pDVar4 = param_3 + 0x1c;\n        pDVar5 = param_3 + 0x20;\n        pDVar6 = param_3 + 0x24;\n        DVar8 = (Define_symbol_in_section)param_4;\n        if (!param_4) {\n          DVar8 = param_3[0x26];\n        }\n        iVar10 = iVar10 + 1;\n        param_3 = param_3 + 0x28;\n        define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0);\n        if (param_2 == iVar10) {\n          return;\n        }\n      }\n      iVar10 = iVar10 + 1;\n      param_3 = param_3 + 0x28;\n      define_in_output_data(this,uVar9,0,5,iVar7);\n    } while (param_2 != iVar10);\n  }" if (parenthesized_expression "(0 < param_2)" ( (binary_expression "0 < param_2" number_literal < identifier) )) (compound_statement "{\n    iVar10 = 0;\n    do {\n      while( true ) {\n        iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4));\n        uVar9 = *(undefined4 *)param_3;\n        if (iVar7 != 0) break;\n        pDVar1 = param_3 + 0x14;\n        pDVar2 = param_3 + 0x10;\n        pDVar3 = param_3 + 0x18;\n        pDVar4 = param_3 + 0x1c;\n        pDVar5 = param_3 + 0x20;\n        pDVar6 = param_3 + 0x24;\n        DVar8 = (Define_symbol_in_section)param_4;\n        if (!param_4) {\n          DVar8 = param_3[0x26];\n        }\n        iVar10 = iVar10 + 1;\n        param_3 = param_3 + 0x28;\n        define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0);\n        if (param_2 == iVar10) {\n          return;\n        }\n      }\n      iVar10 = iVar10 + 1;\n      param_3 = param_3 + 0x28;\n      define_in_output_data(this,uVar9,0,5,iVar7);\n    } while (param_2 != iVar10);\n  }" { (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n      while( true ) {\n        iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4));\n        uVar9 = *(undefined4 *)param_3;\n        if (iVar7 != 0) break;\n        pDVar1 = param_3 + 0x14;\n        pDVar2 = param_3 + 0x10;\n        pDVar3 = param_3 + 0x18;\n        pDVar4 = param_3 + 0x1c;\n        pDVar5 = param_3 + 0x20;\n        pDVar6 = param_3 + 0x24;\n        DVar8 = (Define_symbol_in_section)param_4;\n        if (!param_4) {\n          DVar8 = param_3[0x26];\n        }\n        iVar10 = iVar10 + 1;\n        param_3 = param_3 + 0x28;\n        define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0);\n        if (param_2 == iVar10) {\n          return;\n        }\n      }\n      iVar10 = iVar10 + 1;\n      param_3 = param_3 + 0x28;\n      define_in_output_data(this,uVar9,0,5,iVar7);\n    } while (param_2 != iVar10);" do (compound_statement "{\n      while( true ) {\n        iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4));\n        uVar9 = *(undefined4 *)param_3;\n        if (iVar7 != 0) break;\n        pDVar1 = param_3 + 0x14;\n        pDVar2 = param_3 + 0x10;\n        pDVar3 = param_3 + 0x18;\n        pDVar4 = param_3 + 0x1c;\n        pDVar5 = param_3 + 0x20;\n        pDVar6 = param_3 + 0x24;\n        DVar8 = (Define_symbol_in_section)param_4;\n        if (!param_4) {\n          DVar8 = param_3[0x26];\n        }\n        iVar10 = iVar10 + 1;\n        param_3 = param_3 + 0x28;\n        define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0);\n        if (param_2 == iVar10) {\n          return;\n        }\n      }\n      iVar10 = iVar10 + 1;\n      param_3 = param_3 + 0x28;\n      define_in_output_data(this,uVar9,0,5,iVar7);\n    }" { (while_statement "while( true ) {\n        iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4));\n        uVar9 = *(undefined4 *)param_3;\n        if (iVar7 != 0) break;\n        pDVar1 = param_3 + 0x14;\n        pDVar2 = param_3 + 0x10;\n        pDVar3 = param_3 + 0x18;\n        pDVar4 = param_3 + 0x1c;\n        pDVar5 = param_3 + 0x20;\n        pDVar6 = param_3 + 0x24;\n        DVar8 = (Define_symbol_in_section)param_4;\n        if (!param_4) {\n          DVar8 = param_3[0x26];\n        }\n        iVar10 = iVar10 + 1;\n        param_3 = param_3 + 0x28;\n        define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0);\n        if (param_2 == iVar10) {\n          return;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4));\n        uVar9 = *(undefined4 *)param_3;\n        if (iVar7 != 0) break;\n        pDVar1 = param_3 + 0x14;\n        pDVar2 = param_3 + 0x10;\n        pDVar3 = param_3 + 0x18;\n        pDVar4 = param_3 + 0x1c;\n        pDVar5 = param_3 + 0x20;\n        pDVar6 = param_3 + 0x24;\n        DVar8 = (Define_symbol_in_section)param_4;\n        if (!param_4) {\n          DVar8 = param_3[0x26];\n        }\n        iVar10 = iVar10 + 1;\n        param_3 = param_3 + 0x28;\n        define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0);\n        if (param_2 == iVar10) {\n          return;\n        }\n      }" { (expression_statement "iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4));" (assignment_expression "iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4))" identifier = (call_expression "(*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4))" (parenthesized_expression "(*(code *)PTR_find_output_section_004c1e4c)" ( (pointer_expression "*(code *)PTR_find_output_section_004c1e4c" * (cast_expression "(code *)PTR_find_output_section_004c1e4c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,*(undefined4 *)(param_3 + 4))" ( identifier , (pointer_expression "*(undefined4 *)(param_3 + 4)" * (cast_expression "(undefined4 *)(param_3 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) )))) ;) (expression_statement "uVar9 = *(undefined4 *)param_3;" (assignment_expression "uVar9 = *(undefined4 *)param_3" identifier = (pointer_expression "*(undefined4 *)param_3" * (cast_expression "(undefined4 *)param_3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (iVar7 != 0) break;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "pDVar1 = param_3 + 0x14;" (assignment_expression "pDVar1 = param_3 + 0x14" identifier = (binary_expression "param_3 + 0x14" identifier + number_literal)) ;) (expression_statement "pDVar2 = param_3 + 0x10;" (assignment_expression "pDVar2 = param_3 + 0x10" identifier = (binary_expression "param_3 + 0x10" identifier + number_literal)) ;) (expression_statement "pDVar3 = param_3 + 0x18;" (assignment_expression "pDVar3 = param_3 + 0x18" identifier = (binary_expression "param_3 + 0x18" identifier + number_literal)) ;) (expression_statement "pDVar4 = param_3 + 0x1c;" (assignment_expression "pDVar4 = param_3 + 0x1c" identifier = (binary_expression "param_3 + 0x1c" identifier + number_literal)) ;) (expression_statement "pDVar5 = param_3 + 0x20;" (assignment_expression "pDVar5 = param_3 + 0x20" identifier = (binary_expression "param_3 + 0x20" identifier + number_literal)) ;) (expression_statement "pDVar6 = param_3 + 0x24;" (assignment_expression "pDVar6 = param_3 + 0x24" identifier = (binary_expression "param_3 + 0x24" identifier + number_literal)) ;) (expression_statement "DVar8 = (Define_symbol_in_section)param_4;" (assignment_expression "DVar8 = (Define_symbol_in_section)param_4" identifier = (cast_expression "(Define_symbol_in_section)param_4" ( (type_descriptor "Define_symbol_in_section" type_identifier) ) identifier)) ;) (if_statement "if (!param_4) {\n          DVar8 = param_3[0x26];\n        }" if (parenthesized_expression "(!param_4)" ( (unary_expression "!param_4" ! identifier) )) (compound_statement "{\n          DVar8 = param_3[0x26];\n        }" { (expression_statement "DVar8 = param_3[0x26];" (assignment_expression "DVar8 = param_3[0x26]" identifier = (subscript_expression "param_3[0x26]" identifier [ number_literal ])) ;) })) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "param_3 = param_3 + 0x28;" (assignment_expression "param_3 = param_3 + 0x28" identifier = (binary_expression "param_3 + 0x28" identifier + number_literal)) ;) (expression_statement "define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0);" (call_expression "define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0)" identifier (argument_list "(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0)" ( identifier , identifier , number_literal , number_literal , number_literal , number_literal , (pointer_expression "*(undefined4 *)pDVar2" * (cast_expression "(undefined4 *)pDVar2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (pointer_expression "*(undefined4 *)pDVar1" * (cast_expression "(undefined4 *)pDVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (pointer_expression "*(undefined4 *)pDVar3" * (cast_expression "(undefined4 *)pDVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (pointer_expression "*(undefined4 *)pDVar4" * (cast_expression "(undefined4 *)pDVar4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (pointer_expression "*(undefined4 *)pDVar5" * (cast_expression "(undefined4 *)pDVar5" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (pointer_expression "*pDVar6" * identifier) , identifier , number_literal ))) ;) (if_statement "if (param_2 == iVar10) {\n          return;\n        }" if (parenthesized_expression "(param_2 == iVar10)" ( (binary_expression "param_2 == iVar10" identifier == identifier) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) })) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "param_3 = param_3 + 0x28;" (assignment_expression "param_3 = param_3 + 0x28" identifier = (binary_expression "param_3 + 0x28" identifier + number_literal)) ;) (expression_statement "define_in_output_data(this,uVar9,0,5,iVar7);" (call_expression "define_in_output_data(this,uVar9,0,5,iVar7)" identifier (argument_list "(this,uVar9,0,5,iVar7)" ( identifier , identifier , number_literal , number_literal , identifier ))) ;) }) while (parenthesized_expression "(param_2 != iVar10)" ( (binary_expression "param_2 != iVar10" identifier != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (ms_call_modifier __thiscall) (ERROR IDENT : : IDENT : :) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , LIT , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , (pointer_expression * IDENT) , IDENT , LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , LIT , IDENT ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (return_statement return ;) })))
(function_definition "void __thiscall\ngold::Symbol_table::define_symbols\n          (Symbol_table *this,Layout *param_1,int param_2,Define_symbol_in_section *param_3,\n          bool param_4)\n\n{\n  Define_symbol_in_section *pDVar1;\n  Define_symbol_in_section *pDVar2;\n  Define_symbol_in_section *pDVar3;\n  Define_symbol_in_section *pDVar4;\n  Define_symbol_in_section *pDVar5;\n  Define_symbol_in_section *pDVar6;\n  int iVar7;\n  Define_symbol_in_section DVar8;\n  undefined4 uVar9;\n  int iVar10;\n  \n  if (0 < param_2) {\n    iVar10 = 0;\n    do {\n      while( true ) {\n        iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4));\n        uVar9 = *(undefined4 *)param_3;\n        if (iVar7 != 0) break;\n        pDVar1 = param_3 + 0x14;\n        pDVar2 = param_3 + 0x10;\n        pDVar3 = param_3 + 0x18;\n        pDVar4 = param_3 + 0x1c;\n        pDVar5 = param_3 + 0x20;\n        pDVar6 = param_3 + 0x24;\n        DVar8 = (Define_symbol_in_section)param_4;\n        if (!param_4) {\n          DVar8 = param_3[0x26];\n        }\n        iVar10 = iVar10 + 1;\n        param_3 = param_3 + 0x28;\n        define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0);\n        if (param_2 == iVar10) {\n          return;\n        }\n      }\n      iVar10 = iVar10 + 1;\n      param_3 = param_3 + 0x28;\n      define_in_output_data(this,uVar9,0,5,iVar7);\n    } while (param_2 != iVar10);\n  }\n  return;\n}" (primitive_type "void") (ms_call_modifier "__thiscall" (__thiscall "__thiscall")) (ERROR "gold::Symbol_table::" (identifier "gold") (: ":") (: ":") (identifier "Symbol_table") (: ":") (: ":")) (function_declarator "define_symbols\n          (Symbol_table *this,Layout *param_1,int param_2,Define_symbol_in_section *param_3,\n          bool param_4)" (identifier "define_symbols") (parameter_list "(Symbol_table *this,Layout *param_1,int param_2,Define_symbol_in_section *param_3,\n          bool param_4)" (( "(") (parameter_declaration "Symbol_table *this" (type_identifier "Symbol_table") (pointer_declarator "*this" (* "*") (identifier "this"))) (, ",") (parameter_declaration "Layout *param_1" (type_identifier "Layout") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "Define_symbol_in_section *param_3" (type_identifier "Define_symbol_in_section") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "bool param_4" (primitive_type "bool") (identifier "param_4")) () ")"))) (compound_statement "{\n  Define_symbol_in_section *pDVar1;\n  Define_symbol_in_section *pDVar2;\n  Define_symbol_in_section *pDVar3;\n  Define_symbol_in_section *pDVar4;\n  Define_symbol_in_section *pDVar5;\n  Define_symbol_in_section *pDVar6;\n  int iVar7;\n  Define_symbol_in_section DVar8;\n  undefined4 uVar9;\n  int iVar10;\n  \n  if (0 < param_2) {\n    iVar10 = 0;\n    do {\n      while( true ) {\n        iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4));\n        uVar9 = *(undefined4 *)param_3;\n        if (iVar7 != 0) break;\n        pDVar1 = param_3 + 0x14;\n        pDVar2 = param_3 + 0x10;\n        pDVar3 = param_3 + 0x18;\n        pDVar4 = param_3 + 0x1c;\n        pDVar5 = param_3 + 0x20;\n        pDVar6 = param_3 + 0x24;\n        DVar8 = (Define_symbol_in_section)param_4;\n        if (!param_4) {\n          DVar8 = param_3[0x26];\n        }\n        iVar10 = iVar10 + 1;\n        param_3 = param_3 + 0x28;\n        define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0);\n        if (param_2 == iVar10) {\n          return;\n        }\n      }\n      iVar10 = iVar10 + 1;\n      param_3 = param_3 + 0x28;\n      define_in_output_data(this,uVar9,0,5,iVar7);\n    } while (param_2 != iVar10);\n  }\n  return;\n}" ({ "{") (declaration "Define_symbol_in_section *pDVar1;" (type_identifier "Define_symbol_in_section") (pointer_declarator "*pDVar1" (* "*") (identifier "pDVar1")) (; ";")) (declaration "Define_symbol_in_section *pDVar2;" (type_identifier "Define_symbol_in_section") (pointer_declarator "*pDVar2" (* "*") (identifier "pDVar2")) (; ";")) (declaration "Define_symbol_in_section *pDVar3;" (type_identifier "Define_symbol_in_section") (pointer_declarator "*pDVar3" (* "*") (identifier "pDVar3")) (; ";")) (declaration "Define_symbol_in_section *pDVar4;" (type_identifier "Define_symbol_in_section") (pointer_declarator "*pDVar4" (* "*") (identifier "pDVar4")) (; ";")) (declaration "Define_symbol_in_section *pDVar5;" (type_identifier "Define_symbol_in_section") (pointer_declarator "*pDVar5" (* "*") (identifier "pDVar5")) (; ";")) (declaration "Define_symbol_in_section *pDVar6;" (type_identifier "Define_symbol_in_section") (pointer_declarator "*pDVar6" (* "*") (identifier "pDVar6")) (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "Define_symbol_in_section DVar8;" (type_identifier "Define_symbol_in_section") (identifier "DVar8") (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (if_statement "if (0 < param_2) {\n    iVar10 = 0;\n    do {\n      while( true ) {\n        iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4));\n        uVar9 = *(undefined4 *)param_3;\n        if (iVar7 != 0) break;\n        pDVar1 = param_3 + 0x14;\n        pDVar2 = param_3 + 0x10;\n        pDVar3 = param_3 + 0x18;\n        pDVar4 = param_3 + 0x1c;\n        pDVar5 = param_3 + 0x20;\n        pDVar6 = param_3 + 0x24;\n        DVar8 = (Define_symbol_in_section)param_4;\n        if (!param_4) {\n          DVar8 = param_3[0x26];\n        }\n        iVar10 = iVar10 + 1;\n        param_3 = param_3 + 0x28;\n        define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0);\n        if (param_2 == iVar10) {\n          return;\n        }\n      }\n      iVar10 = iVar10 + 1;\n      param_3 = param_3 + 0x28;\n      define_in_output_data(this,uVar9,0,5,iVar7);\n    } while (param_2 != iVar10);\n  }" (if "if") (parenthesized_expression "(0 < param_2)" (( "(") (binary_expression "0 < param_2" (number_literal "0") (< "<") (identifier "param_2")) () ")")) (compound_statement "{\n    iVar10 = 0;\n    do {\n      while( true ) {\n        iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4));\n        uVar9 = *(undefined4 *)param_3;\n        if (iVar7 != 0) break;\n        pDVar1 = param_3 + 0x14;\n        pDVar2 = param_3 + 0x10;\n        pDVar3 = param_3 + 0x18;\n        pDVar4 = param_3 + 0x1c;\n        pDVar5 = param_3 + 0x20;\n        pDVar6 = param_3 + 0x24;\n        DVar8 = (Define_symbol_in_section)param_4;\n        if (!param_4) {\n          DVar8 = param_3[0x26];\n        }\n        iVar10 = iVar10 + 1;\n        param_3 = param_3 + 0x28;\n        define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0);\n        if (param_2 == iVar10) {\n          return;\n        }\n      }\n      iVar10 = iVar10 + 1;\n      param_3 = param_3 + 0x28;\n      define_in_output_data(this,uVar9,0,5,iVar7);\n    } while (param_2 != iVar10);\n  }" ({ "{") (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" (identifier "iVar10") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      while( true ) {\n        iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4));\n        uVar9 = *(undefined4 *)param_3;\n        if (iVar7 != 0) break;\n        pDVar1 = param_3 + 0x14;\n        pDVar2 = param_3 + 0x10;\n        pDVar3 = param_3 + 0x18;\n        pDVar4 = param_3 + 0x1c;\n        pDVar5 = param_3 + 0x20;\n        pDVar6 = param_3 + 0x24;\n        DVar8 = (Define_symbol_in_section)param_4;\n        if (!param_4) {\n          DVar8 = param_3[0x26];\n        }\n        iVar10 = iVar10 + 1;\n        param_3 = param_3 + 0x28;\n        define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0);\n        if (param_2 == iVar10) {\n          return;\n        }\n      }\n      iVar10 = iVar10 + 1;\n      param_3 = param_3 + 0x28;\n      define_in_output_data(this,uVar9,0,5,iVar7);\n    } while (param_2 != iVar10);" (do "do") (compound_statement "{\n      while( true ) {\n        iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4));\n        uVar9 = *(undefined4 *)param_3;\n        if (iVar7 != 0) break;\n        pDVar1 = param_3 + 0x14;\n        pDVar2 = param_3 + 0x10;\n        pDVar3 = param_3 + 0x18;\n        pDVar4 = param_3 + 0x1c;\n        pDVar5 = param_3 + 0x20;\n        pDVar6 = param_3 + 0x24;\n        DVar8 = (Define_symbol_in_section)param_4;\n        if (!param_4) {\n          DVar8 = param_3[0x26];\n        }\n        iVar10 = iVar10 + 1;\n        param_3 = param_3 + 0x28;\n        define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0);\n        if (param_2 == iVar10) {\n          return;\n        }\n      }\n      iVar10 = iVar10 + 1;\n      param_3 = param_3 + 0x28;\n      define_in_output_data(this,uVar9,0,5,iVar7);\n    }" ({ "{") (while_statement "while( true ) {\n        iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4));\n        uVar9 = *(undefined4 *)param_3;\n        if (iVar7 != 0) break;\n        pDVar1 = param_3 + 0x14;\n        pDVar2 = param_3 + 0x10;\n        pDVar3 = param_3 + 0x18;\n        pDVar4 = param_3 + 0x1c;\n        pDVar5 = param_3 + 0x20;\n        pDVar6 = param_3 + 0x24;\n        DVar8 = (Define_symbol_in_section)param_4;\n        if (!param_4) {\n          DVar8 = param_3[0x26];\n        }\n        iVar10 = iVar10 + 1;\n        param_3 = param_3 + 0x28;\n        define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0);\n        if (param_2 == iVar10) {\n          return;\n        }\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4));\n        uVar9 = *(undefined4 *)param_3;\n        if (iVar7 != 0) break;\n        pDVar1 = param_3 + 0x14;\n        pDVar2 = param_3 + 0x10;\n        pDVar3 = param_3 + 0x18;\n        pDVar4 = param_3 + 0x1c;\n        pDVar5 = param_3 + 0x20;\n        pDVar6 = param_3 + 0x24;\n        DVar8 = (Define_symbol_in_section)param_4;\n        if (!param_4) {\n          DVar8 = param_3[0x26];\n        }\n        iVar10 = iVar10 + 1;\n        param_3 = param_3 + 0x28;\n        define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0);\n        if (param_2 == iVar10) {\n          return;\n        }\n      }" ({ "{") (expression_statement "iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4));" (assignment_expression "iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4))" (identifier "iVar7") (= "=") (call_expression "(*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4))" (parenthesized_expression "(*(code *)PTR_find_output_section_004c1e4c)" (( "(") (pointer_expression "*(code *)PTR_find_output_section_004c1e4c" (* "*") (cast_expression "(code *)PTR_find_output_section_004c1e4c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_find_output_section_004c1e4c"))) () ")")) (argument_list "(param_1,*(undefined4 *)(param_3 + 4))" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined4 *)(param_3 + 4)" (* "*") (cast_expression "(undefined4 *)(param_3 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")")))) () ")")))) (; ";")) (expression_statement "uVar9 = *(undefined4 *)param_3;" (assignment_expression "uVar9 = *(undefined4 *)param_3" (identifier "uVar9") (= "=") (pointer_expression "*(undefined4 *)param_3" (* "*") (cast_expression "(undefined4 *)param_3" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_3")))) (; ";")) (if_statement "if (iVar7 != 0) break;" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pDVar1 = param_3 + 0x14;" (assignment_expression "pDVar1 = param_3 + 0x14" (identifier "pDVar1") (= "=") (binary_expression "param_3 + 0x14" (identifier "param_3") (+ "+") (number_literal "0x14"))) (; ";")) (expression_statement "pDVar2 = param_3 + 0x10;" (assignment_expression "pDVar2 = param_3 + 0x10" (identifier "pDVar2") (= "=") (binary_expression "param_3 + 0x10" (identifier "param_3") (+ "+") (number_literal "0x10"))) (; ";")) (expression_statement "pDVar3 = param_3 + 0x18;" (assignment_expression "pDVar3 = param_3 + 0x18" (identifier "pDVar3") (= "=") (binary_expression "param_3 + 0x18" (identifier "param_3") (+ "+") (number_literal "0x18"))) (; ";")) (expression_statement "pDVar4 = param_3 + 0x1c;" (assignment_expression "pDVar4 = param_3 + 0x1c" (identifier "pDVar4") (= "=") (binary_expression "param_3 + 0x1c" (identifier "param_3") (+ "+") (number_literal "0x1c"))) (; ";")) (expression_statement "pDVar5 = param_3 + 0x20;" (assignment_expression "pDVar5 = param_3 + 0x20" (identifier "pDVar5") (= "=") (binary_expression "param_3 + 0x20" (identifier "param_3") (+ "+") (number_literal "0x20"))) (; ";")) (expression_statement "pDVar6 = param_3 + 0x24;" (assignment_expression "pDVar6 = param_3 + 0x24" (identifier "pDVar6") (= "=") (binary_expression "param_3 + 0x24" (identifier "param_3") (+ "+") (number_literal "0x24"))) (; ";")) (expression_statement "DVar8 = (Define_symbol_in_section)param_4;" (assignment_expression "DVar8 = (Define_symbol_in_section)param_4" (identifier "DVar8") (= "=") (cast_expression "(Define_symbol_in_section)param_4" (( "(") (type_descriptor "Define_symbol_in_section" (type_identifier "Define_symbol_in_section")) () ")") (identifier "param_4"))) (; ";")) (if_statement "if (!param_4) {\n          DVar8 = param_3[0x26];\n        }" (if "if") (parenthesized_expression "(!param_4)" (( "(") (unary_expression "!param_4" (! "!") (identifier "param_4")) () ")")) (compound_statement "{\n          DVar8 = param_3[0x26];\n        }" ({ "{") (expression_statement "DVar8 = param_3[0x26];" (assignment_expression "DVar8 = param_3[0x26]" (identifier "DVar8") (= "=") (subscript_expression "param_3[0x26]" (identifier "param_3") ([ "[") (number_literal "0x26") (] "]"))) (; ";")) (} "}"))) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" (identifier "iVar10") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_3 = param_3 + 0x28;" (assignment_expression "param_3 = param_3 + 0x28" (identifier "param_3") (= "=") (binary_expression "param_3 + 0x28" (identifier "param_3") (+ "+") (number_literal "0x28"))) (; ";")) (expression_statement "define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0);" (call_expression "define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0)" (identifier "define_as_constant") (argument_list "(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,\n                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6\n                           ,DVar8,0)" (( "(") (identifier "this") (, ",") (identifier "uVar9") (, ",") (number_literal "0") (, ",") (number_literal "5") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (pointer_expression "*(undefined4 *)pDVar2" (* "*") (cast_expression "(undefined4 *)pDVar2" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pDVar2"))) (, ",") (pointer_expression "*(undefined4 *)pDVar1" (* "*") (cast_expression "(undefined4 *)pDVar1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pDVar1"))) (, ",") (pointer_expression "*(undefined4 *)pDVar3" (* "*") (cast_expression "(undefined4 *)pDVar3" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pDVar3"))) (, ",") (pointer_expression "*(undefined4 *)pDVar4" (* "*") (cast_expression "(undefined4 *)pDVar4" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pDVar4"))) (, ",") (pointer_expression "*(undefined4 *)pDVar5" (* "*") (cast_expression "(undefined4 *)pDVar5" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pDVar5"))) (, ",") (pointer_expression "*pDVar6" (* "*") (identifier "pDVar6")) (, ",") (identifier "DVar8") (, ",") (number_literal "0") () ")"))) (; ";")) (if_statement "if (param_2 == iVar10) {\n          return;\n        }" (if "if") (parenthesized_expression "(param_2 == iVar10)" (( "(") (binary_expression "param_2 == iVar10" (identifier "param_2") (== "==") (identifier "iVar10")) () ")")) (compound_statement "{\n          return;\n        }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" (identifier "iVar10") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_3 = param_3 + 0x28;" (assignment_expression "param_3 = param_3 + 0x28" (identifier "param_3") (= "=") (binary_expression "param_3 + 0x28" (identifier "param_3") (+ "+") (number_literal "0x28"))) (; ";")) (expression_statement "define_in_output_data(this,uVar9,0,5,iVar7);" (call_expression "define_in_output_data(this,uVar9,0,5,iVar7)" (identifier "define_in_output_data") (argument_list "(this,uVar9,0,5,iVar7)" (( "(") (identifier "this") (, ",") (identifier "uVar9") (, ",") (number_literal "0") (, ",") (number_literal "5") (, ",") (identifier "iVar7") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_2 != iVar10)" (( "(") (binary_expression "param_2 != iVar10" (identifier "param_2") (!= "!=") (identifier "iVar10")) () ")")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) (ms_call_modifier) (ERROR (identifier) (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (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))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal) (number_literal) (number_literal) (number_literal) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) (pointer_expression argument: (identifier)) (identifier) (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal) (number_literal) (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (return_statement))))

/* gold::Symbol_table::MASKED(gold::Layout const*, int, gold::Define_symbol_in_section
   const*, bool) */

void __thiscall
gold::Symbol_table::MASKED
          (Symbol_table *this,Layout *param_1,int param_2,Define_symbol_in_section *param_3,
          bool param_4)

{
  Define_symbol_in_section *pDVar1;
  Define_symbol_in_section *pDVar2;
  Define_symbol_in_section *pDVar3;
  Define_symbol_in_section *pDVar4;
  Define_symbol_in_section *pDVar5;
  Define_symbol_in_section *pDVar6;
  int iVar7;
  Define_symbol_in_section DVar8;
  undefined4 uVar9;
  int iVar10;
  
  if (0 < param_2) {
    iVar10 = 0;
    do {
      while( true ) {
        iVar7 = (*(code *)PTR_find_output_section_004c1e4c)(param_1,*(undefined4 *)(param_3 + 4));
        uVar9 = *(undefined4 *)param_3;
        if (iVar7 != 0) break;
        pDVar1 = param_3 + 0x14;
        pDVar2 = param_3 + 0x10;
        pDVar3 = param_3 + 0x18;
        pDVar4 = param_3 + 0x1c;
        pDVar5 = param_3 + 0x20;
        pDVar6 = param_3 + 0x24;
        DVar8 = (Define_symbol_in_section)param_4;
        if (!param_4) {
          DVar8 = param_3[0x26];
        }
        iVar10 = iVar10 + 1;
        param_3 = param_3 + 0x28;
        define_as_constant(this,uVar9,0,5,0,0,*(undefined4 *)pDVar2,*(undefined4 *)pDVar1,
                           *(undefined4 *)pDVar3,*(undefined4 *)pDVar4,*(undefined4 *)pDVar5,*pDVar6
                           ,DVar8,0);
        if (param_2 == iVar10) {
          return;
        }
      }
      iVar10 = iVar10 + 1;
      param_3 = param_3 + 0x28;
      define_in_output_data(this,uVar9,0,5,iVar7);
    } while (param_2 != iVar10);
  }
  return;
}

