
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: Output_section * make_output_section_for_script(Layout * this, char *
   name, Section_type section_type) */

Output_section * __thiscall
gold::Layout::make_output_section_for_script(Layout *this,char *name,Section_type section_type)

{
  char *name_00;
  Output_section *pOVar1;
  
  name_00 = Stringpool_template<char>::add(&this->namepool_,name,false,(Key *)0x0);
  if (section_type != ST_NOLOAD) {
    pOVar1 = make_output_section(this,name_00,1,2,ORDER_INVALID,false);
    pOVar1->field_0xc8 = pOVar1->field_0xc8 | 0x40;
    return pOVar1;
  }
  pOVar1 = make_output_section(this,name_00,1,0,ORDER_INVALID,false);
  *(uint *)&pOVar1->field_0xc8 = *(uint *)&pOVar1->field_0xc8 | 0x80040;
  return pOVar1;
}



void FUN_0018af20(long param_1,undefined8 param_2,int param_3)

{
  undefined8 uVar1;
  long lVar2;
  
  uVar1 = FUN_0021bf40(param_1 + 0x10,param_2,0,0);
  if (param_3 != 1) {
    lVar2 = FUN_0018a4e0(param_1,uVar1,1,2,0,0);
    *(byte *)(lVar2 + 200) = *(byte *)(lVar2 + 200) | 0x40;
    return;
  }
  lVar2 = FUN_0018a4e0(param_1,uVar1,1,0,0,0);
  *(uint *)(lVar2 + 200) = *(uint *)(lVar2 + 200) | 0x80040;
  return;
}


PUSH RBP
XOR ECX,ECX
MOV EBP,EDX
XOR EDX,EDX
PUSH RBX
MOV RBX,RDI
ADD RDI,0x10
SUB RSP,0x8
CALL 0x0021bf40
XOR R9D,R9D
XOR R8D,R8D
CMP EBP,0x1
JZ 0x0018af70
MOV RDI,RBX
MOV ECX,0x2
MOV EDX,0x1
MOV RSI,RAX
CALL 0x0018a4e0
OR byte ptr [RAX + 0xc8],0x40
ADD RSP,0x8
POP RBX
POP RBP
RET
MOV RDI,RBX
XOR ECX,ECX
MOV EDX,0x1
MOV RSI,RAX
CALL 0x0018a4e0
OR dword ptr [RAX + 0xc8],0x80040
ADD RSP,0x8
POP RBX
POP RBP
RET
(translation_unit "void FUN_0018af20(long param_1,undefined8 param_2,int param_3)\n\n{\n  undefined8 uVar1;\n  long lVar2;\n  \n  uVar1 = FUN_0021bf40(param_1 + 0x10,param_2,0,0);\n  if (param_3 != 1) {\n    lVar2 = FUN_0018a4e0(param_1,uVar1,1,2,0,0);\n    *(byte *)(lVar2 + 200) = *(byte *)(lVar2 + 200) | 0x40;\n    return;\n  }\n  lVar2 = FUN_0018a4e0(param_1,uVar1,1,0,0,0);\n  *(uint *)(lVar2 + 200) = *(uint *)(lVar2 + 200) | 0x80040;\n  return;\n}\n\n" (function_definition "void FUN_0018af20(long param_1,undefined8 param_2,int param_3)\n\n{\n  undefined8 uVar1;\n  long lVar2;\n  \n  uVar1 = FUN_0021bf40(param_1 + 0x10,param_2,0,0);\n  if (param_3 != 1) {\n    lVar2 = FUN_0018a4e0(param_1,uVar1,1,2,0,0);\n    *(byte *)(lVar2 + 200) = *(byte *)(lVar2 + 200) | 0x40;\n    return;\n  }\n  lVar2 = FUN_0018a4e0(param_1,uVar1,1,0,0,0);\n  *(uint *)(lVar2 + 200) = *(uint *)(lVar2 + 200) | 0x80040;\n  return;\n}" primitive_type (function_declarator "FUN_0018af20(long param_1,undefined8 param_2,int param_3)" identifier (parameter_list "(long param_1,undefined8 param_2,int param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  undefined8 uVar1;\n  long lVar2;\n  \n  uVar1 = FUN_0021bf40(param_1 + 0x10,param_2,0,0);\n  if (param_3 != 1) {\n    lVar2 = FUN_0018a4e0(param_1,uVar1,1,2,0,0);\n    *(byte *)(lVar2 + 200) = *(byte *)(lVar2 + 200) | 0x40;\n    return;\n  }\n  lVar2 = FUN_0018a4e0(param_1,uVar1,1,0,0,0);\n  *(uint *)(lVar2 + 200) = *(uint *)(lVar2 + 200) | 0x80040;\n  return;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (expression_statement "uVar1 = FUN_0021bf40(param_1 + 0x10,param_2,0,0);" (assignment_expression "uVar1 = FUN_0021bf40(param_1 + 0x10,param_2,0,0)" identifier = (call_expression "FUN_0021bf40(param_1 + 0x10,param_2,0,0)" identifier (argument_list "(param_1 + 0x10,param_2,0,0)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) , identifier , number_literal , number_literal )))) ;) (if_statement "if (param_3 != 1) {\n    lVar2 = FUN_0018a4e0(param_1,uVar1,1,2,0,0);\n    *(byte *)(lVar2 + 200) = *(byte *)(lVar2 + 200) | 0x40;\n    return;\n  }" if (parenthesized_expression "(param_3 != 1)" ( (binary_expression "param_3 != 1" identifier != number_literal) )) (compound_statement "{\n    lVar2 = FUN_0018a4e0(param_1,uVar1,1,2,0,0);\n    *(byte *)(lVar2 + 200) = *(byte *)(lVar2 + 200) | 0x40;\n    return;\n  }" { (expression_statement "lVar2 = FUN_0018a4e0(param_1,uVar1,1,2,0,0);" (assignment_expression "lVar2 = FUN_0018a4e0(param_1,uVar1,1,2,0,0)" identifier = (call_expression "FUN_0018a4e0(param_1,uVar1,1,2,0,0)" identifier (argument_list "(param_1,uVar1,1,2,0,0)" ( identifier , identifier , number_literal , number_literal , number_literal , number_literal )))) ;) (expression_statement "*(byte *)(lVar2 + 200) = *(byte *)(lVar2 + 200) | 0x40;" (assignment_expression "*(byte *)(lVar2 + 200) = *(byte *)(lVar2 + 200) | 0x40" (pointer_expression "*(byte *)(lVar2 + 200)" * (cast_expression "(byte *)(lVar2 + 200)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 200)" ( (binary_expression "lVar2 + 200" identifier + number_literal) )))) = (binary_expression "*(byte *)(lVar2 + 200) | 0x40" (pointer_expression "*(byte *)(lVar2 + 200)" * (cast_expression "(byte *)(lVar2 + 200)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 200)" ( (binary_expression "lVar2 + 200" identifier + number_literal) )))) | number_literal)) ;) (return_statement "return;" return ;) })) (expression_statement "lVar2 = FUN_0018a4e0(param_1,uVar1,1,0,0,0);" (assignment_expression "lVar2 = FUN_0018a4e0(param_1,uVar1,1,0,0,0)" identifier = (call_expression "FUN_0018a4e0(param_1,uVar1,1,0,0,0)" identifier (argument_list "(param_1,uVar1,1,0,0,0)" ( identifier , identifier , number_literal , number_literal , number_literal , number_literal )))) ;) (expression_statement "*(uint *)(lVar2 + 200) = *(uint *)(lVar2 + 200) | 0x80040;" (assignment_expression "*(uint *)(lVar2 + 200) = *(uint *)(lVar2 + 200) | 0x80040" (pointer_expression "*(uint *)(lVar2 + 200)" * (cast_expression "(uint *)(lVar2 + 200)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 200)" ( (binary_expression "lVar2 + 200" identifier + number_literal) )))) = (binary_expression "*(uint *)(lVar2 + 200) | 0x80040" (pointer_expression "*(uint *)(lVar2 + 200)" * (cast_expression "(uint *)(lVar2 + 200)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 200)" ( (binary_expression "lVar2 + 200" identifier + number_literal) )))) | number_literal)) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: Output_section * make_output_section_for_script(Layout * this, char *\n   name, Section_type section_type) */\n\nOutput_section * __thiscall\ngold::Layout::make_output_section_for_script(Layout *this,char *name,Section_type section_type)\n\n{\n  char *name_00;\n  Output_section *pOVar1;\n  \n  name_00 = Stringpool_template<char>::add(&this->namepool_,name,false,(Key *)0x0);\n  if (section_type != ST_NOLOAD) {\n    pOVar1 = make_output_section(this,name_00,1,2,ORDER_INVALID,false);\n    pOVar1->field_0xc8 = pOVar1->field_0xc8 | 0x40;\n    return pOVar1;\n  }\n  pOVar1 = make_output_section(this,name_00,1,0,ORDER_INVALID,false);\n  *(uint *)&pOVar1->field_0xc8 = *(uint *)&pOVar1->field_0xc8 | 0x80040;\n  return pOVar1;\n}\n\n" comment comment (ERROR "Output_section * __thiscall\ngold::Layout::make_output_section_for_script(Layout *this,char *name,Section_type section_type)" (binary_expression "Output_section * __thiscall\ngold::Layout::make_output_section_for_script(Layout *this" (binary_expression "Output_section * __thiscall" identifier * identifier) (ERROR "gold::Layout::make_output_section_for_script(Layout" identifier : : identifier : : identifier ( identifier) * identifier) , primitive_type (pointer_declarator "*name" * identifier) , identifier identifier )) (compound_statement "{\n  char *name_00;\n  Output_section *pOVar1;\n  \n  name_00 = Stringpool_template<char>::add(&this->namepool_,name,false,(Key *)0x0);\n  if (section_type != ST_NOLOAD) {\n    pOVar1 = make_output_section(this,name_00,1,2,ORDER_INVALID,false);\n    pOVar1->field_0xc8 = pOVar1->field_0xc8 | 0x40;\n    return pOVar1;\n  }\n  pOVar1 = make_output_section(this,name_00,1,0,ORDER_INVALID,false);\n  *(uint *)&pOVar1->field_0xc8 = *(uint *)&pOVar1->field_0xc8 | 0x80040;\n  return pOVar1;\n}" { (declaration "char *name_00;" primitive_type (pointer_declarator "*name_00" * identifier) ;) (declaration "Output_section *pOVar1;" type_identifier (pointer_declarator "*pOVar1" * identifier) ;) (expression_statement "name_00 = Stringpool_template<char>::add(&this->namepool_,name,false,(Key *)0x0);" (assignment_expression "name_00 = Stringpool_template<char>::add(&this->namepool_,name,false,(Key *)0x0)" identifier = (binary_expression "Stringpool_template<char>::add(&this->namepool_,name,false,(Key *)0x0)" (binary_expression "Stringpool_template<char" identifier < identifier) > (ERROR "::" : :) (call_expression "add(&this->namepool_,name,false,(Key *)0x0)" identifier (argument_list "(&this->namepool_,name,false,(Key *)0x0)" ( (pointer_expression "&this->namepool_" & (field_expression "this->namepool_" identifier -> field_identifier)) , identifier , false , (cast_expression "(Key *)0x0" ( (type_descriptor "Key *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ))))) ;) (if_statement "if (section_type != ST_NOLOAD) {\n    pOVar1 = make_output_section(this,name_00,1,2,ORDER_INVALID,false);\n    pOVar1->field_0xc8 = pOVar1->field_0xc8 | 0x40;\n    return pOVar1;\n  }" if (parenthesized_expression "(section_type != ST_NOLOAD)" ( (binary_expression "section_type != ST_NOLOAD" identifier != identifier) )) (compound_statement "{\n    pOVar1 = make_output_section(this,name_00,1,2,ORDER_INVALID,false);\n    pOVar1->field_0xc8 = pOVar1->field_0xc8 | 0x40;\n    return pOVar1;\n  }" { (expression_statement "pOVar1 = make_output_section(this,name_00,1,2,ORDER_INVALID,false);" (assignment_expression "pOVar1 = make_output_section(this,name_00,1,2,ORDER_INVALID,false)" identifier = (call_expression "make_output_section(this,name_00,1,2,ORDER_INVALID,false)" identifier (argument_list "(this,name_00,1,2,ORDER_INVALID,false)" ( identifier , identifier , number_literal , number_literal , identifier , false )))) ;) (expression_statement "pOVar1->field_0xc8 = pOVar1->field_0xc8 | 0x40;" (assignment_expression "pOVar1->field_0xc8 = pOVar1->field_0xc8 | 0x40" (field_expression "pOVar1->field_0xc8" identifier -> field_identifier) = (binary_expression "pOVar1->field_0xc8 | 0x40" (field_expression "pOVar1->field_0xc8" identifier -> field_identifier) | number_literal)) ;) (return_statement "return pOVar1;" return identifier ;) })) (expression_statement "pOVar1 = make_output_section(this,name_00,1,0,ORDER_INVALID,false);" (assignment_expression "pOVar1 = make_output_section(this,name_00,1,0,ORDER_INVALID,false)" identifier = (call_expression "make_output_section(this,name_00,1,0,ORDER_INVALID,false)" identifier (argument_list "(this,name_00,1,0,ORDER_INVALID,false)" ( identifier , identifier , number_literal , number_literal , identifier , false )))) ;) (expression_statement "*(uint *)&pOVar1->field_0xc8 = *(uint *)&pOVar1->field_0xc8 | 0x80040;" (assignment_expression "*(uint *)&pOVar1->field_0xc8 = *(uint *)&pOVar1->field_0xc8 | 0x80040" (pointer_expression "*(uint *)&pOVar1->field_0xc8" * (cast_expression "(uint *)&pOVar1->field_0xc8" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pOVar1->field_0xc8" & (field_expression "pOVar1->field_0xc8" identifier -> field_identifier)))) = (binary_expression "*(uint *)&pOVar1->field_0xc8 | 0x80040" (pointer_expression "*(uint *)&pOVar1->field_0xc8" * (cast_expression "(uint *)&pOVar1->field_0xc8" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pOVar1->field_0xc8" & (field_expression "pOVar1->field_0xc8" identifier -> field_identifier)))) | number_literal)) ;) (return_statement "return pOVar1;" return identifier ;) }))
(translation_unit "void FUN_0018af20(long param_1,undefined8 param_2,int param_3)\n\n{\n  undefined8 uVar1;\n  long lVar2;\n  \n  uVar1 = FUN_0021bf40(param_1 + 0x10,param_2,0,0);\n  if (param_3 != 1) {\n    lVar2 = FUN_0018a4e0(param_1,uVar1,1,2,0,0);\n    *(byte *)(lVar2 + 200) = *(byte *)(lVar2 + 200) | 0x40;\n    return;\n  }\n  lVar2 = FUN_0018a4e0(param_1,uVar1,1,0,0,0);\n  *(uint *)(lVar2 + 200) = *(uint *)(lVar2 + 200) | 0x80040;\n  return;\n}\n\n" (function_definition "void FUN_0018af20(long param_1,undefined8 param_2,int param_3)\n\n{\n  undefined8 uVar1;\n  long lVar2;\n  \n  uVar1 = FUN_0021bf40(param_1 + 0x10,param_2,0,0);\n  if (param_3 != 1) {\n    lVar2 = FUN_0018a4e0(param_1,uVar1,1,2,0,0);\n    *(byte *)(lVar2 + 200) = *(byte *)(lVar2 + 200) | 0x40;\n    return;\n  }\n  lVar2 = FUN_0018a4e0(param_1,uVar1,1,0,0,0);\n  *(uint *)(lVar2 + 200) = *(uint *)(lVar2 + 200) | 0x80040;\n  return;\n}" primitive_type (function_declarator "FUN_0018af20(long param_1,undefined8 param_2,int param_3)" identifier (parameter_list "(long param_1,undefined8 param_2,int param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  undefined8 uVar1;\n  long lVar2;\n  \n  uVar1 = FUN_0021bf40(param_1 + 0x10,param_2,0,0);\n  if (param_3 != 1) {\n    lVar2 = FUN_0018a4e0(param_1,uVar1,1,2,0,0);\n    *(byte *)(lVar2 + 200) = *(byte *)(lVar2 + 200) | 0x40;\n    return;\n  }\n  lVar2 = FUN_0018a4e0(param_1,uVar1,1,0,0,0);\n  *(uint *)(lVar2 + 200) = *(uint *)(lVar2 + 200) | 0x80040;\n  return;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (expression_statement "uVar1 = FUN_0021bf40(param_1 + 0x10,param_2,0,0);" (assignment_expression "uVar1 = FUN_0021bf40(param_1 + 0x10,param_2,0,0)" identifier = (call_expression "FUN_0021bf40(param_1 + 0x10,param_2,0,0)" identifier (argument_list "(param_1 + 0x10,param_2,0,0)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) , identifier , number_literal , number_literal )))) ;) (if_statement "if (param_3 != 1) {\n    lVar2 = FUN_0018a4e0(param_1,uVar1,1,2,0,0);\n    *(byte *)(lVar2 + 200) = *(byte *)(lVar2 + 200) | 0x40;\n    return;\n  }" if (parenthesized_expression "(param_3 != 1)" ( (binary_expression "param_3 != 1" identifier != number_literal) )) (compound_statement "{\n    lVar2 = FUN_0018a4e0(param_1,uVar1,1,2,0,0);\n    *(byte *)(lVar2 + 200) = *(byte *)(lVar2 + 200) | 0x40;\n    return;\n  }" { (expression_statement "lVar2 = FUN_0018a4e0(param_1,uVar1,1,2,0,0);" (assignment_expression "lVar2 = FUN_0018a4e0(param_1,uVar1,1,2,0,0)" identifier = (call_expression "FUN_0018a4e0(param_1,uVar1,1,2,0,0)" identifier (argument_list "(param_1,uVar1,1,2,0,0)" ( identifier , identifier , number_literal , number_literal , number_literal , number_literal )))) ;) (expression_statement "*(byte *)(lVar2 + 200) = *(byte *)(lVar2 + 200) | 0x40;" (assignment_expression "*(byte *)(lVar2 + 200) = *(byte *)(lVar2 + 200) | 0x40" (pointer_expression "*(byte *)(lVar2 + 200)" * (cast_expression "(byte *)(lVar2 + 200)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 200)" ( (binary_expression "lVar2 + 200" identifier + number_literal) )))) = (binary_expression "*(byte *)(lVar2 + 200) | 0x40" (pointer_expression "*(byte *)(lVar2 + 200)" * (cast_expression "(byte *)(lVar2 + 200)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 200)" ( (binary_expression "lVar2 + 200" identifier + number_literal) )))) | number_literal)) ;) (return_statement "return;" return ;) })) (expression_statement "lVar2 = FUN_0018a4e0(param_1,uVar1,1,0,0,0);" (assignment_expression "lVar2 = FUN_0018a4e0(param_1,uVar1,1,0,0,0)" identifier = (call_expression "FUN_0018a4e0(param_1,uVar1,1,0,0,0)" identifier (argument_list "(param_1,uVar1,1,0,0,0)" ( identifier , identifier , number_literal , number_literal , number_literal , number_literal )))) ;) (expression_statement "*(uint *)(lVar2 + 200) = *(uint *)(lVar2 + 200) | 0x80040;" (assignment_expression "*(uint *)(lVar2 + 200) = *(uint *)(lVar2 + 200) | 0x80040" (pointer_expression "*(uint *)(lVar2 + 200)" * (cast_expression "(uint *)(lVar2 + 200)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 200)" ( (binary_expression "lVar2 + 200" identifier + number_literal) )))) = (binary_expression "*(uint *)(lVar2 + 200) | 0x80040" (pointer_expression "*(uint *)(lVar2 + 200)" * (cast_expression "(uint *)(lVar2 + 200)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 200)" ( (binary_expression "lVar2 + 200" identifier + number_literal) )))) | number_literal)) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , LIT , LIT , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , LIT , LIT , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (return_statement return ;) })))
(function_definition "void FUN_0018af20(long param_1,undefined8 param_2,int param_3)\n\n{\n  undefined8 uVar1;\n  long lVar2;\n  \n  uVar1 = FUN_0021bf40(param_1 + 0x10,param_2,0,0);\n  if (param_3 != 1) {\n    lVar2 = FUN_0018a4e0(param_1,uVar1,1,2,0,0);\n    *(byte *)(lVar2 + 200) = *(byte *)(lVar2 + 200) | 0x40;\n    return;\n  }\n  lVar2 = FUN_0018a4e0(param_1,uVar1,1,0,0,0);\n  *(uint *)(lVar2 + 200) = *(uint *)(lVar2 + 200) | 0x80040;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0018af20(long param_1,undefined8 param_2,int param_3)" (identifier "FUN_0018af20") (parameter_list "(long param_1,undefined8 param_2,int param_3)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  undefined8 uVar1;\n  long lVar2;\n  \n  uVar1 = FUN_0021bf40(param_1 + 0x10,param_2,0,0);\n  if (param_3 != 1) {\n    lVar2 = FUN_0018a4e0(param_1,uVar1,1,2,0,0);\n    *(byte *)(lVar2 + 200) = *(byte *)(lVar2 + 200) | 0x40;\n    return;\n  }\n  lVar2 = FUN_0018a4e0(param_1,uVar1,1,0,0,0);\n  *(uint *)(lVar2 + 200) = *(uint *)(lVar2 + 200) | 0x80040;\n  return;\n}" ({ "{") (declaration "undefined8 uVar1;" (type_identifier "undefined8") (identifier "uVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (expression_statement "uVar1 = FUN_0021bf40(param_1 + 0x10,param_2,0,0);" (assignment_expression "uVar1 = FUN_0021bf40(param_1 + 0x10,param_2,0,0)" (identifier "uVar1") (= "=") (call_expression "FUN_0021bf40(param_1 + 0x10,param_2,0,0)" (identifier "FUN_0021bf40") (argument_list "(param_1 + 0x10,param_2,0,0)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) (, ",") (identifier "param_2") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (param_3 != 1) {\n    lVar2 = FUN_0018a4e0(param_1,uVar1,1,2,0,0);\n    *(byte *)(lVar2 + 200) = *(byte *)(lVar2 + 200) | 0x40;\n    return;\n  }" (if "if") (parenthesized_expression "(param_3 != 1)" (( "(") (binary_expression "param_3 != 1" (identifier "param_3") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n    lVar2 = FUN_0018a4e0(param_1,uVar1,1,2,0,0);\n    *(byte *)(lVar2 + 200) = *(byte *)(lVar2 + 200) | 0x40;\n    return;\n  }" ({ "{") (expression_statement "lVar2 = FUN_0018a4e0(param_1,uVar1,1,2,0,0);" (assignment_expression "lVar2 = FUN_0018a4e0(param_1,uVar1,1,2,0,0)" (identifier "lVar2") (= "=") (call_expression "FUN_0018a4e0(param_1,uVar1,1,2,0,0)" (identifier "FUN_0018a4e0") (argument_list "(param_1,uVar1,1,2,0,0)" (( "(") (identifier "param_1") (, ",") (identifier "uVar1") (, ",") (number_literal "1") (, ",") (number_literal "2") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "*(byte *)(lVar2 + 200) = *(byte *)(lVar2 + 200) | 0x40;" (assignment_expression "*(byte *)(lVar2 + 200) = *(byte *)(lVar2 + 200) | 0x40" (pointer_expression "*(byte *)(lVar2 + 200)" (* "*") (cast_expression "(byte *)(lVar2 + 200)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 200)" (( "(") (binary_expression "lVar2 + 200" (identifier "lVar2") (+ "+") (number_literal "200")) () ")")))) (= "=") (binary_expression "*(byte *)(lVar2 + 200) | 0x40" (pointer_expression "*(byte *)(lVar2 + 200)" (* "*") (cast_expression "(byte *)(lVar2 + 200)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 200)" (( "(") (binary_expression "lVar2 + 200" (identifier "lVar2") (+ "+") (number_literal "200")) () ")")))) (| "|") (number_literal "0x40"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "lVar2 = FUN_0018a4e0(param_1,uVar1,1,0,0,0);" (assignment_expression "lVar2 = FUN_0018a4e0(param_1,uVar1,1,0,0,0)" (identifier "lVar2") (= "=") (call_expression "FUN_0018a4e0(param_1,uVar1,1,0,0,0)" (identifier "FUN_0018a4e0") (argument_list "(param_1,uVar1,1,0,0,0)" (( "(") (identifier "param_1") (, ",") (identifier "uVar1") (, ",") (number_literal "1") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "*(uint *)(lVar2 + 200) = *(uint *)(lVar2 + 200) | 0x80040;" (assignment_expression "*(uint *)(lVar2 + 200) = *(uint *)(lVar2 + 200) | 0x80040" (pointer_expression "*(uint *)(lVar2 + 200)" (* "*") (cast_expression "(uint *)(lVar2 + 200)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 200)" (( "(") (binary_expression "lVar2 + 200" (identifier "lVar2") (+ "+") (number_literal "200")) () ")")))) (= "=") (binary_expression "*(uint *)(lVar2 + 200) | 0x80040" (pointer_expression "*(uint *)(lVar2 + 200)" (* "*") (cast_expression "(uint *)(lVar2 + 200)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 200)" (( "(") (binary_expression "lVar2 + 200" (identifier "lVar2") (+ "+") (number_literal "200")) () ")")))) (| "|") (number_literal "0x80040"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: Output_section * make_output_section_for_script(Layout * this, char *
   name, Section_type section_type) */

type_1 * __thiscall
gold::Layout::make_output_section_for_script(Layout *this,char *name,Section_type var_4)

{
  char *name_00;
  type_1 *pOVar1;
  
  name_00 = var_1<var_2>::var_3(&this->namepool_,name,false,(type_2 *)0x0);
  if (var_4 != var_5) {
    pOVar1 = var_6(this,name_00,1,2,ORDER_INVALID,false);
    pOVar1->field_0xc8 = pOVar1->field_0xc8 | 0x40;
    return pOVar1;
  }
  pOVar1 = var_6(this,name_00,1,0,ORDER_INVALID,false);
  *(type_3 *)&pOVar1->field_0xc8 = *(type_3 *)&pOVar1->field_0xc8 | 0x80040;
  return pOVar1;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (sized_type_specifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (number_literal) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal) (number_literal) (number_literal) (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal) (number_literal) (number_literal) (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (return_statement))))

void MASKED(long param_1,undefined8 param_2,int param_3)

{
  undefined8 uVar1;
  long lVar2;
  
  uVar1 = FUN_0021bf40(param_1 + 0x10,param_2,0,0);
  if (param_3 != 1) {
    lVar2 = FUN_0018a4e0(param_1,uVar1,1,2,0,0);
    *(byte *)(lVar2 + 200) = *(byte *)(lVar2 + 200) | 0x40;
    return;
  }
  lVar2 = FUN_0018a4e0(param_1,uVar1,1,0,0,0);
  *(uint *)(lVar2 + 200) = *(uint *)(lVar2 + 200) | 0x80040;
  return;
}

