
bool gold::is_elf_object(Input_file *input_file,off_t offset,uchar **start,int *read_size)

{
  uint uVar1;
  char *pcVar2;
  byte bVar3;
  uint uVar4;
  int in_a3;
  uint uVar5;
  
  uVar4 = (uint)(input_file->file_).size_;
  uVar5 = uVar4 - in_a3;
  uVar1 = *(int *)&(input_file->file_).size_ - (int)read_size;
  uVar4 = (uint)(uVar4 < uVar5);
  if (((int)(uVar1 - uVar4) < 1) && ((uVar1 != uVar4 || (uVar5 < 0x40)))) {
    pcVar2 = (char *)(*(code *)PTR_get_view_0043249c)();
    *offset._0_4_ = pcVar2;
    *offset._4_4_ = uVar5;
    if ((int)uVar5 < 4) {
      return false;
    }
  }
  else {
    pcVar2 = (char *)(*(code *)PTR_get_view_0043249c)(&input_file->file_);
    *offset._0_4_ = pcVar2;
    *offset._4_4_ = 0x40;
  }
  if ((((*pcVar2 != *PTR_elfmagic_004324a0) || (pcVar2[1] != PTR_elfmagic_004324a0[1])) ||
      (pcVar2[2] != PTR_elfmagic_004324a0[2])) || (bVar3 = 0, pcVar2[3] != PTR_elfmagic_004324a0[3])
     ) {
    bVar3 = 1;
  }
  return (bool)(bVar3 ^ 1);
}



/* gold::is_elf_object(gold::Input_file*, long long, unsigned char const**, int*) */

uint gold::is_elf_object(Input_file *param_1,longlong param_2,uchar **param_3,int *param_4)

{
  char *pcVar1;
  uint uVar2;
  int in_a3;
  uint uVar3;
  
  uVar3 = *(uint *)(param_1 + 0x4c) - in_a3;
  uVar2 = (uint)(*(uint *)(param_1 + 0x4c) < uVar3);
  if (((int)((*(int *)(param_1 + 0x48) - (int)param_4) - uVar2) < 1) &&
     ((*(int *)(param_1 + 0x48) - (int)param_4 != uVar2 || (uVar3 < 0x40)))) {
    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)();
    *param_2._0_4_ = pcVar1;
    *param_2._4_4_ = uVar3;
    if ((int)uVar3 < 4) {
      return 0;
    }
  }
  else {
    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)(param_1 + 0x20);
    *param_2._0_4_ = pcVar1;
    *param_2._4_4_ = 0x40;
  }
  if ((((*pcVar1 != *PTR_elfmagic_004324a0) || (pcVar1[1] != PTR_elfmagic_004324a0[1])) ||
      (pcVar1[2] != PTR_elfmagic_004324a0[2])) || (uVar2 = 0, pcVar1[3] != PTR_elfmagic_004324a0[3])
     ) {
    uVar2 = 1;
  }
  return uVar2 ^ 1;
}


lui gp,0x30
addiu gp,gp,-0x3ae0
addu gp,gp,t9
addiu sp,sp,-0x38
lw v1,0x4c(a0)
lw v0,0x48(a0)
sw s0,0x30(sp)
subu s0,v1,a3
subu v0,v0,a2
sw gp,0x28(sp)
sltu v1,v1,s0
sw ra,0x34(sp)
subu v0,v0,v1
bgtz v0,0x0013dd54
_addiu a0,a0,0x20
beq v0,zero,0x0013dd4c
_sltiu v0,s0,0x40
or v0,zero,zero
lw t9,-0x7d34(gp)
or v1,zero,zero
sw zero,0x20(sp)
sw v0,0x10(sp)
li v0,0x1
sw v1,0x14(sp)
sw v0,0x1c(sp)
jalr t9
_sw s0,0x18(sp)
slti v1,s0,0x4
lw a0,0x48(sp)
lw gp,0x28(sp)
sw v0,0x0(a0)
lw a0,0x4c(sp)
beq v1,zero,0x0013dd94
_sw s0,0x0(a0)
lw ra,0x34(sp)
or v0,zero,zero
lw s0,0x30(sp)
jr ra
_addiu sp,sp,0x38
bne v0,zero,0x0013dcf8
_or v0,zero,zero
or v0,zero,zero
lw t9,-0x7d34(gp)
or v1,zero,zero
sw zero,0x20(sp)
sw v0,0x10(sp)
li s0,0x40
li v0,0x1
sw v1,0x14(sp)
sw s0,0x18(sp)
jalr t9
_sw v0,0x1c(sp)
lw v1,0x48(sp)
lw gp,0x28(sp)
sw v0,0x0(v1)
lw v1,0x4c(sp)
sw s0,0x0(v1)
lw v1,-0x7d30(gp)
lbu a1,0x0(v0)
lbu a0,0x0(v1)
beq a1,a0,0x0013ddc0
_nop
li v0,0x1
lw ra,0x34(sp)
xori v0,v0,0x1
lw s0,0x30(sp)
jr ra
_addiu sp,sp,0x38
lbu a1,0x1(v0)
lbu a0,0x1(v1)
bne a1,a0,0x0013dda8
_nop
lbu a1,0x2(v0)
lbu a0,0x2(v1)
bne a1,a0,0x0013dda8
_nop
lbu a0,0x3(v0)
lbu v0,0x3(v1)
bne a0,v0,0x0013dda8
_or v0,zero,zero
b 0x0013ddb0
_lw ra,0x34(sp)
(translation_unit "/* gold::is_elf_object(gold::Input_file*, long long, unsigned char const**, int*) */\n\nuint gold::is_elf_object(Input_file *param_1,longlong param_2,uchar **param_3,int *param_4)\n\n{\n  char *pcVar1;\n  uint uVar2;\n  int in_a3;\n  uint uVar3;\n  \n  uVar3 = *(uint *)(param_1 + 0x4c) - in_a3;\n  uVar2 = (uint)(*(uint *)(param_1 + 0x4c) < uVar3);\n  if (((int)((*(int *)(param_1 + 0x48) - (int)param_4) - uVar2) < 1) &&\n     ((*(int *)(param_1 + 0x48) - (int)param_4 != uVar2 || (uVar3 < 0x40)))) {\n    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)();\n    *param_2._0_4_ = pcVar1;\n    *param_2._4_4_ = uVar3;\n    if ((int)uVar3 < 4) {\n      return 0;\n    }\n  }\n  else {\n    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)(param_1 + 0x20);\n    *param_2._0_4_ = pcVar1;\n    *param_2._4_4_ = 0x40;\n  }\n  if ((((*pcVar1 != *PTR_elfmagic_004324a0) || (pcVar1[1] != PTR_elfmagic_004324a0[1])) ||\n      (pcVar1[2] != PTR_elfmagic_004324a0[2])) || (uVar2 = 0, pcVar1[3] != PTR_elfmagic_004324a0[3])\n     ) {\n    uVar2 = 1;\n  }\n  return uVar2 ^ 1;\n}\n\n" comment (function_definition "uint gold::is_elf_object(Input_file *param_1,longlong param_2,uchar **param_3,int *param_4)\n\n{\n  char *pcVar1;\n  uint uVar2;\n  int in_a3;\n  uint uVar3;\n  \n  uVar3 = *(uint *)(param_1 + 0x4c) - in_a3;\n  uVar2 = (uint)(*(uint *)(param_1 + 0x4c) < uVar3);\n  if (((int)((*(int *)(param_1 + 0x48) - (int)param_4) - uVar2) < 1) &&\n     ((*(int *)(param_1 + 0x48) - (int)param_4 != uVar2 || (uVar3 < 0x40)))) {\n    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)();\n    *param_2._0_4_ = pcVar1;\n    *param_2._4_4_ = uVar3;\n    if ((int)uVar3 < 4) {\n      return 0;\n    }\n  }\n  else {\n    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)(param_1 + 0x20);\n    *param_2._0_4_ = pcVar1;\n    *param_2._4_4_ = 0x40;\n  }\n  if ((((*pcVar1 != *PTR_elfmagic_004324a0) || (pcVar1[1] != PTR_elfmagic_004324a0[1])) ||\n      (pcVar1[2] != PTR_elfmagic_004324a0[2])) || (uVar2 = 0, pcVar1[3] != PTR_elfmagic_004324a0[3])\n     ) {\n    uVar2 = 1;\n  }\n  return uVar2 ^ 1;\n}" type_identifier (ERROR "gold::" identifier : :) (function_declarator "is_elf_object(Input_file *param_1,longlong param_2,uchar **param_3,int *param_4)" identifier (parameter_list "(Input_file *param_1,longlong param_2,uchar **param_3,int *param_4)" ( (parameter_declaration "Input_file *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "longlong param_2" type_identifier identifier) , (parameter_declaration "uchar **param_3" type_identifier (pointer_declarator "**param_3" * (pointer_declarator "*param_3" * identifier))) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  char *pcVar1;\n  uint uVar2;\n  int in_a3;\n  uint uVar3;\n  \n  uVar3 = *(uint *)(param_1 + 0x4c) - in_a3;\n  uVar2 = (uint)(*(uint *)(param_1 + 0x4c) < uVar3);\n  if (((int)((*(int *)(param_1 + 0x48) - (int)param_4) - uVar2) < 1) &&\n     ((*(int *)(param_1 + 0x48) - (int)param_4 != uVar2 || (uVar3 < 0x40)))) {\n    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)();\n    *param_2._0_4_ = pcVar1;\n    *param_2._4_4_ = uVar3;\n    if ((int)uVar3 < 4) {\n      return 0;\n    }\n  }\n  else {\n    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)(param_1 + 0x20);\n    *param_2._0_4_ = pcVar1;\n    *param_2._4_4_ = 0x40;\n  }\n  if ((((*pcVar1 != *PTR_elfmagic_004324a0) || (pcVar1[1] != PTR_elfmagic_004324a0[1])) ||\n      (pcVar1[2] != PTR_elfmagic_004324a0[2])) || (uVar2 = 0, pcVar1[3] != PTR_elfmagic_004324a0[3])\n     ) {\n    uVar2 = 1;\n  }\n  return uVar2 ^ 1;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int in_a3;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (expression_statement "uVar3 = *(uint *)(param_1 + 0x4c) - in_a3;" (assignment_expression "uVar3 = *(uint *)(param_1 + 0x4c) - in_a3" identifier = (binary_expression "*(uint *)(param_1 + 0x4c) - in_a3" (pointer_expression "*(uint *)(param_1 + 0x4c)" * (cast_expression "(uint *)(param_1 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) - identifier)) ;) (expression_statement "uVar2 = (uint)(*(uint *)(param_1 + 0x4c) < uVar3);" (assignment_expression "uVar2 = (uint)(*(uint *)(param_1 + 0x4c) < uVar3)" identifier = (call_expression "(uint)(*(uint *)(param_1 + 0x4c) < uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(param_1 + 0x4c) < uVar3)" ( (binary_expression "*(uint *)(param_1 + 0x4c) < uVar3" (pointer_expression "*(uint *)(param_1 + 0x4c)" * (cast_expression "(uint *)(param_1 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) < identifier) )))) ;) (if_statement "if (((int)((*(int *)(param_1 + 0x48) - (int)param_4) - uVar2) < 1) &&\n     ((*(int *)(param_1 + 0x48) - (int)param_4 != uVar2 || (uVar3 < 0x40)))) {\n    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)();\n    *param_2._0_4_ = pcVar1;\n    *param_2._4_4_ = uVar3;\n    if ((int)uVar3 < 4) {\n      return 0;\n    }\n  }\n  else {\n    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)(param_1 + 0x20);\n    *param_2._0_4_ = pcVar1;\n    *param_2._4_4_ = 0x40;\n  }" if (parenthesized_expression "(((int)((*(int *)(param_1 + 0x48) - (int)param_4) - uVar2) < 1) &&\n     ((*(int *)(param_1 + 0x48) - (int)param_4 != uVar2 || (uVar3 < 0x40))))" ( (binary_expression "((int)((*(int *)(param_1 + 0x48) - (int)param_4) - uVar2) < 1) &&\n     ((*(int *)(param_1 + 0x48) - (int)param_4 != uVar2 || (uVar3 < 0x40)))" (parenthesized_expression "((int)((*(int *)(param_1 + 0x48) - (int)param_4) - uVar2) < 1)" ( (binary_expression "(int)((*(int *)(param_1 + 0x48) - (int)param_4) - uVar2) < 1" (cast_expression "(int)((*(int *)(param_1 + 0x48) - (int)param_4) - uVar2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((*(int *)(param_1 + 0x48) - (int)param_4) - uVar2)" ( (binary_expression "(*(int *)(param_1 + 0x48) - (int)param_4) - uVar2" (parenthesized_expression "(*(int *)(param_1 + 0x48) - (int)param_4)" ( (binary_expression "*(int *)(param_1 + 0x48) - (int)param_4" (pointer_expression "*(int *)(param_1 + 0x48)" * (cast_expression "(int *)(param_1 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) - (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) )) - identifier) ))) < number_literal) )) && (parenthesized_expression "((*(int *)(param_1 + 0x48) - (int)param_4 != uVar2 || (uVar3 < 0x40)))" ( (parenthesized_expression "(*(int *)(param_1 + 0x48) - (int)param_4 != uVar2 || (uVar3 < 0x40))" ( (binary_expression "*(int *)(param_1 + 0x48) - (int)param_4 != uVar2 || (uVar3 < 0x40)" (binary_expression "*(int *)(param_1 + 0x48) - (int)param_4 != uVar2" (binary_expression "*(int *)(param_1 + 0x48) - (int)param_4" (pointer_expression "*(int *)(param_1 + 0x48)" * (cast_expression "(int *)(param_1 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) - (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) != identifier) || (parenthesized_expression "(uVar3 < 0x40)" ( (binary_expression "uVar3 < 0x40" identifier < number_literal) ))) )) ))) )) (compound_statement "{\n    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)();\n    *param_2._0_4_ = pcVar1;\n    *param_2._4_4_ = uVar3;\n    if ((int)uVar3 < 4) {\n      return 0;\n    }\n  }" { (expression_statement "pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)();" (assignment_expression "pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)()" identifier = (cast_expression "(char *)(*(code *)PTR_get_view_0043249c)()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_get_view_0043249c)()" (parenthesized_expression "(*(code *)PTR_get_view_0043249c)" ( (pointer_expression "*(code *)PTR_get_view_0043249c" * (cast_expression "(code *)PTR_get_view_0043249c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (expression_statement "*param_2._0_4_ = pcVar1;" (assignment_expression "*param_2._0_4_ = pcVar1" (pointer_expression "*param_2._0_4_" * (field_expression "param_2._0_4_" identifier . field_identifier)) = identifier) ;) (expression_statement "*param_2._4_4_ = uVar3;" (assignment_expression "*param_2._4_4_ = uVar3" (pointer_expression "*param_2._4_4_" * (field_expression "param_2._4_4_" identifier . field_identifier)) = identifier) ;) (if_statement "if ((int)uVar3 < 4) {\n      return 0;\n    }" if (parenthesized_expression "((int)uVar3 < 4)" ( (binary_expression "(int)uVar3 < 4" (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else {\n    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)(param_1 + 0x20);\n    *param_2._0_4_ = pcVar1;\n    *param_2._4_4_ = 0x40;\n  }" else (compound_statement "{\n    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)(param_1 + 0x20);\n    *param_2._0_4_ = pcVar1;\n    *param_2._4_4_ = 0x40;\n  }" { (expression_statement "pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)(param_1 + 0x20);" (assignment_expression "pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)(param_1 + 0x20)" identifier = (cast_expression "(char *)(*(code *)PTR_get_view_0043249c)(param_1 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_get_view_0043249c)(param_1 + 0x20)" (parenthesized_expression "(*(code *)PTR_get_view_0043249c)" ( (pointer_expression "*(code *)PTR_get_view_0043249c" * (cast_expression "(code *)PTR_get_view_0043249c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*param_2._0_4_ = pcVar1;" (assignment_expression "*param_2._0_4_ = pcVar1" (pointer_expression "*param_2._0_4_" * (field_expression "param_2._0_4_" identifier . field_identifier)) = identifier) ;) (expression_statement "*param_2._4_4_ = 0x40;" (assignment_expression "*param_2._4_4_ = 0x40" (pointer_expression "*param_2._4_4_" * (field_expression "param_2._4_4_" identifier . field_identifier)) = number_literal) ;) }))) (if_statement "if ((((*pcVar1 != *PTR_elfmagic_004324a0) || (pcVar1[1] != PTR_elfmagic_004324a0[1])) ||\n      (pcVar1[2] != PTR_elfmagic_004324a0[2])) || (uVar2 = 0, pcVar1[3] != PTR_elfmagic_004324a0[3])\n     ) {\n    uVar2 = 1;\n  }" if (parenthesized_expression "((((*pcVar1 != *PTR_elfmagic_004324a0) || (pcVar1[1] != PTR_elfmagic_004324a0[1])) ||\n      (pcVar1[2] != PTR_elfmagic_004324a0[2])) || (uVar2 = 0, pcVar1[3] != PTR_elfmagic_004324a0[3])\n     )" ( (binary_expression "(((*pcVar1 != *PTR_elfmagic_004324a0) || (pcVar1[1] != PTR_elfmagic_004324a0[1])) ||\n      (pcVar1[2] != PTR_elfmagic_004324a0[2])) || (uVar2 = 0, pcVar1[3] != PTR_elfmagic_004324a0[3])" (parenthesized_expression "(((*pcVar1 != *PTR_elfmagic_004324a0) || (pcVar1[1] != PTR_elfmagic_004324a0[1])) ||\n      (pcVar1[2] != PTR_elfmagic_004324a0[2]))" ( (binary_expression "((*pcVar1 != *PTR_elfmagic_004324a0) || (pcVar1[1] != PTR_elfmagic_004324a0[1])) ||\n      (pcVar1[2] != PTR_elfmagic_004324a0[2])" (parenthesized_expression "((*pcVar1 != *PTR_elfmagic_004324a0) || (pcVar1[1] != PTR_elfmagic_004324a0[1]))" ( (binary_expression "(*pcVar1 != *PTR_elfmagic_004324a0) || (pcVar1[1] != PTR_elfmagic_004324a0[1])" (parenthesized_expression "(*pcVar1 != *PTR_elfmagic_004324a0)" ( (binary_expression "*pcVar1 != *PTR_elfmagic_004324a0" (pointer_expression "*pcVar1" * identifier) != (pointer_expression "*PTR_elfmagic_004324a0" * identifier)) )) || (parenthesized_expression "(pcVar1[1] != PTR_elfmagic_004324a0[1])" ( (binary_expression "pcVar1[1] != PTR_elfmagic_004324a0[1]" (subscript_expression "pcVar1[1]" identifier [ number_literal ]) != (subscript_expression "PTR_elfmagic_004324a0[1]" identifier [ number_literal ])) ))) )) || (parenthesized_expression "(pcVar1[2] != PTR_elfmagic_004324a0[2])" ( (binary_expression "pcVar1[2] != PTR_elfmagic_004324a0[2]" (subscript_expression "pcVar1[2]" identifier [ number_literal ]) != (subscript_expression "PTR_elfmagic_004324a0[2]" identifier [ number_literal ])) ))) )) || (parenthesized_expression "(uVar2 = 0, pcVar1[3] != PTR_elfmagic_004324a0[3])" ( (comma_expression "uVar2 = 0, pcVar1[3] != PTR_elfmagic_004324a0[3]" (assignment_expression "uVar2 = 0" identifier = number_literal) , (binary_expression "pcVar1[3] != PTR_elfmagic_004324a0[3]" (subscript_expression "pcVar1[3]" identifier [ number_literal ]) != (subscript_expression "PTR_elfmagic_004324a0[3]" identifier [ number_literal ]))) ))) )) (compound_statement "{\n    uVar2 = 1;\n  }" { (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) })) (return_statement "return uVar2 ^ 1;" return (binary_expression "uVar2 ^ 1" identifier ^ number_literal) ;) })))
(translation_unit "bool gold::is_elf_object(Input_file *input_file,off_t offset,uchar **start,int *read_size)\n\n{\n  uint uVar1;\n  char *pcVar2;\n  byte bVar3;\n  uint uVar4;\n  int in_a3;\n  uint uVar5;\n  \n  uVar4 = (uint)(input_file->file_).size_;\n  uVar5 = uVar4 - in_a3;\n  uVar1 = *(int *)&(input_file->file_).size_ - (int)read_size;\n  uVar4 = (uint)(uVar4 < uVar5);\n  if (((int)(uVar1 - uVar4) < 1) && ((uVar1 != uVar4 || (uVar5 < 0x40)))) {\n    pcVar2 = (char *)(*(code *)PTR_get_view_0043249c)();\n    *offset._0_4_ = pcVar2;\n    *offset._4_4_ = uVar5;\n    if ((int)uVar5 < 4) {\n      return false;\n    }\n  }\n  else {\n    pcVar2 = (char *)(*(code *)PTR_get_view_0043249c)(&input_file->file_);\n    *offset._0_4_ = pcVar2;\n    *offset._4_4_ = 0x40;\n  }\n  if ((((*pcVar2 != *PTR_elfmagic_004324a0) || (pcVar2[1] != PTR_elfmagic_004324a0[1])) ||\n      (pcVar2[2] != PTR_elfmagic_004324a0[2])) || (bVar3 = 0, pcVar2[3] != PTR_elfmagic_004324a0[3])\n     ) {\n    bVar3 = 1;\n  }\n  return (bool)(bVar3 ^ 1);\n}\n\n" (function_definition "bool gold::is_elf_object(Input_file *input_file,off_t offset,uchar **start,int *read_size)\n\n{\n  uint uVar1;\n  char *pcVar2;\n  byte bVar3;\n  uint uVar4;\n  int in_a3;\n  uint uVar5;\n  \n  uVar4 = (uint)(input_file->file_).size_;\n  uVar5 = uVar4 - in_a3;\n  uVar1 = *(int *)&(input_file->file_).size_ - (int)read_size;\n  uVar4 = (uint)(uVar4 < uVar5);\n  if (((int)(uVar1 - uVar4) < 1) && ((uVar1 != uVar4 || (uVar5 < 0x40)))) {\n    pcVar2 = (char *)(*(code *)PTR_get_view_0043249c)();\n    *offset._0_4_ = pcVar2;\n    *offset._4_4_ = uVar5;\n    if ((int)uVar5 < 4) {\n      return false;\n    }\n  }\n  else {\n    pcVar2 = (char *)(*(code *)PTR_get_view_0043249c)(&input_file->file_);\n    *offset._0_4_ = pcVar2;\n    *offset._4_4_ = 0x40;\n  }\n  if ((((*pcVar2 != *PTR_elfmagic_004324a0) || (pcVar2[1] != PTR_elfmagic_004324a0[1])) ||\n      (pcVar2[2] != PTR_elfmagic_004324a0[2])) || (bVar3 = 0, pcVar2[3] != PTR_elfmagic_004324a0[3])\n     ) {\n    bVar3 = 1;\n  }\n  return (bool)(bVar3 ^ 1);\n}" primitive_type (ERROR "gold::" identifier : :) (function_declarator "is_elf_object(Input_file *input_file,off_t offset,uchar **start,int *read_size)" identifier (parameter_list "(Input_file *input_file,off_t offset,uchar **start,int *read_size)" ( (parameter_declaration "Input_file *input_file" type_identifier (pointer_declarator "*input_file" * identifier)) , (parameter_declaration "off_t offset" type_identifier identifier) , (parameter_declaration "uchar **start" type_identifier (pointer_declarator "**start" * (pointer_declarator "*start" * identifier))) , (parameter_declaration "int *read_size" primitive_type (pointer_declarator "*read_size" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  char *pcVar2;\n  byte bVar3;\n  uint uVar4;\n  int in_a3;\n  uint uVar5;\n  \n  uVar4 = (uint)(input_file->file_).size_;\n  uVar5 = uVar4 - in_a3;\n  uVar1 = *(int *)&(input_file->file_).size_ - (int)read_size;\n  uVar4 = (uint)(uVar4 < uVar5);\n  if (((int)(uVar1 - uVar4) < 1) && ((uVar1 != uVar4 || (uVar5 < 0x40)))) {\n    pcVar2 = (char *)(*(code *)PTR_get_view_0043249c)();\n    *offset._0_4_ = pcVar2;\n    *offset._4_4_ = uVar5;\n    if ((int)uVar5 < 4) {\n      return false;\n    }\n  }\n  else {\n    pcVar2 = (char *)(*(code *)PTR_get_view_0043249c)(&input_file->file_);\n    *offset._0_4_ = pcVar2;\n    *offset._4_4_ = 0x40;\n  }\n  if ((((*pcVar2 != *PTR_elfmagic_004324a0) || (pcVar2[1] != PTR_elfmagic_004324a0[1])) ||\n      (pcVar2[2] != PTR_elfmagic_004324a0[2])) || (bVar3 = 0, pcVar2[3] != PTR_elfmagic_004324a0[3])\n     ) {\n    bVar3 = 1;\n  }\n  return (bool)(bVar3 ^ 1);\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int in_a3;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (expression_statement "uVar4 = (uint)(input_file->file_).size_;" (assignment_expression "uVar4 = (uint)(input_file->file_).size_" identifier = (field_expression "(uint)(input_file->file_).size_" (call_expression "(uint)(input_file->file_)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(input_file->file_)" ( (field_expression "input_file->file_" identifier -> field_identifier) ))) . field_identifier)) ;) (expression_statement "uVar5 = uVar4 - in_a3;" (assignment_expression "uVar5 = uVar4 - in_a3" identifier = (binary_expression "uVar4 - in_a3" identifier - identifier)) ;) (expression_statement "uVar1 = *(int *)&(input_file->file_).size_ - (int)read_size;" (assignment_expression "uVar1 = *(int *)&(input_file->file_).size_ - (int)read_size" identifier = (binary_expression "*(int *)&(input_file->file_).size_ - (int)read_size" (pointer_expression "*(int *)&(input_file->file_).size_" * (cast_expression "(int *)&(input_file->file_).size_" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(input_file->file_).size_" & (field_expression "(input_file->file_).size_" (parenthesized_expression "(input_file->file_)" ( (field_expression "input_file->file_" identifier -> field_identifier) )) . field_identifier)))) - (cast_expression "(int)read_size" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar4 = (uint)(uVar4 < uVar5);" (assignment_expression "uVar4 = (uint)(uVar4 < uVar5)" identifier = (call_expression "(uint)(uVar4 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 < uVar5)" ( (binary_expression "uVar4 < uVar5" identifier < identifier) )))) ;) (if_statement "if (((int)(uVar1 - uVar4) < 1) && ((uVar1 != uVar4 || (uVar5 < 0x40)))) {\n    pcVar2 = (char *)(*(code *)PTR_get_view_0043249c)();\n    *offset._0_4_ = pcVar2;\n    *offset._4_4_ = uVar5;\n    if ((int)uVar5 < 4) {\n      return false;\n    }\n  }\n  else {\n    pcVar2 = (char *)(*(code *)PTR_get_view_0043249c)(&input_file->file_);\n    *offset._0_4_ = pcVar2;\n    *offset._4_4_ = 0x40;\n  }" if (parenthesized_expression "(((int)(uVar1 - uVar4) < 1) && ((uVar1 != uVar4 || (uVar5 < 0x40))))" ( (binary_expression "((int)(uVar1 - uVar4) < 1) && ((uVar1 != uVar4 || (uVar5 < 0x40)))" (parenthesized_expression "((int)(uVar1 - uVar4) < 1)" ( (binary_expression "(int)(uVar1 - uVar4) < 1" (cast_expression "(int)(uVar1 - uVar4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar1 - uVar4)" ( (binary_expression "uVar1 - uVar4" identifier - identifier) ))) < number_literal) )) && (parenthesized_expression "((uVar1 != uVar4 || (uVar5 < 0x40)))" ( (parenthesized_expression "(uVar1 != uVar4 || (uVar5 < 0x40))" ( (binary_expression "uVar1 != uVar4 || (uVar5 < 0x40)" (binary_expression "uVar1 != uVar4" identifier != identifier) || (parenthesized_expression "(uVar5 < 0x40)" ( (binary_expression "uVar5 < 0x40" identifier < number_literal) ))) )) ))) )) (compound_statement "{\n    pcVar2 = (char *)(*(code *)PTR_get_view_0043249c)();\n    *offset._0_4_ = pcVar2;\n    *offset._4_4_ = uVar5;\n    if ((int)uVar5 < 4) {\n      return false;\n    }\n  }" { (expression_statement "pcVar2 = (char *)(*(code *)PTR_get_view_0043249c)();" (assignment_expression "pcVar2 = (char *)(*(code *)PTR_get_view_0043249c)()" identifier = (cast_expression "(char *)(*(code *)PTR_get_view_0043249c)()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_get_view_0043249c)()" (parenthesized_expression "(*(code *)PTR_get_view_0043249c)" ( (pointer_expression "*(code *)PTR_get_view_0043249c" * (cast_expression "(code *)PTR_get_view_0043249c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (expression_statement "*offset._0_4_ = pcVar2;" (assignment_expression "*offset._0_4_ = pcVar2" (pointer_expression "*offset._0_4_" * (field_expression "offset._0_4_" identifier . field_identifier)) = identifier) ;) (expression_statement "*offset._4_4_ = uVar5;" (assignment_expression "*offset._4_4_ = uVar5" (pointer_expression "*offset._4_4_" * (field_expression "offset._4_4_" identifier . field_identifier)) = identifier) ;) (if_statement "if ((int)uVar5 < 4) {\n      return false;\n    }" if (parenthesized_expression "((int)uVar5 < 4)" ( (binary_expression "(int)uVar5 < 4" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) }) (else_clause "else {\n    pcVar2 = (char *)(*(code *)PTR_get_view_0043249c)(&input_file->file_);\n    *offset._0_4_ = pcVar2;\n    *offset._4_4_ = 0x40;\n  }" else (compound_statement "{\n    pcVar2 = (char *)(*(code *)PTR_get_view_0043249c)(&input_file->file_);\n    *offset._0_4_ = pcVar2;\n    *offset._4_4_ = 0x40;\n  }" { (expression_statement "pcVar2 = (char *)(*(code *)PTR_get_view_0043249c)(&input_file->file_);" (assignment_expression "pcVar2 = (char *)(*(code *)PTR_get_view_0043249c)(&input_file->file_)" identifier = (cast_expression "(char *)(*(code *)PTR_get_view_0043249c)(&input_file->file_)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_get_view_0043249c)(&input_file->file_)" (parenthesized_expression "(*(code *)PTR_get_view_0043249c)" ( (pointer_expression "*(code *)PTR_get_view_0043249c" * (cast_expression "(code *)PTR_get_view_0043249c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&input_file->file_)" ( (pointer_expression "&input_file->file_" & (field_expression "input_file->file_" identifier -> field_identifier)) ))))) ;) (expression_statement "*offset._0_4_ = pcVar2;" (assignment_expression "*offset._0_4_ = pcVar2" (pointer_expression "*offset._0_4_" * (field_expression "offset._0_4_" identifier . field_identifier)) = identifier) ;) (expression_statement "*offset._4_4_ = 0x40;" (assignment_expression "*offset._4_4_ = 0x40" (pointer_expression "*offset._4_4_" * (field_expression "offset._4_4_" identifier . field_identifier)) = number_literal) ;) }))) (if_statement "if ((((*pcVar2 != *PTR_elfmagic_004324a0) || (pcVar2[1] != PTR_elfmagic_004324a0[1])) ||\n      (pcVar2[2] != PTR_elfmagic_004324a0[2])) || (bVar3 = 0, pcVar2[3] != PTR_elfmagic_004324a0[3])\n     ) {\n    bVar3 = 1;\n  }" if (parenthesized_expression "((((*pcVar2 != *PTR_elfmagic_004324a0) || (pcVar2[1] != PTR_elfmagic_004324a0[1])) ||\n      (pcVar2[2] != PTR_elfmagic_004324a0[2])) || (bVar3 = 0, pcVar2[3] != PTR_elfmagic_004324a0[3])\n     )" ( (binary_expression "(((*pcVar2 != *PTR_elfmagic_004324a0) || (pcVar2[1] != PTR_elfmagic_004324a0[1])) ||\n      (pcVar2[2] != PTR_elfmagic_004324a0[2])) || (bVar3 = 0, pcVar2[3] != PTR_elfmagic_004324a0[3])" (parenthesized_expression "(((*pcVar2 != *PTR_elfmagic_004324a0) || (pcVar2[1] != PTR_elfmagic_004324a0[1])) ||\n      (pcVar2[2] != PTR_elfmagic_004324a0[2]))" ( (binary_expression "((*pcVar2 != *PTR_elfmagic_004324a0) || (pcVar2[1] != PTR_elfmagic_004324a0[1])) ||\n      (pcVar2[2] != PTR_elfmagic_004324a0[2])" (parenthesized_expression "((*pcVar2 != *PTR_elfmagic_004324a0) || (pcVar2[1] != PTR_elfmagic_004324a0[1]))" ( (binary_expression "(*pcVar2 != *PTR_elfmagic_004324a0) || (pcVar2[1] != PTR_elfmagic_004324a0[1])" (parenthesized_expression "(*pcVar2 != *PTR_elfmagic_004324a0)" ( (binary_expression "*pcVar2 != *PTR_elfmagic_004324a0" (pointer_expression "*pcVar2" * identifier) != (pointer_expression "*PTR_elfmagic_004324a0" * identifier)) )) || (parenthesized_expression "(pcVar2[1] != PTR_elfmagic_004324a0[1])" ( (binary_expression "pcVar2[1] != PTR_elfmagic_004324a0[1]" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) != (subscript_expression "PTR_elfmagic_004324a0[1]" identifier [ number_literal ])) ))) )) || (parenthesized_expression "(pcVar2[2] != PTR_elfmagic_004324a0[2])" ( (binary_expression "pcVar2[2] != PTR_elfmagic_004324a0[2]" (subscript_expression "pcVar2[2]" identifier [ number_literal ]) != (subscript_expression "PTR_elfmagic_004324a0[2]" identifier [ number_literal ])) ))) )) || (parenthesized_expression "(bVar3 = 0, pcVar2[3] != PTR_elfmagic_004324a0[3])" ( (comma_expression "bVar3 = 0, pcVar2[3] != PTR_elfmagic_004324a0[3]" (assignment_expression "bVar3 = 0" identifier = number_literal) , (binary_expression "pcVar2[3] != PTR_elfmagic_004324a0[3]" (subscript_expression "pcVar2[3]" identifier [ number_literal ]) != (subscript_expression "PTR_elfmagic_004324a0[3]" identifier [ number_literal ]))) ))) )) (compound_statement "{\n    bVar3 = 1;\n  }" { (expression_statement "bVar3 = 1;" (assignment_expression "bVar3 = 1" identifier = number_literal) ;) })) (return_statement "return (bool)(bVar3 ^ 1);" return (cast_expression "(bool)(bVar3 ^ 1)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(bVar3 ^ 1)" ( (binary_expression "bVar3 ^ 1" identifier ^ number_literal) ))) ;) })))
(translation_unit "uint gold::is_elf_object(Input_file *param_1,longlong param_2,uchar **param_3,int *param_4)\n\n{\n  char *pcVar1;\n  uint uVar2;\n  int in_a3;\n  uint uVar3;\n  \n  uVar3 = *(uint *)(param_1 + 0x4c) - in_a3;\n  uVar2 = (uint)(*(uint *)(param_1 + 0x4c) < uVar3);\n  if (((int)((*(int *)(param_1 + 0x48) - (int)param_4) - uVar2) < 1) &&\n     ((*(int *)(param_1 + 0x48) - (int)param_4 != uVar2 || (uVar3 < 0x40)))) {\n    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)();\n    *param_2._0_4_ = pcVar1;\n    *param_2._4_4_ = uVar3;\n    if ((int)uVar3 < 4) {\n      return 0;\n    }\n  }\n  else {\n    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)(param_1 + 0x20);\n    *param_2._0_4_ = pcVar1;\n    *param_2._4_4_ = 0x40;\n  }\n  if ((((*pcVar1 != *PTR_elfmagic_004324a0) || (pcVar1[1] != PTR_elfmagic_004324a0[1])) ||\n      (pcVar1[2] != PTR_elfmagic_004324a0[2])) || (uVar2 = 0, pcVar1[3] != PTR_elfmagic_004324a0[3])\n     ) {\n    uVar2 = 1;\n  }\n  return uVar2 ^ 1;\n}\n\n" (function_definition "uint gold::is_elf_object(Input_file *param_1,longlong param_2,uchar **param_3,int *param_4)\n\n{\n  char *pcVar1;\n  uint uVar2;\n  int in_a3;\n  uint uVar3;\n  \n  uVar3 = *(uint *)(param_1 + 0x4c) - in_a3;\n  uVar2 = (uint)(*(uint *)(param_1 + 0x4c) < uVar3);\n  if (((int)((*(int *)(param_1 + 0x48) - (int)param_4) - uVar2) < 1) &&\n     ((*(int *)(param_1 + 0x48) - (int)param_4 != uVar2 || (uVar3 < 0x40)))) {\n    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)();\n    *param_2._0_4_ = pcVar1;\n    *param_2._4_4_ = uVar3;\n    if ((int)uVar3 < 4) {\n      return 0;\n    }\n  }\n  else {\n    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)(param_1 + 0x20);\n    *param_2._0_4_ = pcVar1;\n    *param_2._4_4_ = 0x40;\n  }\n  if ((((*pcVar1 != *PTR_elfmagic_004324a0) || (pcVar1[1] != PTR_elfmagic_004324a0[1])) ||\n      (pcVar1[2] != PTR_elfmagic_004324a0[2])) || (uVar2 = 0, pcVar1[3] != PTR_elfmagic_004324a0[3])\n     ) {\n    uVar2 = 1;\n  }\n  return uVar2 ^ 1;\n}" type_identifier (ERROR "gold::" identifier : :) (function_declarator "is_elf_object(Input_file *param_1,longlong param_2,uchar **param_3,int *param_4)" identifier (parameter_list "(Input_file *param_1,longlong param_2,uchar **param_3,int *param_4)" ( (parameter_declaration "Input_file *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "longlong param_2" type_identifier identifier) , (parameter_declaration "uchar **param_3" type_identifier (pointer_declarator "**param_3" * (pointer_declarator "*param_3" * identifier))) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  char *pcVar1;\n  uint uVar2;\n  int in_a3;\n  uint uVar3;\n  \n  uVar3 = *(uint *)(param_1 + 0x4c) - in_a3;\n  uVar2 = (uint)(*(uint *)(param_1 + 0x4c) < uVar3);\n  if (((int)((*(int *)(param_1 + 0x48) - (int)param_4) - uVar2) < 1) &&\n     ((*(int *)(param_1 + 0x48) - (int)param_4 != uVar2 || (uVar3 < 0x40)))) {\n    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)();\n    *param_2._0_4_ = pcVar1;\n    *param_2._4_4_ = uVar3;\n    if ((int)uVar3 < 4) {\n      return 0;\n    }\n  }\n  else {\n    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)(param_1 + 0x20);\n    *param_2._0_4_ = pcVar1;\n    *param_2._4_4_ = 0x40;\n  }\n  if ((((*pcVar1 != *PTR_elfmagic_004324a0) || (pcVar1[1] != PTR_elfmagic_004324a0[1])) ||\n      (pcVar1[2] != PTR_elfmagic_004324a0[2])) || (uVar2 = 0, pcVar1[3] != PTR_elfmagic_004324a0[3])\n     ) {\n    uVar2 = 1;\n  }\n  return uVar2 ^ 1;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int in_a3;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (expression_statement "uVar3 = *(uint *)(param_1 + 0x4c) - in_a3;" (assignment_expression "uVar3 = *(uint *)(param_1 + 0x4c) - in_a3" identifier = (binary_expression "*(uint *)(param_1 + 0x4c) - in_a3" (pointer_expression "*(uint *)(param_1 + 0x4c)" * (cast_expression "(uint *)(param_1 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) - identifier)) ;) (expression_statement "uVar2 = (uint)(*(uint *)(param_1 + 0x4c) < uVar3);" (assignment_expression "uVar2 = (uint)(*(uint *)(param_1 + 0x4c) < uVar3)" identifier = (call_expression "(uint)(*(uint *)(param_1 + 0x4c) < uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(param_1 + 0x4c) < uVar3)" ( (binary_expression "*(uint *)(param_1 + 0x4c) < uVar3" (pointer_expression "*(uint *)(param_1 + 0x4c)" * (cast_expression "(uint *)(param_1 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) < identifier) )))) ;) (if_statement "if (((int)((*(int *)(param_1 + 0x48) - (int)param_4) - uVar2) < 1) &&\n     ((*(int *)(param_1 + 0x48) - (int)param_4 != uVar2 || (uVar3 < 0x40)))) {\n    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)();\n    *param_2._0_4_ = pcVar1;\n    *param_2._4_4_ = uVar3;\n    if ((int)uVar3 < 4) {\n      return 0;\n    }\n  }\n  else {\n    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)(param_1 + 0x20);\n    *param_2._0_4_ = pcVar1;\n    *param_2._4_4_ = 0x40;\n  }" if (parenthesized_expression "(((int)((*(int *)(param_1 + 0x48) - (int)param_4) - uVar2) < 1) &&\n     ((*(int *)(param_1 + 0x48) - (int)param_4 != uVar2 || (uVar3 < 0x40))))" ( (binary_expression "((int)((*(int *)(param_1 + 0x48) - (int)param_4) - uVar2) < 1) &&\n     ((*(int *)(param_1 + 0x48) - (int)param_4 != uVar2 || (uVar3 < 0x40)))" (parenthesized_expression "((int)((*(int *)(param_1 + 0x48) - (int)param_4) - uVar2) < 1)" ( (binary_expression "(int)((*(int *)(param_1 + 0x48) - (int)param_4) - uVar2) < 1" (cast_expression "(int)((*(int *)(param_1 + 0x48) - (int)param_4) - uVar2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((*(int *)(param_1 + 0x48) - (int)param_4) - uVar2)" ( (binary_expression "(*(int *)(param_1 + 0x48) - (int)param_4) - uVar2" (parenthesized_expression "(*(int *)(param_1 + 0x48) - (int)param_4)" ( (binary_expression "*(int *)(param_1 + 0x48) - (int)param_4" (pointer_expression "*(int *)(param_1 + 0x48)" * (cast_expression "(int *)(param_1 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) - (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) )) - identifier) ))) < number_literal) )) && (parenthesized_expression "((*(int *)(param_1 + 0x48) - (int)param_4 != uVar2 || (uVar3 < 0x40)))" ( (parenthesized_expression "(*(int *)(param_1 + 0x48) - (int)param_4 != uVar2 || (uVar3 < 0x40))" ( (binary_expression "*(int *)(param_1 + 0x48) - (int)param_4 != uVar2 || (uVar3 < 0x40)" (binary_expression "*(int *)(param_1 + 0x48) - (int)param_4 != uVar2" (binary_expression "*(int *)(param_1 + 0x48) - (int)param_4" (pointer_expression "*(int *)(param_1 + 0x48)" * (cast_expression "(int *)(param_1 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) - (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) != identifier) || (parenthesized_expression "(uVar3 < 0x40)" ( (binary_expression "uVar3 < 0x40" identifier < number_literal) ))) )) ))) )) (compound_statement "{\n    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)();\n    *param_2._0_4_ = pcVar1;\n    *param_2._4_4_ = uVar3;\n    if ((int)uVar3 < 4) {\n      return 0;\n    }\n  }" { (expression_statement "pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)();" (assignment_expression "pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)()" identifier = (cast_expression "(char *)(*(code *)PTR_get_view_0043249c)()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_get_view_0043249c)()" (parenthesized_expression "(*(code *)PTR_get_view_0043249c)" ( (pointer_expression "*(code *)PTR_get_view_0043249c" * (cast_expression "(code *)PTR_get_view_0043249c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (expression_statement "*param_2._0_4_ = pcVar1;" (assignment_expression "*param_2._0_4_ = pcVar1" (pointer_expression "*param_2._0_4_" * (field_expression "param_2._0_4_" identifier . field_identifier)) = identifier) ;) (expression_statement "*param_2._4_4_ = uVar3;" (assignment_expression "*param_2._4_4_ = uVar3" (pointer_expression "*param_2._4_4_" * (field_expression "param_2._4_4_" identifier . field_identifier)) = identifier) ;) (if_statement "if ((int)uVar3 < 4) {\n      return 0;\n    }" if (parenthesized_expression "((int)uVar3 < 4)" ( (binary_expression "(int)uVar3 < 4" (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else {\n    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)(param_1 + 0x20);\n    *param_2._0_4_ = pcVar1;\n    *param_2._4_4_ = 0x40;\n  }" else (compound_statement "{\n    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)(param_1 + 0x20);\n    *param_2._0_4_ = pcVar1;\n    *param_2._4_4_ = 0x40;\n  }" { (expression_statement "pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)(param_1 + 0x20);" (assignment_expression "pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)(param_1 + 0x20)" identifier = (cast_expression "(char *)(*(code *)PTR_get_view_0043249c)(param_1 + 0x20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_get_view_0043249c)(param_1 + 0x20)" (parenthesized_expression "(*(code *)PTR_get_view_0043249c)" ( (pointer_expression "*(code *)PTR_get_view_0043249c" * (cast_expression "(code *)PTR_get_view_0043249c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*param_2._0_4_ = pcVar1;" (assignment_expression "*param_2._0_4_ = pcVar1" (pointer_expression "*param_2._0_4_" * (field_expression "param_2._0_4_" identifier . field_identifier)) = identifier) ;) (expression_statement "*param_2._4_4_ = 0x40;" (assignment_expression "*param_2._4_4_ = 0x40" (pointer_expression "*param_2._4_4_" * (field_expression "param_2._4_4_" identifier . field_identifier)) = number_literal) ;) }))) (if_statement "if ((((*pcVar1 != *PTR_elfmagic_004324a0) || (pcVar1[1] != PTR_elfmagic_004324a0[1])) ||\n      (pcVar1[2] != PTR_elfmagic_004324a0[2])) || (uVar2 = 0, pcVar1[3] != PTR_elfmagic_004324a0[3])\n     ) {\n    uVar2 = 1;\n  }" if (parenthesized_expression "((((*pcVar1 != *PTR_elfmagic_004324a0) || (pcVar1[1] != PTR_elfmagic_004324a0[1])) ||\n      (pcVar1[2] != PTR_elfmagic_004324a0[2])) || (uVar2 = 0, pcVar1[3] != PTR_elfmagic_004324a0[3])\n     )" ( (binary_expression "(((*pcVar1 != *PTR_elfmagic_004324a0) || (pcVar1[1] != PTR_elfmagic_004324a0[1])) ||\n      (pcVar1[2] != PTR_elfmagic_004324a0[2])) || (uVar2 = 0, pcVar1[3] != PTR_elfmagic_004324a0[3])" (parenthesized_expression "(((*pcVar1 != *PTR_elfmagic_004324a0) || (pcVar1[1] != PTR_elfmagic_004324a0[1])) ||\n      (pcVar1[2] != PTR_elfmagic_004324a0[2]))" ( (binary_expression "((*pcVar1 != *PTR_elfmagic_004324a0) || (pcVar1[1] != PTR_elfmagic_004324a0[1])) ||\n      (pcVar1[2] != PTR_elfmagic_004324a0[2])" (parenthesized_expression "((*pcVar1 != *PTR_elfmagic_004324a0) || (pcVar1[1] != PTR_elfmagic_004324a0[1]))" ( (binary_expression "(*pcVar1 != *PTR_elfmagic_004324a0) || (pcVar1[1] != PTR_elfmagic_004324a0[1])" (parenthesized_expression "(*pcVar1 != *PTR_elfmagic_004324a0)" ( (binary_expression "*pcVar1 != *PTR_elfmagic_004324a0" (pointer_expression "*pcVar1" * identifier) != (pointer_expression "*PTR_elfmagic_004324a0" * identifier)) )) || (parenthesized_expression "(pcVar1[1] != PTR_elfmagic_004324a0[1])" ( (binary_expression "pcVar1[1] != PTR_elfmagic_004324a0[1]" (subscript_expression "pcVar1[1]" identifier [ number_literal ]) != (subscript_expression "PTR_elfmagic_004324a0[1]" identifier [ number_literal ])) ))) )) || (parenthesized_expression "(pcVar1[2] != PTR_elfmagic_004324a0[2])" ( (binary_expression "pcVar1[2] != PTR_elfmagic_004324a0[2]" (subscript_expression "pcVar1[2]" identifier [ number_literal ]) != (subscript_expression "PTR_elfmagic_004324a0[2]" identifier [ number_literal ])) ))) )) || (parenthesized_expression "(uVar2 = 0, pcVar1[3] != PTR_elfmagic_004324a0[3])" ( (comma_expression "uVar2 = 0, pcVar1[3] != PTR_elfmagic_004324a0[3]" (assignment_expression "uVar2 = 0" identifier = number_literal) , (binary_expression "pcVar1[3] != PTR_elfmagic_004324a0[3]" (subscript_expression "pcVar1[3]" identifier [ number_literal ]) != (subscript_expression "PTR_elfmagic_004324a0[3]" identifier [ number_literal ]))) ))) )) (compound_statement "{\n    uVar2 = 1;\n  }" { (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) })) (return_statement "return uVar2 ^ 1;" return (binary_expression "uVar2 ^ 1" identifier ^ number_literal) ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT : :) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * (pointer_declarator * IDENT))) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) - IDENT) ))) < LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) != IDENT) || (parenthesized_expression ( (binary_expression IDENT < LIT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))))) ;) (expression_statement (assignment_expression (pointer_expression * (field_expression IDENT . field_identifier)) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (field_expression IDENT . field_identifier)) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (return_statement return LIT ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (field_expression IDENT . field_identifier)) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (field_expression IDENT . field_identifier)) = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (pointer_expression * IDENT)) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ])) ))) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ])) ))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ]))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (return_statement return (binary_expression IDENT ^ LIT) ;) })))
(function_definition "uint gold::is_elf_object(Input_file *param_1,longlong param_2,uchar **param_3,int *param_4)\n\n{\n  char *pcVar1;\n  uint uVar2;\n  int in_a3;\n  uint uVar3;\n  \n  uVar3 = *(uint *)(param_1 + 0x4c) - in_a3;\n  uVar2 = (uint)(*(uint *)(param_1 + 0x4c) < uVar3);\n  if (((int)((*(int *)(param_1 + 0x48) - (int)param_4) - uVar2) < 1) &&\n     ((*(int *)(param_1 + 0x48) - (int)param_4 != uVar2 || (uVar3 < 0x40)))) {\n    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)();\n    *param_2._0_4_ = pcVar1;\n    *param_2._4_4_ = uVar3;\n    if ((int)uVar3 < 4) {\n      return 0;\n    }\n  }\n  else {\n    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)(param_1 + 0x20);\n    *param_2._0_4_ = pcVar1;\n    *param_2._4_4_ = 0x40;\n  }\n  if ((((*pcVar1 != *PTR_elfmagic_004324a0) || (pcVar1[1] != PTR_elfmagic_004324a0[1])) ||\n      (pcVar1[2] != PTR_elfmagic_004324a0[2])) || (uVar2 = 0, pcVar1[3] != PTR_elfmagic_004324a0[3])\n     ) {\n    uVar2 = 1;\n  }\n  return uVar2 ^ 1;\n}" (type_identifier "uint") (ERROR "gold::" (identifier "gold") (: ":") (: ":")) (function_declarator "is_elf_object(Input_file *param_1,longlong param_2,uchar **param_3,int *param_4)" (identifier "is_elf_object") (parameter_list "(Input_file *param_1,longlong param_2,uchar **param_3,int *param_4)" (( "(") (parameter_declaration "Input_file *param_1" (type_identifier "Input_file") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "longlong param_2" (type_identifier "longlong") (identifier "param_2")) (, ",") (parameter_declaration "uchar **param_3" (type_identifier "uchar") (pointer_declarator "**param_3" (* "*") (pointer_declarator "*param_3" (* "*") (identifier "param_3")))) (, ",") (parameter_declaration "int *param_4" (primitive_type "int") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")"))) (compound_statement "{\n  char *pcVar1;\n  uint uVar2;\n  int in_a3;\n  uint uVar3;\n  \n  uVar3 = *(uint *)(param_1 + 0x4c) - in_a3;\n  uVar2 = (uint)(*(uint *)(param_1 + 0x4c) < uVar3);\n  if (((int)((*(int *)(param_1 + 0x48) - (int)param_4) - uVar2) < 1) &&\n     ((*(int *)(param_1 + 0x48) - (int)param_4 != uVar2 || (uVar3 < 0x40)))) {\n    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)();\n    *param_2._0_4_ = pcVar1;\n    *param_2._4_4_ = uVar3;\n    if ((int)uVar3 < 4) {\n      return 0;\n    }\n  }\n  else {\n    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)(param_1 + 0x20);\n    *param_2._0_4_ = pcVar1;\n    *param_2._4_4_ = 0x40;\n  }\n  if ((((*pcVar1 != *PTR_elfmagic_004324a0) || (pcVar1[1] != PTR_elfmagic_004324a0[1])) ||\n      (pcVar1[2] != PTR_elfmagic_004324a0[2])) || (uVar2 = 0, pcVar1[3] != PTR_elfmagic_004324a0[3])\n     ) {\n    uVar2 = 1;\n  }\n  return uVar2 ^ 1;\n}" ({ "{") (declaration "char *pcVar1;" (primitive_type "char") (pointer_declarator "*pcVar1" (* "*") (identifier "pcVar1")) (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "int in_a3;" (primitive_type "int") (identifier "in_a3") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (expression_statement "uVar3 = *(uint *)(param_1 + 0x4c) - in_a3;" (assignment_expression "uVar3 = *(uint *)(param_1 + 0x4c) - in_a3" (identifier "uVar3") (= "=") (binary_expression "*(uint *)(param_1 + 0x4c) - in_a3" (pointer_expression "*(uint *)(param_1 + 0x4c)" (* "*") (cast_expression "(uint *)(param_1 + 0x4c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))) (- "-") (identifier "in_a3"))) (; ";")) (expression_statement "uVar2 = (uint)(*(uint *)(param_1 + 0x4c) < uVar3);" (assignment_expression "uVar2 = (uint)(*(uint *)(param_1 + 0x4c) < uVar3)" (identifier "uVar2") (= "=") (call_expression "(uint)(*(uint *)(param_1 + 0x4c) < uVar3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(uint *)(param_1 + 0x4c) < uVar3)" (( "(") (binary_expression "*(uint *)(param_1 + 0x4c) < uVar3" (pointer_expression "*(uint *)(param_1 + 0x4c)" (* "*") (cast_expression "(uint *)(param_1 + 0x4c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))) (< "<") (identifier "uVar3")) () ")")))) (; ";")) (if_statement "if (((int)((*(int *)(param_1 + 0x48) - (int)param_4) - uVar2) < 1) &&\n     ((*(int *)(param_1 + 0x48) - (int)param_4 != uVar2 || (uVar3 < 0x40)))) {\n    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)();\n    *param_2._0_4_ = pcVar1;\n    *param_2._4_4_ = uVar3;\n    if ((int)uVar3 < 4) {\n      return 0;\n    }\n  }\n  else {\n    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)(param_1 + 0x20);\n    *param_2._0_4_ = pcVar1;\n    *param_2._4_4_ = 0x40;\n  }" (if "if") (parenthesized_expression "(((int)((*(int *)(param_1 + 0x48) - (int)param_4) - uVar2) < 1) &&\n     ((*(int *)(param_1 + 0x48) - (int)param_4 != uVar2 || (uVar3 < 0x40))))" (( "(") (binary_expression "((int)((*(int *)(param_1 + 0x48) - (int)param_4) - uVar2) < 1) &&\n     ((*(int *)(param_1 + 0x48) - (int)param_4 != uVar2 || (uVar3 < 0x40)))" (parenthesized_expression "((int)((*(int *)(param_1 + 0x48) - (int)param_4) - uVar2) < 1)" (( "(") (binary_expression "(int)((*(int *)(param_1 + 0x48) - (int)param_4) - uVar2) < 1" (cast_expression "(int)((*(int *)(param_1 + 0x48) - (int)param_4) - uVar2)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((*(int *)(param_1 + 0x48) - (int)param_4) - uVar2)" (( "(") (binary_expression "(*(int *)(param_1 + 0x48) - (int)param_4) - uVar2" (parenthesized_expression "(*(int *)(param_1 + 0x48) - (int)param_4)" (( "(") (binary_expression "*(int *)(param_1 + 0x48) - (int)param_4" (pointer_expression "*(int *)(param_1 + 0x48)" (* "*") (cast_expression "(int *)(param_1 + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (- "-") (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4"))) () ")")) (- "-") (identifier "uVar2")) () ")"))) (< "<") (number_literal "1")) () ")")) (&& "&&") (parenthesized_expression "((*(int *)(param_1 + 0x48) - (int)param_4 != uVar2 || (uVar3 < 0x40)))" (( "(") (parenthesized_expression "(*(int *)(param_1 + 0x48) - (int)param_4 != uVar2 || (uVar3 < 0x40))" (( "(") (binary_expression "*(int *)(param_1 + 0x48) - (int)param_4 != uVar2 || (uVar3 < 0x40)" (binary_expression "*(int *)(param_1 + 0x48) - (int)param_4 != uVar2" (binary_expression "*(int *)(param_1 + 0x48) - (int)param_4" (pointer_expression "*(int *)(param_1 + 0x48)" (* "*") (cast_expression "(int *)(param_1 + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (- "-") (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4"))) (!= "!=") (identifier "uVar2")) (|| "||") (parenthesized_expression "(uVar3 < 0x40)" (( "(") (binary_expression "uVar3 < 0x40" (identifier "uVar3") (< "<") (number_literal "0x40")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)();\n    *param_2._0_4_ = pcVar1;\n    *param_2._4_4_ = uVar3;\n    if ((int)uVar3 < 4) {\n      return 0;\n    }\n  }" ({ "{") (expression_statement "pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)();" (assignment_expression "pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)()" (identifier "pcVar1") (= "=") (cast_expression "(char *)(*(code *)PTR_get_view_0043249c)()" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_get_view_0043249c)()" (parenthesized_expression "(*(code *)PTR_get_view_0043249c)" (( "(") (pointer_expression "*(code *)PTR_get_view_0043249c" (* "*") (cast_expression "(code *)PTR_get_view_0043249c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_get_view_0043249c"))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*param_2._0_4_ = pcVar1;" (assignment_expression "*param_2._0_4_ = pcVar1" (pointer_expression "*param_2._0_4_" (* "*") (field_expression "param_2._0_4_" (identifier "param_2") (. ".") (field_identifier "_0_4_"))) (= "=") (identifier "pcVar1")) (; ";")) (expression_statement "*param_2._4_4_ = uVar3;" (assignment_expression "*param_2._4_4_ = uVar3" (pointer_expression "*param_2._4_4_" (* "*") (field_expression "param_2._4_4_" (identifier "param_2") (. ".") (field_identifier "_4_4_"))) (= "=") (identifier "uVar3")) (; ";")) (if_statement "if ((int)uVar3 < 4) {\n      return 0;\n    }" (if "if") (parenthesized_expression "((int)uVar3 < 4)" (( "(") (binary_expression "(int)uVar3 < 4" (cast_expression "(int)uVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar3")) (< "<") (number_literal "4")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)(param_1 + 0x20);\n    *param_2._0_4_ = pcVar1;\n    *param_2._4_4_ = 0x40;\n  }" (else "else") (compound_statement "{\n    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)(param_1 + 0x20);\n    *param_2._0_4_ = pcVar1;\n    *param_2._4_4_ = 0x40;\n  }" ({ "{") (expression_statement "pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)(param_1 + 0x20);" (assignment_expression "pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)(param_1 + 0x20)" (identifier "pcVar1") (= "=") (cast_expression "(char *)(*(code *)PTR_get_view_0043249c)(param_1 + 0x20)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_get_view_0043249c)(param_1 + 0x20)" (parenthesized_expression "(*(code *)PTR_get_view_0043249c)" (( "(") (pointer_expression "*(code *)PTR_get_view_0043249c" (* "*") (cast_expression "(code *)PTR_get_view_0043249c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_get_view_0043249c"))) () ")")) (argument_list "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "*param_2._0_4_ = pcVar1;" (assignment_expression "*param_2._0_4_ = pcVar1" (pointer_expression "*param_2._0_4_" (* "*") (field_expression "param_2._0_4_" (identifier "param_2") (. ".") (field_identifier "_0_4_"))) (= "=") (identifier "pcVar1")) (; ";")) (expression_statement "*param_2._4_4_ = 0x40;" (assignment_expression "*param_2._4_4_ = 0x40" (pointer_expression "*param_2._4_4_" (* "*") (field_expression "param_2._4_4_" (identifier "param_2") (. ".") (field_identifier "_4_4_"))) (= "=") (number_literal "0x40")) (; ";")) (} "}")))) (if_statement "if ((((*pcVar1 != *PTR_elfmagic_004324a0) || (pcVar1[1] != PTR_elfmagic_004324a0[1])) ||\n      (pcVar1[2] != PTR_elfmagic_004324a0[2])) || (uVar2 = 0, pcVar1[3] != PTR_elfmagic_004324a0[3])\n     ) {\n    uVar2 = 1;\n  }" (if "if") (parenthesized_expression "((((*pcVar1 != *PTR_elfmagic_004324a0) || (pcVar1[1] != PTR_elfmagic_004324a0[1])) ||\n      (pcVar1[2] != PTR_elfmagic_004324a0[2])) || (uVar2 = 0, pcVar1[3] != PTR_elfmagic_004324a0[3])\n     )" (( "(") (binary_expression "(((*pcVar1 != *PTR_elfmagic_004324a0) || (pcVar1[1] != PTR_elfmagic_004324a0[1])) ||\n      (pcVar1[2] != PTR_elfmagic_004324a0[2])) || (uVar2 = 0, pcVar1[3] != PTR_elfmagic_004324a0[3])" (parenthesized_expression "(((*pcVar1 != *PTR_elfmagic_004324a0) || (pcVar1[1] != PTR_elfmagic_004324a0[1])) ||\n      (pcVar1[2] != PTR_elfmagic_004324a0[2]))" (( "(") (binary_expression "((*pcVar1 != *PTR_elfmagic_004324a0) || (pcVar1[1] != PTR_elfmagic_004324a0[1])) ||\n      (pcVar1[2] != PTR_elfmagic_004324a0[2])" (parenthesized_expression "((*pcVar1 != *PTR_elfmagic_004324a0) || (pcVar1[1] != PTR_elfmagic_004324a0[1]))" (( "(") (binary_expression "(*pcVar1 != *PTR_elfmagic_004324a0) || (pcVar1[1] != PTR_elfmagic_004324a0[1])" (parenthesized_expression "(*pcVar1 != *PTR_elfmagic_004324a0)" (( "(") (binary_expression "*pcVar1 != *PTR_elfmagic_004324a0" (pointer_expression "*pcVar1" (* "*") (identifier "pcVar1")) (!= "!=") (pointer_expression "*PTR_elfmagic_004324a0" (* "*") (identifier "PTR_elfmagic_004324a0"))) () ")")) (|| "||") (parenthesized_expression "(pcVar1[1] != PTR_elfmagic_004324a0[1])" (( "(") (binary_expression "pcVar1[1] != PTR_elfmagic_004324a0[1]" (subscript_expression "pcVar1[1]" (identifier "pcVar1") ([ "[") (number_literal "1") (] "]")) (!= "!=") (subscript_expression "PTR_elfmagic_004324a0[1]" (identifier "PTR_elfmagic_004324a0") ([ "[") (number_literal "1") (] "]"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "(pcVar1[2] != PTR_elfmagic_004324a0[2])" (( "(") (binary_expression "pcVar1[2] != PTR_elfmagic_004324a0[2]" (subscript_expression "pcVar1[2]" (identifier "pcVar1") ([ "[") (number_literal "2") (] "]")) (!= "!=") (subscript_expression "PTR_elfmagic_004324a0[2]" (identifier "PTR_elfmagic_004324a0") ([ "[") (number_literal "2") (] "]"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "(uVar2 = 0, pcVar1[3] != PTR_elfmagic_004324a0[3])" (( "(") (comma_expression "uVar2 = 0, pcVar1[3] != PTR_elfmagic_004324a0[3]" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (, ",") (binary_expression "pcVar1[3] != PTR_elfmagic_004324a0[3]" (subscript_expression "pcVar1[3]" (identifier "pcVar1") ([ "[") (number_literal "3") (] "]")) (!= "!=") (subscript_expression "PTR_elfmagic_004324a0[3]" (identifier "PTR_elfmagic_004324a0") ([ "[") (number_literal "3") (] "]")))) () ")"))) () ")")) (compound_statement "{\n    uVar2 = 1;\n  }" ({ "{") (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" (identifier "uVar2") (= "=") (number_literal "1")) (; ";")) (} "}"))) (return_statement "return uVar2 ^ 1;" (return "return") (binary_expression "uVar2 ^ 1" (identifier "uVar2") (^ "^") (number_literal "1")) (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) (ERROR (identifier)) 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: (type_identifier) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (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: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) right: (identifier)))) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (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: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))))) (expression_statement (assignment_expression left: (pointer_expression argument: (field_expression argument: (identifier) field: (field_identifier))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (field_expression argument: (identifier) field: (field_identifier))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (field_expression argument: (identifier) field: (field_identifier))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (field_expression argument: (identifier) field: (field_identifier))) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (return_statement (binary_expression left: (identifier) right: (number_literal))))))

/* gold::MASKED(gold::Input_file*, long long, unsigned char const**, int*) */

uint gold::MASKED(Input_file *param_1,longlong param_2,uchar **param_3,int *param_4)

{
  char *pcVar1;
  uint uVar2;
  int in_a3;
  uint uVar3;
  
  uVar3 = *(uint *)(param_1 + 0x4c) - in_a3;
  uVar2 = (uint)(*(uint *)(param_1 + 0x4c) < uVar3);
  if (((int)((*(int *)(param_1 + 0x48) - (int)param_4) - uVar2) < 1) &&
     ((*(int *)(param_1 + 0x48) - (int)param_4 != uVar2 || (uVar3 < 0x40)))) {
    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)();
    *param_2._0_4_ = pcVar1;
    *param_2._4_4_ = uVar3;
    if ((int)uVar3 < 4) {
      return 0;
    }
  }
  else {
    pcVar1 = (char *)(*(code *)PTR_get_view_0043249c)(param_1 + 0x20);
    *param_2._0_4_ = pcVar1;
    *param_2._4_4_ = 0x40;
  }
  if ((((*pcVar1 != *PTR_elfmagic_004324a0) || (pcVar1[1] != PTR_elfmagic_004324a0[1])) ||
      (pcVar1[2] != PTR_elfmagic_004324a0[2])) || (uVar2 = 0, pcVar1[3] != PTR_elfmagic_004324a0[3])
     ) {
    uVar2 = 1;
  }
  return uVar2 ^ 1;
}

