
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* WARNING: Enum "PT": Some values do not have unique names */
/* WARNING: Enum "STT": Some values do not have unique names */
/* WARNING: Enum "STB": Some values do not have unique names */
/* DWARF original prototype: void do_finalize_sections(Target_tilegx<32,_true> * this, Layout *
   layout, Input_objects * param_2, Symbol_table * symtab) */

void __thiscall
anon_unknown.dwarf_ca7751::Target_tilegx<32,_true>::do_finalize_sections
          (Target_tilegx<32,_true> *this,Layout *layout,Input_objects *param_2,Symbol_table *symtab)

{
  ulong uVar1;
  uint64_t uVar2;
  Symbol *sym;
  Sized_symbol<32> *pSVar3;
  Sized_symbol<32> *pSVar4;
  Output_data *plt_rel;
  Layout *this_00;
  Layout *this_01;
  
  plt_rel = (Output_data *)(this->tilegx_info).abi_pagesize;
  if (plt_rel != (Output_data *)0x0) {
    plt_rel = (Output_data *)plt_rel[1].offset_;
  }
  sym = (Symbol *)0x0;
  this_00 = layout;
  gold::Layout::add_target_dynamic_tags
            (layout,false,(Output_data *)(this->tilegx_info).common_pagesize,plt_rel,
             (Output_data_reloc_generic *)(this->tilegx_info).small_common_section_flags,true,true);
  if ((this->tilegx_info).attributes_section != (this->tilegx_info).attributes_vendor) {
    sym = (Symbol *)
          rela_dyn_section((Target_tilegx<32,_true> *)
                           &(this->tilegx_info).small_common_section_flags,layout);
    this_00 = (Layout *)&(this->tilegx_info).attributes_section;
    gold::Copy_relocs<4,_32,_true>::emit
              ((Copy_relocs<4,_32,_true> *)this_00,(Output_data_reloc<4,_true,_32,_true> *)sym);
  }
  this_01 = (Layout *)(this->tilegx_info).rosegment_gap;
  if (this_01 != (Layout *)0x0) {
    uVar1 = *(ulong *)((this->tilegx_info).default_text_segment_address + 0x10);
    this_00 = this_01;
    pSVar3 = gold::Symbol_table::get_sized_symbol<32>((Symbol_table *)this_01,sym);
    pSVar3->symsize_ = (Size_type)uVar1;
    if (0x7fff < uVar1) {
      pSVar3 = gold::Symbol_table::get_sized_symbol<32>((Symbol_table *)this_01,sym);
      pSVar4 = gold::Symbol_table::get_sized_symbol<32>((Symbol_table *)this_01,sym);
      pSVar3->value_ = pSVar4->value_ + 0x8000;
      this_00 = this_01;
    }
  }
  if (gold::parameters->doing_static_link_valid_ != false) {
    if ((gold::parameters->doing_static_link_ != false) &&
       ((uVar2 = (this->tilegx_info).abi_pagesize, uVar2 == 0 || (*(long *)(uVar2 + 0x48) == 0)))) {
      gold::Symbol_table::define_symbols
                (symtab,layout,2,do_finalize_sections::lexical_block_7::syms,
                 (layout->script_options_->script_sections_).saw_sections_clause_);
      return;
    }
    return;
  }
                    /* WARNING: Subroutine does not return */
  gold::Parameters::doing_static_link((Parameters *)this_00,(Parameters *)sym);
}



void FUN_00276880(long param_1,long param_2,undefined8 param_3,undefined8 param_4)

{
  ulong uVar1;
  undefined8 uVar2;
  long lVar3;
  long lVar4;
  undefined8 uStack_30;
  
  lVar4 = *(long *)(param_1 + 0x28);
  if (lVar4 != 0) {
    lVar4 = *(long *)(lVar4 + 0x40);
  }
  FUN_0037e220(param_2,0,*(undefined8 *)(param_1 + 0x30),lVar4,*(undefined8 *)(param_1 + 0x50),1,1);
  if (*(long *)(param_1 + 0x60) != *(long *)(param_1 + 0x68)) {
    uVar2 = FUN_00276700(param_1 + 0x50,param_2,uStack_30);
    FUN_0033ae50(param_1 + 0x60,uVar2);
  }
  lVar4 = *(long *)(param_1 + 0x40);
  if (lVar4 != 0) {
    uVar1 = *(ulong *)(*(long *)(param_1 + 0x20) + 0x10);
    lVar3 = FUN_00273930(lVar4);
    *(int *)(lVar3 + 0x44) = (int)uVar1;
    if (0x7fff < uVar1) {
      lVar3 = FUN_00273930(lVar4);
      lVar4 = FUN_00273930(lVar4);
      *(int *)(lVar3 + 0x40) = *(int *)(lVar4 + 0x40) + 0x8000;
    }
  }
  if (PTR_DAT_0067cb08[0x20] != '\0') {
    if ((PTR_DAT_0067cb08[0x21] != '\0') &&
       ((*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0)))) {
      FUN_00445eb0(param_4,param_2,2,&PTR_s___rela_iplt_start_00654240,
                   *(undefined1 *)(*(long *)(param_2 + 8) + 0x148));
      return;
    }
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00272df0();
}


PUSH R14
PUSH R13
MOV R13,RCX
PUSH R12
PUSH RBP
MOV RBP,RSI
PUSH RBX
MOV RCX,qword ptr [RDI + 0x28]
MOV RBX,RDI
TEST RCX,RCX
JZ 0x0027689e
MOV RCX,qword ptr [RCX + 0x40]
SUB RSP,0x8
MOV RDX,qword ptr [RBX + 0x30]
MOV R8,qword ptr [RBX + 0x50]
XOR ESI,ESI
PUSH 0x1
MOV R9D,0x1
MOV RDI,RBP
CALL 0x0037e220
POP RAX
MOV RAX,qword ptr [RBX + 0x68]
POP RDX
CMP qword ptr [RBX + 0x60],RAX
JZ 0x002768e0
LEA RDI,[RBX + 0x50]
MOV RSI,RBP
CALL 0x00276700
LEA RDI,[RBX + 0x60]
MOV RSI,RAX
CALL 0x0033ae50
MOV R12,qword ptr [RBX + 0x40]
TEST R12,R12
JZ 0x00276906
MOV RAX,qword ptr [RBX + 0x20]
MOV RDI,R12
MOV R14,qword ptr [RAX + 0x10]
CALL 0x00273930
MOV dword ptr [RAX + 0x44],R14D
CMP R14,0x7fff
JA 0x00276968
MOV RAX,qword ptr [0x0067cb08]
CMP byte ptr [RAX + 0x20],0x0
JZ 0x0027698c
CMP byte ptr [RAX + 0x21],0x0
JZ 0x00276929
MOV RAX,qword ptr [RBX + 0x28]
TEST RAX,RAX
JZ 0x00276938
CMP qword ptr [RAX + 0x48],0x0
JZ 0x00276938
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
MOV RAX,qword ptr [RBP + 0x8]
POP RBX
MOV RSI,RBP
MOV RDI,R13
POP RBP
LEA RCX,[0x654240]
POP R12
MOV EDX,0x2
MOVZX R8D,byte ptr [RAX + 0x148]
POP R13
POP R14
JMP 0x00445eb0
MOV RDI,R12
CALL 0x00273930
MOV RDI,R12
MOV R14,RAX
CALL 0x00273930
MOV EAX,dword ptr [RAX + 0x40]
ADD EAX,0x8000
MOV dword ptr [R14 + 0x40],EAX
JMP 0x00276906
CALL 0x00272df0
(translation_unit "void FUN_00276880(long param_1,long param_2,undefined8 param_3,undefined8 param_4)\n\n{\n  ulong uVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long lVar4;\n  undefined8 uStack_30;\n  \n  lVar4 = *(long *)(param_1 + 0x28);\n  if (lVar4 != 0) {\n    lVar4 = *(long *)(lVar4 + 0x40);\n  }\n  FUN_0037e220(param_2,0,*(undefined8 *)(param_1 + 0x30),lVar4,*(undefined8 *)(param_1 + 0x50),1,1);\n  if (*(long *)(param_1 + 0x60) != *(long *)(param_1 + 0x68)) {\n    uVar2 = FUN_00276700(param_1 + 0x50,param_2,uStack_30);\n    FUN_0033ae50(param_1 + 0x60,uVar2);\n  }\n  lVar4 = *(long *)(param_1 + 0x40);\n  if (lVar4 != 0) {\n    uVar1 = *(ulong *)(*(long *)(param_1 + 0x20) + 0x10);\n    lVar3 = FUN_00273930(lVar4);\n    *(int *)(lVar3 + 0x44) = (int)uVar1;\n    if (0x7fff < uVar1) {\n      lVar3 = FUN_00273930(lVar4);\n      lVar4 = FUN_00273930(lVar4);\n      *(int *)(lVar3 + 0x40) = *(int *)(lVar4 + 0x40) + 0x8000;\n    }\n  }\n  if (PTR_DAT_0067cb08[0x20] != '\0') {\n    if ((PTR_DAT_0067cb08[0x21] != '\0') &&\n       ((*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0)))) {\n      FUN_00445eb0(param_4,param_2,2,&PTR_s___rela_iplt_start_00654240,\n                   *(undefined1 *)(*(long *)(param_2 + 8) + 0x148));\n      return;\n    }\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00272df0();\n}\n\n" (function_definition "void FUN_00276880(long param_1,long param_2,undefined8 param_3,undefined8 param_4)\n\n{\n  ulong uVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long lVar4;\n  undefined8 uStack_30;\n  \n  lVar4 = *(long *)(param_1 + 0x28);\n  if (lVar4 != 0) {\n    lVar4 = *(long *)(lVar4 + 0x40);\n  }\n  FUN_0037e220(param_2,0,*(undefined8 *)(param_1 + 0x30),lVar4,*(undefined8 *)(param_1 + 0x50),1,1);\n  if (*(long *)(param_1 + 0x60) != *(long *)(param_1 + 0x68)) {\n    uVar2 = FUN_00276700(param_1 + 0x50,param_2,uStack_30);\n    FUN_0033ae50(param_1 + 0x60,uVar2);\n  }\n  lVar4 = *(long *)(param_1 + 0x40);\n  if (lVar4 != 0) {\n    uVar1 = *(ulong *)(*(long *)(param_1 + 0x20) + 0x10);\n    lVar3 = FUN_00273930(lVar4);\n    *(int *)(lVar3 + 0x44) = (int)uVar1;\n    if (0x7fff < uVar1) {\n      lVar3 = FUN_00273930(lVar4);\n      lVar4 = FUN_00273930(lVar4);\n      *(int *)(lVar3 + 0x40) = *(int *)(lVar4 + 0x40) + 0x8000;\n    }\n  }\n  if (PTR_DAT_0067cb08[0x20] != '\0') {\n    if ((PTR_DAT_0067cb08[0x21] != '\0') &&\n       ((*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0)))) {\n      FUN_00445eb0(param_4,param_2,2,&PTR_s___rela_iplt_start_00654240,\n                   *(undefined1 *)(*(long *)(param_2 + 8) + 0x148));\n      return;\n    }\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00272df0();\n}" primitive_type (function_declarator "FUN_00276880(long param_1,long param_2,undefined8 param_3,undefined8 param_4)" identifier (parameter_list "(long param_1,long param_2,undefined8 param_3,undefined8 param_4)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) ))) (compound_statement "{\n  ulong uVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long lVar4;\n  undefined8 uStack_30;\n  \n  lVar4 = *(long *)(param_1 + 0x28);\n  if (lVar4 != 0) {\n    lVar4 = *(long *)(lVar4 + 0x40);\n  }\n  FUN_0037e220(param_2,0,*(undefined8 *)(param_1 + 0x30),lVar4,*(undefined8 *)(param_1 + 0x50),1,1);\n  if (*(long *)(param_1 + 0x60) != *(long *)(param_1 + 0x68)) {\n    uVar2 = FUN_00276700(param_1 + 0x50,param_2,uStack_30);\n    FUN_0033ae50(param_1 + 0x60,uVar2);\n  }\n  lVar4 = *(long *)(param_1 + 0x40);\n  if (lVar4 != 0) {\n    uVar1 = *(ulong *)(*(long *)(param_1 + 0x20) + 0x10);\n    lVar3 = FUN_00273930(lVar4);\n    *(int *)(lVar3 + 0x44) = (int)uVar1;\n    if (0x7fff < uVar1) {\n      lVar3 = FUN_00273930(lVar4);\n      lVar4 = FUN_00273930(lVar4);\n      *(int *)(lVar3 + 0x40) = *(int *)(lVar4 + 0x40) + 0x8000;\n    }\n  }\n  if (PTR_DAT_0067cb08[0x20] != '\0') {\n    if ((PTR_DAT_0067cb08[0x21] != '\0') &&\n       ((*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0)))) {\n      FUN_00445eb0(param_4,param_2,2,&PTR_s___rela_iplt_start_00654240,\n                   *(undefined1 *)(*(long *)(param_2 + 8) + 0x148));\n      return;\n    }\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00272df0();\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uStack_30;" type_identifier identifier ;) (expression_statement "lVar4 = *(long *)(param_1 + 0x28);" (assignment_expression "lVar4 = *(long *)(param_1 + 0x28)" identifier = (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (lVar4 != 0) {\n    lVar4 = *(long *)(lVar4 + 0x40);\n  }" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (compound_statement "{\n    lVar4 = *(long *)(lVar4 + 0x40);\n  }" { (expression_statement "lVar4 = *(long *)(lVar4 + 0x40);" (assignment_expression "lVar4 = *(long *)(lVar4 + 0x40)" identifier = (pointer_expression "*(long *)(lVar4 + 0x40)" * (cast_expression "(long *)(lVar4 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x40)" ( (binary_expression "lVar4 + 0x40" identifier + number_literal) ))))) ;) })) (expression_statement "FUN_0037e220(param_2,0,*(undefined8 *)(param_1 + 0x30),lVar4,*(undefined8 *)(param_1 + 0x50),1,1);" (call_expression "FUN_0037e220(param_2,0,*(undefined8 *)(param_1 + 0x30),lVar4,*(undefined8 *)(param_1 + 0x50),1,1)" identifier (argument_list "(param_2,0,*(undefined8 *)(param_1 + 0x30),lVar4,*(undefined8 *)(param_1 + 0x50),1,1)" ( identifier , number_literal , (pointer_expression "*(undefined8 *)(param_1 + 0x30)" * (cast_expression "(undefined8 *)(param_1 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) , identifier , (pointer_expression "*(undefined8 *)(param_1 + 0x50)" * (cast_expression "(undefined8 *)(param_1 + 0x50)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) , number_literal , number_literal ))) ;) (if_statement "if (*(long *)(param_1 + 0x60) != *(long *)(param_1 + 0x68)) {\n    uVar2 = FUN_00276700(param_1 + 0x50,param_2,uStack_30);\n    FUN_0033ae50(param_1 + 0x60,uVar2);\n  }" if (parenthesized_expression "(*(long *)(param_1 + 0x60) != *(long *)(param_1 + 0x68))" ( (binary_expression "*(long *)(param_1 + 0x60) != *(long *)(param_1 + 0x68)" (pointer_expression "*(long *)(param_1 + 0x60)" * (cast_expression "(long *)(param_1 + 0x60)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) != (pointer_expression "*(long *)(param_1 + 0x68)" * (cast_expression "(long *)(param_1 + 0x68)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) ))))) )) (compound_statement "{\n    uVar2 = FUN_00276700(param_1 + 0x50,param_2,uStack_30);\n    FUN_0033ae50(param_1 + 0x60,uVar2);\n  }" { (expression_statement "uVar2 = FUN_00276700(param_1 + 0x50,param_2,uStack_30);" (assignment_expression "uVar2 = FUN_00276700(param_1 + 0x50,param_2,uStack_30)" identifier = (call_expression "FUN_00276700(param_1 + 0x50,param_2,uStack_30)" identifier (argument_list "(param_1 + 0x50,param_2,uStack_30)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) , identifier , identifier )))) ;) (expression_statement "FUN_0033ae50(param_1 + 0x60,uVar2);" (call_expression "FUN_0033ae50(param_1 + 0x60,uVar2)" identifier (argument_list "(param_1 + 0x60,uVar2)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) , identifier ))) ;) })) (expression_statement "lVar4 = *(long *)(param_1 + 0x40);" (assignment_expression "lVar4 = *(long *)(param_1 + 0x40)" identifier = (pointer_expression "*(long *)(param_1 + 0x40)" * (cast_expression "(long *)(param_1 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) ;) (if_statement "if (lVar4 != 0) {\n    uVar1 = *(ulong *)(*(long *)(param_1 + 0x20) + 0x10);\n    lVar3 = FUN_00273930(lVar4);\n    *(int *)(lVar3 + 0x44) = (int)uVar1;\n    if (0x7fff < uVar1) {\n      lVar3 = FUN_00273930(lVar4);\n      lVar4 = FUN_00273930(lVar4);\n      *(int *)(lVar3 + 0x40) = *(int *)(lVar4 + 0x40) + 0x8000;\n    }\n  }" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar1 = *(ulong *)(*(long *)(param_1 + 0x20) + 0x10);\n    lVar3 = FUN_00273930(lVar4);\n    *(int *)(lVar3 + 0x44) = (int)uVar1;\n    if (0x7fff < uVar1) {\n      lVar3 = FUN_00273930(lVar4);\n      lVar4 = FUN_00273930(lVar4);\n      *(int *)(lVar3 + 0x40) = *(int *)(lVar4 + 0x40) + 0x8000;\n    }\n  }" { (expression_statement "uVar1 = *(ulong *)(*(long *)(param_1 + 0x20) + 0x10);" (assignment_expression "uVar1 = *(ulong *)(*(long *)(param_1 + 0x20) + 0x10)" identifier = (pointer_expression "*(ulong *)(*(long *)(param_1 + 0x20) + 0x10)" * (cast_expression "(ulong *)(*(long *)(param_1 + 0x20) + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x20) + 0x10)" ( (binary_expression "*(long *)(param_1 + 0x20) + 0x10" (pointer_expression "*(long *)(param_1 + 0x20)" * (cast_expression "(long *)(param_1 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00273930(lVar4);" (assignment_expression "lVar3 = FUN_00273930(lVar4)" identifier = (call_expression "FUN_00273930(lVar4)" identifier (argument_list "(lVar4)" ( identifier )))) ;) (expression_statement "*(int *)(lVar3 + 0x44) = (int)uVar1;" (assignment_expression "*(int *)(lVar3 + 0x44) = (int)uVar1" (pointer_expression "*(int *)(lVar3 + 0x44)" * (cast_expression "(int *)(lVar3 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x44)" ( (binary_expression "lVar3 + 0x44" identifier + number_literal) )))) = (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (0x7fff < uVar1) {\n      lVar3 = FUN_00273930(lVar4);\n      lVar4 = FUN_00273930(lVar4);\n      *(int *)(lVar3 + 0x40) = *(int *)(lVar4 + 0x40) + 0x8000;\n    }" if (parenthesized_expression "(0x7fff < uVar1)" ( (binary_expression "0x7fff < uVar1" number_literal < identifier) )) (compound_statement "{\n      lVar3 = FUN_00273930(lVar4);\n      lVar4 = FUN_00273930(lVar4);\n      *(int *)(lVar3 + 0x40) = *(int *)(lVar4 + 0x40) + 0x8000;\n    }" { (expression_statement "lVar3 = FUN_00273930(lVar4);" (assignment_expression "lVar3 = FUN_00273930(lVar4)" identifier = (call_expression "FUN_00273930(lVar4)" identifier (argument_list "(lVar4)" ( identifier )))) ;) (expression_statement "lVar4 = FUN_00273930(lVar4);" (assignment_expression "lVar4 = FUN_00273930(lVar4)" identifier = (call_expression "FUN_00273930(lVar4)" identifier (argument_list "(lVar4)" ( identifier )))) ;) (expression_statement "*(int *)(lVar3 + 0x40) = *(int *)(lVar4 + 0x40) + 0x8000;" (assignment_expression "*(int *)(lVar3 + 0x40) = *(int *)(lVar4 + 0x40) + 0x8000" (pointer_expression "*(int *)(lVar3 + 0x40)" * (cast_expression "(int *)(lVar3 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x40)" ( (binary_expression "lVar3 + 0x40" identifier + number_literal) )))) = (binary_expression "*(int *)(lVar4 + 0x40) + 0x8000" (pointer_expression "*(int *)(lVar4 + 0x40)" * (cast_expression "(int *)(lVar4 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x40)" ( (binary_expression "lVar4 + 0x40" identifier + number_literal) )))) + number_literal)) ;) })) })) (if_statement "if (PTR_DAT_0067cb08[0x20] != '\0') {\n    if ((PTR_DAT_0067cb08[0x21] != '\0') &&\n       ((*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0)))) {\n      FUN_00445eb0(param_4,param_2,2,&PTR_s___rela_iplt_start_00654240,\n                   *(undefined1 *)(*(long *)(param_2 + 8) + 0x148));\n      return;\n    }\n    return;\n  }" if (parenthesized_expression "(PTR_DAT_0067cb08[0x20] != '\0')" ( (binary_expression "PTR_DAT_0067cb08[0x20] != '\0'" (subscript_expression "PTR_DAT_0067cb08[0x20]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if ((PTR_DAT_0067cb08[0x21] != '\0') &&\n       ((*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0)))) {\n      FUN_00445eb0(param_4,param_2,2,&PTR_s___rela_iplt_start_00654240,\n                   *(undefined1 *)(*(long *)(param_2 + 8) + 0x148));\n      return;\n    }\n    return;\n  }" { (if_statement "if ((PTR_DAT_0067cb08[0x21] != '\0') &&\n       ((*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0)))) {\n      FUN_00445eb0(param_4,param_2,2,&PTR_s___rela_iplt_start_00654240,\n                   *(undefined1 *)(*(long *)(param_2 + 8) + 0x148));\n      return;\n    }" if (parenthesized_expression "((PTR_DAT_0067cb08[0x21] != '\0') &&\n       ((*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0))))" ( (binary_expression "(PTR_DAT_0067cb08[0x21] != '\0') &&\n       ((*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0)))" (parenthesized_expression "(PTR_DAT_0067cb08[0x21] != '\0')" ( (binary_expression "PTR_DAT_0067cb08[0x21] != '\0'" (subscript_expression "PTR_DAT_0067cb08[0x21]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0)))" ( (parenthesized_expression "(*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0))" ( (binary_expression "*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0)" (binary_expression "*(long *)(param_1 + 0x28) == 0" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) == number_literal) || (parenthesized_expression "(*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0)" ( (binary_expression "*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0" (pointer_expression "*(long *)(*(long *)(param_1 + 0x28) + 0x48)" * (cast_expression "(long *)(*(long *)(param_1 + 0x28) + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x28) + 0x48)" ( (binary_expression "*(long *)(param_1 + 0x28) + 0x48" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) + number_literal) )))) == number_literal) ))) )) ))) )) (compound_statement "{\n      FUN_00445eb0(param_4,param_2,2,&PTR_s___rela_iplt_start_00654240,\n                   *(undefined1 *)(*(long *)(param_2 + 8) + 0x148));\n      return;\n    }" { (expression_statement "FUN_00445eb0(param_4,param_2,2,&PTR_s___rela_iplt_start_00654240,\n                   *(undefined1 *)(*(long *)(param_2 + 8) + 0x148));" (call_expression "FUN_00445eb0(param_4,param_2,2,&PTR_s___rela_iplt_start_00654240,\n                   *(undefined1 *)(*(long *)(param_2 + 8) + 0x148))" identifier (argument_list "(param_4,param_2,2,&PTR_s___rela_iplt_start_00654240,\n                   *(undefined1 *)(*(long *)(param_2 + 8) + 0x148))" ( identifier , identifier , number_literal , (pointer_expression "&PTR_s___rela_iplt_start_00654240" & identifier) , (pointer_expression "*(undefined1 *)(*(long *)(param_2 + 8) + 0x148)" * (cast_expression "(undefined1 *)(*(long *)(param_2 + 8) + 0x148)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 8) + 0x148)" ( (binary_expression "*(long *)(param_2 + 8) + 0x148" (pointer_expression "*(long *)(param_2 + 8)" * (cast_expression "(long *)(param_2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) + number_literal) )))) ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })) comment (expression_statement "FUN_00272df0();" (call_expression "FUN_00272df0()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Enum "ELFOSABI": Some values do not have unique names */\n/* WARNING: Enum "PT": Some values do not have unique names */\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 do_finalize_sections(Target_tilegx<32,_true> * this, Layout *\n   layout, Input_objects * param_2, Symbol_table * symtab) */\n\nvoid __thiscall\nanon_unknown.dwarf_ca7751::Target_tilegx<32,_true>::do_finalize_sections\n          (Target_tilegx<32,_true> *this,Layout *layout,Input_objects *param_2,Symbol_table *symtab)\n\n{\n  ulong uVar1;\n  uint64_t uVar2;\n  Symbol *sym;\n  Sized_symbol<32> *pSVar3;\n  Sized_symbol<32> *pSVar4;\n  Output_data *plt_rel;\n  Layout *this_00;\n  Layout *this_01;\n  \n  plt_rel = (Output_data *)(this->tilegx_info).abi_pagesize;\n  if (plt_rel != (Output_data *)0x0) {\n    plt_rel = (Output_data *)plt_rel[1].offset_;\n  }\n  sym = (Symbol *)0x0;\n  this_00 = layout;\n  gold::Layout::add_target_dynamic_tags\n            (layout,false,(Output_data *)(this->tilegx_info).common_pagesize,plt_rel,\n             (Output_data_reloc_generic *)(this->tilegx_info).small_common_section_flags,true,true);\n  if ((this->tilegx_info).attributes_section != (this->tilegx_info).attributes_vendor) {\n    sym = (Symbol *)\n          rela_dyn_section((Target_tilegx<32,_true> *)\n                           &(this->tilegx_info).small_common_section_flags,layout);\n    this_00 = (Layout *)&(this->tilegx_info).attributes_section;\n    gold::Copy_relocs<4,_32,_true>::emit\n              ((Copy_relocs<4,_32,_true> *)this_00,(Output_data_reloc<4,_true,_32,_true> *)sym);\n  }\n  this_01 = (Layout *)(this->tilegx_info).rosegment_gap;\n  if (this_01 != (Layout *)0x0) {\n    uVar1 = *(ulong *)((this->tilegx_info).default_text_segment_address + 0x10);\n    this_00 = this_01;\n    pSVar3 = gold::Symbol_table::get_sized_symbol<32>((Symbol_table *)this_01,sym);\n    pSVar3->symsize_ = (Size_type)uVar1;\n    if (0x7fff < uVar1) {\n      pSVar3 = gold::Symbol_table::get_sized_symbol<32>((Symbol_table *)this_01,sym);\n      pSVar4 = gold::Symbol_table::get_sized_symbol<32>((Symbol_table *)this_01,sym);\n      pSVar3->value_ = pSVar4->value_ + 0x8000;\n      this_00 = this_01;\n    }\n  }\n  if (gold::parameters->doing_static_link_valid_ != false) {\n    if ((gold::parameters->doing_static_link_ != false) &&\n       ((uVar2 = (this->tilegx_info).abi_pagesize, uVar2 == 0 || (*(long *)(uVar2 + 0x48) == 0)))) {\n      gold::Symbol_table::define_symbols\n                (symtab,layout,2,do_finalize_sections::lexical_block_7::syms,\n                 (layout->script_options_->script_sections_).saw_sections_clause_);\n      return;\n    }\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  gold::Parameters::doing_static_link((Parameters *)this_00,(Parameters *)sym);\n}\n\n" comment comment comment comment comment comment (declaration "void __thiscall\nanon_unknown.dwarf_ca7751::Target_tilegx<32,_true>::do_finalize_sections\n          (Target_tilegx<32,_true> *this,Layout *layout,Input_objects *param_2,Symbol_table *symtab)\n\n{\n  ulong uVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "anon_unknown.dwarf_ca7751::" identifier . identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "_true>::do_finalize_sections\n          (Target_tilegx<32,_true> *this,Layout *layout,Input_objects *param_2,Symbol_table *symtab)\n\n{\n  ulong" identifier > : : (function_declarator "do_finalize_sections\n          (Target_tilegx<32,_true> *this,Layout *layout,Input_objects *param_2,Symbol_table *symtab)" identifier (parameter_list "(Target_tilegx<32,_true> *this,Layout *layout,Input_objects *param_2,Symbol_table *symtab)" ( (parameter_declaration "Target_tilegx" type_identifier) (ERROR "<32" < number_literal) , (parameter_declaration "_true> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Layout *layout" type_identifier (pointer_declarator "*layout" * identifier)) , (parameter_declaration "Input_objects *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "Symbol_table *symtab" type_identifier (pointer_declarator "*symtab" * identifier)) ))) { identifier) identifier ;) (declaration "uint64_t uVar2;" primitive_type identifier ;) (declaration "Symbol *sym;" type_identifier (pointer_declarator "*sym" * identifier) ;) (expression_statement "Sized_symbol<32> *pSVar3;" (update_expression "Sized_symbol<32> *pSVar3" (binary_expression "Sized_symbol<32> *pSVar3" (binary_expression "Sized_symbol<32" identifier < number_literal) > (pointer_expression "*pSVar3" * identifier)) --) ;) (expression_statement "Sized_symbol<32> *pSVar4;" (update_expression "Sized_symbol<32> *pSVar4" (binary_expression "Sized_symbol<32> *pSVar4" (binary_expression "Sized_symbol<32" identifier < number_literal) > (pointer_expression "*pSVar4" * identifier)) --) ;) (declaration "Output_data *plt_rel;" type_identifier (pointer_declarator "*plt_rel" * identifier) ;) (declaration "Layout *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "Layout *this_01;" type_identifier (pointer_declarator "*this_01" * identifier) ;) (expression_statement "plt_rel = (Output_data *)(this->tilegx_info).abi_pagesize;" (assignment_expression "plt_rel = (Output_data *)(this->tilegx_info).abi_pagesize" identifier = (cast_expression "(Output_data *)(this->tilegx_info).abi_pagesize" ( (type_descriptor "Output_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(this->tilegx_info).abi_pagesize" (parenthesized_expression "(this->tilegx_info)" ( (field_expression "this->tilegx_info" identifier -> field_identifier) )) . field_identifier))) ;) (if_statement "if (plt_rel != (Output_data *)0x0) {\n    plt_rel = (Output_data *)plt_rel[1].offset_;\n  }" if (parenthesized_expression "(plt_rel != (Output_data *)0x0)" ( (binary_expression "plt_rel != (Output_data *)0x0" identifier != (cast_expression "(Output_data *)0x0" ( (type_descriptor "Output_data *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    plt_rel = (Output_data *)plt_rel[1].offset_;\n  }" { (expression_statement "plt_rel = (Output_data *)plt_rel[1].offset_;" (assignment_expression "plt_rel = (Output_data *)plt_rel[1].offset_" identifier = (cast_expression "(Output_data *)plt_rel[1].offset_" ( (type_descriptor "Output_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "plt_rel[1].offset_" (subscript_expression "plt_rel[1]" identifier [ number_literal ]) . field_identifier))) ;) })) (expression_statement "sym = (Symbol *)0x0;" (assignment_expression "sym = (Symbol *)0x0" identifier = (cast_expression "(Symbol *)0x0" ( (type_descriptor "Symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "this_00 = layout;" (assignment_expression "this_00 = layout" identifier = identifier) ;) (labeled_statement "gold::Layout::add_target_dynamic_tags\n            (layout,false,(Output_data *)(this->tilegx_info).common_pagesize,plt_rel,\n             (Output_data_reloc_generic *)(this->tilegx_info).small_common_section_flags,true,true);" statement_identifier : (ERROR ":" :) (labeled_statement "Layout::add_target_dynamic_tags\n            (layout,false,(Output_data *)(this->tilegx_info).common_pagesize,plt_rel,\n             (Output_data_reloc_generic *)(this->tilegx_info).small_common_section_flags,true,true);" statement_identifier : (ERROR ":" :) (expression_statement "add_target_dynamic_tags\n            (layout,false,(Output_data *)(this->tilegx_info).common_pagesize,plt_rel,\n             (Output_data_reloc_generic *)(this->tilegx_info).small_common_section_flags,true,true);" (call_expression "add_target_dynamic_tags\n            (layout,false,(Output_data *)(this->tilegx_info).common_pagesize,plt_rel,\n             (Output_data_reloc_generic *)(this->tilegx_info).small_common_section_flags,true,true)" identifier (argument_list "(layout,false,(Output_data *)(this->tilegx_info).common_pagesize,plt_rel,\n             (Output_data_reloc_generic *)(this->tilegx_info).small_common_section_flags,true,true)" ( identifier , false , (cast_expression "(Output_data *)(this->tilegx_info).common_pagesize" ( (type_descriptor "Output_data *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(this->tilegx_info).common_pagesize" (parenthesized_expression "(this->tilegx_info)" ( (field_expression "this->tilegx_info" identifier -> field_identifier) )) . field_identifier)) , identifier , (cast_expression "(Output_data_reloc_generic *)(this->tilegx_info).small_common_section_flags" ( (type_descriptor "Output_data_reloc_generic *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(this->tilegx_info).small_common_section_flags" (parenthesized_expression "(this->tilegx_info)" ( (field_expression "this->tilegx_info" identifier -> field_identifier) )) . field_identifier)) , true , true ))) ;))) (if_statement "if ((this->tilegx_info).attributes_section != (this->tilegx_info).attributes_vendor) {\n    sym = (Symbol *)\n          rela_dyn_section((Target_tilegx<32,_true> *)\n                           &(this->tilegx_info).small_common_section_flags,layout);\n    this_00 = (Layout *)&(this->tilegx_info).attributes_section;\n    gold::Copy_relocs<4,_32,_true>::emit\n              ((Copy_relocs<4,_32,_true> *)this_00,(Output_data_reloc<4,_true,_32,_true> *)sym);\n  }" if (parenthesized_expression "((this->tilegx_info).attributes_section != (this->tilegx_info).attributes_vendor)" ( (binary_expression "(this->tilegx_info).attributes_section != (this->tilegx_info).attributes_vendor" (field_expression "(this->tilegx_info).attributes_section" (parenthesized_expression "(this->tilegx_info)" ( (field_expression "this->tilegx_info" identifier -> field_identifier) )) . field_identifier) != (field_expression "(this->tilegx_info).attributes_vendor" (parenthesized_expression "(this->tilegx_info)" ( (field_expression "this->tilegx_info" identifier -> field_identifier) )) . field_identifier)) )) (compound_statement "{\n    sym = (Symbol *)\n          rela_dyn_section((Target_tilegx<32,_true> *)\n                           &(this->tilegx_info).small_common_section_flags,layout);\n    this_00 = (Layout *)&(this->tilegx_info).attributes_section;\n    gold::Copy_relocs<4,_32,_true>::emit\n              ((Copy_relocs<4,_32,_true> *)this_00,(Output_data_reloc<4,_true,_32,_true> *)sym);\n  }" { (expression_statement "sym = (Symbol *)\n          rela_dyn_section((Target_tilegx<32,_true> *)\n                           &(this->tilegx_info).small_common_section_flags,layout);" (assignment_expression "sym = (Symbol *)\n          rela_dyn_section((Target_tilegx<32,_true> *)\n                           &(this->tilegx_info).small_common_section_flags,layout)" identifier = (cast_expression "(Symbol *)\n          rela_dyn_section((Target_tilegx<32,_true> *)\n                           &(this->tilegx_info).small_common_section_flags,layout)" ( (type_descriptor "Symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "rela_dyn_section((Target_tilegx<32,_true> *)\n                           &(this->tilegx_info).small_common_section_flags,layout)" identifier (argument_list "((Target_tilegx<32,_true> *)\n                           &(this->tilegx_info).small_common_section_flags,layout)" ( (binary_expression "(Target_tilegx<32,_true> *)\n                           &(this->tilegx_info).small_common_section_flags" (parenthesized_expression "(Target_tilegx<32,_true> *)" ( (comma_expression "Target_tilegx<32,_true> *" (binary_expression "Target_tilegx<32" identifier < number_literal) , (binary_expression "_true> *" identifier > (pointer_expression "*" * identifier))) )) & (field_expression "(this->tilegx_info).small_common_section_flags" (parenthesized_expression "(this->tilegx_info)" ( (field_expression "this->tilegx_info" identifier -> field_identifier) )) . field_identifier)) , identifier ))))) ;) (expression_statement "this_00 = (Layout *)&(this->tilegx_info).attributes_section;" (assignment_expression "this_00 = (Layout *)&(this->tilegx_info).attributes_section" identifier = (cast_expression "(Layout *)&(this->tilegx_info).attributes_section" ( (type_descriptor "Layout *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(this->tilegx_info).attributes_section" & (field_expression "(this->tilegx_info).attributes_section" (parenthesized_expression "(this->tilegx_info)" ( (field_expression "this->tilegx_info" identifier -> field_identifier) )) . field_identifier)))) ;) (labeled_statement "gold::Copy_relocs<4,_32,_true>::emit\n              ((Copy_relocs<4,_32,_true> *)this_00,(Output_data_reloc<4,_true,_32,_true> *)sym);" statement_identifier : (ERROR ":" :) (expression_statement "Copy_relocs<4,_32,_true>::emit\n              ((Copy_relocs<4,_32,_true> *)this_00,(Output_data_reloc<4,_true,_32,_true> *)sym);" (comma_expression "Copy_relocs<4,_32,_true>::emit" (binary_expression "Copy_relocs<4" identifier < number_literal) , (comma_expression "_32,_true>::emit" identifier , (binary_expression "_true>::emit" identifier > (ERROR "::" : :) identifier))) (ERROR "((Copy_relocs<4,_32,_true> *)this_00,(Output_data_reloc<4,_true,_32,_true> *)sym)" ( ( (comma_expression "Copy_relocs<4,_32,_true> *)this_00,(Output_data_reloc<4,_true,_32,_true> *)sym)" (binary_expression "Copy_relocs<4" identifier < number_literal) , (comma_expression "_32,_true> *)this_00,(Output_data_reloc<4,_true,_32,_true> *)sym)" identifier , (comma_expression "_true> *)this_00,(Output_data_reloc<4,_true,_32,_true> *)sym)" (binary_expression "_true> *)this_00" identifier > (pointer_expression "*)this_00" * (ERROR ")" )) identifier)) , (parenthesized_expression "(Output_data_reloc<4,_true,_32,_true> *)sym)" ( (comma_expression "Output_data_reloc<4,_true,_32,_true> *)sym" (binary_expression "Output_data_reloc<4" identifier < number_literal) , (comma_expression "_true,_32,_true> *)sym" identifier , (comma_expression "_32,_true> *)sym" identifier , (binary_expression "_true> *)sym" identifier > (pointer_expression "*)sym" * (ERROR ")" )) identifier))))) )))))) ;)) })) (expression_statement "this_01 = (Layout *)(this->tilegx_info).rosegment_gap;" (assignment_expression "this_01 = (Layout *)(this->tilegx_info).rosegment_gap" identifier = (cast_expression "(Layout *)(this->tilegx_info).rosegment_gap" ( (type_descriptor "Layout *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(this->tilegx_info).rosegment_gap" (parenthesized_expression "(this->tilegx_info)" ( (field_expression "this->tilegx_info" identifier -> field_identifier) )) . field_identifier))) ;) (if_statement "if (this_01 != (Layout *)0x0) {\n    uVar1 = *(ulong *)((this->tilegx_info).default_text_segment_address + 0x10);\n    this_00 = this_01;\n    pSVar3 = gold::Symbol_table::get_sized_symbol<32>((Symbol_table *)this_01,sym);\n    pSVar3->symsize_ = (Size_type)uVar1;\n    if (0x7fff < uVar1) {\n      pSVar3 = gold::Symbol_table::get_sized_symbol<32>((Symbol_table *)this_01,sym);\n      pSVar4 = gold::Symbol_table::get_sized_symbol<32>((Symbol_table *)this_01,sym);\n      pSVar3->value_ = pSVar4->value_ + 0x8000;\n      this_00 = this_01;\n    }\n  }" if (parenthesized_expression "(this_01 != (Layout *)0x0)" ( (binary_expression "this_01 != (Layout *)0x0" identifier != (cast_expression "(Layout *)0x0" ( (type_descriptor "Layout *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar1 = *(ulong *)((this->tilegx_info).default_text_segment_address + 0x10);\n    this_00 = this_01;\n    pSVar3 = gold::Symbol_table::get_sized_symbol<32>((Symbol_table *)this_01,sym);\n    pSVar3->symsize_ = (Size_type)uVar1;\n    if (0x7fff < uVar1) {\n      pSVar3 = gold::Symbol_table::get_sized_symbol<32>((Symbol_table *)this_01,sym);\n      pSVar4 = gold::Symbol_table::get_sized_symbol<32>((Symbol_table *)this_01,sym);\n      pSVar3->value_ = pSVar4->value_ + 0x8000;\n      this_00 = this_01;\n    }\n  }" { (expression_statement "uVar1 = *(ulong *)((this->tilegx_info).default_text_segment_address + 0x10);" (assignment_expression "uVar1 = *(ulong *)((this->tilegx_info).default_text_segment_address + 0x10)" identifier = (pointer_expression "*(ulong *)((this->tilegx_info).default_text_segment_address + 0x10)" * (cast_expression "(ulong *)((this->tilegx_info).default_text_segment_address + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((this->tilegx_info).default_text_segment_address + 0x10)" ( (binary_expression "(this->tilegx_info).default_text_segment_address + 0x10" (field_expression "(this->tilegx_info).default_text_segment_address" (parenthesized_expression "(this->tilegx_info)" ( (field_expression "this->tilegx_info" identifier -> field_identifier) )) . field_identifier) + number_literal) ))))) ;) (expression_statement "this_00 = this_01;" (assignment_expression "this_00 = this_01" identifier = identifier) ;) (ERROR "pSVar3 = gold::" (assignment_expression "pSVar3 = gold" identifier = identifier) : :) (labeled_statement "Symbol_table::get_sized_symbol<32>((Symbol_table *)this_01,sym);" statement_identifier : (ERROR ":" :) (expression_statement "get_sized_symbol<32>((Symbol_table *)this_01,sym);" (binary_expression "get_sized_symbol<32>((Symbol_table *)this_01,sym)" (binary_expression "get_sized_symbol<32" identifier < number_literal) > (parenthesized_expression "((Symbol_table *)this_01,sym)" ( (comma_expression "(Symbol_table *)this_01,sym" (cast_expression "(Symbol_table *)this_01" ( (type_descriptor "Symbol_table *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier) ))) ;)) (expression_statement "pSVar3->symsize_ = (Size_type)uVar1;" (assignment_expression "pSVar3->symsize_ = (Size_type)uVar1" (field_expression "pSVar3->symsize_" identifier -> field_identifier) = (cast_expression "(Size_type)uVar1" ( (type_descriptor "Size_type" type_identifier) ) identifier)) ;) (if_statement "if (0x7fff < uVar1) {\n      pSVar3 = gold::Symbol_table::get_sized_symbol<32>((Symbol_table *)this_01,sym);\n      pSVar4 = gold::Symbol_table::get_sized_symbol<32>((Symbol_table *)this_01,sym);\n      pSVar3->value_ = pSVar4->value_ + 0x8000;\n      this_00 = this_01;\n    }" if (parenthesized_expression "(0x7fff < uVar1)" ( (binary_expression "0x7fff < uVar1" number_literal < identifier) )) (compound_statement "{\n      pSVar3 = gold::Symbol_table::get_sized_symbol<32>((Symbol_table *)this_01,sym);\n      pSVar4 = gold::Symbol_table::get_sized_symbol<32>((Symbol_table *)this_01,sym);\n      pSVar3->value_ = pSVar4->value_ + 0x8000;\n      this_00 = this_01;\n    }" { (ERROR "pSVar3 = gold::" (assignment_expression "pSVar3 = gold" identifier = identifier) : :) (labeled_statement "Symbol_table::get_sized_symbol<32>((Symbol_table *)this_01,sym);" statement_identifier : (ERROR ":" :) (expression_statement "get_sized_symbol<32>((Symbol_table *)this_01,sym);" (binary_expression "get_sized_symbol<32>((Symbol_table *)this_01,sym)" (binary_expression "get_sized_symbol<32" identifier < number_literal) > (parenthesized_expression "((Symbol_table *)this_01,sym)" ( (comma_expression "(Symbol_table *)this_01,sym" (cast_expression "(Symbol_table *)this_01" ( (type_descriptor "Symbol_table *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier) ))) ;)) (ERROR "pSVar4 = gold::" (assignment_expression "pSVar4 = gold" identifier = identifier) : :) (labeled_statement "Symbol_table::get_sized_symbol<32>((Symbol_table *)this_01,sym);" statement_identifier : (ERROR ":" :) (expression_statement "get_sized_symbol<32>((Symbol_table *)this_01,sym);" (binary_expression "get_sized_symbol<32>((Symbol_table *)this_01,sym)" (binary_expression "get_sized_symbol<32" identifier < number_literal) > (parenthesized_expression "((Symbol_table *)this_01,sym)" ( (comma_expression "(Symbol_table *)this_01,sym" (cast_expression "(Symbol_table *)this_01" ( (type_descriptor "Symbol_table *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier) ))) ;)) (expression_statement "pSVar3->value_ = pSVar4->value_ + 0x8000;" (assignment_expression "pSVar3->value_ = pSVar4->value_ + 0x8000" (field_expression "pSVar3->value_" identifier -> field_identifier) = (binary_expression "pSVar4->value_ + 0x8000" (field_expression "pSVar4->value_" identifier -> field_identifier) + number_literal)) ;) (expression_statement "this_00 = this_01;" (assignment_expression "this_00 = this_01" identifier = identifier) ;) })) })) (if_statement "if (gold::parameters->doing_static_link_valid_ != false) {\n    if ((gold::parameters->doing_static_link_ != false) &&\n       ((uVar2 = (this->tilegx_info).abi_pagesize, uVar2 == 0 || (*(long *)(uVar2 + 0x48) == 0)))) {\n      gold::Symbol_table::define_symbols\n                (symtab,layout,2,do_finalize_sections::lexical_block_7::syms,\n                 (layout->script_options_->script_sections_).saw_sections_clause_);\n      return;\n    }\n    return;\n  }" if (parenthesized_expression "(gold::parameters->doing_static_link_valid_ != false)" ( (ERROR "gold::" identifier : :) (binary_expression "parameters->doing_static_link_valid_ != false" (field_expression "parameters->doing_static_link_valid_" identifier -> field_identifier) != false) )) (compound_statement "{\n    if ((gold::parameters->doing_static_link_ != false) &&\n       ((uVar2 = (this->tilegx_info).abi_pagesize, uVar2 == 0 || (*(long *)(uVar2 + 0x48) == 0)))) {\n      gold::Symbol_table::define_symbols\n                (symtab,layout,2,do_finalize_sections::lexical_block_7::syms,\n                 (layout->script_options_->script_sections_).saw_sections_clause_);\n      return;\n    }\n    return;\n  }" { (if_statement "if ((gold::parameters->doing_static_link_ != false) &&\n       ((uVar2 = (this->tilegx_info).abi_pagesize, uVar2 == 0 || (*(long *)(uVar2 + 0x48) == 0)))) {\n      gold::Symbol_table::define_symbols\n                (symtab,layout,2,do_finalize_sections::lexical_block_7::syms,\n                 (layout->script_options_->script_sections_).saw_sections_clause_);\n      return;\n    }" if (parenthesized_expression "((gold::parameters->doing_static_link_ != false) &&\n       ((uVar2 = (this->tilegx_info).abi_pagesize, uVar2 == 0 || (*(long *)(uVar2 + 0x48) == 0))))" ( (binary_expression "(gold::parameters->doing_static_link_ != false) &&\n       ((uVar2 = (this->tilegx_info).abi_pagesize, uVar2 == 0 || (*(long *)(uVar2 + 0x48) == 0)))" (parenthesized_expression "(gold::parameters->doing_static_link_ != false)" ( (ERROR "gold::" identifier : :) (binary_expression "parameters->doing_static_link_ != false" (field_expression "parameters->doing_static_link_" identifier -> field_identifier) != false) )) && (parenthesized_expression "((uVar2 = (this->tilegx_info).abi_pagesize, uVar2 == 0 || (*(long *)(uVar2 + 0x48) == 0)))" ( (parenthesized_expression "(uVar2 = (this->tilegx_info).abi_pagesize, uVar2 == 0 || (*(long *)(uVar2 + 0x48) == 0))" ( (comma_expression "uVar2 = (this->tilegx_info).abi_pagesize, uVar2 == 0 || (*(long *)(uVar2 + 0x48) == 0)" (assignment_expression "uVar2 = (this->tilegx_info).abi_pagesize" identifier = (field_expression "(this->tilegx_info).abi_pagesize" (parenthesized_expression "(this->tilegx_info)" ( (field_expression "this->tilegx_info" identifier -> field_identifier) )) . field_identifier)) , (binary_expression "uVar2 == 0 || (*(long *)(uVar2 + 0x48) == 0)" (binary_expression "uVar2 == 0" identifier == number_literal) || (parenthesized_expression "(*(long *)(uVar2 + 0x48) == 0)" ( (binary_expression "*(long *)(uVar2 + 0x48) == 0" (pointer_expression "*(long *)(uVar2 + 0x48)" * (cast_expression "(long *)(uVar2 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + 0x48)" ( (binary_expression "uVar2 + 0x48" identifier + number_literal) )))) == number_literal) )))) )) ))) )) (compound_statement "{\n      gold::Symbol_table::define_symbols\n                (symtab,layout,2,do_finalize_sections::lexical_block_7::syms,\n                 (layout->script_options_->script_sections_).saw_sections_clause_);\n      return;\n    }" { (labeled_statement "gold::Symbol_table::define_symbols\n                (symtab,layout,2,do_finalize_sections::lexical_block_7::syms,\n                 (layout->script_options_->script_sections_).saw_sections_clause_);" statement_identifier : (ERROR ":" :) (labeled_statement "Symbol_table::define_symbols\n                (symtab,layout,2,do_finalize_sections::lexical_block_7::syms,\n                 (layout->script_options_->script_sections_).saw_sections_clause_);" statement_identifier : (ERROR ":" :) (expression_statement "define_symbols\n                (symtab,layout,2,do_finalize_sections::lexical_block_7::syms,\n                 (layout->script_options_->script_sections_).saw_sections_clause_);" (call_expression "define_symbols\n                (symtab,layout,2,do_finalize_sections::lexical_block_7::syms,\n                 (layout->script_options_->script_sections_).saw_sections_clause_)" identifier (argument_list "(symtab,layout,2,do_finalize_sections::lexical_block_7::syms,\n                 (layout->script_options_->script_sections_).saw_sections_clause_)" ( identifier , identifier , number_literal , identifier (ERROR "::lexical_block_7::syms" : : identifier : : identifier) , (field_expression "(layout->script_options_->script_sections_).saw_sections_clause_" (parenthesized_expression "(layout->script_options_->script_sections_)" ( (field_expression "layout->script_options_->script_sections_" (field_expression "layout->script_options_" identifier -> field_identifier) -> field_identifier) )) . field_identifier) ))) ;))) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })) comment (labeled_statement "gold::Parameters::doing_static_link((Parameters *)this_00,(Parameters *)sym);" statement_identifier : (ERROR ":" :) (labeled_statement "Parameters::doing_static_link((Parameters *)this_00,(Parameters *)sym);" statement_identifier : (ERROR ":" :) (expression_statement "doing_static_link((Parameters *)this_00,(Parameters *)sym);" (call_expression "doing_static_link((Parameters *)this_00,(Parameters *)sym)" identifier (argument_list "((Parameters *)this_00,(Parameters *)sym)" ( (cast_expression "(Parameters *)this_00" ( (type_descriptor "Parameters *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(Parameters *)sym" ( (type_descriptor "Parameters *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;))) (ERROR "}" }))
(translation_unit "void FUN_00276880(long param_1,long param_2,undefined8 param_3,undefined8 param_4)\n\n{\n  ulong uVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long lVar4;\n  undefined8 uStack_30;\n  \n  lVar4 = *(long *)(param_1 + 0x28);\n  if (lVar4 != 0) {\n    lVar4 = *(long *)(lVar4 + 0x40);\n  }\n  FUN_0037e220(param_2,0,*(undefined8 *)(param_1 + 0x30),lVar4,*(undefined8 *)(param_1 + 0x50),1,1);\n  if (*(long *)(param_1 + 0x60) != *(long *)(param_1 + 0x68)) {\n    uVar2 = FUN_00276700(param_1 + 0x50,param_2,uStack_30);\n    FUN_0033ae50(param_1 + 0x60,uVar2);\n  }\n  lVar4 = *(long *)(param_1 + 0x40);\n  if (lVar4 != 0) {\n    uVar1 = *(ulong *)(*(long *)(param_1 + 0x20) + 0x10);\n    lVar3 = FUN_00273930(lVar4);\n    *(int *)(lVar3 + 0x44) = (int)uVar1;\n    if (0x7fff < uVar1) {\n      lVar3 = FUN_00273930(lVar4);\n      lVar4 = FUN_00273930(lVar4);\n      *(int *)(lVar3 + 0x40) = *(int *)(lVar4 + 0x40) + 0x8000;\n    }\n  }\n  if (PTR_DAT_0067cb08[0x20] != '\0') {\n    if ((PTR_DAT_0067cb08[0x21] != '\0') &&\n       ((*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0)))) {\n      FUN_00445eb0(param_4,param_2,2,&PTR_s___rela_iplt_start_00654240,\n                   *(undefined1 *)(*(long *)(param_2 + 8) + 0x148));\n      return;\n    }\n    return;\n  }\n                    \n  FUN_00272df0();\n}\n\n" (function_definition "void FUN_00276880(long param_1,long param_2,undefined8 param_3,undefined8 param_4)\n\n{\n  ulong uVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long lVar4;\n  undefined8 uStack_30;\n  \n  lVar4 = *(long *)(param_1 + 0x28);\n  if (lVar4 != 0) {\n    lVar4 = *(long *)(lVar4 + 0x40);\n  }\n  FUN_0037e220(param_2,0,*(undefined8 *)(param_1 + 0x30),lVar4,*(undefined8 *)(param_1 + 0x50),1,1);\n  if (*(long *)(param_1 + 0x60) != *(long *)(param_1 + 0x68)) {\n    uVar2 = FUN_00276700(param_1 + 0x50,param_2,uStack_30);\n    FUN_0033ae50(param_1 + 0x60,uVar2);\n  }\n  lVar4 = *(long *)(param_1 + 0x40);\n  if (lVar4 != 0) {\n    uVar1 = *(ulong *)(*(long *)(param_1 + 0x20) + 0x10);\n    lVar3 = FUN_00273930(lVar4);\n    *(int *)(lVar3 + 0x44) = (int)uVar1;\n    if (0x7fff < uVar1) {\n      lVar3 = FUN_00273930(lVar4);\n      lVar4 = FUN_00273930(lVar4);\n      *(int *)(lVar3 + 0x40) = *(int *)(lVar4 + 0x40) + 0x8000;\n    }\n  }\n  if (PTR_DAT_0067cb08[0x20] != '\0') {\n    if ((PTR_DAT_0067cb08[0x21] != '\0') &&\n       ((*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0)))) {\n      FUN_00445eb0(param_4,param_2,2,&PTR_s___rela_iplt_start_00654240,\n                   *(undefined1 *)(*(long *)(param_2 + 8) + 0x148));\n      return;\n    }\n    return;\n  }\n                    \n  FUN_00272df0();\n}" primitive_type (function_declarator "FUN_00276880(long param_1,long param_2,undefined8 param_3,undefined8 param_4)" identifier (parameter_list "(long param_1,long param_2,undefined8 param_3,undefined8 param_4)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) ))) (compound_statement "{\n  ulong uVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long lVar4;\n  undefined8 uStack_30;\n  \n  lVar4 = *(long *)(param_1 + 0x28);\n  if (lVar4 != 0) {\n    lVar4 = *(long *)(lVar4 + 0x40);\n  }\n  FUN_0037e220(param_2,0,*(undefined8 *)(param_1 + 0x30),lVar4,*(undefined8 *)(param_1 + 0x50),1,1);\n  if (*(long *)(param_1 + 0x60) != *(long *)(param_1 + 0x68)) {\n    uVar2 = FUN_00276700(param_1 + 0x50,param_2,uStack_30);\n    FUN_0033ae50(param_1 + 0x60,uVar2);\n  }\n  lVar4 = *(long *)(param_1 + 0x40);\n  if (lVar4 != 0) {\n    uVar1 = *(ulong *)(*(long *)(param_1 + 0x20) + 0x10);\n    lVar3 = FUN_00273930(lVar4);\n    *(int *)(lVar3 + 0x44) = (int)uVar1;\n    if (0x7fff < uVar1) {\n      lVar3 = FUN_00273930(lVar4);\n      lVar4 = FUN_00273930(lVar4);\n      *(int *)(lVar3 + 0x40) = *(int *)(lVar4 + 0x40) + 0x8000;\n    }\n  }\n  if (PTR_DAT_0067cb08[0x20] != '\0') {\n    if ((PTR_DAT_0067cb08[0x21] != '\0') &&\n       ((*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0)))) {\n      FUN_00445eb0(param_4,param_2,2,&PTR_s___rela_iplt_start_00654240,\n                   *(undefined1 *)(*(long *)(param_2 + 8) + 0x148));\n      return;\n    }\n    return;\n  }\n                    \n  FUN_00272df0();\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uStack_30;" type_identifier identifier ;) (expression_statement "lVar4 = *(long *)(param_1 + 0x28);" (assignment_expression "lVar4 = *(long *)(param_1 + 0x28)" identifier = (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (lVar4 != 0) {\n    lVar4 = *(long *)(lVar4 + 0x40);\n  }" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (compound_statement "{\n    lVar4 = *(long *)(lVar4 + 0x40);\n  }" { (expression_statement "lVar4 = *(long *)(lVar4 + 0x40);" (assignment_expression "lVar4 = *(long *)(lVar4 + 0x40)" identifier = (pointer_expression "*(long *)(lVar4 + 0x40)" * (cast_expression "(long *)(lVar4 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x40)" ( (binary_expression "lVar4 + 0x40" identifier + number_literal) ))))) ;) })) (expression_statement "FUN_0037e220(param_2,0,*(undefined8 *)(param_1 + 0x30),lVar4,*(undefined8 *)(param_1 + 0x50),1,1);" (call_expression "FUN_0037e220(param_2,0,*(undefined8 *)(param_1 + 0x30),lVar4,*(undefined8 *)(param_1 + 0x50),1,1)" identifier (argument_list "(param_2,0,*(undefined8 *)(param_1 + 0x30),lVar4,*(undefined8 *)(param_1 + 0x50),1,1)" ( identifier , number_literal , (pointer_expression "*(undefined8 *)(param_1 + 0x30)" * (cast_expression "(undefined8 *)(param_1 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) , identifier , (pointer_expression "*(undefined8 *)(param_1 + 0x50)" * (cast_expression "(undefined8 *)(param_1 + 0x50)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) , number_literal , number_literal ))) ;) (if_statement "if (*(long *)(param_1 + 0x60) != *(long *)(param_1 + 0x68)) {\n    uVar2 = FUN_00276700(param_1 + 0x50,param_2,uStack_30);\n    FUN_0033ae50(param_1 + 0x60,uVar2);\n  }" if (parenthesized_expression "(*(long *)(param_1 + 0x60) != *(long *)(param_1 + 0x68))" ( (binary_expression "*(long *)(param_1 + 0x60) != *(long *)(param_1 + 0x68)" (pointer_expression "*(long *)(param_1 + 0x60)" * (cast_expression "(long *)(param_1 + 0x60)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) != (pointer_expression "*(long *)(param_1 + 0x68)" * (cast_expression "(long *)(param_1 + 0x68)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) ))))) )) (compound_statement "{\n    uVar2 = FUN_00276700(param_1 + 0x50,param_2,uStack_30);\n    FUN_0033ae50(param_1 + 0x60,uVar2);\n  }" { (expression_statement "uVar2 = FUN_00276700(param_1 + 0x50,param_2,uStack_30);" (assignment_expression "uVar2 = FUN_00276700(param_1 + 0x50,param_2,uStack_30)" identifier = (call_expression "FUN_00276700(param_1 + 0x50,param_2,uStack_30)" identifier (argument_list "(param_1 + 0x50,param_2,uStack_30)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) , identifier , identifier )))) ;) (expression_statement "FUN_0033ae50(param_1 + 0x60,uVar2);" (call_expression "FUN_0033ae50(param_1 + 0x60,uVar2)" identifier (argument_list "(param_1 + 0x60,uVar2)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) , identifier ))) ;) })) (expression_statement "lVar4 = *(long *)(param_1 + 0x40);" (assignment_expression "lVar4 = *(long *)(param_1 + 0x40)" identifier = (pointer_expression "*(long *)(param_1 + 0x40)" * (cast_expression "(long *)(param_1 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) ;) (if_statement "if (lVar4 != 0) {\n    uVar1 = *(ulong *)(*(long *)(param_1 + 0x20) + 0x10);\n    lVar3 = FUN_00273930(lVar4);\n    *(int *)(lVar3 + 0x44) = (int)uVar1;\n    if (0x7fff < uVar1) {\n      lVar3 = FUN_00273930(lVar4);\n      lVar4 = FUN_00273930(lVar4);\n      *(int *)(lVar3 + 0x40) = *(int *)(lVar4 + 0x40) + 0x8000;\n    }\n  }" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar1 = *(ulong *)(*(long *)(param_1 + 0x20) + 0x10);\n    lVar3 = FUN_00273930(lVar4);\n    *(int *)(lVar3 + 0x44) = (int)uVar1;\n    if (0x7fff < uVar1) {\n      lVar3 = FUN_00273930(lVar4);\n      lVar4 = FUN_00273930(lVar4);\n      *(int *)(lVar3 + 0x40) = *(int *)(lVar4 + 0x40) + 0x8000;\n    }\n  }" { (expression_statement "uVar1 = *(ulong *)(*(long *)(param_1 + 0x20) + 0x10);" (assignment_expression "uVar1 = *(ulong *)(*(long *)(param_1 + 0x20) + 0x10)" identifier = (pointer_expression "*(ulong *)(*(long *)(param_1 + 0x20) + 0x10)" * (cast_expression "(ulong *)(*(long *)(param_1 + 0x20) + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x20) + 0x10)" ( (binary_expression "*(long *)(param_1 + 0x20) + 0x10" (pointer_expression "*(long *)(param_1 + 0x20)" * (cast_expression "(long *)(param_1 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00273930(lVar4);" (assignment_expression "lVar3 = FUN_00273930(lVar4)" identifier = (call_expression "FUN_00273930(lVar4)" identifier (argument_list "(lVar4)" ( identifier )))) ;) (expression_statement "*(int *)(lVar3 + 0x44) = (int)uVar1;" (assignment_expression "*(int *)(lVar3 + 0x44) = (int)uVar1" (pointer_expression "*(int *)(lVar3 + 0x44)" * (cast_expression "(int *)(lVar3 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x44)" ( (binary_expression "lVar3 + 0x44" identifier + number_literal) )))) = (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (0x7fff < uVar1) {\n      lVar3 = FUN_00273930(lVar4);\n      lVar4 = FUN_00273930(lVar4);\n      *(int *)(lVar3 + 0x40) = *(int *)(lVar4 + 0x40) + 0x8000;\n    }" if (parenthesized_expression "(0x7fff < uVar1)" ( (binary_expression "0x7fff < uVar1" number_literal < identifier) )) (compound_statement "{\n      lVar3 = FUN_00273930(lVar4);\n      lVar4 = FUN_00273930(lVar4);\n      *(int *)(lVar3 + 0x40) = *(int *)(lVar4 + 0x40) + 0x8000;\n    }" { (expression_statement "lVar3 = FUN_00273930(lVar4);" (assignment_expression "lVar3 = FUN_00273930(lVar4)" identifier = (call_expression "FUN_00273930(lVar4)" identifier (argument_list "(lVar4)" ( identifier )))) ;) (expression_statement "lVar4 = FUN_00273930(lVar4);" (assignment_expression "lVar4 = FUN_00273930(lVar4)" identifier = (call_expression "FUN_00273930(lVar4)" identifier (argument_list "(lVar4)" ( identifier )))) ;) (expression_statement "*(int *)(lVar3 + 0x40) = *(int *)(lVar4 + 0x40) + 0x8000;" (assignment_expression "*(int *)(lVar3 + 0x40) = *(int *)(lVar4 + 0x40) + 0x8000" (pointer_expression "*(int *)(lVar3 + 0x40)" * (cast_expression "(int *)(lVar3 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x40)" ( (binary_expression "lVar3 + 0x40" identifier + number_literal) )))) = (binary_expression "*(int *)(lVar4 + 0x40) + 0x8000" (pointer_expression "*(int *)(lVar4 + 0x40)" * (cast_expression "(int *)(lVar4 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x40)" ( (binary_expression "lVar4 + 0x40" identifier + number_literal) )))) + number_literal)) ;) })) })) (if_statement "if (PTR_DAT_0067cb08[0x20] != '\0') {\n    if ((PTR_DAT_0067cb08[0x21] != '\0') &&\n       ((*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0)))) {\n      FUN_00445eb0(param_4,param_2,2,&PTR_s___rela_iplt_start_00654240,\n                   *(undefined1 *)(*(long *)(param_2 + 8) + 0x148));\n      return;\n    }\n    return;\n  }" if (parenthesized_expression "(PTR_DAT_0067cb08[0x20] != '\0')" ( (binary_expression "PTR_DAT_0067cb08[0x20] != '\0'" (subscript_expression "PTR_DAT_0067cb08[0x20]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if ((PTR_DAT_0067cb08[0x21] != '\0') &&\n       ((*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0)))) {\n      FUN_00445eb0(param_4,param_2,2,&PTR_s___rela_iplt_start_00654240,\n                   *(undefined1 *)(*(long *)(param_2 + 8) + 0x148));\n      return;\n    }\n    return;\n  }" { (if_statement "if ((PTR_DAT_0067cb08[0x21] != '\0') &&\n       ((*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0)))) {\n      FUN_00445eb0(param_4,param_2,2,&PTR_s___rela_iplt_start_00654240,\n                   *(undefined1 *)(*(long *)(param_2 + 8) + 0x148));\n      return;\n    }" if (parenthesized_expression "((PTR_DAT_0067cb08[0x21] != '\0') &&\n       ((*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0))))" ( (binary_expression "(PTR_DAT_0067cb08[0x21] != '\0') &&\n       ((*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0)))" (parenthesized_expression "(PTR_DAT_0067cb08[0x21] != '\0')" ( (binary_expression "PTR_DAT_0067cb08[0x21] != '\0'" (subscript_expression "PTR_DAT_0067cb08[0x21]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0)))" ( (parenthesized_expression "(*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0))" ( (binary_expression "*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0)" (binary_expression "*(long *)(param_1 + 0x28) == 0" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) == number_literal) || (parenthesized_expression "(*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0)" ( (binary_expression "*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0" (pointer_expression "*(long *)(*(long *)(param_1 + 0x28) + 0x48)" * (cast_expression "(long *)(*(long *)(param_1 + 0x28) + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x28) + 0x48)" ( (binary_expression "*(long *)(param_1 + 0x28) + 0x48" (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) + number_literal) )))) == number_literal) ))) )) ))) )) (compound_statement "{\n      FUN_00445eb0(param_4,param_2,2,&PTR_s___rela_iplt_start_00654240,\n                   *(undefined1 *)(*(long *)(param_2 + 8) + 0x148));\n      return;\n    }" { (expression_statement "FUN_00445eb0(param_4,param_2,2,&PTR_s___rela_iplt_start_00654240,\n                   *(undefined1 *)(*(long *)(param_2 + 8) + 0x148));" (call_expression "FUN_00445eb0(param_4,param_2,2,&PTR_s___rela_iplt_start_00654240,\n                   *(undefined1 *)(*(long *)(param_2 + 8) + 0x148))" identifier (argument_list "(param_4,param_2,2,&PTR_s___rela_iplt_start_00654240,\n                   *(undefined1 *)(*(long *)(param_2 + 8) + 0x148))" ( identifier , identifier , number_literal , (pointer_expression "&PTR_s___rela_iplt_start_00654240" & identifier) , (pointer_expression "*(undefined1 *)(*(long *)(param_2 + 8) + 0x148)" * (cast_expression "(undefined1 *)(*(long *)(param_2 + 8) + 0x148)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 8) + 0x148)" ( (binary_expression "*(long *)(param_2 + 8) + 0x148" (pointer_expression "*(long *)(param_2 + 8)" * (cast_expression "(long *)(param_2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) + number_literal) )))) ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })) (expression_statement "FUN_00272df0();" (call_expression "FUN_00272df0()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT , LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) == LIT) ))) )) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , (pointer_expression & IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ))) ;) (return_statement return ;) })) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "void FUN_00276880(long param_1,long param_2,undefined8 param_3,undefined8 param_4)\n\n{\n  ulong uVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long lVar4;\n  undefined8 uStack_30;\n  \n  lVar4 = *(long *)(param_1 + 0x28);\n  if (lVar4 != 0) {\n    lVar4 = *(long *)(lVar4 + 0x40);\n  }\n  FUN_0037e220(param_2,0,*(undefined8 *)(param_1 + 0x30),lVar4,*(undefined8 *)(param_1 + 0x50),1,1);\n  if (*(long *)(param_1 + 0x60) != *(long *)(param_1 + 0x68)) {\n    uVar2 = FUN_00276700(param_1 + 0x50,param_2,uStack_30);\n    FUN_0033ae50(param_1 + 0x60,uVar2);\n  }\n  lVar4 = *(long *)(param_1 + 0x40);\n  if (lVar4 != 0) {\n    uVar1 = *(ulong *)(*(long *)(param_1 + 0x20) + 0x10);\n    lVar3 = FUN_00273930(lVar4);\n    *(int *)(lVar3 + 0x44) = (int)uVar1;\n    if (0x7fff < uVar1) {\n      lVar3 = FUN_00273930(lVar4);\n      lVar4 = FUN_00273930(lVar4);\n      *(int *)(lVar3 + 0x40) = *(int *)(lVar4 + 0x40) + 0x8000;\n    }\n  }\n  if (PTR_DAT_0067cb08[0x20] != '\0') {\n    if ((PTR_DAT_0067cb08[0x21] != '\0') &&\n       ((*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0)))) {\n      FUN_00445eb0(param_4,param_2,2,&PTR_s___rela_iplt_start_00654240,\n                   *(undefined1 *)(*(long *)(param_2 + 8) + 0x148));\n      return;\n    }\n    return;\n  }\n                    \n  FUN_00272df0();\n}" (primitive_type "void") (function_declarator "FUN_00276880(long param_1,long param_2,undefined8 param_3,undefined8 param_4)" (identifier "FUN_00276880") (parameter_list "(long param_1,long param_2,undefined8 param_3,undefined8 param_4)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "undefined8 param_3" (type_identifier "undefined8") (identifier "param_3")) (, ",") (parameter_declaration "undefined8 param_4" (type_identifier "undefined8") (identifier "param_4")) () ")"))) (compound_statement "{\n  ulong uVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long lVar4;\n  undefined8 uStack_30;\n  \n  lVar4 = *(long *)(param_1 + 0x28);\n  if (lVar4 != 0) {\n    lVar4 = *(long *)(lVar4 + 0x40);\n  }\n  FUN_0037e220(param_2,0,*(undefined8 *)(param_1 + 0x30),lVar4,*(undefined8 *)(param_1 + 0x50),1,1);\n  if (*(long *)(param_1 + 0x60) != *(long *)(param_1 + 0x68)) {\n    uVar2 = FUN_00276700(param_1 + 0x50,param_2,uStack_30);\n    FUN_0033ae50(param_1 + 0x60,uVar2);\n  }\n  lVar4 = *(long *)(param_1 + 0x40);\n  if (lVar4 != 0) {\n    uVar1 = *(ulong *)(*(long *)(param_1 + 0x20) + 0x10);\n    lVar3 = FUN_00273930(lVar4);\n    *(int *)(lVar3 + 0x44) = (int)uVar1;\n    if (0x7fff < uVar1) {\n      lVar3 = FUN_00273930(lVar4);\n      lVar4 = FUN_00273930(lVar4);\n      *(int *)(lVar3 + 0x40) = *(int *)(lVar4 + 0x40) + 0x8000;\n    }\n  }\n  if (PTR_DAT_0067cb08[0x20] != '\0') {\n    if ((PTR_DAT_0067cb08[0x21] != '\0') &&\n       ((*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0)))) {\n      FUN_00445eb0(param_4,param_2,2,&PTR_s___rela_iplt_start_00654240,\n                   *(undefined1 *)(*(long *)(param_2 + 8) + 0x148));\n      return;\n    }\n    return;\n  }\n                    \n  FUN_00272df0();\n}" ({ "{") (declaration "ulong uVar1;" (type_identifier "ulong") (identifier "uVar1") (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "undefined8 uStack_30;" (type_identifier "undefined8") (identifier "uStack_30") (; ";")) (expression_statement "lVar4 = *(long *)(param_1 + 0x28);" (assignment_expression "lVar4 = *(long *)(param_1 + 0x28)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(param_1 + 0x28)" (* "*") (cast_expression "(long *)(param_1 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (if_statement "if (lVar4 != 0) {\n    lVar4 = *(long *)(lVar4 + 0x40);\n  }" (if "if") (parenthesized_expression "(lVar4 != 0)" (( "(") (binary_expression "lVar4 != 0" (identifier "lVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    lVar4 = *(long *)(lVar4 + 0x40);\n  }" ({ "{") (expression_statement "lVar4 = *(long *)(lVar4 + 0x40);" (assignment_expression "lVar4 = *(long *)(lVar4 + 0x40)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(lVar4 + 0x40)" (* "*") (cast_expression "(long *)(lVar4 + 0x40)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x40)" (( "(") (binary_expression "lVar4 + 0x40" (identifier "lVar4") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (} "}"))) (expression_statement "FUN_0037e220(param_2,0,*(undefined8 *)(param_1 + 0x30),lVar4,*(undefined8 *)(param_1 + 0x50),1,1);" (call_expression "FUN_0037e220(param_2,0,*(undefined8 *)(param_1 + 0x30),lVar4,*(undefined8 *)(param_1 + 0x50),1,1)" (identifier "FUN_0037e220") (argument_list "(param_2,0,*(undefined8 *)(param_1 + 0x30),lVar4,*(undefined8 *)(param_1 + 0x50),1,1)" (( "(") (identifier "param_2") (, ",") (number_literal "0") (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x30)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x30)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) (, ",") (identifier "lVar4") (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x50)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x50)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")")))) (, ",") (number_literal "1") (, ",") (number_literal "1") () ")"))) (; ";")) (if_statement "if (*(long *)(param_1 + 0x60) != *(long *)(param_1 + 0x68)) {\n    uVar2 = FUN_00276700(param_1 + 0x50,param_2,uStack_30);\n    FUN_0033ae50(param_1 + 0x60,uVar2);\n  }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 0x60) != *(long *)(param_1 + 0x68))" (( "(") (binary_expression "*(long *)(param_1 + 0x60) != *(long *)(param_1 + 0x68)" (pointer_expression "*(long *)(param_1 + 0x60)" (* "*") (cast_expression "(long *)(param_1 + 0x60)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")")))) (!= "!=") (pointer_expression "*(long *)(param_1 + 0x68)" (* "*") (cast_expression "(long *)(param_1 + 0x68)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x68)" (( "(") (binary_expression "param_1 + 0x68" (identifier "param_1") (+ "+") (number_literal "0x68")) () ")"))))) () ")")) (compound_statement "{\n    uVar2 = FUN_00276700(param_1 + 0x50,param_2,uStack_30);\n    FUN_0033ae50(param_1 + 0x60,uVar2);\n  }" ({ "{") (expression_statement "uVar2 = FUN_00276700(param_1 + 0x50,param_2,uStack_30);" (assignment_expression "uVar2 = FUN_00276700(param_1 + 0x50,param_2,uStack_30)" (identifier "uVar2") (= "=") (call_expression "FUN_00276700(param_1 + 0x50,param_2,uStack_30)" (identifier "FUN_00276700") (argument_list "(param_1 + 0x50,param_2,uStack_30)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) (, ",") (identifier "param_2") (, ",") (identifier "uStack_30") () ")")))) (; ";")) (expression_statement "FUN_0033ae50(param_1 + 0x60,uVar2);" (call_expression "FUN_0033ae50(param_1 + 0x60,uVar2)" (identifier "FUN_0033ae50") (argument_list "(param_1 + 0x60,uVar2)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) (, ",") (identifier "uVar2") () ")"))) (; ";")) (} "}"))) (expression_statement "lVar4 = *(long *)(param_1 + 0x40);" (assignment_expression "lVar4 = *(long *)(param_1 + 0x40)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(param_1 + 0x40)" (* "*") (cast_expression "(long *)(param_1 + 0x40)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (if_statement "if (lVar4 != 0) {\n    uVar1 = *(ulong *)(*(long *)(param_1 + 0x20) + 0x10);\n    lVar3 = FUN_00273930(lVar4);\n    *(int *)(lVar3 + 0x44) = (int)uVar1;\n    if (0x7fff < uVar1) {\n      lVar3 = FUN_00273930(lVar4);\n      lVar4 = FUN_00273930(lVar4);\n      *(int *)(lVar3 + 0x40) = *(int *)(lVar4 + 0x40) + 0x8000;\n    }\n  }" (if "if") (parenthesized_expression "(lVar4 != 0)" (( "(") (binary_expression "lVar4 != 0" (identifier "lVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar1 = *(ulong *)(*(long *)(param_1 + 0x20) + 0x10);\n    lVar3 = FUN_00273930(lVar4);\n    *(int *)(lVar3 + 0x44) = (int)uVar1;\n    if (0x7fff < uVar1) {\n      lVar3 = FUN_00273930(lVar4);\n      lVar4 = FUN_00273930(lVar4);\n      *(int *)(lVar3 + 0x40) = *(int *)(lVar4 + 0x40) + 0x8000;\n    }\n  }" ({ "{") (expression_statement "uVar1 = *(ulong *)(*(long *)(param_1 + 0x20) + 0x10);" (assignment_expression "uVar1 = *(ulong *)(*(long *)(param_1 + 0x20) + 0x10)" (identifier "uVar1") (= "=") (pointer_expression "*(ulong *)(*(long *)(param_1 + 0x20) + 0x10)" (* "*") (cast_expression "(ulong *)(*(long *)(param_1 + 0x20) + 0x10)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x20) + 0x10)" (( "(") (binary_expression "*(long *)(param_1 + 0x20) + 0x10" (pointer_expression "*(long *)(param_1 + 0x20)" (* "*") (cast_expression "(long *)(param_1 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "lVar3 = FUN_00273930(lVar4);" (assignment_expression "lVar3 = FUN_00273930(lVar4)" (identifier "lVar3") (= "=") (call_expression "FUN_00273930(lVar4)" (identifier "FUN_00273930") (argument_list "(lVar4)" (( "(") (identifier "lVar4") () ")")))) (; ";")) (expression_statement "*(int *)(lVar3 + 0x44) = (int)uVar1;" (assignment_expression "*(int *)(lVar3 + 0x44) = (int)uVar1" (pointer_expression "*(int *)(lVar3 + 0x44)" (* "*") (cast_expression "(int *)(lVar3 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x44)" (( "(") (binary_expression "lVar3 + 0x44" (identifier "lVar3") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (cast_expression "(int)uVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar1"))) (; ";")) (if_statement "if (0x7fff < uVar1) {\n      lVar3 = FUN_00273930(lVar4);\n      lVar4 = FUN_00273930(lVar4);\n      *(int *)(lVar3 + 0x40) = *(int *)(lVar4 + 0x40) + 0x8000;\n    }" (if "if") (parenthesized_expression "(0x7fff < uVar1)" (( "(") (binary_expression "0x7fff < uVar1" (number_literal "0x7fff") (< "<") (identifier "uVar1")) () ")")) (compound_statement "{\n      lVar3 = FUN_00273930(lVar4);\n      lVar4 = FUN_00273930(lVar4);\n      *(int *)(lVar3 + 0x40) = *(int *)(lVar4 + 0x40) + 0x8000;\n    }" ({ "{") (expression_statement "lVar3 = FUN_00273930(lVar4);" (assignment_expression "lVar3 = FUN_00273930(lVar4)" (identifier "lVar3") (= "=") (call_expression "FUN_00273930(lVar4)" (identifier "FUN_00273930") (argument_list "(lVar4)" (( "(") (identifier "lVar4") () ")")))) (; ";")) (expression_statement "lVar4 = FUN_00273930(lVar4);" (assignment_expression "lVar4 = FUN_00273930(lVar4)" (identifier "lVar4") (= "=") (call_expression "FUN_00273930(lVar4)" (identifier "FUN_00273930") (argument_list "(lVar4)" (( "(") (identifier "lVar4") () ")")))) (; ";")) (expression_statement "*(int *)(lVar3 + 0x40) = *(int *)(lVar4 + 0x40) + 0x8000;" (assignment_expression "*(int *)(lVar3 + 0x40) = *(int *)(lVar4 + 0x40) + 0x8000" (pointer_expression "*(int *)(lVar3 + 0x40)" (* "*") (cast_expression "(int *)(lVar3 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x40)" (( "(") (binary_expression "lVar3 + 0x40" (identifier "lVar3") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (binary_expression "*(int *)(lVar4 + 0x40) + 0x8000" (pointer_expression "*(int *)(lVar4 + 0x40)" (* "*") (cast_expression "(int *)(lVar4 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x40)" (( "(") (binary_expression "lVar4 + 0x40" (identifier "lVar4") (+ "+") (number_literal "0x40")) () ")")))) (+ "+") (number_literal "0x8000"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if (PTR_DAT_0067cb08[0x20] != '\0') {\n    if ((PTR_DAT_0067cb08[0x21] != '\0') &&\n       ((*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0)))) {\n      FUN_00445eb0(param_4,param_2,2,&PTR_s___rela_iplt_start_00654240,\n                   *(undefined1 *)(*(long *)(param_2 + 8) + 0x148));\n      return;\n    }\n    return;\n  }" (if "if") (parenthesized_expression "(PTR_DAT_0067cb08[0x20] != '\0')" (( "(") (binary_expression "PTR_DAT_0067cb08[0x20] != '\0'" (subscript_expression "PTR_DAT_0067cb08[0x20]" (identifier "PTR_DAT_0067cb08") ([ "[") (number_literal "0x20") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    if ((PTR_DAT_0067cb08[0x21] != '\0') &&\n       ((*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0)))) {\n      FUN_00445eb0(param_4,param_2,2,&PTR_s___rela_iplt_start_00654240,\n                   *(undefined1 *)(*(long *)(param_2 + 8) + 0x148));\n      return;\n    }\n    return;\n  }" ({ "{") (if_statement "if ((PTR_DAT_0067cb08[0x21] != '\0') &&\n       ((*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0)))) {\n      FUN_00445eb0(param_4,param_2,2,&PTR_s___rela_iplt_start_00654240,\n                   *(undefined1 *)(*(long *)(param_2 + 8) + 0x148));\n      return;\n    }" (if "if") (parenthesized_expression "((PTR_DAT_0067cb08[0x21] != '\0') &&\n       ((*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0))))" (( "(") (binary_expression "(PTR_DAT_0067cb08[0x21] != '\0') &&\n       ((*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0)))" (parenthesized_expression "(PTR_DAT_0067cb08[0x21] != '\0')" (( "(") (binary_expression "PTR_DAT_0067cb08[0x21] != '\0'" (subscript_expression "PTR_DAT_0067cb08[0x21]" (identifier "PTR_DAT_0067cb08") ([ "[") (number_literal "0x21") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "((*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0)))" (( "(") (parenthesized_expression "(*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0))" (( "(") (binary_expression "*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0)" (binary_expression "*(long *)(param_1 + 0x28) == 0" (pointer_expression "*(long *)(param_1 + 0x28)" (* "*") (cast_expression "(long *)(param_1 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (== "==") (number_literal "0")) (|| "||") (parenthesized_expression "(*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0)" (( "(") (binary_expression "*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0" (pointer_expression "*(long *)(*(long *)(param_1 + 0x28) + 0x48)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0x28) + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x28) + 0x48)" (( "(") (binary_expression "*(long *)(param_1 + 0x28) + 0x48" (pointer_expression "*(long *)(param_1 + 0x28)" (* "*") (cast_expression "(long *)(param_1 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "0x48")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n      FUN_00445eb0(param_4,param_2,2,&PTR_s___rela_iplt_start_00654240,\n                   *(undefined1 *)(*(long *)(param_2 + 8) + 0x148));\n      return;\n    }" ({ "{") (expression_statement "FUN_00445eb0(param_4,param_2,2,&PTR_s___rela_iplt_start_00654240,\n                   *(undefined1 *)(*(long *)(param_2 + 8) + 0x148));" (call_expression "FUN_00445eb0(param_4,param_2,2,&PTR_s___rela_iplt_start_00654240,\n                   *(undefined1 *)(*(long *)(param_2 + 8) + 0x148))" (identifier "FUN_00445eb0") (argument_list "(param_4,param_2,2,&PTR_s___rela_iplt_start_00654240,\n                   *(undefined1 *)(*(long *)(param_2 + 8) + 0x148))" (( "(") (identifier "param_4") (, ",") (identifier "param_2") (, ",") (number_literal "2") (, ",") (pointer_expression "&PTR_s___rela_iplt_start_00654240" (& "&") (identifier "PTR_s___rela_iplt_start_00654240")) (, ",") (pointer_expression "*(undefined1 *)(*(long *)(param_2 + 8) + 0x148)" (* "*") (cast_expression "(undefined1 *)(*(long *)(param_2 + 8) + 0x148)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_2 + 8) + 0x148)" (( "(") (binary_expression "*(long *)(param_2 + 8) + 0x148" (pointer_expression "*(long *)(param_2 + 8)" (* "*") (cast_expression "(long *)(param_2 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x148")) () ")")))) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_00272df0();" (call_expression "FUN_00272df0()" (identifier "FUN_00272df0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* WARNING: Enum "PT": Some values do not have unique names */
/* WARNING: Enum "STT": Some values do not have unique names */
/* WARNING: Enum "STB": Some values do not have unique names */
/* DWARF original prototype: void do_finalize_sections(Target_tilegx<32,_true> * this, Layout *
   layout, Input_objects * param_2, Symbol_table * symtab) */

void __thiscall
anon_unknown.dwarf_ca7751::var_5<32,var_6>::do_finalize_sections
          (var_5<32,var_6> *this,type_3 *layout,Input_objects *param_2,type_6 *symtab)

{
  type_5 var_11;
  uint64_t var_12;
  type_1 *sym;
  var_1<32> *pSVar3;
  var_1<32> *pSVar4;
  type_2 *var_2;
  type_3 *this_00;
  type_3 *var_9;
  
  var_2 = (type_2 *)(this->tilegx_info).abi_pagesize;
  if (var_2 != (type_2 *)0x0) {
    var_2 = (type_2 *)var_2[1].offset_;
  }
  sym = (type_1 *)0x0;
  this_00 = layout;
  gold::Layout::var_3
            (layout,false,(type_2 *)(this->tilegx_info).common_pagesize,var_2,
             (type_4 *)(this->tilegx_info).small_common_section_flags,true,true);
  if ((this->tilegx_info).attributes_section != (this->tilegx_info).attributes_vendor) {
    sym = (type_1 *)
          var_4((var_5<32,var_6> *)
                           &(this->tilegx_info).small_common_section_flags,layout);
    this_00 = (type_3 *)&(this->tilegx_info).attributes_section;
    gold::var_7<4,_32,var_6>::var_8
              ((var_7<4,_32,var_6> *)this_00,(Output_data_reloc<4,var_6,_32,var_6> *)sym);
  }
  var_9 = (type_3 *)(this->tilegx_info).rosegment_gap;
  if (var_9 != (type_3 *)0x0) {
    var_11 = *(type_5 *)((this->tilegx_info).default_text_segment_address + 0x10);
    this_00 = var_9;
    pSVar3 = gold::Symbol_table::var_10<32>((type_6 *)var_9,sym);
    pSVar3->symsize_ = (type_7)var_11;
    if (0x7fff < var_11) {
      pSVar3 = gold::Symbol_table::var_10<32>((type_6 *)var_9,sym);
      pSVar4 = gold::Symbol_table::var_10<32>((type_6 *)var_9,sym);
      pSVar3->value_ = pSVar4->value_ + 0x8000;
      this_00 = var_9;
    }
  }
  if (gold::parameters->doing_static_link_valid_ != false) {
    if ((gold::parameters->doing_static_link_ != false) &&
       ((var_12 = (this->tilegx_info).abi_pagesize, var_12 == 0 || (*(long *)(var_12 + 0x48) == 0)))) {
      gold::Symbol_table::var_13
                (symtab,layout,2,do_finalize_sections::lexical_block_7::syms,
                 (layout->script_options_->script_sections_).saw_sections_clause_);
      return;
    }
    return;
  }
                    /* WARNING: Subroutine does not return */
  gold::Parameters::var_14((type_8 *)this_00,(type_8 *)sym);
}


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

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

{
  ulong uVar1;
  undefined8 uVar2;
  long lVar3;
  long lVar4;
  undefined8 uStack_30;
  
  lVar4 = *(long *)(param_1 + 0x28);
  if (lVar4 != 0) {
    lVar4 = *(long *)(lVar4 + 0x40);
  }
  FUN_0037e220(param_2,0,*(undefined8 *)(param_1 + 0x30),lVar4,*(undefined8 *)(param_1 + 0x50),1,1);
  if (*(long *)(param_1 + 0x60) != *(long *)(param_1 + 0x68)) {
    uVar2 = FUN_00276700(param_1 + 0x50,param_2,uStack_30);
    FUN_0033ae50(param_1 + 0x60,uVar2);
  }
  lVar4 = *(long *)(param_1 + 0x40);
  if (lVar4 != 0) {
    uVar1 = *(ulong *)(*(long *)(param_1 + 0x20) + 0x10);
    lVar3 = FUN_00273930(lVar4);
    *(int *)(lVar3 + 0x44) = (int)uVar1;
    if (0x7fff < uVar1) {
      lVar3 = FUN_00273930(lVar4);
      lVar4 = FUN_00273930(lVar4);
      *(int *)(lVar3 + 0x40) = *(int *)(lVar4 + 0x40) + 0x8000;
    }
  }
  if (PTR_DAT_0067cb08[0x20] != '\0') {
    if ((PTR_DAT_0067cb08[0x21] != '\0') &&
       ((*(long *)(param_1 + 0x28) == 0 || (*(long *)(*(long *)(param_1 + 0x28) + 0x48) == 0)))) {
      FUN_00445eb0(param_4,param_2,2,&PTR_s___rela_iplt_start_00654240,
                   *(undefined1 *)(*(long *)(param_2 + 8) + 0x148));
      return;
    }
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00272df0();
}

