
/* DWARF original prototype: bool initialize(Track_relocs<32,_true> * this, Object * object, uint
   reloc_shndx, uint reloc_type) */

bool __thiscall
gold::Track_relocs<32,_true>::initialize
          (Track_relocs<32,_true> *this,Object *object,uint reloc_shndx,uint reloc_type)

{
  ulong uVar1;
  uchar *puVar2;
  char *format;
  undefined8 uVar3;
  ulong uVar4;
  bool bVar5;
  
  if (reloc_shndx == 0xffffffff) {
    return false;
  }
  if (reloc_shndx == 0) {
    return true;
  }
  puVar2 = Object::section_contents(object,reloc_shndx,&this->len_,false);
  this->prelocs_ = puVar2;
  if (reloc_type == 9) {
    this->reloc_size_ = 8;
    uVar4 = 8;
    uVar3 = 8;
  }
  else {
    if (reloc_type != 4) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/reloc.cc",0x5fd,"initialize");
    }
    this->reloc_size_ = 0xc;
    uVar4 = 0xc;
    uVar3 = 0xc;
  }
  uVar1 = this->len_;
  bVar5 = uVar1 % uVar4 != 0;
  if (bVar5) {
    format = (char *)gettext("reloc section size %zu is not a multiple of reloc size %d\n");
    Object::error(object,format,uVar1,uVar3);
  }
  return !bVar5;
}



bool FUN_00245520(undefined8 *param_1,undefined8 param_2,int param_3,int param_4)

{
  ulong uVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  ulong uVar4;
  bool bVar5;
  
  if (param_3 == -1) {
    return false;
  }
  if (param_3 == 0) {
    return true;
  }
  uVar2 = FUN_001bd320(param_2,param_3,param_1 + 1,0);
  *param_1 = uVar2;
  if (param_4 == 9) {
    *(undefined4 *)(param_1 + 3) = 8;
    uVar4 = 8;
    uVar2 = 8;
  }
  else {
    if (param_4 != 4) {
                    /* WARNING: Subroutine does not return */
      FUN_0017c650("../../gold/reloc.cc",0x5fd,"initialize");
    }
    *(undefined4 *)(param_1 + 3) = 0xc;
    uVar4 = 0xc;
    uVar2 = 0xc;
  }
  uVar1 = param_1[1];
  bVar5 = uVar1 % uVar4 != 0;
  if (bVar5) {
    uVar3 = gettext("reloc section size %zu is not a multiple of reloc size %d\n");
    FUN_001bd150(param_2,uVar3,uVar1,uVar2);
  }
  return !bVar5;
}


CMP EDX,-0x1
JZ 0x00245590
TEST EDX,EDX
JNZ 0x00245530
MOV EAX,0x1
RET
PUSH R12
MOV EAX,EDX
MOV R12,RSI
LEA RDX,[RDI + 0x8]
PUSH RBP
MOV ESI,EAX
MOV EBP,ECX
XOR ECX,ECX
PUSH RBX
MOV RBX,RDI
MOV RDI,R12
CALL 0x001bd320
MOV qword ptr [RBX],RAX
CMP EBP,0x9
JZ 0x00245598
CMP EBP,0x4
JNZ 0x002455d2
MOV dword ptr [RBX + 0x18],0xc
MOV ESI,0xc
MOV EBP,0xc
MOV RBX,qword ptr [RBX + 0x8]
XOR EDX,EDX
MOV RAX,RBX
DIV RSI
MOV EAX,0x1
TEST RDX,RDX
JNZ 0x002455b0
POP RBX
POP RBP
POP R12
RET
XOR EAX,EAX
RET
MOV dword ptr [RBX + 0x18],0x8
MOV ESI,0x8
MOV EBP,0x8
JMP 0x0024556c
LEA RDI,[0x3832b0]
CALL 0x00147320
MOV ECX,EBP
MOV RDX,RBX
MOV RDI,R12
MOV RSI,RAX
XOR EAX,EAX
CALL 0x001bd150
XOR EAX,EAX
JMP 0x00245582
LEA RDX,[0x3833e0]
MOV ESI,0x5fd
LEA RDI,[0x38329c]
CALL 0x0017c650
(translation_unit "bool FUN_00245520(undefined8 *param_1,undefined8 param_2,int param_3,int param_4)\n\n{\n  ulong uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  ulong uVar4;\n  bool bVar5;\n  \n  if (param_3 == -1) {\n    return false;\n  }\n  if (param_3 == 0) {\n    return true;\n  }\n  uVar2 = FUN_001bd320(param_2,param_3,param_1 + 1,0);\n  *param_1 = uVar2;\n  if (param_4 == 9) {\n    *(undefined4 *)(param_1 + 3) = 8;\n    uVar4 = 8;\n    uVar2 = 8;\n  }\n  else {\n    if (param_4 != 4) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/reloc.cc",0x5fd,"initialize");\n    }\n    *(undefined4 *)(param_1 + 3) = 0xc;\n    uVar4 = 0xc;\n    uVar2 = 0xc;\n  }\n  uVar1 = param_1[1];\n  bVar5 = uVar1 % uVar4 != 0;\n  if (bVar5) {\n    uVar3 = gettext("reloc section size %zu is not a multiple of reloc size %d\n");\n    FUN_001bd150(param_2,uVar3,uVar1,uVar2);\n  }\n  return !bVar5;\n}\n\n" (function_definition "bool FUN_00245520(undefined8 *param_1,undefined8 param_2,int param_3,int param_4)\n\n{\n  ulong uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  ulong uVar4;\n  bool bVar5;\n  \n  if (param_3 == -1) {\n    return false;\n  }\n  if (param_3 == 0) {\n    return true;\n  }\n  uVar2 = FUN_001bd320(param_2,param_3,param_1 + 1,0);\n  *param_1 = uVar2;\n  if (param_4 == 9) {\n    *(undefined4 *)(param_1 + 3) = 8;\n    uVar4 = 8;\n    uVar2 = 8;\n  }\n  else {\n    if (param_4 != 4) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/reloc.cc",0x5fd,"initialize");\n    }\n    *(undefined4 *)(param_1 + 3) = 0xc;\n    uVar4 = 0xc;\n    uVar2 = 0xc;\n  }\n  uVar1 = param_1[1];\n  bVar5 = uVar1 % uVar4 != 0;\n  if (bVar5) {\n    uVar3 = gettext("reloc section size %zu is not a multiple of reloc size %d\n");\n    FUN_001bd150(param_2,uVar3,uVar1,uVar2);\n  }\n  return !bVar5;\n}" primitive_type (function_declarator "FUN_00245520(undefined8 *param_1,undefined8 param_2,int param_3,int param_4)" identifier (parameter_list "(undefined8 *param_1,undefined8 param_2,int param_3,int param_4)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  ulong uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  ulong uVar4;\n  bool bVar5;\n  \n  if (param_3 == -1) {\n    return false;\n  }\n  if (param_3 == 0) {\n    return true;\n  }\n  uVar2 = FUN_001bd320(param_2,param_3,param_1 + 1,0);\n  *param_1 = uVar2;\n  if (param_4 == 9) {\n    *(undefined4 *)(param_1 + 3) = 8;\n    uVar4 = 8;\n    uVar2 = 8;\n  }\n  else {\n    if (param_4 != 4) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/reloc.cc",0x5fd,"initialize");\n    }\n    *(undefined4 *)(param_1 + 3) = 0xc;\n    uVar4 = 0xc;\n    uVar2 = 0xc;\n  }\n  uVar1 = param_1[1];\n  bVar5 = uVar1 % uVar4 != 0;\n  if (bVar5) {\n    uVar3 = gettext("reloc section size %zu is not a multiple of reloc size %d\n");\n    FUN_001bd150(param_2,uVar3,uVar1,uVar2);\n  }\n  return !bVar5;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (if_statement "if (param_3 == -1) {\n    return false;\n  }" if (parenthesized_expression "(param_3 == -1)" ( (binary_expression "param_3 == -1" identifier == number_literal) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (if_statement "if (param_3 == 0) {\n    return true;\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    return true;\n  }" { (return_statement "return true;" return true ;) })) (expression_statement "uVar2 = FUN_001bd320(param_2,param_3,param_1 + 1,0);" (assignment_expression "uVar2 = FUN_001bd320(param_2,param_3,param_1 + 1,0)" identifier = (call_expression "FUN_001bd320(param_2,param_3,param_1 + 1,0)" identifier (argument_list "(param_2,param_3,param_1 + 1,0)" ( identifier , identifier , (binary_expression "param_1 + 1" identifier + number_literal) , number_literal )))) ;) (expression_statement "*param_1 = uVar2;" (assignment_expression "*param_1 = uVar2" (pointer_expression "*param_1" * identifier) = identifier) ;) (if_statement "if (param_4 == 9) {\n    *(undefined4 *)(param_1 + 3) = 8;\n    uVar4 = 8;\n    uVar2 = 8;\n  }\n  else {\n    if (param_4 != 4) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/reloc.cc",0x5fd,"initialize");\n    }\n    *(undefined4 *)(param_1 + 3) = 0xc;\n    uVar4 = 0xc;\n    uVar2 = 0xc;\n  }" if (parenthesized_expression "(param_4 == 9)" ( (binary_expression "param_4 == 9" identifier == number_literal) )) (compound_statement "{\n    *(undefined4 *)(param_1 + 3) = 8;\n    uVar4 = 8;\n    uVar2 = 8;\n  }" { (expression_statement "*(undefined4 *)(param_1 + 3) = 8;" (assignment_expression "*(undefined4 *)(param_1 + 3) = 8" (pointer_expression "*(undefined4 *)(param_1 + 3)" * (cast_expression "(undefined4 *)(param_1 + 3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar4 = 8;" (assignment_expression "uVar4 = 8" identifier = number_literal) ;) (expression_statement "uVar2 = 8;" (assignment_expression "uVar2 = 8" identifier = number_literal) ;) }) (else_clause "else {\n    if (param_4 != 4) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/reloc.cc",0x5fd,"initialize");\n    }\n    *(undefined4 *)(param_1 + 3) = 0xc;\n    uVar4 = 0xc;\n    uVar2 = 0xc;\n  }" else (compound_statement "{\n    if (param_4 != 4) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/reloc.cc",0x5fd,"initialize");\n    }\n    *(undefined4 *)(param_1 + 3) = 0xc;\n    uVar4 = 0xc;\n    uVar2 = 0xc;\n  }" { (if_statement "if (param_4 != 4) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/reloc.cc",0x5fd,"initialize");\n    }" if (parenthesized_expression "(param_4 != 4)" ( (binary_expression "param_4 != 4" identifier != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/reloc.cc",0x5fd,"initialize");\n    }" { comment (expression_statement "FUN_0017c650("../../gold/reloc.cc",0x5fd,"initialize");" (call_expression "FUN_0017c650("../../gold/reloc.cc",0x5fd,"initialize")" identifier (argument_list "("../../gold/reloc.cc",0x5fd,"initialize")" ( (string_literal ""../../gold/reloc.cc"" " string_content ") , number_literal , (string_literal ""initialize"" " string_content ") ))) ;) })) (expression_statement "*(undefined4 *)(param_1 + 3) = 0xc;" (assignment_expression "*(undefined4 *)(param_1 + 3) = 0xc" (pointer_expression "*(undefined4 *)(param_1 + 3)" * (cast_expression "(undefined4 *)(param_1 + 3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar4 = 0xc;" (assignment_expression "uVar4 = 0xc" identifier = number_literal) ;) (expression_statement "uVar2 = 0xc;" (assignment_expression "uVar2 = 0xc" identifier = number_literal) ;) }))) (expression_statement "uVar1 = param_1[1];" (assignment_expression "uVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "bVar5 = uVar1 % uVar4 != 0;" (assignment_expression "bVar5 = uVar1 % uVar4 != 0" identifier = (binary_expression "uVar1 % uVar4 != 0" (binary_expression "uVar1 % uVar4" identifier % identifier) != number_literal)) ;) (if_statement "if (bVar5) {\n    uVar3 = gettext("reloc section size %zu is not a multiple of reloc size %d\n");\n    FUN_001bd150(param_2,uVar3,uVar1,uVar2);\n  }" if (parenthesized_expression "(bVar5)" ( identifier )) (compound_statement "{\n    uVar3 = gettext("reloc section size %zu is not a multiple of reloc size %d\n");\n    FUN_001bd150(param_2,uVar3,uVar1,uVar2);\n  }" { (expression_statement "uVar3 = gettext("reloc section size %zu is not a multiple of reloc size %d\n");" (assignment_expression "uVar3 = gettext("reloc section size %zu is not a multiple of reloc size %d\n")" identifier = (call_expression "gettext("reloc section size %zu is not a multiple of reloc size %d\n")" identifier (argument_list "("reloc section size %zu is not a multiple of reloc size %d\n")" ( (string_literal ""reloc section size %zu is not a multiple of reloc size %d\n"" " string_content escape_sequence ") )))) ;) (expression_statement "FUN_001bd150(param_2,uVar3,uVar1,uVar2);" (call_expression "FUN_001bd150(param_2,uVar3,uVar1,uVar2)" identifier (argument_list "(param_2,uVar3,uVar1,uVar2)" ( identifier , identifier , identifier , identifier ))) ;) })) (return_statement "return !bVar5;" return (unary_expression "!bVar5" ! identifier) ;) })))
(translation_unit "/* DWARF original prototype: bool initialize(Track_relocs<32,_true> * this, Object * object, uint\n   reloc_shndx, uint reloc_type) */\n\nbool __thiscall\ngold::Track_relocs<32,_true>::initialize\n          (Track_relocs<32,_true> *this,Object *object,uint reloc_shndx,uint reloc_type)\n\n{\n  ulong uVar1;\n  uchar *puVar2;\n  char *format;\n  undefined8 uVar3;\n  ulong uVar4;\n  bool bVar5;\n  \n  if (reloc_shndx == 0xffffffff) {\n    return false;\n  }\n  if (reloc_shndx == 0) {\n    return true;\n  }\n  puVar2 = Object::section_contents(object,reloc_shndx,&this->len_,false);\n  this->prelocs_ = puVar2;\n  if (reloc_type == 9) {\n    this->reloc_size_ = 8;\n    uVar4 = 8;\n    uVar3 = 8;\n  }\n  else {\n    if (reloc_type != 4) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/reloc.cc",0x5fd,"initialize");\n    }\n    this->reloc_size_ = 0xc;\n    uVar4 = 0xc;\n    uVar3 = 0xc;\n  }\n  uVar1 = this->len_;\n  bVar5 = uVar1 % uVar4 != 0;\n  if (bVar5) {\n    format = (char *)gettext("reloc section size %zu is not a multiple of reloc size %d\n");\n    Object::error(object,format,uVar1,uVar3);\n  }\n  return !bVar5;\n}\n\n" comment (declaration "bool __thiscall\ngold::Track_relocs<32,_true>::initialize\n          (Track_relocs<32,_true> *this,Object *object,uint reloc_shndx,uint reloc_type)\n\n{\n  ulong uVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "_true>::initialize\n          (Track_relocs<32,_true> *this,Object *object,uint reloc_shndx,uint reloc_type)\n\n{\n  ulong" identifier > : : (function_declarator "initialize\n          (Track_relocs<32,_true> *this,Object *object,uint reloc_shndx,uint reloc_type)" identifier (parameter_list "(Track_relocs<32,_true> *this,Object *object,uint reloc_shndx,uint reloc_type)" ( (parameter_declaration "Track_relocs" type_identifier) (ERROR "<32" < number_literal) , (parameter_declaration "_true> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Object *object" type_identifier (pointer_declarator "*object" * identifier)) , (parameter_declaration "uint reloc_shndx" type_identifier identifier) , (parameter_declaration "uint reloc_type" type_identifier identifier) ))) { identifier) identifier ;) (declaration "uchar *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "char *format;" primitive_type (pointer_declarator "*format" * identifier) ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (if_statement "if (reloc_shndx == 0xffffffff) {\n    return false;\n  }" if (parenthesized_expression "(reloc_shndx == 0xffffffff)" ( (binary_expression "reloc_shndx == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (if_statement "if (reloc_shndx == 0) {\n    return true;\n  }" if (parenthesized_expression "(reloc_shndx == 0)" ( (binary_expression "reloc_shndx == 0" identifier == number_literal) )) (compound_statement "{\n    return true;\n  }" { (return_statement "return true;" return true ;) })) (ERROR "puVar2 = Object::" (assignment_expression "puVar2 = Object" identifier = identifier) : :) (expression_statement "section_contents(object,reloc_shndx,&this->len_,false);" (call_expression "section_contents(object,reloc_shndx,&this->len_,false)" identifier (argument_list "(object,reloc_shndx,&this->len_,false)" ( identifier , identifier , (pointer_expression "&this->len_" & (field_expression "this->len_" identifier -> field_identifier)) , false ))) ;) (expression_statement "this->prelocs_ = puVar2;" (assignment_expression "this->prelocs_ = puVar2" (field_expression "this->prelocs_" identifier -> field_identifier) = identifier) ;) (if_statement "if (reloc_type == 9) {\n    this->reloc_size_ = 8;\n    uVar4 = 8;\n    uVar3 = 8;\n  }\n  else {\n    if (reloc_type != 4) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/reloc.cc",0x5fd,"initialize");\n    }\n    this->reloc_size_ = 0xc;\n    uVar4 = 0xc;\n    uVar3 = 0xc;\n  }" if (parenthesized_expression "(reloc_type == 9)" ( (binary_expression "reloc_type == 9" identifier == number_literal) )) (compound_statement "{\n    this->reloc_size_ = 8;\n    uVar4 = 8;\n    uVar3 = 8;\n  }" { (expression_statement "this->reloc_size_ = 8;" (assignment_expression "this->reloc_size_ = 8" (field_expression "this->reloc_size_" identifier -> field_identifier) = number_literal) ;) (expression_statement "uVar4 = 8;" (assignment_expression "uVar4 = 8" identifier = number_literal) ;) (expression_statement "uVar3 = 8;" (assignment_expression "uVar3 = 8" identifier = number_literal) ;) }) (else_clause "else {\n    if (reloc_type != 4) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/reloc.cc",0x5fd,"initialize");\n    }\n    this->reloc_size_ = 0xc;\n    uVar4 = 0xc;\n    uVar3 = 0xc;\n  }" else (compound_statement "{\n    if (reloc_type != 4) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/reloc.cc",0x5fd,"initialize");\n    }\n    this->reloc_size_ = 0xc;\n    uVar4 = 0xc;\n    uVar3 = 0xc;\n  }" { (if_statement "if (reloc_type != 4) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/reloc.cc",0x5fd,"initialize");\n    }" if (parenthesized_expression "(reloc_type != 4)" ( (binary_expression "reloc_type != 4" identifier != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/reloc.cc",0x5fd,"initialize");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/reloc.cc",0x5fd,"initialize");" (call_expression "do_gold_unreachable("../../gold/reloc.cc",0x5fd,"initialize")" identifier (argument_list "("../../gold/reloc.cc",0x5fd,"initialize")" ( (string_literal ""../../gold/reloc.cc"" " string_content ") , number_literal , (string_literal ""initialize"" " string_content ") ))) ;) })) (expression_statement "this->reloc_size_ = 0xc;" (assignment_expression "this->reloc_size_ = 0xc" (field_expression "this->reloc_size_" identifier -> field_identifier) = number_literal) ;) (expression_statement "uVar4 = 0xc;" (assignment_expression "uVar4 = 0xc" identifier = number_literal) ;) (expression_statement "uVar3 = 0xc;" (assignment_expression "uVar3 = 0xc" identifier = number_literal) ;) }))) (expression_statement "uVar1 = this->len_;" (assignment_expression "uVar1 = this->len_" identifier = (field_expression "this->len_" identifier -> field_identifier)) ;) (expression_statement "bVar5 = uVar1 % uVar4 != 0;" (assignment_expression "bVar5 = uVar1 % uVar4 != 0" identifier = (binary_expression "uVar1 % uVar4 != 0" (binary_expression "uVar1 % uVar4" identifier % identifier) != number_literal)) ;) (if_statement "if (bVar5) {\n    format = (char *)gettext("reloc section size %zu is not a multiple of reloc size %d\n");\n    Object::error(object,format,uVar1,uVar3);\n  }" if (parenthesized_expression "(bVar5)" ( identifier )) (compound_statement "{\n    format = (char *)gettext("reloc section size %zu is not a multiple of reloc size %d\n");\n    Object::error(object,format,uVar1,uVar3);\n  }" { (expression_statement "format = (char *)gettext("reloc section size %zu is not a multiple of reloc size %d\n");" (assignment_expression "format = (char *)gettext("reloc section size %zu is not a multiple of reloc size %d\n")" identifier = (cast_expression "(char *)gettext("reloc section size %zu is not a multiple of reloc size %d\n")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("reloc section size %zu is not a multiple of reloc size %d\n")" identifier (argument_list "("reloc section size %zu is not a multiple of reloc size %d\n")" ( (string_literal ""reloc section size %zu is not a multiple of reloc size %d\n"" " string_content escape_sequence ") ))))) ;) (labeled_statement "Object::error(object,format,uVar1,uVar3);" statement_identifier : (ERROR ":" :) (expression_statement "error(object,format,uVar1,uVar3);" (call_expression "error(object,format,uVar1,uVar3)" identifier (argument_list "(object,format,uVar1,uVar3)" ( identifier , identifier , identifier , identifier ))) ;)) })) (return_statement "return !bVar5;" return (unary_expression "!bVar5" ! identifier) ;) (ERROR "}" }))
(translation_unit "bool FUN_00245520(undefined8 *param_1,undefined8 param_2,int param_3,int param_4)\n\n{\n  ulong uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  ulong uVar4;\n  bool bVar5;\n  \n  if (param_3 == -1) {\n    return false;\n  }\n  if (param_3 == 0) {\n    return true;\n  }\n  uVar2 = FUN_001bd320(param_2,param_3,param_1 + 1,0);\n  *param_1 = uVar2;\n  if (param_4 == 9) {\n    *(undefined4 *)(param_1 + 3) = 8;\n    uVar4 = 8;\n    uVar2 = 8;\n  }\n  else {\n    if (param_4 != 4) {\n                    \n      FUN_0017c650("../../gold/reloc.cc",0x5fd,"initialize");\n    }\n    *(undefined4 *)(param_1 + 3) = 0xc;\n    uVar4 = 0xc;\n    uVar2 = 0xc;\n  }\n  uVar1 = param_1[1];\n  bVar5 = uVar1 % uVar4 != 0;\n  if (bVar5) {\n    uVar3 = gettext("reloc section size %zu is not a multiple of reloc size %d\n");\n    FUN_001bd150(param_2,uVar3,uVar1,uVar2);\n  }\n  return !bVar5;\n}\n\n" (function_definition "bool FUN_00245520(undefined8 *param_1,undefined8 param_2,int param_3,int param_4)\n\n{\n  ulong uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  ulong uVar4;\n  bool bVar5;\n  \n  if (param_3 == -1) {\n    return false;\n  }\n  if (param_3 == 0) {\n    return true;\n  }\n  uVar2 = FUN_001bd320(param_2,param_3,param_1 + 1,0);\n  *param_1 = uVar2;\n  if (param_4 == 9) {\n    *(undefined4 *)(param_1 + 3) = 8;\n    uVar4 = 8;\n    uVar2 = 8;\n  }\n  else {\n    if (param_4 != 4) {\n                    \n      FUN_0017c650("../../gold/reloc.cc",0x5fd,"initialize");\n    }\n    *(undefined4 *)(param_1 + 3) = 0xc;\n    uVar4 = 0xc;\n    uVar2 = 0xc;\n  }\n  uVar1 = param_1[1];\n  bVar5 = uVar1 % uVar4 != 0;\n  if (bVar5) {\n    uVar3 = gettext("reloc section size %zu is not a multiple of reloc size %d\n");\n    FUN_001bd150(param_2,uVar3,uVar1,uVar2);\n  }\n  return !bVar5;\n}" primitive_type (function_declarator "FUN_00245520(undefined8 *param_1,undefined8 param_2,int param_3,int param_4)" identifier (parameter_list "(undefined8 *param_1,undefined8 param_2,int param_3,int param_4)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  ulong uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  ulong uVar4;\n  bool bVar5;\n  \n  if (param_3 == -1) {\n    return false;\n  }\n  if (param_3 == 0) {\n    return true;\n  }\n  uVar2 = FUN_001bd320(param_2,param_3,param_1 + 1,0);\n  *param_1 = uVar2;\n  if (param_4 == 9) {\n    *(undefined4 *)(param_1 + 3) = 8;\n    uVar4 = 8;\n    uVar2 = 8;\n  }\n  else {\n    if (param_4 != 4) {\n                    \n      FUN_0017c650("../../gold/reloc.cc",0x5fd,"initialize");\n    }\n    *(undefined4 *)(param_1 + 3) = 0xc;\n    uVar4 = 0xc;\n    uVar2 = 0xc;\n  }\n  uVar1 = param_1[1];\n  bVar5 = uVar1 % uVar4 != 0;\n  if (bVar5) {\n    uVar3 = gettext("reloc section size %zu is not a multiple of reloc size %d\n");\n    FUN_001bd150(param_2,uVar3,uVar1,uVar2);\n  }\n  return !bVar5;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (if_statement "if (param_3 == -1) {\n    return false;\n  }" if (parenthesized_expression "(param_3 == -1)" ( (binary_expression "param_3 == -1" identifier == number_literal) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (if_statement "if (param_3 == 0) {\n    return true;\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    return true;\n  }" { (return_statement "return true;" return true ;) })) (expression_statement "uVar2 = FUN_001bd320(param_2,param_3,param_1 + 1,0);" (assignment_expression "uVar2 = FUN_001bd320(param_2,param_3,param_1 + 1,0)" identifier = (call_expression "FUN_001bd320(param_2,param_3,param_1 + 1,0)" identifier (argument_list "(param_2,param_3,param_1 + 1,0)" ( identifier , identifier , (binary_expression "param_1 + 1" identifier + number_literal) , number_literal )))) ;) (expression_statement "*param_1 = uVar2;" (assignment_expression "*param_1 = uVar2" (pointer_expression "*param_1" * identifier) = identifier) ;) (if_statement "if (param_4 == 9) {\n    *(undefined4 *)(param_1 + 3) = 8;\n    uVar4 = 8;\n    uVar2 = 8;\n  }\n  else {\n    if (param_4 != 4) {\n                    \n      FUN_0017c650("../../gold/reloc.cc",0x5fd,"initialize");\n    }\n    *(undefined4 *)(param_1 + 3) = 0xc;\n    uVar4 = 0xc;\n    uVar2 = 0xc;\n  }" if (parenthesized_expression "(param_4 == 9)" ( (binary_expression "param_4 == 9" identifier == number_literal) )) (compound_statement "{\n    *(undefined4 *)(param_1 + 3) = 8;\n    uVar4 = 8;\n    uVar2 = 8;\n  }" { (expression_statement "*(undefined4 *)(param_1 + 3) = 8;" (assignment_expression "*(undefined4 *)(param_1 + 3) = 8" (pointer_expression "*(undefined4 *)(param_1 + 3)" * (cast_expression "(undefined4 *)(param_1 + 3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar4 = 8;" (assignment_expression "uVar4 = 8" identifier = number_literal) ;) (expression_statement "uVar2 = 8;" (assignment_expression "uVar2 = 8" identifier = number_literal) ;) }) (else_clause "else {\n    if (param_4 != 4) {\n                    \n      FUN_0017c650("../../gold/reloc.cc",0x5fd,"initialize");\n    }\n    *(undefined4 *)(param_1 + 3) = 0xc;\n    uVar4 = 0xc;\n    uVar2 = 0xc;\n  }" else (compound_statement "{\n    if (param_4 != 4) {\n                    \n      FUN_0017c650("../../gold/reloc.cc",0x5fd,"initialize");\n    }\n    *(undefined4 *)(param_1 + 3) = 0xc;\n    uVar4 = 0xc;\n    uVar2 = 0xc;\n  }" { (if_statement "if (param_4 != 4) {\n                    \n      FUN_0017c650("../../gold/reloc.cc",0x5fd,"initialize");\n    }" if (parenthesized_expression "(param_4 != 4)" ( (binary_expression "param_4 != 4" identifier != number_literal) )) (compound_statement "{\n                    \n      FUN_0017c650("../../gold/reloc.cc",0x5fd,"initialize");\n    }" { (expression_statement "FUN_0017c650("../../gold/reloc.cc",0x5fd,"initialize");" (call_expression "FUN_0017c650("../../gold/reloc.cc",0x5fd,"initialize")" identifier (argument_list "("../../gold/reloc.cc",0x5fd,"initialize")" ( (string_literal ""../../gold/reloc.cc"" " string_content ") , number_literal , (string_literal ""initialize"" " string_content ") ))) ;) })) (expression_statement "*(undefined4 *)(param_1 + 3) = 0xc;" (assignment_expression "*(undefined4 *)(param_1 + 3) = 0xc" (pointer_expression "*(undefined4 *)(param_1 + 3)" * (cast_expression "(undefined4 *)(param_1 + 3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar4 = 0xc;" (assignment_expression "uVar4 = 0xc" identifier = number_literal) ;) (expression_statement "uVar2 = 0xc;" (assignment_expression "uVar2 = 0xc" identifier = number_literal) ;) }))) (expression_statement "uVar1 = param_1[1];" (assignment_expression "uVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "bVar5 = uVar1 % uVar4 != 0;" (assignment_expression "bVar5 = uVar1 % uVar4 != 0" identifier = (binary_expression "uVar1 % uVar4 != 0" (binary_expression "uVar1 % uVar4" identifier % identifier) != number_literal)) ;) (if_statement "if (bVar5) {\n    uVar3 = gettext("reloc section size %zu is not a multiple of reloc size %d\n");\n    FUN_001bd150(param_2,uVar3,uVar1,uVar2);\n  }" if (parenthesized_expression "(bVar5)" ( identifier )) (compound_statement "{\n    uVar3 = gettext("reloc section size %zu is not a multiple of reloc size %d\n");\n    FUN_001bd150(param_2,uVar3,uVar1,uVar2);\n  }" { (expression_statement "uVar3 = gettext("reloc section size %zu is not a multiple of reloc size %d\n");" (assignment_expression "uVar3 = gettext("reloc section size %zu is not a multiple of reloc size %d\n")" identifier = (call_expression "gettext("reloc section size %zu is not a multiple of reloc size %d\n")" identifier (argument_list "("reloc section size %zu is not a multiple of reloc size %d\n")" ( (string_literal ""reloc section size %zu is not a multiple of reloc size %d\n"" " string_content escape_sequence ") )))) ;) (expression_statement "FUN_001bd150(param_2,uVar3,uVar1,uVar2);" (call_expression "FUN_001bd150(param_2,uVar3,uVar1,uVar2)" identifier (argument_list "(param_2,uVar3,uVar1,uVar2)" ( identifier , identifier , identifier , identifier ))) ;) })) (return_statement "return !bVar5;" return (unary_expression "!bVar5" ! identifier) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return BOOL ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return BOOL ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT + LIT) , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT % IDENT) != LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) })) (return_statement return (unary_expression ! IDENT) ;) })))
(function_definition "bool FUN_00245520(undefined8 *param_1,undefined8 param_2,int param_3,int param_4)\n\n{\n  ulong uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  ulong uVar4;\n  bool bVar5;\n  \n  if (param_3 == -1) {\n    return false;\n  }\n  if (param_3 == 0) {\n    return true;\n  }\n  uVar2 = FUN_001bd320(param_2,param_3,param_1 + 1,0);\n  *param_1 = uVar2;\n  if (param_4 == 9) {\n    *(undefined4 *)(param_1 + 3) = 8;\n    uVar4 = 8;\n    uVar2 = 8;\n  }\n  else {\n    if (param_4 != 4) {\n                    \n      FUN_0017c650("../../gold/reloc.cc",0x5fd,"initialize");\n    }\n    *(undefined4 *)(param_1 + 3) = 0xc;\n    uVar4 = 0xc;\n    uVar2 = 0xc;\n  }\n  uVar1 = param_1[1];\n  bVar5 = uVar1 % uVar4 != 0;\n  if (bVar5) {\n    uVar3 = gettext("reloc section size %zu is not a multiple of reloc size %d\n");\n    FUN_001bd150(param_2,uVar3,uVar1,uVar2);\n  }\n  return !bVar5;\n}" (primitive_type "bool") (function_declarator "FUN_00245520(undefined8 *param_1,undefined8 param_2,int param_3,int param_4)" (identifier "FUN_00245520") (parameter_list "(undefined8 *param_1,undefined8 param_2,int param_3,int param_4)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) () ")"))) (compound_statement "{\n  ulong uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  ulong uVar4;\n  bool bVar5;\n  \n  if (param_3 == -1) {\n    return false;\n  }\n  if (param_3 == 0) {\n    return true;\n  }\n  uVar2 = FUN_001bd320(param_2,param_3,param_1 + 1,0);\n  *param_1 = uVar2;\n  if (param_4 == 9) {\n    *(undefined4 *)(param_1 + 3) = 8;\n    uVar4 = 8;\n    uVar2 = 8;\n  }\n  else {\n    if (param_4 != 4) {\n                    \n      FUN_0017c650("../../gold/reloc.cc",0x5fd,"initialize");\n    }\n    *(undefined4 *)(param_1 + 3) = 0xc;\n    uVar4 = 0xc;\n    uVar2 = 0xc;\n  }\n  uVar1 = param_1[1];\n  bVar5 = uVar1 % uVar4 != 0;\n  if (bVar5) {\n    uVar3 = gettext("reloc section size %zu is not a multiple of reloc size %d\n");\n    FUN_001bd150(param_2,uVar3,uVar1,uVar2);\n  }\n  return !bVar5;\n}" ({ "{") (declaration "ulong uVar1;" (type_identifier "ulong") (identifier "uVar1") (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "undefined8 uVar3;" (type_identifier "undefined8") (identifier "uVar3") (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (declaration "bool bVar5;" (primitive_type "bool") (identifier "bVar5") (; ";")) (if_statement "if (param_3 == -1) {\n    return false;\n  }" (if "if") (parenthesized_expression "(param_3 == -1)" (( "(") (binary_expression "param_3 == -1" (identifier "param_3") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n    return false;\n  }" ({ "{") (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (if_statement "if (param_3 == 0) {\n    return true;\n  }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return true;\n  }" ({ "{") (return_statement "return true;" (return "return") (true "true") (; ";")) (} "}"))) (expression_statement "uVar2 = FUN_001bd320(param_2,param_3,param_1 + 1,0);" (assignment_expression "uVar2 = FUN_001bd320(param_2,param_3,param_1 + 1,0)" (identifier "uVar2") (= "=") (call_expression "FUN_001bd320(param_2,param_3,param_1 + 1,0)" (identifier "FUN_001bd320") (argument_list "(param_2,param_3,param_1 + 1,0)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "*param_1 = uVar2;" (assignment_expression "*param_1 = uVar2" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar2")) (; ";")) (if_statement "if (param_4 == 9) {\n    *(undefined4 *)(param_1 + 3) = 8;\n    uVar4 = 8;\n    uVar2 = 8;\n  }\n  else {\n    if (param_4 != 4) {\n                    \n      FUN_0017c650("../../gold/reloc.cc",0x5fd,"initialize");\n    }\n    *(undefined4 *)(param_1 + 3) = 0xc;\n    uVar4 = 0xc;\n    uVar2 = 0xc;\n  }" (if "if") (parenthesized_expression "(param_4 == 9)" (( "(") (binary_expression "param_4 == 9" (identifier "param_4") (== "==") (number_literal "9")) () ")")) (compound_statement "{\n    *(undefined4 *)(param_1 + 3) = 8;\n    uVar4 = 8;\n    uVar2 = 8;\n  }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 3) = 8;" (assignment_expression "*(undefined4 *)(param_1 + 3) = 8" (pointer_expression "*(undefined4 *)(param_1 + 3)" (* "*") (cast_expression "(undefined4 *)(param_1 + 3)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 3)" (( "(") (binary_expression "param_1 + 3" (identifier "param_1") (+ "+") (number_literal "3")) () ")")))) (= "=") (number_literal "8")) (; ";")) (expression_statement "uVar4 = 8;" (assignment_expression "uVar4 = 8" (identifier "uVar4") (= "=") (number_literal "8")) (; ";")) (expression_statement "uVar2 = 8;" (assignment_expression "uVar2 = 8" (identifier "uVar2") (= "=") (number_literal "8")) (; ";")) (} "}")) (else_clause "else {\n    if (param_4 != 4) {\n                    \n      FUN_0017c650("../../gold/reloc.cc",0x5fd,"initialize");\n    }\n    *(undefined4 *)(param_1 + 3) = 0xc;\n    uVar4 = 0xc;\n    uVar2 = 0xc;\n  }" (else "else") (compound_statement "{\n    if (param_4 != 4) {\n                    \n      FUN_0017c650("../../gold/reloc.cc",0x5fd,"initialize");\n    }\n    *(undefined4 *)(param_1 + 3) = 0xc;\n    uVar4 = 0xc;\n    uVar2 = 0xc;\n  }" ({ "{") (if_statement "if (param_4 != 4) {\n                    \n      FUN_0017c650("../../gold/reloc.cc",0x5fd,"initialize");\n    }" (if "if") (parenthesized_expression "(param_4 != 4)" (( "(") (binary_expression "param_4 != 4" (identifier "param_4") (!= "!=") (number_literal "4")) () ")")) (compound_statement "{\n                    \n      FUN_0017c650("../../gold/reloc.cc",0x5fd,"initialize");\n    }" ({ "{") (expression_statement "FUN_0017c650("../../gold/reloc.cc",0x5fd,"initialize");" (call_expression "FUN_0017c650("../../gold/reloc.cc",0x5fd,"initialize")" (identifier "FUN_0017c650") (argument_list "("../../gold/reloc.cc",0x5fd,"initialize")" (( "(") (string_literal ""../../gold/reloc.cc"" (" """) (string_content "../../gold/reloc.cc") (" """)) (, ",") (number_literal "0x5fd") (, ",") (string_literal ""initialize"" (" """) (string_content "initialize") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(param_1 + 3) = 0xc;" (assignment_expression "*(undefined4 *)(param_1 + 3) = 0xc" (pointer_expression "*(undefined4 *)(param_1 + 3)" (* "*") (cast_expression "(undefined4 *)(param_1 + 3)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 3)" (( "(") (binary_expression "param_1 + 3" (identifier "param_1") (+ "+") (number_literal "3")) () ")")))) (= "=") (number_literal "0xc")) (; ";")) (expression_statement "uVar4 = 0xc;" (assignment_expression "uVar4 = 0xc" (identifier "uVar4") (= "=") (number_literal "0xc")) (; ";")) (expression_statement "uVar2 = 0xc;" (assignment_expression "uVar2 = 0xc" (identifier "uVar2") (= "=") (number_literal "0xc")) (; ";")) (} "}")))) (expression_statement "uVar1 = param_1[1];" (assignment_expression "uVar1 = param_1[1]" (identifier "uVar1") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "bVar5 = uVar1 % uVar4 != 0;" (assignment_expression "bVar5 = uVar1 % uVar4 != 0" (identifier "bVar5") (= "=") (binary_expression "uVar1 % uVar4 != 0" (binary_expression "uVar1 % uVar4" (identifier "uVar1") (% "%") (identifier "uVar4")) (!= "!=") (number_literal "0"))) (; ";")) (if_statement "if (bVar5) {\n    uVar3 = gettext("reloc section size %zu is not a multiple of reloc size %d\n");\n    FUN_001bd150(param_2,uVar3,uVar1,uVar2);\n  }" (if "if") (parenthesized_expression "(bVar5)" (( "(") (identifier "bVar5") () ")")) (compound_statement "{\n    uVar3 = gettext("reloc section size %zu is not a multiple of reloc size %d\n");\n    FUN_001bd150(param_2,uVar3,uVar1,uVar2);\n  }" ({ "{") (expression_statement "uVar3 = gettext("reloc section size %zu is not a multiple of reloc size %d\n");" (assignment_expression "uVar3 = gettext("reloc section size %zu is not a multiple of reloc size %d\n")" (identifier "uVar3") (= "=") (call_expression "gettext("reloc section size %zu is not a multiple of reloc size %d\n")" (identifier "gettext") (argument_list "("reloc section size %zu is not a multiple of reloc size %d\n")" (( "(") (string_literal ""reloc section size %zu is not a multiple of reloc size %d\n"" (" """) (string_content "reloc section size %zu is not a multiple of reloc size %d") (escape_sequence "\n") (" """)) () ")")))) (; ";")) (expression_statement "FUN_001bd150(param_2,uVar3,uVar1,uVar2);" (call_expression "FUN_001bd150(param_2,uVar3,uVar1,uVar2)" (identifier "FUN_001bd150") (argument_list "(param_2,uVar3,uVar1,uVar2)" (( "(") (identifier "param_2") (, ",") (identifier "uVar3") (, ",") (identifier "uVar1") (, ",") (identifier "uVar2") () ")"))) (; ";")) (} "}"))) (return_statement "return !bVar5;" (return "return") (unary_expression "!bVar5" (! "!") (identifier "bVar5")) (; ";")) (} "}")))

/* DWARF original prototype: bool initialize(Track_relocs<32,_true> * this, Object * object, uint
   reloc_shndx, uint reloc_type) */

bool __thiscall
gold::Track_relocs<32,_true>::initialize
          (Track_relocs<32,_true> *this,Object *object,uint var_1,uint var_3)

{
  type_3 var_5;
  type_1 *puVar2;
  char *format;
  type_2 uVar3;
  type_3 var_6;
  bool bVar5;
  
  if (var_1 == 0xffffffff) {
    return false;
  }
  if (var_1 == 0) {
    return true;
  }
  puVar2 = Object::var_2(object,var_1,&this->len_,false);
  this->prelocs_ = puVar2;
  if (var_3 == 9) {
    this->reloc_size_ = 8;
    var_6 = 8;
    uVar3 = 8;
  }
  else {
    if (var_3 != 4) {
                    /* WARNING: Subroutine does not return */
      var_4("../../gold/reloc.cc",0x5fd,"initialize");
    }
    this->reloc_size_ = 0xc;
    var_6 = 0xc;
    uVar3 = 0xc;
  }
  var_5 = this->len_;
  bVar5 = var_5 % var_6 != 0;
  if (bVar5) {
    format = (char *)var_7("reloc section size %zu is not a multiple of reloc size %d\n");
    Object::var_8(object,format,var_5,uVar3);
  }
  return !bVar5;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (false)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (true)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (binary_expression left: (identifier) right: (number_literal)) (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content) (escape_sequence)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier)))))) (return_statement (unary_expression argument: (identifier))))))

bool MASKED(undefined8 *param_1,undefined8 param_2,int param_3,int param_4)

{
  ulong uVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  ulong uVar4;
  bool bVar5;
  
  if (param_3 == -1) {
    return false;
  }
  if (param_3 == 0) {
    return true;
  }
  uVar2 = FUN_001bd320(param_2,param_3,param_1 + 1,0);
  *param_1 = uVar2;
  if (param_4 == 9) {
    *(undefined4 *)(param_1 + 3) = 8;
    uVar4 = 8;
    uVar2 = 8;
  }
  else {
    if (param_4 != 4) {
                    /* WARNING: Subroutine does not return */
      FUN_0017c650("../../gold/reloc.cc",0x5fd,"initialize");
    }
    *(undefined4 *)(param_1 + 3) = 0xc;
    uVar4 = 0xc;
    uVar2 = 0xc;
  }
  uVar1 = param_1[1];
  bVar5 = uVar1 % uVar4 != 0;
  if (bVar5) {
    uVar3 = gettext("reloc section size %zu is not a multiple of reloc size %d\n");
    FUN_001bd150(param_2,uVar3,uVar1,uVar2);
  }
  return !bVar5;
}

