
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* DWARF original prototype: Valtype read_from_pointer<64>(Dwarf_info_reader * this, uchar * *
   source) */

Valtype __thiscall
gold::Dwarf_info_reader::read_from_pointer<64>(Dwarf_info_reader *this,uchar **source)

{
  uint uVar1;
  _func_int_varargs **pp_Var2;
  int iVar3;
  uint uVar4;
  uint uVar5;
  uchar *puVar6;
  uint in_a2;
  _func_int_varargs *p_Var7;
  
  pp_Var2 = (this->object_->super_Object)._vptr_Object;
  p_Var7 = pp_Var2[3];
  if (p_Var7 == (_func_int_varargs *)PTR_is_big_endian_004c2950) {
    iVar3 = (*pp_Var2[0x3a])();
  }
  else {
    iVar3 = (*p_Var7)();
  }
  puVar6 = *source;
  uVar4 = (uint)puVar6 & 3;
  uVar5 = *(uint *)(puVar6 + 4);
  uVar1 = (uint)(puVar6 + 3) & 3;
  uVar4 = (*(int *)(puVar6 + -uVar4) << uVar4 * 8 | in_a2 & 0xffffffffU >> (4 - uVar4) * 8) &
          -1 << (uVar1 + 1) * 8 | *(uint *)(puVar6 + 3 + -uVar1) >> (3 - uVar1) * 8;
  if (iVar3 != 0) {
    *source = puVar6 + 8;
    return CONCAT44(uVar4,uVar5);
  }
  *source = puVar6 + 8;
  return CONCAT44((((uVar5 >> 0x10) << 0x18 | (uVar5 >> 0x18) << 0x10) >> 0x10) +
                  ((uVar5 & 0xff) << 8 | uVar5 >> 8 & 0xff) * 0x10000,
                  (((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10) +
                  ((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff) * 0x10000);
}



/* elfcpp::Valtype_base<64>::Valtype gold::Dwarf_info_reader::read_from_pointer<64>(unsigned char
   const**) */

undefined8 gold::Dwarf_info_reader::read_from_pointer<64>(uchar **param_1)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint *in_a1;
  uint in_a2;
  code *pcVar6;
  
  pcVar6 = *(code **)(*(int *)param_1[2] + 0xc);
  if (pcVar6 == (code *)PTR_is_big_endian_004c2950) {
    iVar2 = (**(code **)(*(int *)param_1[2] + 0xe8))();
  }
  else {
    iVar2 = (*pcVar6)();
  }
  uVar5 = *in_a1;
  uVar3 = uVar5 & 3;
  uVar4 = *(uint *)(uVar5 + 4);
  uVar1 = uVar5 + 3 & 3;
  uVar3 = (*(int *)(uVar5 - uVar3) << uVar3 * 8 | in_a2 & 0xffffffffU >> (4 - uVar3) * 8) &
          -1 << (uVar1 + 1) * 8 | *(uint *)((uVar5 + 3) - uVar1) >> (3 - uVar1) * 8;
  if (iVar2 != 0) {
    *in_a1 = uVar5 + 8;
    return CONCAT44(uVar3,uVar4);
  }
  *in_a1 = uVar5 + 8;
  return CONCAT44((((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10) +
                  ((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff) * 0x10000,
                  (((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10) +
                  ((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff) * 0x10000);
}


lui gp,0x1e
addiu gp,gp,0x1b88
addu gp,gp,t9
lw a0,0x8(a0)
addiu sp,sp,-0x20
lw v1,-0x68f0(gp)
sw gp,0x10(sp)
lw v0,0x0(a0)
sw s0,0x18(sp)
sw ra,0x1c(sp)
lw t9,0xc(v0)
bne t9,v1,0x002e775c
_or s0,a1,zero
lw t9,0xe8(v0)
jalr t9
_nop
or a1,v0,zero
lw a0,0x0(s0)
lwl a2,0x0(a0)
lwl v1,0x4(a0)
or v0,a2,zero
lwr v1,0x7(a0)
beq a1,zero,0x002e7730
_lwr v0,0x3(a0)
lw ra,0x1c(sp)
addiu a0,a0,0x8
sw a0,0x0(s0)
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x20
wsbh a1,v0
lw ra,0x1c(sp)
wsbh v0,v1
rotr a1,a1,0x10
addiu a0,a0,0x8
rotr v0,v0,0x10
sw a0,0x0(s0)
or v1,a1,zero
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x20
jalr t9
_nop
b 0x002e76fc
_or a1,v0,zero
(translation_unit "/* elfcpp::Valtype_base<64>::Valtype gold::Dwarf_info_reader::read_from_pointer<64>(unsigned char\n   const**) */\n\nundefined8 gold::Dwarf_info_reader::read_from_pointer<64>(uchar **param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint *in_a1;\n  uint in_a2;\n  code *pcVar6;\n  \n  pcVar6 = *(code **)(*(int *)param_1[2] + 0xc);\n  if (pcVar6 == (code *)PTR_is_big_endian_004c2950) {\n    iVar2 = (**(code **)(*(int *)param_1[2] + 0xe8))();\n  }\n  else {\n    iVar2 = (*pcVar6)();\n  }\n  uVar5 = *in_a1;\n  uVar3 = uVar5 & 3;\n  uVar4 = *(uint *)(uVar5 + 4);\n  uVar1 = uVar5 + 3 & 3;\n  uVar3 = (*(int *)(uVar5 - uVar3) << uVar3 * 8 | in_a2 & 0xffffffffU >> (4 - uVar3) * 8) &\n          -1 << (uVar1 + 1) * 8 | *(uint *)((uVar5 + 3) - uVar1) >> (3 - uVar1) * 8;\n  if (iVar2 != 0) {\n    *in_a1 = uVar5 + 8;\n    return CONCAT44(uVar3,uVar4);\n  }\n  *in_a1 = uVar5 + 8;\n  return CONCAT44((((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff) * 0x10000,\n                  (((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff) * 0x10000);\n}\n\n" comment (ERROR "undefined8 gold::Dwarf_info_reader::read_from_pointer<64>(uchar **param_1)" type_identifier (ERROR "gold::Dwarf_info_reader::" identifier : : identifier : :) identifier < (binary_expression "64>(uchar **param_1)" number_literal > (parenthesized_expression "(uchar **param_1)" ( (binary_expression "uchar **param_1" identifier * (pointer_expression "*param_1" * identifier)) )))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint *in_a1;\n  uint in_a2;\n  code *pcVar6;\n  \n  pcVar6 = *(code **)(*(int *)param_1[2] + 0xc);\n  if (pcVar6 == (code *)PTR_is_big_endian_004c2950) {\n    iVar2 = (**(code **)(*(int *)param_1[2] + 0xe8))();\n  }\n  else {\n    iVar2 = (*pcVar6)();\n  }\n  uVar5 = *in_a1;\n  uVar3 = uVar5 & 3;\n  uVar4 = *(uint *)(uVar5 + 4);\n  uVar1 = uVar5 + 3 & 3;\n  uVar3 = (*(int *)(uVar5 - uVar3) << uVar3 * 8 | in_a2 & 0xffffffffU >> (4 - uVar3) * 8) &\n          -1 << (uVar1 + 1) * 8 | *(uint *)((uVar5 + 3) - uVar1) >> (3 - uVar1) * 8;\n  if (iVar2 != 0) {\n    *in_a1 = uVar5 + 8;\n    return CONCAT44(uVar3,uVar4);\n  }\n  *in_a1 = uVar5 + 8;\n  return CONCAT44((((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff) * 0x10000,\n                  (((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff) * 0x10000);\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint *in_a1;" type_identifier (pointer_declarator "*in_a1" * identifier) ;) (declaration "uint in_a2;" type_identifier identifier ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (expression_statement "pcVar6 = *(code **)(*(int *)param_1[2] + 0xc);" (assignment_expression "pcVar6 = *(code **)(*(int *)param_1[2] + 0xc)" identifier = (pointer_expression "*(code **)(*(int *)param_1[2] + 0xc)" * (cast_expression "(code **)(*(int *)param_1[2] + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_1[2] + 0xc)" ( (binary_expression "*(int *)param_1[2] + 0xc" (pointer_expression "*(int *)param_1[2]" * (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) + number_literal) ))))) ;) (if_statement "if (pcVar6 == (code *)PTR_is_big_endian_004c2950) {\n    iVar2 = (**(code **)(*(int *)param_1[2] + 0xe8))();\n  }\n  else {\n    iVar2 = (*pcVar6)();\n  }" if (parenthesized_expression "(pcVar6 == (code *)PTR_is_big_endian_004c2950)" ( (binary_expression "pcVar6 == (code *)PTR_is_big_endian_004c2950" identifier == (cast_expression "(code *)PTR_is_big_endian_004c2950" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    iVar2 = (**(code **)(*(int *)param_1[2] + 0xe8))();\n  }" { (expression_statement "iVar2 = (**(code **)(*(int *)param_1[2] + 0xe8))();" (assignment_expression "iVar2 = (**(code **)(*(int *)param_1[2] + 0xe8))()" identifier = (call_expression "(**(code **)(*(int *)param_1[2] + 0xe8))()" (parenthesized_expression "(**(code **)(*(int *)param_1[2] + 0xe8))" ( (pointer_expression "**(code **)(*(int *)param_1[2] + 0xe8)" * (pointer_expression "*(code **)(*(int *)param_1[2] + 0xe8)" * (cast_expression "(code **)(*(int *)param_1[2] + 0xe8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_1[2] + 0xe8)" ( (binary_expression "*(int *)param_1[2] + 0xe8" (pointer_expression "*(int *)param_1[2]" * (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) + number_literal) ))))) )) (argument_list "()" ( )))) ;) }) (else_clause "else {\n    iVar2 = (*pcVar6)();\n  }" else (compound_statement "{\n    iVar2 = (*pcVar6)();\n  }" { (expression_statement "iVar2 = (*pcVar6)();" (assignment_expression "iVar2 = (*pcVar6)()" identifier = (call_expression "(*pcVar6)()" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "()" ( )))) ;) }))) (expression_statement "uVar5 = *in_a1;" (assignment_expression "uVar5 = *in_a1" identifier = (pointer_expression "*in_a1" * identifier)) ;) (expression_statement "uVar3 = uVar5 & 3;" (assignment_expression "uVar3 = uVar5 & 3" identifier = (binary_expression "uVar5 & 3" identifier & number_literal)) ;) (expression_statement "uVar4 = *(uint *)(uVar5 + 4);" (assignment_expression "uVar4 = *(uint *)(uVar5 + 4)" identifier = (pointer_expression "*(uint *)(uVar5 + 4)" * (cast_expression "(uint *)(uVar5 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 4)" ( (binary_expression "uVar5 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = uVar5 + 3 & 3;" (assignment_expression "uVar1 = uVar5 + 3 & 3" identifier = (binary_expression "uVar5 + 3 & 3" (binary_expression "uVar5 + 3" identifier + number_literal) & number_literal)) ;) (expression_statement "uVar3 = (*(int *)(uVar5 - uVar3) << uVar3 * 8 | in_a2 & 0xffffffffU >> (4 - uVar3) * 8) &\n          -1 << (uVar1 + 1) * 8 | *(uint *)((uVar5 + 3) - uVar1) >> (3 - uVar1) * 8;" (assignment_expression "uVar3 = (*(int *)(uVar5 - uVar3) << uVar3 * 8 | in_a2 & 0xffffffffU >> (4 - uVar3) * 8) &\n          -1 << (uVar1 + 1) * 8 | *(uint *)((uVar5 + 3) - uVar1) >> (3 - uVar1) * 8" identifier = (binary_expression "(*(int *)(uVar5 - uVar3) << uVar3 * 8 | in_a2 & 0xffffffffU >> (4 - uVar3) * 8) &\n          -1 << (uVar1 + 1) * 8 | *(uint *)((uVar5 + 3) - uVar1) >> (3 - uVar1) * 8" (binary_expression "(*(int *)(uVar5 - uVar3) << uVar3 * 8 | in_a2 & 0xffffffffU >> (4 - uVar3) * 8) &\n          -1 << (uVar1 + 1) * 8" (parenthesized_expression "(*(int *)(uVar5 - uVar3) << uVar3 * 8 | in_a2 & 0xffffffffU >> (4 - uVar3) * 8)" ( (binary_expression "*(int *)(uVar5 - uVar3) << uVar3 * 8 | in_a2 & 0xffffffffU >> (4 - uVar3) * 8" (binary_expression "*(int *)(uVar5 - uVar3) << uVar3 * 8" (pointer_expression "*(int *)(uVar5 - uVar3)" * (cast_expression "(int *)(uVar5 - uVar3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 - uVar3)" ( (binary_expression "uVar5 - uVar3" identifier - identifier) )))) << (binary_expression "uVar3 * 8" identifier * number_literal)) | (binary_expression "in_a2 & 0xffffffffU >> (4 - uVar3) * 8" identifier & (binary_expression "0xffffffffU >> (4 - uVar3) * 8" number_literal >> (binary_expression "(4 - uVar3) * 8" (parenthesized_expression "(4 - uVar3)" ( (binary_expression "4 - uVar3" number_literal - identifier) )) * number_literal)))) )) & (binary_expression "-1 << (uVar1 + 1) * 8" number_literal << (binary_expression "(uVar1 + 1) * 8" (parenthesized_expression "(uVar1 + 1)" ( (binary_expression "uVar1 + 1" identifier + number_literal) )) * number_literal))) | (binary_expression "*(uint *)((uVar5 + 3) - uVar1) >> (3 - uVar1) * 8" (pointer_expression "*(uint *)((uVar5 + 3) - uVar1)" * (cast_expression "(uint *)((uVar5 + 3) - uVar1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar5 + 3) - uVar1)" ( (binary_expression "(uVar5 + 3) - uVar1" (parenthesized_expression "(uVar5 + 3)" ( (binary_expression "uVar5 + 3" identifier + number_literal) )) - identifier) )))) >> (binary_expression "(3 - uVar1) * 8" (parenthesized_expression "(3 - uVar1)" ( (binary_expression "3 - uVar1" number_literal - identifier) )) * number_literal)))) ;) (if_statement "if (iVar2 != 0) {\n    *in_a1 = uVar5 + 8;\n    return CONCAT44(uVar3,uVar4);\n  }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    *in_a1 = uVar5 + 8;\n    return CONCAT44(uVar3,uVar4);\n  }" { (expression_statement "*in_a1 = uVar5 + 8;" (assignment_expression "*in_a1 = uVar5 + 8" (pointer_expression "*in_a1" * identifier) = (binary_expression "uVar5 + 8" identifier + number_literal)) ;) (return_statement "return CONCAT44(uVar3,uVar4);" return (call_expression "CONCAT44(uVar3,uVar4)" identifier (argument_list "(uVar3,uVar4)" ( identifier , identifier ))) ;) })) (expression_statement "*in_a1 = uVar5 + 8;" (assignment_expression "*in_a1 = uVar5 + 8" (pointer_expression "*in_a1" * identifier) = (binary_expression "uVar5 + 8" identifier + number_literal)) ;) (return_statement "return CONCAT44((((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff) * 0x10000,\n                  (((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff) * 0x10000);" return (call_expression "CONCAT44((((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff) * 0x10000,\n                  (((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff) * 0x10000)" identifier (argument_list "((((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff) * 0x10000,\n                  (((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff) * 0x10000)" ( (binary_expression "(((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff) * 0x10000" (parenthesized_expression "(((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10)" ( (binary_expression "((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10" (parenthesized_expression "((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10)" ( (binary_expression "(uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10" (binary_expression "(uVar4 >> 0x10) << 0x18" (parenthesized_expression "(uVar4 >> 0x10)" ( (binary_expression "uVar4 >> 0x10" identifier >> number_literal) )) << number_literal) | (binary_expression "(uVar4 >> 0x18) << 0x10" (parenthesized_expression "(uVar4 >> 0x18)" ( (binary_expression "uVar4 >> 0x18" identifier >> number_literal) )) << number_literal)) )) >> number_literal) )) + (binary_expression "((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff) * 0x10000" (parenthesized_expression "((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff)" ( (binary_expression "(uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff" (binary_expression "(uVar4 & 0xff) << 8" (parenthesized_expression "(uVar4 & 0xff)" ( (binary_expression "uVar4 & 0xff" identifier & number_literal) )) << number_literal) | (binary_expression "uVar4 >> 8 & 0xff" (binary_expression "uVar4 >> 8" identifier >> number_literal) & number_literal)) )) * number_literal)) , (binary_expression "(((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff) * 0x10000" (parenthesized_expression "(((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10)" ( (binary_expression "((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10" (parenthesized_expression "((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10)" ( (binary_expression "(uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10" (binary_expression "(uVar3 >> 0x10) << 0x18" (parenthesized_expression "(uVar3 >> 0x10)" ( (binary_expression "uVar3 >> 0x10" identifier >> number_literal) )) << number_literal) | (binary_expression "(uVar3 >> 0x18) << 0x10" (parenthesized_expression "(uVar3 >> 0x18)" ( (binary_expression "uVar3 >> 0x18" identifier >> number_literal) )) << number_literal)) )) >> number_literal) )) + (binary_expression "((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff) * 0x10000" (parenthesized_expression "((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff)" ( (binary_expression "(uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff" (binary_expression "(uVar3 & 0xff) << 8" (parenthesized_expression "(uVar3 & 0xff)" ( (binary_expression "uVar3 & 0xff" identifier & number_literal) )) << number_literal) | (binary_expression "uVar3 >> 8 & 0xff" (binary_expression "uVar3 >> 8" identifier >> number_literal) & number_literal)) )) * number_literal)) ))) ;) }))
(translation_unit "/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */\n/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */\n/* DWARF original prototype: Valtype read_from_pointer<64>(Dwarf_info_reader * this, uchar * *\n   source) */\n\nValtype __thiscall\ngold::Dwarf_info_reader::read_from_pointer<64>(Dwarf_info_reader *this,uchar **source)\n\n{\n  uint uVar1;\n  _func_int_varargs **pp_Var2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  uchar *puVar6;\n  uint in_a2;\n  _func_int_varargs *p_Var7;\n  \n  pp_Var2 = (this->object_->super_Object)._vptr_Object;\n  p_Var7 = pp_Var2[3];\n  if (p_Var7 == (_func_int_varargs *)PTR_is_big_endian_004c2950) {\n    iVar3 = (*pp_Var2[0x3a])();\n  }\n  else {\n    iVar3 = (*p_Var7)();\n  }\n  puVar6 = *source;\n  uVar4 = (uint)puVar6 & 3;\n  uVar5 = *(uint *)(puVar6 + 4);\n  uVar1 = (uint)(puVar6 + 3) & 3;\n  uVar4 = (*(int *)(puVar6 + -uVar4) << uVar4 * 8 | in_a2 & 0xffffffffU >> (4 - uVar4) * 8) &\n          -1 << (uVar1 + 1) * 8 | *(uint *)(puVar6 + 3 + -uVar1) >> (3 - uVar1) * 8;\n  if (iVar3 != 0) {\n    *source = puVar6 + 8;\n    return CONCAT44(uVar4,uVar5);\n  }\n  *source = puVar6 + 8;\n  return CONCAT44((((uVar5 >> 0x10) << 0x18 | (uVar5 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar5 & 0xff) << 8 | uVar5 >> 8 & 0xff) * 0x10000,\n                  (((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff) * 0x10000);\n}\n\n" comment comment comment (declaration "Valtype __thiscall\ngold::Dwarf_info_reader::read_from_pointer<64>(Dwarf_info_reader *this,uchar **source)\n\n{\n  uint uVar1;" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Dwarf_info_reader::read_from_pointer<64>(Dwarf_info_reader" identifier : : identifier : : identifier < number_literal > ( identifier) (pointer_declarator "*this" * identifier) , (ERROR "uchar **source)\n\n{\n  uint" identifier (pointer_declarator "**source" * (pointer_declarator "*source" * identifier)) ) { identifier) identifier ;) (declaration "_func_int_varargs **pp_Var2;" type_identifier (pointer_declarator "**pp_Var2" * (pointer_declarator "*pp_Var2" * identifier)) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uchar *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint in_a2;" type_identifier identifier ;) (declaration "_func_int_varargs *p_Var7;" type_identifier (pointer_declarator "*p_Var7" * identifier) ;) (expression_statement "pp_Var2 = (this->object_->super_Object)._vptr_Object;" (assignment_expression "pp_Var2 = (this->object_->super_Object)._vptr_Object" identifier = (field_expression "(this->object_->super_Object)._vptr_Object" (parenthesized_expression "(this->object_->super_Object)" ( (field_expression "this->object_->super_Object" (field_expression "this->object_" identifier -> field_identifier) -> field_identifier) )) . field_identifier)) ;) (expression_statement "p_Var7 = pp_Var2[3];" (assignment_expression "p_Var7 = pp_Var2[3]" identifier = (subscript_expression "pp_Var2[3]" identifier [ number_literal ])) ;) (if_statement "if (p_Var7 == (_func_int_varargs *)PTR_is_big_endian_004c2950) {\n    iVar3 = (*pp_Var2[0x3a])();\n  }\n  else {\n    iVar3 = (*p_Var7)();\n  }" if (parenthesized_expression "(p_Var7 == (_func_int_varargs *)PTR_is_big_endian_004c2950)" ( (binary_expression "p_Var7 == (_func_int_varargs *)PTR_is_big_endian_004c2950" identifier == (cast_expression "(_func_int_varargs *)PTR_is_big_endian_004c2950" ( (type_descriptor "_func_int_varargs *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    iVar3 = (*pp_Var2[0x3a])();\n  }" { (expression_statement "iVar3 = (*pp_Var2[0x3a])();" (assignment_expression "iVar3 = (*pp_Var2[0x3a])()" identifier = (call_expression "(*pp_Var2[0x3a])()" (parenthesized_expression "(*pp_Var2[0x3a])" ( (pointer_expression "*pp_Var2[0x3a]" * (subscript_expression "pp_Var2[0x3a]" identifier [ number_literal ])) )) (argument_list "()" ( )))) ;) }) (else_clause "else {\n    iVar3 = (*p_Var7)();\n  }" else (compound_statement "{\n    iVar3 = (*p_Var7)();\n  }" { (expression_statement "iVar3 = (*p_Var7)();" (assignment_expression "iVar3 = (*p_Var7)()" identifier = (call_expression "(*p_Var7)()" (parenthesized_expression "(*p_Var7)" ( (pointer_expression "*p_Var7" * identifier) )) (argument_list "()" ( )))) ;) }))) (expression_statement "puVar6 = *source;" (assignment_expression "puVar6 = *source" identifier = (pointer_expression "*source" * identifier)) ;) (expression_statement "uVar4 = (uint)puVar6 & 3;" (assignment_expression "uVar4 = (uint)puVar6 & 3" identifier = (binary_expression "(uint)puVar6 & 3" (cast_expression "(uint)puVar6" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar5 = *(uint *)(puVar6 + 4);" (assignment_expression "uVar5 = *(uint *)(puVar6 + 4)" identifier = (pointer_expression "*(uint *)(puVar6 + 4)" * (cast_expression "(uint *)(puVar6 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 4)" ( (binary_expression "puVar6 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = (uint)(puVar6 + 3) & 3;" (assignment_expression "uVar1 = (uint)(puVar6 + 3) & 3" identifier = (binary_expression "(uint)(puVar6 + 3) & 3" (call_expression "(uint)(puVar6 + 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar6 + 3)" ( (binary_expression "puVar6 + 3" identifier + number_literal) ))) & number_literal)) ;) (expression_statement "uVar4 = (*(int *)(puVar6 + -uVar4) << uVar4 * 8 | in_a2 & 0xffffffffU >> (4 - uVar4) * 8) &\n          -1 << (uVar1 + 1) * 8 | *(uint *)(puVar6 + 3 + -uVar1) >> (3 - uVar1) * 8;" (assignment_expression "uVar4 = (*(int *)(puVar6 + -uVar4) << uVar4 * 8 | in_a2 & 0xffffffffU >> (4 - uVar4) * 8) &\n          -1 << (uVar1 + 1) * 8 | *(uint *)(puVar6 + 3 + -uVar1) >> (3 - uVar1) * 8" identifier = (binary_expression "(*(int *)(puVar6 + -uVar4) << uVar4 * 8 | in_a2 & 0xffffffffU >> (4 - uVar4) * 8) &\n          -1 << (uVar1 + 1) * 8 | *(uint *)(puVar6 + 3 + -uVar1) >> (3 - uVar1) * 8" (binary_expression "(*(int *)(puVar6 + -uVar4) << uVar4 * 8 | in_a2 & 0xffffffffU >> (4 - uVar4) * 8) &\n          -1 << (uVar1 + 1) * 8" (parenthesized_expression "(*(int *)(puVar6 + -uVar4) << uVar4 * 8 | in_a2 & 0xffffffffU >> (4 - uVar4) * 8)" ( (binary_expression "*(int *)(puVar6 + -uVar4) << uVar4 * 8 | in_a2 & 0xffffffffU >> (4 - uVar4) * 8" (binary_expression "*(int *)(puVar6 + -uVar4) << uVar4 * 8" (pointer_expression "*(int *)(puVar6 + -uVar4)" * (cast_expression "(int *)(puVar6 + -uVar4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -uVar4)" ( (binary_expression "puVar6 + -uVar4" identifier + (unary_expression "-uVar4" - identifier)) )))) << (binary_expression "uVar4 * 8" identifier * number_literal)) | (binary_expression "in_a2 & 0xffffffffU >> (4 - uVar4) * 8" identifier & (binary_expression "0xffffffffU >> (4 - uVar4) * 8" number_literal >> (binary_expression "(4 - uVar4) * 8" (parenthesized_expression "(4 - uVar4)" ( (binary_expression "4 - uVar4" number_literal - identifier) )) * number_literal)))) )) & (binary_expression "-1 << (uVar1 + 1) * 8" number_literal << (binary_expression "(uVar1 + 1) * 8" (parenthesized_expression "(uVar1 + 1)" ( (binary_expression "uVar1 + 1" identifier + number_literal) )) * number_literal))) | (binary_expression "*(uint *)(puVar6 + 3 + -uVar1) >> (3 - uVar1) * 8" (pointer_expression "*(uint *)(puVar6 + 3 + -uVar1)" * (cast_expression "(uint *)(puVar6 + 3 + -uVar1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 3 + -uVar1)" ( (binary_expression "puVar6 + 3 + -uVar1" (binary_expression "puVar6 + 3" identifier + number_literal) + (unary_expression "-uVar1" - identifier)) )))) >> (binary_expression "(3 - uVar1) * 8" (parenthesized_expression "(3 - uVar1)" ( (binary_expression "3 - uVar1" number_literal - identifier) )) * number_literal)))) ;) (if_statement "if (iVar3 != 0) {\n    *source = puVar6 + 8;\n    return CONCAT44(uVar4,uVar5);\n  }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    *source = puVar6 + 8;\n    return CONCAT44(uVar4,uVar5);\n  }" { (expression_statement "*source = puVar6 + 8;" (assignment_expression "*source = puVar6 + 8" (pointer_expression "*source" * identifier) = (binary_expression "puVar6 + 8" identifier + number_literal)) ;) (return_statement "return CONCAT44(uVar4,uVar5);" return (call_expression "CONCAT44(uVar4,uVar5)" identifier (argument_list "(uVar4,uVar5)" ( identifier , identifier ))) ;) })) (expression_statement "*source = puVar6 + 8;" (assignment_expression "*source = puVar6 + 8" (pointer_expression "*source" * identifier) = (binary_expression "puVar6 + 8" identifier + number_literal)) ;) (return_statement "return CONCAT44((((uVar5 >> 0x10) << 0x18 | (uVar5 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar5 & 0xff) << 8 | uVar5 >> 8 & 0xff) * 0x10000,\n                  (((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff) * 0x10000);" return (call_expression "CONCAT44((((uVar5 >> 0x10) << 0x18 | (uVar5 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar5 & 0xff) << 8 | uVar5 >> 8 & 0xff) * 0x10000,\n                  (((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff) * 0x10000)" identifier (argument_list "((((uVar5 >> 0x10) << 0x18 | (uVar5 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar5 & 0xff) << 8 | uVar5 >> 8 & 0xff) * 0x10000,\n                  (((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff) * 0x10000)" ( (binary_expression "(((uVar5 >> 0x10) << 0x18 | (uVar5 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar5 & 0xff) << 8 | uVar5 >> 8 & 0xff) * 0x10000" (parenthesized_expression "(((uVar5 >> 0x10) << 0x18 | (uVar5 >> 0x18) << 0x10) >> 0x10)" ( (binary_expression "((uVar5 >> 0x10) << 0x18 | (uVar5 >> 0x18) << 0x10) >> 0x10" (parenthesized_expression "((uVar5 >> 0x10) << 0x18 | (uVar5 >> 0x18) << 0x10)" ( (binary_expression "(uVar5 >> 0x10) << 0x18 | (uVar5 >> 0x18) << 0x10" (binary_expression "(uVar5 >> 0x10) << 0x18" (parenthesized_expression "(uVar5 >> 0x10)" ( (binary_expression "uVar5 >> 0x10" identifier >> number_literal) )) << number_literal) | (binary_expression "(uVar5 >> 0x18) << 0x10" (parenthesized_expression "(uVar5 >> 0x18)" ( (binary_expression "uVar5 >> 0x18" identifier >> number_literal) )) << number_literal)) )) >> number_literal) )) + (binary_expression "((uVar5 & 0xff) << 8 | uVar5 >> 8 & 0xff) * 0x10000" (parenthesized_expression "((uVar5 & 0xff) << 8 | uVar5 >> 8 & 0xff)" ( (binary_expression "(uVar5 & 0xff) << 8 | uVar5 >> 8 & 0xff" (binary_expression "(uVar5 & 0xff) << 8" (parenthesized_expression "(uVar5 & 0xff)" ( (binary_expression "uVar5 & 0xff" identifier & number_literal) )) << number_literal) | (binary_expression "uVar5 >> 8 & 0xff" (binary_expression "uVar5 >> 8" identifier >> number_literal) & number_literal)) )) * number_literal)) , (binary_expression "(((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff) * 0x10000" (parenthesized_expression "(((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10)" ( (binary_expression "((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10" (parenthesized_expression "((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10)" ( (binary_expression "(uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10" (binary_expression "(uVar4 >> 0x10) << 0x18" (parenthesized_expression "(uVar4 >> 0x10)" ( (binary_expression "uVar4 >> 0x10" identifier >> number_literal) )) << number_literal) | (binary_expression "(uVar4 >> 0x18) << 0x10" (parenthesized_expression "(uVar4 >> 0x18)" ( (binary_expression "uVar4 >> 0x18" identifier >> number_literal) )) << number_literal)) )) >> number_literal) )) + (binary_expression "((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff) * 0x10000" (parenthesized_expression "((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff)" ( (binary_expression "(uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff" (binary_expression "(uVar4 & 0xff) << 8" (parenthesized_expression "(uVar4 & 0xff)" ( (binary_expression "uVar4 & 0xff" identifier & number_literal) )) << number_literal) | (binary_expression "uVar4 >> 8 & 0xff" (binary_expression "uVar4 >> 8" identifier >> number_literal) & number_literal)) )) * number_literal)) ))) ;) (ERROR "}" }))
(translation_unit "undefined8 gold::Dwarf_info_reader::read_from_pointer<64>(uchar **param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint *in_a1;\n  uint in_a2;\n  code *pcVar6;\n  \n  pcVar6 = *(code **)(*(int *)param_1[2] + 0xc);\n  if (pcVar6 == (code *)PTR_is_big_endian_004c2950) {\n    iVar2 = (**(code **)(*(int *)param_1[2] + 0xe8))();\n  }\n  else {\n    iVar2 = (*pcVar6)();\n  }\n  uVar5 = *in_a1;\n  uVar3 = uVar5 & 3;\n  uVar4 = *(uint *)(uVar5 + 4);\n  uVar1 = uVar5 + 3 & 3;\n  uVar3 = (*(int *)(uVar5 - uVar3) << uVar3 * 8 | in_a2 & 0xffffffffU >> (4 - uVar3) * 8) &\n          -1 << (uVar1 + 1) * 8 | *(uint *)((uVar5 + 3) - uVar1) >> (3 - uVar1) * 8;\n  if (iVar2 != 0) {\n    *in_a1 = uVar5 + 8;\n    return CONCAT44(uVar3,uVar4);\n  }\n  *in_a1 = uVar5 + 8;\n  return CONCAT44((((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff) * 0x10000,\n                  (((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff) * 0x10000);\n}\n\n" (ERROR "undefined8 gold::Dwarf_info_reader::read_from_pointer<64>(uchar **param_1)" type_identifier (ERROR "gold::Dwarf_info_reader::" identifier : : identifier : :) identifier < (binary_expression "64>(uchar **param_1)" number_literal > (parenthesized_expression "(uchar **param_1)" ( (binary_expression "uchar **param_1" identifier * (pointer_expression "*param_1" * identifier)) )))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint *in_a1;\n  uint in_a2;\n  code *pcVar6;\n  \n  pcVar6 = *(code **)(*(int *)param_1[2] + 0xc);\n  if (pcVar6 == (code *)PTR_is_big_endian_004c2950) {\n    iVar2 = (**(code **)(*(int *)param_1[2] + 0xe8))();\n  }\n  else {\n    iVar2 = (*pcVar6)();\n  }\n  uVar5 = *in_a1;\n  uVar3 = uVar5 & 3;\n  uVar4 = *(uint *)(uVar5 + 4);\n  uVar1 = uVar5 + 3 & 3;\n  uVar3 = (*(int *)(uVar5 - uVar3) << uVar3 * 8 | in_a2 & 0xffffffffU >> (4 - uVar3) * 8) &\n          -1 << (uVar1 + 1) * 8 | *(uint *)((uVar5 + 3) - uVar1) >> (3 - uVar1) * 8;\n  if (iVar2 != 0) {\n    *in_a1 = uVar5 + 8;\n    return CONCAT44(uVar3,uVar4);\n  }\n  *in_a1 = uVar5 + 8;\n  return CONCAT44((((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff) * 0x10000,\n                  (((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff) * 0x10000);\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint *in_a1;" type_identifier (pointer_declarator "*in_a1" * identifier) ;) (declaration "uint in_a2;" type_identifier identifier ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (expression_statement "pcVar6 = *(code **)(*(int *)param_1[2] + 0xc);" (assignment_expression "pcVar6 = *(code **)(*(int *)param_1[2] + 0xc)" identifier = (pointer_expression "*(code **)(*(int *)param_1[2] + 0xc)" * (cast_expression "(code **)(*(int *)param_1[2] + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_1[2] + 0xc)" ( (binary_expression "*(int *)param_1[2] + 0xc" (pointer_expression "*(int *)param_1[2]" * (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) + number_literal) ))))) ;) (if_statement "if (pcVar6 == (code *)PTR_is_big_endian_004c2950) {\n    iVar2 = (**(code **)(*(int *)param_1[2] + 0xe8))();\n  }\n  else {\n    iVar2 = (*pcVar6)();\n  }" if (parenthesized_expression "(pcVar6 == (code *)PTR_is_big_endian_004c2950)" ( (binary_expression "pcVar6 == (code *)PTR_is_big_endian_004c2950" identifier == (cast_expression "(code *)PTR_is_big_endian_004c2950" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    iVar2 = (**(code **)(*(int *)param_1[2] + 0xe8))();\n  }" { (expression_statement "iVar2 = (**(code **)(*(int *)param_1[2] + 0xe8))();" (assignment_expression "iVar2 = (**(code **)(*(int *)param_1[2] + 0xe8))()" identifier = (call_expression "(**(code **)(*(int *)param_1[2] + 0xe8))()" (parenthesized_expression "(**(code **)(*(int *)param_1[2] + 0xe8))" ( (pointer_expression "**(code **)(*(int *)param_1[2] + 0xe8)" * (pointer_expression "*(code **)(*(int *)param_1[2] + 0xe8)" * (cast_expression "(code **)(*(int *)param_1[2] + 0xe8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_1[2] + 0xe8)" ( (binary_expression "*(int *)param_1[2] + 0xe8" (pointer_expression "*(int *)param_1[2]" * (cast_expression "(int *)param_1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) + number_literal) ))))) )) (argument_list "()" ( )))) ;) }) (else_clause "else {\n    iVar2 = (*pcVar6)();\n  }" else (compound_statement "{\n    iVar2 = (*pcVar6)();\n  }" { (expression_statement "iVar2 = (*pcVar6)();" (assignment_expression "iVar2 = (*pcVar6)()" identifier = (call_expression "(*pcVar6)()" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "()" ( )))) ;) }))) (expression_statement "uVar5 = *in_a1;" (assignment_expression "uVar5 = *in_a1" identifier = (pointer_expression "*in_a1" * identifier)) ;) (expression_statement "uVar3 = uVar5 & 3;" (assignment_expression "uVar3 = uVar5 & 3" identifier = (binary_expression "uVar5 & 3" identifier & number_literal)) ;) (expression_statement "uVar4 = *(uint *)(uVar5 + 4);" (assignment_expression "uVar4 = *(uint *)(uVar5 + 4)" identifier = (pointer_expression "*(uint *)(uVar5 + 4)" * (cast_expression "(uint *)(uVar5 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 4)" ( (binary_expression "uVar5 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = uVar5 + 3 & 3;" (assignment_expression "uVar1 = uVar5 + 3 & 3" identifier = (binary_expression "uVar5 + 3 & 3" (binary_expression "uVar5 + 3" identifier + number_literal) & number_literal)) ;) (expression_statement "uVar3 = (*(int *)(uVar5 - uVar3) << uVar3 * 8 | in_a2 & 0xffffffffU >> (4 - uVar3) * 8) &\n          -1 << (uVar1 + 1) * 8 | *(uint *)((uVar5 + 3) - uVar1) >> (3 - uVar1) * 8;" (assignment_expression "uVar3 = (*(int *)(uVar5 - uVar3) << uVar3 * 8 | in_a2 & 0xffffffffU >> (4 - uVar3) * 8) &\n          -1 << (uVar1 + 1) * 8 | *(uint *)((uVar5 + 3) - uVar1) >> (3 - uVar1) * 8" identifier = (binary_expression "(*(int *)(uVar5 - uVar3) << uVar3 * 8 | in_a2 & 0xffffffffU >> (4 - uVar3) * 8) &\n          -1 << (uVar1 + 1) * 8 | *(uint *)((uVar5 + 3) - uVar1) >> (3 - uVar1) * 8" (binary_expression "(*(int *)(uVar5 - uVar3) << uVar3 * 8 | in_a2 & 0xffffffffU >> (4 - uVar3) * 8) &\n          -1 << (uVar1 + 1) * 8" (parenthesized_expression "(*(int *)(uVar5 - uVar3) << uVar3 * 8 | in_a2 & 0xffffffffU >> (4 - uVar3) * 8)" ( (binary_expression "*(int *)(uVar5 - uVar3) << uVar3 * 8 | in_a2 & 0xffffffffU >> (4 - uVar3) * 8" (binary_expression "*(int *)(uVar5 - uVar3) << uVar3 * 8" (pointer_expression "*(int *)(uVar5 - uVar3)" * (cast_expression "(int *)(uVar5 - uVar3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 - uVar3)" ( (binary_expression "uVar5 - uVar3" identifier - identifier) )))) << (binary_expression "uVar3 * 8" identifier * number_literal)) | (binary_expression "in_a2 & 0xffffffffU >> (4 - uVar3) * 8" identifier & (binary_expression "0xffffffffU >> (4 - uVar3) * 8" number_literal >> (binary_expression "(4 - uVar3) * 8" (parenthesized_expression "(4 - uVar3)" ( (binary_expression "4 - uVar3" number_literal - identifier) )) * number_literal)))) )) & (binary_expression "-1 << (uVar1 + 1) * 8" number_literal << (binary_expression "(uVar1 + 1) * 8" (parenthesized_expression "(uVar1 + 1)" ( (binary_expression "uVar1 + 1" identifier + number_literal) )) * number_literal))) | (binary_expression "*(uint *)((uVar5 + 3) - uVar1) >> (3 - uVar1) * 8" (pointer_expression "*(uint *)((uVar5 + 3) - uVar1)" * (cast_expression "(uint *)((uVar5 + 3) - uVar1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar5 + 3) - uVar1)" ( (binary_expression "(uVar5 + 3) - uVar1" (parenthesized_expression "(uVar5 + 3)" ( (binary_expression "uVar5 + 3" identifier + number_literal) )) - identifier) )))) >> (binary_expression "(3 - uVar1) * 8" (parenthesized_expression "(3 - uVar1)" ( (binary_expression "3 - uVar1" number_literal - identifier) )) * number_literal)))) ;) (if_statement "if (iVar2 != 0) {\n    *in_a1 = uVar5 + 8;\n    return CONCAT44(uVar3,uVar4);\n  }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    *in_a1 = uVar5 + 8;\n    return CONCAT44(uVar3,uVar4);\n  }" { (expression_statement "*in_a1 = uVar5 + 8;" (assignment_expression "*in_a1 = uVar5 + 8" (pointer_expression "*in_a1" * identifier) = (binary_expression "uVar5 + 8" identifier + number_literal)) ;) (return_statement "return CONCAT44(uVar3,uVar4);" return (call_expression "CONCAT44(uVar3,uVar4)" identifier (argument_list "(uVar3,uVar4)" ( identifier , identifier ))) ;) })) (expression_statement "*in_a1 = uVar5 + 8;" (assignment_expression "*in_a1 = uVar5 + 8" (pointer_expression "*in_a1" * identifier) = (binary_expression "uVar5 + 8" identifier + number_literal)) ;) (return_statement "return CONCAT44((((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff) * 0x10000,\n                  (((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff) * 0x10000);" return (call_expression "CONCAT44((((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff) * 0x10000,\n                  (((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff) * 0x10000)" identifier (argument_list "((((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff) * 0x10000,\n                  (((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff) * 0x10000)" ( (binary_expression "(((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff) * 0x10000" (parenthesized_expression "(((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10)" ( (binary_expression "((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10" (parenthesized_expression "((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10)" ( (binary_expression "(uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10" (binary_expression "(uVar4 >> 0x10) << 0x18" (parenthesized_expression "(uVar4 >> 0x10)" ( (binary_expression "uVar4 >> 0x10" identifier >> number_literal) )) << number_literal) | (binary_expression "(uVar4 >> 0x18) << 0x10" (parenthesized_expression "(uVar4 >> 0x18)" ( (binary_expression "uVar4 >> 0x18" identifier >> number_literal) )) << number_literal)) )) >> number_literal) )) + (binary_expression "((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff) * 0x10000" (parenthesized_expression "((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff)" ( (binary_expression "(uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff" (binary_expression "(uVar4 & 0xff) << 8" (parenthesized_expression "(uVar4 & 0xff)" ( (binary_expression "uVar4 & 0xff" identifier & number_literal) )) << number_literal) | (binary_expression "uVar4 >> 8 & 0xff" (binary_expression "uVar4 >> 8" identifier >> number_literal) & number_literal)) )) * number_literal)) , (binary_expression "(((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff) * 0x10000" (parenthesized_expression "(((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10)" ( (binary_expression "((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10" (parenthesized_expression "((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10)" ( (binary_expression "(uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10" (binary_expression "(uVar3 >> 0x10) << 0x18" (parenthesized_expression "(uVar3 >> 0x10)" ( (binary_expression "uVar3 >> 0x10" identifier >> number_literal) )) << number_literal) | (binary_expression "(uVar3 >> 0x18) << 0x10" (parenthesized_expression "(uVar3 >> 0x18)" ( (binary_expression "uVar3 >> 0x18" identifier >> number_literal) )) << number_literal)) )) >> number_literal) )) + (binary_expression "((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff) * 0x10000" (parenthesized_expression "((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff)" ( (binary_expression "(uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff" (binary_expression "(uVar3 & 0xff) << 8" (parenthesized_expression "(uVar3 & 0xff)" ( (binary_expression "uVar3 & 0xff" identifier & number_literal) )) << number_literal) | (binary_expression "uVar3 >> 8 & 0xff" (binary_expression "uVar3 >> 8" identifier >> number_literal) & number_literal)) )) * number_literal)) ))) ;) }))
(translation_unit (ERROR TYPE (ERROR IDENT : : IDENT : :) IDENT < (binary_expression LIT > (parenthesized_expression ( (binary_expression IDENT * (pointer_expression * IDENT)) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) + LIT) ))))) )) (argument_list ( )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) << (binary_expression IDENT * LIT)) | (binary_expression IDENT & (binary_expression LIT >> (binary_expression (parenthesized_expression ( (binary_expression LIT - IDENT) )) * LIT)))) )) & (binary_expression LIT << (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT))) | (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - IDENT) )))) >> (binary_expression (parenthesized_expression ( (binary_expression LIT - IDENT) )) * LIT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (return_statement return (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (return_statement return (call_expression IDENT (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) << LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) << LIT)) )) >> LIT) )) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT) | (binary_expression (binary_expression IDENT >> LIT) & LIT)) )) * LIT)) , (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) << LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) << LIT)) )) >> LIT) )) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT) | (binary_expression (binary_expression IDENT >> LIT) & LIT)) )) * LIT)) ))) ;) }))
(ERROR "undefined8 gold::Dwarf_info_reader::read_from_pointer<64>(uchar **param_1)" (type_identifier "undefined8") (ERROR "gold::Dwarf_info_reader::" (identifier "gold") (: ":") (: ":") (identifier "Dwarf_info_reader") (: ":") (: ":")) (identifier "read_from_pointer") (< "<") (binary_expression "64>(uchar **param_1)" (number_literal "64") (> ">") (parenthesized_expression "(uchar **param_1)" (( "(") (binary_expression "uchar **param_1" (identifier "uchar") (* "*") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) () ")")))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint *in_a1;\n  uint in_a2;\n  code *pcVar6;\n  \n  pcVar6 = *(code **)(*(int *)param_1[2] + 0xc);\n  if (pcVar6 == (code *)PTR_is_big_endian_004c2950) {\n    iVar2 = (**(code **)(*(int *)param_1[2] + 0xe8))();\n  }\n  else {\n    iVar2 = (*pcVar6)();\n  }\n  uVar5 = *in_a1;\n  uVar3 = uVar5 & 3;\n  uVar4 = *(uint *)(uVar5 + 4);\n  uVar1 = uVar5 + 3 & 3;\n  uVar3 = (*(int *)(uVar5 - uVar3) << uVar3 * 8 | in_a2 & 0xffffffffU >> (4 - uVar3) * 8) &\n          -1 << (uVar1 + 1) * 8 | *(uint *)((uVar5 + 3) - uVar1) >> (3 - uVar1) * 8;\n  if (iVar2 != 0) {\n    *in_a1 = uVar5 + 8;\n    return CONCAT44(uVar3,uVar4);\n  }\n  *in_a1 = uVar5 + 8;\n  return CONCAT44((((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff) * 0x10000,\n                  (((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff) * 0x10000);\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint *in_a1;" (type_identifier "uint") (pointer_declarator "*in_a1" (* "*") (identifier "in_a1")) (; ";")) (declaration "uint in_a2;" (type_identifier "uint") (identifier "in_a2") (; ";")) (declaration "code *pcVar6;" (type_identifier "code") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (expression_statement "pcVar6 = *(code **)(*(int *)param_1[2] + 0xc);" (assignment_expression "pcVar6 = *(code **)(*(int *)param_1[2] + 0xc)" (identifier "pcVar6") (= "=") (pointer_expression "*(code **)(*(int *)param_1[2] + 0xc)" (* "*") (cast_expression "(code **)(*(int *)param_1[2] + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)param_1[2] + 0xc)" (( "(") (binary_expression "*(int *)param_1[2] + 0xc" (pointer_expression "*(int *)param_1[2]" (* "*") (cast_expression "(int *)param_1[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (pcVar6 == (code *)PTR_is_big_endian_004c2950) {\n    iVar2 = (**(code **)(*(int *)param_1[2] + 0xe8))();\n  }\n  else {\n    iVar2 = (*pcVar6)();\n  }" (if "if") (parenthesized_expression "(pcVar6 == (code *)PTR_is_big_endian_004c2950)" (( "(") (binary_expression "pcVar6 == (code *)PTR_is_big_endian_004c2950" (identifier "pcVar6") (== "==") (cast_expression "(code *)PTR_is_big_endian_004c2950" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_is_big_endian_004c2950"))) () ")")) (compound_statement "{\n    iVar2 = (**(code **)(*(int *)param_1[2] + 0xe8))();\n  }" ({ "{") (expression_statement "iVar2 = (**(code **)(*(int *)param_1[2] + 0xe8))();" (assignment_expression "iVar2 = (**(code **)(*(int *)param_1[2] + 0xe8))()" (identifier "iVar2") (= "=") (call_expression "(**(code **)(*(int *)param_1[2] + 0xe8))()" (parenthesized_expression "(**(code **)(*(int *)param_1[2] + 0xe8))" (( "(") (pointer_expression "**(code **)(*(int *)param_1[2] + 0xe8)" (* "*") (pointer_expression "*(code **)(*(int *)param_1[2] + 0xe8)" (* "*") (cast_expression "(code **)(*(int *)param_1[2] + 0xe8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)param_1[2] + 0xe8)" (( "(") (binary_expression "*(int *)param_1[2] + 0xe8" (pointer_expression "*(int *)param_1[2]" (* "*") (cast_expression "(int *)param_1[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (+ "+") (number_literal "0xe8")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (else_clause "else {\n    iVar2 = (*pcVar6)();\n  }" (else "else") (compound_statement "{\n    iVar2 = (*pcVar6)();\n  }" ({ "{") (expression_statement "iVar2 = (*pcVar6)();" (assignment_expression "iVar2 = (*pcVar6)()" (identifier "iVar2") (= "=") (call_expression "(*pcVar6)()" (parenthesized_expression "(*pcVar6)" (( "(") (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")))) (expression_statement "uVar5 = *in_a1;" (assignment_expression "uVar5 = *in_a1" (identifier "uVar5") (= "=") (pointer_expression "*in_a1" (* "*") (identifier "in_a1"))) (; ";")) (expression_statement "uVar3 = uVar5 & 3;" (assignment_expression "uVar3 = uVar5 & 3" (identifier "uVar3") (= "=") (binary_expression "uVar5 & 3" (identifier "uVar5") (& "&") (number_literal "3"))) (; ";")) (expression_statement "uVar4 = *(uint *)(uVar5 + 4);" (assignment_expression "uVar4 = *(uint *)(uVar5 + 4)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(uVar5 + 4)" (* "*") (cast_expression "(uint *)(uVar5 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar5 + 4)" (( "(") (binary_expression "uVar5 + 4" (identifier "uVar5") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "uVar1 = uVar5 + 3 & 3;" (assignment_expression "uVar1 = uVar5 + 3 & 3" (identifier "uVar1") (= "=") (binary_expression "uVar5 + 3 & 3" (binary_expression "uVar5 + 3" (identifier "uVar5") (+ "+") (number_literal "3")) (& "&") (number_literal "3"))) (; ";")) (expression_statement "uVar3 = (*(int *)(uVar5 - uVar3) << uVar3 * 8 | in_a2 & 0xffffffffU >> (4 - uVar3) * 8) &\n          -1 << (uVar1 + 1) * 8 | *(uint *)((uVar5 + 3) - uVar1) >> (3 - uVar1) * 8;" (assignment_expression "uVar3 = (*(int *)(uVar5 - uVar3) << uVar3 * 8 | in_a2 & 0xffffffffU >> (4 - uVar3) * 8) &\n          -1 << (uVar1 + 1) * 8 | *(uint *)((uVar5 + 3) - uVar1) >> (3 - uVar1) * 8" (identifier "uVar3") (= "=") (binary_expression "(*(int *)(uVar5 - uVar3) << uVar3 * 8 | in_a2 & 0xffffffffU >> (4 - uVar3) * 8) &\n          -1 << (uVar1 + 1) * 8 | *(uint *)((uVar5 + 3) - uVar1) >> (3 - uVar1) * 8" (binary_expression "(*(int *)(uVar5 - uVar3) << uVar3 * 8 | in_a2 & 0xffffffffU >> (4 - uVar3) * 8) &\n          -1 << (uVar1 + 1) * 8" (parenthesized_expression "(*(int *)(uVar5 - uVar3) << uVar3 * 8 | in_a2 & 0xffffffffU >> (4 - uVar3) * 8)" (( "(") (binary_expression "*(int *)(uVar5 - uVar3) << uVar3 * 8 | in_a2 & 0xffffffffU >> (4 - uVar3) * 8" (binary_expression "*(int *)(uVar5 - uVar3) << uVar3 * 8" (pointer_expression "*(int *)(uVar5 - uVar3)" (* "*") (cast_expression "(int *)(uVar5 - uVar3)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar5 - uVar3)" (( "(") (binary_expression "uVar5 - uVar3" (identifier "uVar5") (- "-") (identifier "uVar3")) () ")")))) (<< "<<") (binary_expression "uVar3 * 8" (identifier "uVar3") (* "*") (number_literal "8"))) (| "|") (binary_expression "in_a2 & 0xffffffffU >> (4 - uVar3) * 8" (identifier "in_a2") (& "&") (binary_expression "0xffffffffU >> (4 - uVar3) * 8" (number_literal "0xffffffffU") (>> ">>") (binary_expression "(4 - uVar3) * 8" (parenthesized_expression "(4 - uVar3)" (( "(") (binary_expression "4 - uVar3" (number_literal "4") (- "-") (identifier "uVar3")) () ")")) (* "*") (number_literal "8"))))) () ")")) (& "&") (binary_expression "-1 << (uVar1 + 1) * 8" (number_literal "-1") (<< "<<") (binary_expression "(uVar1 + 1) * 8" (parenthesized_expression "(uVar1 + 1)" (( "(") (binary_expression "uVar1 + 1" (identifier "uVar1") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "8")))) (| "|") (binary_expression "*(uint *)((uVar5 + 3) - uVar1) >> (3 - uVar1) * 8" (pointer_expression "*(uint *)((uVar5 + 3) - uVar1)" (* "*") (cast_expression "(uint *)((uVar5 + 3) - uVar1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uVar5 + 3) - uVar1)" (( "(") (binary_expression "(uVar5 + 3) - uVar1" (parenthesized_expression "(uVar5 + 3)" (( "(") (binary_expression "uVar5 + 3" (identifier "uVar5") (+ "+") (number_literal "3")) () ")")) (- "-") (identifier "uVar1")) () ")")))) (>> ">>") (binary_expression "(3 - uVar1) * 8" (parenthesized_expression "(3 - uVar1)" (( "(") (binary_expression "3 - uVar1" (number_literal "3") (- "-") (identifier "uVar1")) () ")")) (* "*") (number_literal "8"))))) (; ";")) (if_statement "if (iVar2 != 0) {\n    *in_a1 = uVar5 + 8;\n    return CONCAT44(uVar3,uVar4);\n  }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    *in_a1 = uVar5 + 8;\n    return CONCAT44(uVar3,uVar4);\n  }" ({ "{") (expression_statement "*in_a1 = uVar5 + 8;" (assignment_expression "*in_a1 = uVar5 + 8" (pointer_expression "*in_a1" (* "*") (identifier "in_a1")) (= "=") (binary_expression "uVar5 + 8" (identifier "uVar5") (+ "+") (number_literal "8"))) (; ";")) (return_statement "return CONCAT44(uVar3,uVar4);" (return "return") (call_expression "CONCAT44(uVar3,uVar4)" (identifier "CONCAT44") (argument_list "(uVar3,uVar4)" (( "(") (identifier "uVar3") (, ",") (identifier "uVar4") () ")"))) (; ";")) (} "}"))) (expression_statement "*in_a1 = uVar5 + 8;" (assignment_expression "*in_a1 = uVar5 + 8" (pointer_expression "*in_a1" (* "*") (identifier "in_a1")) (= "=") (binary_expression "uVar5 + 8" (identifier "uVar5") (+ "+") (number_literal "8"))) (; ";")) (return_statement "return CONCAT44((((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff) * 0x10000,\n                  (((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff) * 0x10000);" (return "return") (call_expression "CONCAT44((((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff) * 0x10000,\n                  (((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff) * 0x10000)" (identifier "CONCAT44") (argument_list "((((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff) * 0x10000,\n                  (((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff) * 0x10000)" (( "(") (binary_expression "(((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff) * 0x10000" (parenthesized_expression "(((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10)" (( "(") (binary_expression "((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10" (parenthesized_expression "((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10)" (( "(") (binary_expression "(uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10" (binary_expression "(uVar4 >> 0x10) << 0x18" (parenthesized_expression "(uVar4 >> 0x10)" (( "(") (binary_expression "uVar4 >> 0x10" (identifier "uVar4") (>> ">>") (number_literal "0x10")) () ")")) (<< "<<") (number_literal "0x18")) (| "|") (binary_expression "(uVar4 >> 0x18) << 0x10" (parenthesized_expression "(uVar4 >> 0x18)" (( "(") (binary_expression "uVar4 >> 0x18" (identifier "uVar4") (>> ">>") (number_literal "0x18")) () ")")) (<< "<<") (number_literal "0x10"))) () ")")) (>> ">>") (number_literal "0x10")) () ")")) (+ "+") (binary_expression "((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff) * 0x10000" (parenthesized_expression "((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff)" (( "(") (binary_expression "(uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff" (binary_expression "(uVar4 & 0xff) << 8" (parenthesized_expression "(uVar4 & 0xff)" (( "(") (binary_expression "uVar4 & 0xff" (identifier "uVar4") (& "&") (number_literal "0xff")) () ")")) (<< "<<") (number_literal "8")) (| "|") (binary_expression "uVar4 >> 8 & 0xff" (binary_expression "uVar4 >> 8" (identifier "uVar4") (>> ">>") (number_literal "8")) (& "&") (number_literal "0xff"))) () ")")) (* "*") (number_literal "0x10000"))) (, ",") (binary_expression "(((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10) +\n                  ((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff) * 0x10000" (parenthesized_expression "(((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10)" (( "(") (binary_expression "((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10" (parenthesized_expression "((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10)" (( "(") (binary_expression "(uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10" (binary_expression "(uVar3 >> 0x10) << 0x18" (parenthesized_expression "(uVar3 >> 0x10)" (( "(") (binary_expression "uVar3 >> 0x10" (identifier "uVar3") (>> ">>") (number_literal "0x10")) () ")")) (<< "<<") (number_literal "0x18")) (| "|") (binary_expression "(uVar3 >> 0x18) << 0x10" (parenthesized_expression "(uVar3 >> 0x18)" (( "(") (binary_expression "uVar3 >> 0x18" (identifier "uVar3") (>> ">>") (number_literal "0x18")) () ")")) (<< "<<") (number_literal "0x10"))) () ")")) (>> ">>") (number_literal "0x10")) () ")")) (+ "+") (binary_expression "((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff) * 0x10000" (parenthesized_expression "((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff)" (( "(") (binary_expression "(uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff" (binary_expression "(uVar3 & 0xff) << 8" (parenthesized_expression "(uVar3 & 0xff)" (( "(") (binary_expression "uVar3 & 0xff" (identifier "uVar3") (& "&") (number_literal "0xff")) () ")")) (<< "<<") (number_literal "8")) (| "|") (binary_expression "uVar3 >> 8 & 0xff" (binary_expression "uVar3 >> 8" (identifier "uVar3") (>> ">>") (number_literal "8")) (& "&") (number_literal "0xff"))) () ")")) (* "*") (number_literal "0x10000"))) () ")"))) (; ";")) (} "}"))

/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* DWARF original prototype: Valtype read_from_pointer<64>(Dwarf_info_reader * this, uchar * *
   source) */

type_1 __thiscall
gold::Dwarf_info_reader::read_from_pointer<64>(Dwarf_info_reader *this,type_4 **source)

{
  type_3 var_5;
  type_2 **pp_Var2;
  int var_6;
  type_3 var_3;
  type_3 var_8;
  type_4 *var_2;
  type_3 var_4;
  type_2 *var_1;
  
  pp_Var2 = (this->object_->super_Object)._vptr_Object;
  var_1 = pp_Var2[3];
  if (var_1 == (type_2 *)PTR_is_big_endian_004c2950) {
    var_6 = (*pp_Var2[0x3a])();
  }
  else {
    var_6 = (*var_1)();
  }
  var_2 = *source;
  var_3 = (type_3)var_2 & 3;
  var_8 = *(type_3 *)(var_2 + 4);
  var_5 = (type_3)(var_2 + 3) & 3;
  var_3 = (*(int *)(var_2 + -var_3) << var_3 * 8 | var_4 & 0xffffffffU >> (4 - var_3) * 8) &
          -1 << (var_5 + 1) * 8 | *(type_3 *)(var_2 + 3 + -var_5) >> (3 - var_5) * 8;
  if (var_6 != 0) {
    *source = var_2 + 8;
    return var_7(var_3,var_8);
  }
  *source = var_2 + 8;
  return var_7((((var_8 >> 0x10) << 0x18 | (var_8 >> 0x18) << 0x10) >> 0x10) +
                  ((var_8 & 0xff) << 8 | var_8 >> 8 & 0xff) * 0x10000,
                  (((var_3 >> 0x10) << 0x18 | (var_3 >> 0x18) << 0x10) >> 0x10) +
                  ((var_3 & 0xff) << 8 | var_3 >> 8 & 0xff) * 0x10000);
}


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

/* elfcpp::Valtype_base<64>::Valtype gold::Dwarf_info_reader::MASKED(unsigned char
   const**) */

undefined8 gold::Dwarf_info_reader::MASKED(uchar **param_1)

{
  uint uVar1;
  int iVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint *in_a1;
  uint in_a2;
  code *pcVar6;
  
  pcVar6 = *(code **)(*(int *)param_1[2] + 0xc);
  if (pcVar6 == (code *)PTR_is_big_endian_004c2950) {
    iVar2 = (**(code **)(*(int *)param_1[2] + 0xe8))();
  }
  else {
    iVar2 = (*pcVar6)();
  }
  uVar5 = *in_a1;
  uVar3 = uVar5 & 3;
  uVar4 = *(uint *)(uVar5 + 4);
  uVar1 = uVar5 + 3 & 3;
  uVar3 = (*(int *)(uVar5 - uVar3) << uVar3 * 8 | in_a2 & 0xffffffffU >> (4 - uVar3) * 8) &
          -1 << (uVar1 + 1) * 8 | *(uint *)((uVar5 + 3) - uVar1) >> (3 - uVar1) * 8;
  if (iVar2 != 0) {
    *in_a1 = uVar5 + 8;
    return CONCAT44(uVar3,uVar4);
  }
  *in_a1 = uVar5 + 8;
  return CONCAT44((((uVar4 >> 0x10) << 0x18 | (uVar4 >> 0x18) << 0x10) >> 0x10) +
                  ((uVar4 & 0xff) << 8 | uVar4 >> 8 & 0xff) * 0x10000,
                  (((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10) +
                  ((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff) * 0x10000);
}

