
/* DWARF original prototype: bool read_attributes(Dwarf_die * this) */

bool __thiscall gold::Dwarf_die::read_attributes(Dwarf_die *this)

{
  bool bVar1;
  
  if (this->attributes_read_ == false) {
    bVar1 = read_attributes(this);
    return bVar1;
  }
  return this->attributes_read_;
}



uint FUN_001beb90(int param_1)

{
  uint uVar1;
  
  if (*(byte *)(param_1 + 0x38) == 0) {
    uVar1 = FUN_001bdca0();
    return uVar1;
  }
  return (uint)*(byte *)(param_1 + 0x38);
}


MOV EAX,dword ptr [ESP + 0x4]
MOVZX EDX,byte ptr [EAX + 0x38]
TEST DL,DL
JNZ 0x001beba8
JMP 0x001bdca0
MOV EAX,EDX
RET
(translation_unit "uint FUN_001beb90(int param_1)\n\n{\n  uint uVar1;\n  \n  if (*(byte *)(param_1 + 0x38) == 0) {\n    uVar1 = FUN_001bdca0();\n    return uVar1;\n  }\n  return (uint)*(byte *)(param_1 + 0x38);\n}\n\n" (function_definition "uint FUN_001beb90(int param_1)\n\n{\n  uint uVar1;\n  \n  if (*(byte *)(param_1 + 0x38) == 0) {\n    uVar1 = FUN_001bdca0();\n    return uVar1;\n  }\n  return (uint)*(byte *)(param_1 + 0x38);\n}" type_identifier (function_declarator "FUN_001beb90(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  \n  if (*(byte *)(param_1 + 0x38) == 0) {\n    uVar1 = FUN_001bdca0();\n    return uVar1;\n  }\n  return (uint)*(byte *)(param_1 + 0x38);\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (if_statement "if (*(byte *)(param_1 + 0x38) == 0) {\n    uVar1 = FUN_001bdca0();\n    return uVar1;\n  }" if (parenthesized_expression "(*(byte *)(param_1 + 0x38) == 0)" ( (binary_expression "*(byte *)(param_1 + 0x38) == 0" (pointer_expression "*(byte *)(param_1 + 0x38)" * (cast_expression "(byte *)(param_1 + 0x38)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    uVar1 = FUN_001bdca0();\n    return uVar1;\n  }" { (expression_statement "uVar1 = FUN_001bdca0();" (assignment_expression "uVar1 = FUN_001bdca0()" identifier = (call_expression "FUN_001bdca0()" identifier (argument_list "()" ( )))) ;) (return_statement "return uVar1;" return identifier ;) })) (return_statement "return (uint)*(byte *)(param_1 + 0x38);" return (binary_expression "(uint)*(byte *)(param_1 + 0x38)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + 0x38)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) ;) })))
(translation_unit "/* DWARF original prototype: bool read_attributes(Dwarf_die * this) */\n\nbool __thiscall gold::Dwarf_die::read_attributes(Dwarf_die *this)\n\n{\n  bool bVar1;\n  \n  if (this->attributes_read_ == false) {\n    bVar1 = read_attributes(this);\n    return bVar1;\n  }\n  return this->attributes_read_;\n}\n\n" comment (function_definition "bool __thiscall gold::Dwarf_die::read_attributes(Dwarf_die *this)\n\n{\n  bool bVar1;\n  \n  if (this->attributes_read_ == false) {\n    bVar1 = read_attributes(this);\n    return bVar1;\n  }\n  return this->attributes_read_;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Dwarf_die::" identifier : : identifier : :) (function_declarator "read_attributes(Dwarf_die *this)" identifier (parameter_list "(Dwarf_die *this)" ( (parameter_declaration "Dwarf_die *this" type_identifier (pointer_declarator "*this" * identifier)) ))) (compound_statement "{\n  bool bVar1;\n  \n  if (this->attributes_read_ == false) {\n    bVar1 = read_attributes(this);\n    return bVar1;\n  }\n  return this->attributes_read_;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (if_statement "if (this->attributes_read_ == false) {\n    bVar1 = read_attributes(this);\n    return bVar1;\n  }" if (parenthesized_expression "(this->attributes_read_ == false)" ( (binary_expression "this->attributes_read_ == false" (field_expression "this->attributes_read_" identifier -> field_identifier) == false) )) (compound_statement "{\n    bVar1 = read_attributes(this);\n    return bVar1;\n  }" { (expression_statement "bVar1 = read_attributes(this);" (assignment_expression "bVar1 = read_attributes(this)" identifier = (call_expression "read_attributes(this)" identifier (argument_list "(this)" ( identifier )))) ;) (return_statement "return bVar1;" return identifier ;) })) (return_statement "return this->attributes_read_;" return (field_expression "this->attributes_read_" identifier -> field_identifier) ;) })))
(translation_unit "uint FUN_001beb90(int param_1)\n\n{\n  uint uVar1;\n  \n  if (*(byte *)(param_1 + 0x38) == 0) {\n    uVar1 = FUN_001bdca0();\n    return uVar1;\n  }\n  return (uint)*(byte *)(param_1 + 0x38);\n}\n\n" (function_definition "uint FUN_001beb90(int param_1)\n\n{\n  uint uVar1;\n  \n  if (*(byte *)(param_1 + 0x38) == 0) {\n    uVar1 = FUN_001bdca0();\n    return uVar1;\n  }\n  return (uint)*(byte *)(param_1 + 0x38);\n}" type_identifier (function_declarator "FUN_001beb90(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  \n  if (*(byte *)(param_1 + 0x38) == 0) {\n    uVar1 = FUN_001bdca0();\n    return uVar1;\n  }\n  return (uint)*(byte *)(param_1 + 0x38);\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (if_statement "if (*(byte *)(param_1 + 0x38) == 0) {\n    uVar1 = FUN_001bdca0();\n    return uVar1;\n  }" if (parenthesized_expression "(*(byte *)(param_1 + 0x38) == 0)" ( (binary_expression "*(byte *)(param_1 + 0x38) == 0" (pointer_expression "*(byte *)(param_1 + 0x38)" * (cast_expression "(byte *)(param_1 + 0x38)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    uVar1 = FUN_001bdca0();\n    return uVar1;\n  }" { (expression_statement "uVar1 = FUN_001bdca0();" (assignment_expression "uVar1 = FUN_001bdca0()" identifier = (call_expression "FUN_001bdca0()" identifier (argument_list "()" ( )))) ;) (return_statement "return uVar1;" return identifier ;) })) (return_statement "return (uint)*(byte *)(param_1 + 0x38);" return (binary_expression "(uint)*(byte *)(param_1 + 0x38)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(param_1 + 0x38)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (return_statement return IDENT ;) })) (return_statement return (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) })))
(function_definition "uint FUN_001beb90(int param_1)\n\n{\n  uint uVar1;\n  \n  if (*(byte *)(param_1 + 0x38) == 0) {\n    uVar1 = FUN_001bdca0();\n    return uVar1;\n  }\n  return (uint)*(byte *)(param_1 + 0x38);\n}" (type_identifier "uint") (function_declarator "FUN_001beb90(int param_1)" (identifier "FUN_001beb90") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  uint uVar1;\n  \n  if (*(byte *)(param_1 + 0x38) == 0) {\n    uVar1 = FUN_001bdca0();\n    return uVar1;\n  }\n  return (uint)*(byte *)(param_1 + 0x38);\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (if_statement "if (*(byte *)(param_1 + 0x38) == 0) {\n    uVar1 = FUN_001bdca0();\n    return uVar1;\n  }" (if "if") (parenthesized_expression "(*(byte *)(param_1 + 0x38) == 0)" (( "(") (binary_expression "*(byte *)(param_1 + 0x38) == 0" (pointer_expression "*(byte *)(param_1 + 0x38)" (* "*") (cast_expression "(byte *)(param_1 + 0x38)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar1 = FUN_001bdca0();\n    return uVar1;\n  }" ({ "{") (expression_statement "uVar1 = FUN_001bdca0();" (assignment_expression "uVar1 = FUN_001bdca0()" (identifier "uVar1") (= "=") (call_expression "FUN_001bdca0()" (identifier "FUN_001bdca0") (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return uVar1;" (return "return") (identifier "uVar1") (; ";")) (} "}"))) (return_statement "return (uint)*(byte *)(param_1 + 0x38);" (return "return") (binary_expression "(uint)*(byte *)(param_1 + 0x38)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(param_1 + 0x38)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) (; ";")) (} "}")))

/* DWARF original prototype: bool read_attributes(Dwarf_die * this) */

bool __thiscall gold::type_1::function_1(type_1 *this)

{
  bool bVar1;
  
  if (this->attributes_read_ == false) {
    bVar1 = function_1(this);
    return bVar1;
  }
  return this->attributes_read_;
}


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

uint MASKED(int param_1)

{
  uint uVar1;
  
  if (*(byte *)(param_1 + 0x38) == 0) {
    uVar1 = FUN_001bdca0();
    return uVar1;
  }
  return (uint)*(byte *)(param_1 + 0x38);
}

