
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */
/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */

uint script_parse_memory_attr(void *closurev,char *attrs,size_t attrlen,int invert)

{
  undefined *puVar1;
  uint uVar2;
  char *message;
  byte *pbVar3;
  undefined *puVar4;
  uint uVar5;
  
  puVar1 = PTR_s_in_a_linker_script_004c191c;
  uVar5 = 0;
  puVar4 = PTR_s_in_a_linker_script_004c191c + 0x1060;
  pbVar3 = (byte *)attrs;
  while( true ) {
    if (pbVar3 == (byte *)(attrs + attrlen)) {
      if (invert != 0) {
        uVar5 = 0x1f;
      }
      return uVar5;
    }
    uVar2 = *pbVar3 - 0x41 & 0xff;
    if (uVar2 < 0x38) break;
    message = (char *)(*(code *)PTR_gettext_004c5c30)(puVar4);
    yyerror(closurev,message);
    pbVar3 = pbVar3 + 1;
  }
                    /* WARNING: Could not emulate address calculation at 0x002a6b6c */
                    /* WARNING: Treating indirect jump as call */
  uVar5 = (*(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option
                    + *(int *)(puVar1 + uVar2 * 4 + 0x2028)))();
  return uVar5;
}



undefined4 script_parse_memory_attr(undefined4 param_1,byte *param_2,int param_3,int param_4)

{
  undefined *puVar1;
  uint uVar2;
  undefined4 uVar3;
  byte *pbVar4;
  undefined *puVar5;
  undefined4 uVar6;
  
  puVar1 = PTR_s_in_a_linker_script_004c191c;
  uVar6 = 0;
  puVar5 = PTR_s_in_a_linker_script_004c191c + 0x1060;
  pbVar4 = param_2;
  while( true ) {
    if (pbVar4 == param_2 + param_3) {
      if (param_4 != 0) {
        uVar6 = 0x1f;
      }
      return uVar6;
    }
    uVar2 = *pbVar4 - 0x41 & 0xff;
    if (uVar2 < 0x38) break;
    uVar3 = (*(code *)PTR_gettext_004c5c30)(puVar5);
    yyerror(param_1,uVar3);
    pbVar4 = pbVar4 + 1;
  }
                    /* WARNING: Could not emulate address calculation at 0x002a6b6c */
                    /* WARNING: Treating indirect jump as call */
  uVar6 = (*(code *)(gold::Position_dependent_options::default_options_ +
                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210))();
  return uVar6;
}


lui gp,0x22
addiu gp,gp,0x2758
addu gp,gp,t9
addiu sp,sp,-0x40
sw s6,0x34(sp)
sw s1,0x20(sp)
sw s3,0x28(sp)
sw s7,0x38(sp)
addu s7,a1,a2
sw s5,0x30(sp)
or s5,zero,zero
sw s4,0x2c(sp)
or s4,a3,zero
sw s2,0x24(sp)
or s2,a0,zero
sw s0,0x1c(sp)
or s0,a1,zero
sw gp,0x10(sp)
sw ra,0x3c(sp)
lw s1,-0x7924(gp)
lw s6,-0x7924(gp)
lw s3,-0x6a20(gp)
addiu s1,s1,0x1060
addiu s6,s6,0x2028
beq s0,s7,0x002a6b88
_nop
addiu s0,s0,0x1
lbu v0,-0x1(s0)
addiu v0,v0,-0x41
andi v0,v0,0xff
sltiu v1,v0,0x38
beq v1,zero,0x002a6be0
_sll v0,v0,0x2
addu v0,s6,v0
lw v0,0x0(v0)
addu v0,v0,gp
jr v0
_nop
bne s0,s7,0x002a6b50
_ori s5,s5,0x1
beq s4,zero,0x002a6b94
_lw ra,0x3c(sp)
xori s5,s5,0x1f
or v0,s5,zero
lw s7,0x38(sp)
lw s6,0x34(sp)
lw s5,0x30(sp)
lw s4,0x2c(sp)
lw s3,0x28(sp)
lw s2,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
jr ra
_addiu sp,sp,0x40
b 0x002a6b48
_ori s5,s5,0x6
b 0x002a6b48
_ori s5,s5,0x4
b 0x002a6b48
_ori s5,s5,0x10
b 0x002a6b48
_ori s5,s5,0x8
lw t9,-0x3610(gp)
jalr t9
_or a0,s1,zero
or a0,s2,zero
or t9,s3,zero
bal 0x002a6194
_or a1,v0,zero
b 0x002a6b48
_lw gp,0x10(sp)
(translation_unit "undefined4 script_parse_memory_attr(undefined4 param_1,byte *param_2,int param_3,int param_4)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  byte *pbVar4;\n  undefined *puVar5;\n  undefined4 uVar6;\n  \n  puVar1 = PTR_s_in_a_linker_script_004c191c;\n  uVar6 = 0;\n  puVar5 = PTR_s_in_a_linker_script_004c191c + 0x1060;\n  pbVar4 = param_2;\n  while( true ) {\n    if (pbVar4 == param_2 + param_3) {\n      if (param_4 != 0) {\n        uVar6 = 0x1f;\n      }\n      return uVar6;\n    }\n    uVar2 = *pbVar4 - 0x41 & 0xff;\n    if (uVar2 < 0x38) break;\n    uVar3 = (*(code *)PTR_gettext_004c5c30)(puVar5);\n    yyerror(param_1,uVar3);\n    pbVar4 = pbVar4 + 1;\n  }\n                    /* WARNING: Could not emulate address calculation at 0x002a6b6c */\n                    /* WARNING: Treating indirect jump as call */\n  uVar6 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210))();\n  return uVar6;\n}\n\n" (function_definition "undefined4 script_parse_memory_attr(undefined4 param_1,byte *param_2,int param_3,int param_4)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  byte *pbVar4;\n  undefined *puVar5;\n  undefined4 uVar6;\n  \n  puVar1 = PTR_s_in_a_linker_script_004c191c;\n  uVar6 = 0;\n  puVar5 = PTR_s_in_a_linker_script_004c191c + 0x1060;\n  pbVar4 = param_2;\n  while( true ) {\n    if (pbVar4 == param_2 + param_3) {\n      if (param_4 != 0) {\n        uVar6 = 0x1f;\n      }\n      return uVar6;\n    }\n    uVar2 = *pbVar4 - 0x41 & 0xff;\n    if (uVar2 < 0x38) break;\n    uVar3 = (*(code *)PTR_gettext_004c5c30)(puVar5);\n    yyerror(param_1,uVar3);\n    pbVar4 = pbVar4 + 1;\n  }\n                    /* WARNING: Could not emulate address calculation at 0x002a6b6c */\n                    /* WARNING: Treating indirect jump as call */\n  uVar6 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210))();\n  return uVar6;\n}" type_identifier (function_declarator "script_parse_memory_attr(undefined4 param_1,byte *param_2,int param_3,int param_4)" identifier (parameter_list "(undefined4 param_1,byte *param_2,int param_3,int param_4)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  byte *pbVar4;\n  undefined *puVar5;\n  undefined4 uVar6;\n  \n  puVar1 = PTR_s_in_a_linker_script_004c191c;\n  uVar6 = 0;\n  puVar5 = PTR_s_in_a_linker_script_004c191c + 0x1060;\n  pbVar4 = param_2;\n  while( true ) {\n    if (pbVar4 == param_2 + param_3) {\n      if (param_4 != 0) {\n        uVar6 = 0x1f;\n      }\n      return uVar6;\n    }\n    uVar2 = *pbVar4 - 0x41 & 0xff;\n    if (uVar2 < 0x38) break;\n    uVar3 = (*(code *)PTR_gettext_004c5c30)(puVar5);\n    yyerror(param_1,uVar3);\n    pbVar4 = pbVar4 + 1;\n  }\n                    /* WARNING: Could not emulate address calculation at 0x002a6b6c */\n                    /* WARNING: Treating indirect jump as call */\n  uVar6 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210))();\n  return uVar6;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (expression_statement "puVar1 = PTR_s_in_a_linker_script_004c191c;" (assignment_expression "puVar1 = PTR_s_in_a_linker_script_004c191c" identifier = identifier) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "puVar5 = PTR_s_in_a_linker_script_004c191c + 0x1060;" (assignment_expression "puVar5 = PTR_s_in_a_linker_script_004c191c + 0x1060" identifier = (binary_expression "PTR_s_in_a_linker_script_004c191c + 0x1060" identifier + number_literal)) ;) (expression_statement "pbVar4 = param_2;" (assignment_expression "pbVar4 = param_2" identifier = identifier) ;) (while_statement "while( true ) {\n    if (pbVar4 == param_2 + param_3) {\n      if (param_4 != 0) {\n        uVar6 = 0x1f;\n      }\n      return uVar6;\n    }\n    uVar2 = *pbVar4 - 0x41 & 0xff;\n    if (uVar2 < 0x38) break;\n    uVar3 = (*(code *)PTR_gettext_004c5c30)(puVar5);\n    yyerror(param_1,uVar3);\n    pbVar4 = pbVar4 + 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (pbVar4 == param_2 + param_3) {\n      if (param_4 != 0) {\n        uVar6 = 0x1f;\n      }\n      return uVar6;\n    }\n    uVar2 = *pbVar4 - 0x41 & 0xff;\n    if (uVar2 < 0x38) break;\n    uVar3 = (*(code *)PTR_gettext_004c5c30)(puVar5);\n    yyerror(param_1,uVar3);\n    pbVar4 = pbVar4 + 1;\n  }" { (if_statement "if (pbVar4 == param_2 + param_3) {\n      if (param_4 != 0) {\n        uVar6 = 0x1f;\n      }\n      return uVar6;\n    }" if (parenthesized_expression "(pbVar4 == param_2 + param_3)" ( (binary_expression "pbVar4 == param_2 + param_3" identifier == (binary_expression "param_2 + param_3" identifier + identifier)) )) (compound_statement "{\n      if (param_4 != 0) {\n        uVar6 = 0x1f;\n      }\n      return uVar6;\n    }" { (if_statement "if (param_4 != 0) {\n        uVar6 = 0x1f;\n      }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar6 = 0x1f;\n      }" { (expression_statement "uVar6 = 0x1f;" (assignment_expression "uVar6 = 0x1f" identifier = number_literal) ;) })) (return_statement "return uVar6;" return identifier ;) })) (expression_statement "uVar2 = *pbVar4 - 0x41 & 0xff;" (assignment_expression "uVar2 = *pbVar4 - 0x41 & 0xff" identifier = (binary_expression "*pbVar4 - 0x41 & 0xff" (binary_expression "*pbVar4 - 0x41" (pointer_expression "*pbVar4" * identifier) - number_literal) & number_literal)) ;) (if_statement "if (uVar2 < 0x38) break;" if (parenthesized_expression "(uVar2 < 0x38)" ( (binary_expression "uVar2 < 0x38" identifier < number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar3 = (*(code *)PTR_gettext_004c5c30)(puVar5);" (assignment_expression "uVar3 = (*(code *)PTR_gettext_004c5c30)(puVar5)" identifier = (call_expression "(*(code *)PTR_gettext_004c5c30)(puVar5)" (parenthesized_expression "(*(code *)PTR_gettext_004c5c30)" ( (pointer_expression "*(code *)PTR_gettext_004c5c30" * (cast_expression "(code *)PTR_gettext_004c5c30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar5)" ( identifier )))) ;) (expression_statement "yyerror(param_1,uVar3);" (call_expression "yyerror(param_1,uVar3)" identifier (argument_list "(param_1,uVar3)" ( identifier , identifier ))) ;) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) })) comment comment (expression_statement "uVar6 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210))();" (assignment_expression "uVar6 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210))()" identifier = (call_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210))()" (parenthesized_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210))" ( (pointer_expression "*(code *)(gold::Position_dependent_options::default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210)" * (cast_expression "(code *)(gold::Position_dependent_options::default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(gold::Position_dependent_options::default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210)" ( (ERROR "gold::Position_dependent_options::" identifier : : identifier : :) (binary_expression "default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210" (binary_expression "default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028)" identifier + (pointer_expression "*(int *)(puVar1 + uVar2 * 4 + 0x2028)" * (cast_expression "(int *)(puVar1 + uVar2 * 4 + 0x2028)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + uVar2 * 4 + 0x2028)" ( (binary_expression "puVar1 + uVar2 * 4 + 0x2028" (binary_expression "puVar1 + uVar2 * 4" identifier + (binary_expression "uVar2 * 4" identifier * number_literal)) + number_literal) ))))) + number_literal) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar6;" return identifier ;) })))
(translation_unit "/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */\n/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */\n/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */\n/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */\n\nuint script_parse_memory_attr(void *closurev,char *attrs,size_t attrlen,int invert)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  char *message;\n  byte *pbVar3;\n  undefined *puVar4;\n  uint uVar5;\n  \n  puVar1 = PTR_s_in_a_linker_script_004c191c;\n  uVar5 = 0;\n  puVar4 = PTR_s_in_a_linker_script_004c191c + 0x1060;\n  pbVar3 = (byte *)attrs;\n  while( true ) {\n    if (pbVar3 == (byte *)(attrs + attrlen)) {\n      if (invert != 0) {\n        uVar5 = 0x1f;\n      }\n      return uVar5;\n    }\n    uVar2 = *pbVar3 - 0x41 & 0xff;\n    if (uVar2 < 0x38) break;\n    message = (char *)(*(code *)PTR_gettext_004c5c30)(puVar4);\n    yyerror(closurev,message);\n    pbVar3 = pbVar3 + 1;\n  }\n                    /* WARNING: Could not emulate address calculation at 0x002a6b6c */\n                    /* WARNING: Treating indirect jump as call */\n  uVar5 = (*(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option\n                    + *(int *)(puVar1 + uVar2 * 4 + 0x2028)))();\n  return uVar5;\n}\n\n" comment comment comment comment comment comment (function_definition "uint script_parse_memory_attr(void *closurev,char *attrs,size_t attrlen,int invert)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  char *message;\n  byte *pbVar3;\n  undefined *puVar4;\n  uint uVar5;\n  \n  puVar1 = PTR_s_in_a_linker_script_004c191c;\n  uVar5 = 0;\n  puVar4 = PTR_s_in_a_linker_script_004c191c + 0x1060;\n  pbVar3 = (byte *)attrs;\n  while( true ) {\n    if (pbVar3 == (byte *)(attrs + attrlen)) {\n      if (invert != 0) {\n        uVar5 = 0x1f;\n      }\n      return uVar5;\n    }\n    uVar2 = *pbVar3 - 0x41 & 0xff;\n    if (uVar2 < 0x38) break;\n    message = (char *)(*(code *)PTR_gettext_004c5c30)(puVar4);\n    yyerror(closurev,message);\n    pbVar3 = pbVar3 + 1;\n  }\n                    /* WARNING: Could not emulate address calculation at 0x002a6b6c */\n                    /* WARNING: Treating indirect jump as call */\n  uVar5 = (*(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option\n                    + *(int *)(puVar1 + uVar2 * 4 + 0x2028)))();\n  return uVar5;\n}" type_identifier (function_declarator "script_parse_memory_attr(void *closurev,char *attrs,size_t attrlen,int invert)" identifier (parameter_list "(void *closurev,char *attrs,size_t attrlen,int invert)" ( (parameter_declaration "void *closurev" primitive_type (pointer_declarator "*closurev" * identifier)) , (parameter_declaration "char *attrs" primitive_type (pointer_declarator "*attrs" * identifier)) , (parameter_declaration "size_t attrlen" primitive_type identifier) , (parameter_declaration "int invert" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  char *message;\n  byte *pbVar3;\n  undefined *puVar4;\n  uint uVar5;\n  \n  puVar1 = PTR_s_in_a_linker_script_004c191c;\n  uVar5 = 0;\n  puVar4 = PTR_s_in_a_linker_script_004c191c + 0x1060;\n  pbVar3 = (byte *)attrs;\n  while( true ) {\n    if (pbVar3 == (byte *)(attrs + attrlen)) {\n      if (invert != 0) {\n        uVar5 = 0x1f;\n      }\n      return uVar5;\n    }\n    uVar2 = *pbVar3 - 0x41 & 0xff;\n    if (uVar2 < 0x38) break;\n    message = (char *)(*(code *)PTR_gettext_004c5c30)(puVar4);\n    yyerror(closurev,message);\n    pbVar3 = pbVar3 + 1;\n  }\n                    /* WARNING: Could not emulate address calculation at 0x002a6b6c */\n                    /* WARNING: Treating indirect jump as call */\n  uVar5 = (*(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option\n                    + *(int *)(puVar1 + uVar2 * 4 + 0x2028)))();\n  return uVar5;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "char *message;" primitive_type (pointer_declarator "*message" * identifier) ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (expression_statement "puVar1 = PTR_s_in_a_linker_script_004c191c;" (assignment_expression "puVar1 = PTR_s_in_a_linker_script_004c191c" identifier = identifier) ;) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "puVar4 = PTR_s_in_a_linker_script_004c191c + 0x1060;" (assignment_expression "puVar4 = PTR_s_in_a_linker_script_004c191c + 0x1060" identifier = (binary_expression "PTR_s_in_a_linker_script_004c191c + 0x1060" identifier + number_literal)) ;) (expression_statement "pbVar3 = (byte *)attrs;" (assignment_expression "pbVar3 = (byte *)attrs" identifier = (cast_expression "(byte *)attrs" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (while_statement "while( true ) {\n    if (pbVar3 == (byte *)(attrs + attrlen)) {\n      if (invert != 0) {\n        uVar5 = 0x1f;\n      }\n      return uVar5;\n    }\n    uVar2 = *pbVar3 - 0x41 & 0xff;\n    if (uVar2 < 0x38) break;\n    message = (char *)(*(code *)PTR_gettext_004c5c30)(puVar4);\n    yyerror(closurev,message);\n    pbVar3 = pbVar3 + 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (pbVar3 == (byte *)(attrs + attrlen)) {\n      if (invert != 0) {\n        uVar5 = 0x1f;\n      }\n      return uVar5;\n    }\n    uVar2 = *pbVar3 - 0x41 & 0xff;\n    if (uVar2 < 0x38) break;\n    message = (char *)(*(code *)PTR_gettext_004c5c30)(puVar4);\n    yyerror(closurev,message);\n    pbVar3 = pbVar3 + 1;\n  }" { (if_statement "if (pbVar3 == (byte *)(attrs + attrlen)) {\n      if (invert != 0) {\n        uVar5 = 0x1f;\n      }\n      return uVar5;\n    }" if (parenthesized_expression "(pbVar3 == (byte *)(attrs + attrlen))" ( (binary_expression "pbVar3 == (byte *)(attrs + attrlen)" identifier == (cast_expression "(byte *)(attrs + attrlen)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(attrs + attrlen)" ( (binary_expression "attrs + attrlen" identifier + identifier) )))) )) (compound_statement "{\n      if (invert != 0) {\n        uVar5 = 0x1f;\n      }\n      return uVar5;\n    }" { (if_statement "if (invert != 0) {\n        uVar5 = 0x1f;\n      }" if (parenthesized_expression "(invert != 0)" ( (binary_expression "invert != 0" identifier != number_literal) )) (compound_statement "{\n        uVar5 = 0x1f;\n      }" { (expression_statement "uVar5 = 0x1f;" (assignment_expression "uVar5 = 0x1f" identifier = number_literal) ;) })) (return_statement "return uVar5;" return identifier ;) })) (expression_statement "uVar2 = *pbVar3 - 0x41 & 0xff;" (assignment_expression "uVar2 = *pbVar3 - 0x41 & 0xff" identifier = (binary_expression "*pbVar3 - 0x41 & 0xff" (binary_expression "*pbVar3 - 0x41" (pointer_expression "*pbVar3" * identifier) - number_literal) & number_literal)) ;) (if_statement "if (uVar2 < 0x38) break;" if (parenthesized_expression "(uVar2 < 0x38)" ( (binary_expression "uVar2 < 0x38" identifier < number_literal) )) (break_statement "break;" break ;)) (expression_statement "message = (char *)(*(code *)PTR_gettext_004c5c30)(puVar4);" (assignment_expression "message = (char *)(*(code *)PTR_gettext_004c5c30)(puVar4)" identifier = (cast_expression "(char *)(*(code *)PTR_gettext_004c5c30)(puVar4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_gettext_004c5c30)(puVar4)" (parenthesized_expression "(*(code *)PTR_gettext_004c5c30)" ( (pointer_expression "*(code *)PTR_gettext_004c5c30" * (cast_expression "(code *)PTR_gettext_004c5c30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar4)" ( identifier ))))) ;) (expression_statement "yyerror(closurev,message);" (call_expression "yyerror(closurev,message)" identifier (argument_list "(closurev,message)" ( identifier , identifier ))) ;) (expression_statement "pbVar3 = pbVar3 + 1;" (assignment_expression "pbVar3 = pbVar3 + 1" identifier = (binary_expression "pbVar3 + 1" identifier + number_literal)) ;) })) comment comment (expression_statement "uVar5 = (*(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option\n                    + *(int *)(puVar1 + uVar2 * 4 + 0x2028)))();" (assignment_expression "uVar5 = (*(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option\n                    + *(int *)(puVar1 + uVar2 * 4 + 0x2028)))()" identifier = (call_expression "(*(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option\n                    + *(int *)(puVar1 + uVar2 * 4 + 0x2028)))()" (parenthesized_expression "(*(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option\n                    + *(int *)(puVar1 + uVar2 * 4 + 0x2028)))" ( (pointer_expression "*(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option\n                    + *(int *)(puVar1 + uVar2 * 4 + 0x2028))" * (cast_expression "(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option\n                    + *(int *)(puVar1 + uVar2 * 4 + 0x2028))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option\n                    + *(int *)(puVar1 + uVar2 * 4 + 0x2028))" ( (ERROR "&gold::Position_dependent_options::" (pointer_expression "&gold" & identifier) : : identifier : :) (binary_expression "default_options_.relax_.user_set_via_option\n                    + *(int *)(puVar1 + uVar2 * 4 + 0x2028)" (field_expression "default_options_.relax_.user_set_via_option" (field_expression "default_options_.relax_" identifier . field_identifier) . field_identifier) + (pointer_expression "*(int *)(puVar1 + uVar2 * 4 + 0x2028)" * (cast_expression "(int *)(puVar1 + uVar2 * 4 + 0x2028)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + uVar2 * 4 + 0x2028)" ( (binary_expression "puVar1 + uVar2 * 4 + 0x2028" (binary_expression "puVar1 + uVar2 * 4" identifier + (binary_expression "uVar2 * 4" identifier * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar5;" return identifier ;) })))
(translation_unit "undefined4 script_parse_memory_attr(undefined4 param_1,byte *param_2,int param_3,int param_4)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  byte *pbVar4;\n  undefined *puVar5;\n  undefined4 uVar6;\n  \n  puVar1 = PTR_s_in_a_linker_script_004c191c;\n  uVar6 = 0;\n  puVar5 = PTR_s_in_a_linker_script_004c191c + 0x1060;\n  pbVar4 = param_2;\n  while( true ) {\n    if (pbVar4 == param_2 + param_3) {\n      if (param_4 != 0) {\n        uVar6 = 0x1f;\n      }\n      return uVar6;\n    }\n    uVar2 = *pbVar4 - 0x41 & 0xff;\n    if (uVar2 < 0x38) break;\n    uVar3 = (*(code *)PTR_gettext_004c5c30)(puVar5);\n    yyerror(param_1,uVar3);\n    pbVar4 = pbVar4 + 1;\n  }\n                    \n                    \n  uVar6 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210))();\n  return uVar6;\n}\n\n" (function_definition "undefined4 script_parse_memory_attr(undefined4 param_1,byte *param_2,int param_3,int param_4)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  byte *pbVar4;\n  undefined *puVar5;\n  undefined4 uVar6;\n  \n  puVar1 = PTR_s_in_a_linker_script_004c191c;\n  uVar6 = 0;\n  puVar5 = PTR_s_in_a_linker_script_004c191c + 0x1060;\n  pbVar4 = param_2;\n  while( true ) {\n    if (pbVar4 == param_2 + param_3) {\n      if (param_4 != 0) {\n        uVar6 = 0x1f;\n      }\n      return uVar6;\n    }\n    uVar2 = *pbVar4 - 0x41 & 0xff;\n    if (uVar2 < 0x38) break;\n    uVar3 = (*(code *)PTR_gettext_004c5c30)(puVar5);\n    yyerror(param_1,uVar3);\n    pbVar4 = pbVar4 + 1;\n  }\n                    \n                    \n  uVar6 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210))();\n  return uVar6;\n}" type_identifier (function_declarator "script_parse_memory_attr(undefined4 param_1,byte *param_2,int param_3,int param_4)" identifier (parameter_list "(undefined4 param_1,byte *param_2,int param_3,int param_4)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  byte *pbVar4;\n  undefined *puVar5;\n  undefined4 uVar6;\n  \n  puVar1 = PTR_s_in_a_linker_script_004c191c;\n  uVar6 = 0;\n  puVar5 = PTR_s_in_a_linker_script_004c191c + 0x1060;\n  pbVar4 = param_2;\n  while( true ) {\n    if (pbVar4 == param_2 + param_3) {\n      if (param_4 != 0) {\n        uVar6 = 0x1f;\n      }\n      return uVar6;\n    }\n    uVar2 = *pbVar4 - 0x41 & 0xff;\n    if (uVar2 < 0x38) break;\n    uVar3 = (*(code *)PTR_gettext_004c5c30)(puVar5);\n    yyerror(param_1,uVar3);\n    pbVar4 = pbVar4 + 1;\n  }\n                    \n                    \n  uVar6 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210))();\n  return uVar6;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (expression_statement "puVar1 = PTR_s_in_a_linker_script_004c191c;" (assignment_expression "puVar1 = PTR_s_in_a_linker_script_004c191c" identifier = identifier) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "puVar5 = PTR_s_in_a_linker_script_004c191c + 0x1060;" (assignment_expression "puVar5 = PTR_s_in_a_linker_script_004c191c + 0x1060" identifier = (binary_expression "PTR_s_in_a_linker_script_004c191c + 0x1060" identifier + number_literal)) ;) (expression_statement "pbVar4 = param_2;" (assignment_expression "pbVar4 = param_2" identifier = identifier) ;) (while_statement "while( true ) {\n    if (pbVar4 == param_2 + param_3) {\n      if (param_4 != 0) {\n        uVar6 = 0x1f;\n      }\n      return uVar6;\n    }\n    uVar2 = *pbVar4 - 0x41 & 0xff;\n    if (uVar2 < 0x38) break;\n    uVar3 = (*(code *)PTR_gettext_004c5c30)(puVar5);\n    yyerror(param_1,uVar3);\n    pbVar4 = pbVar4 + 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (pbVar4 == param_2 + param_3) {\n      if (param_4 != 0) {\n        uVar6 = 0x1f;\n      }\n      return uVar6;\n    }\n    uVar2 = *pbVar4 - 0x41 & 0xff;\n    if (uVar2 < 0x38) break;\n    uVar3 = (*(code *)PTR_gettext_004c5c30)(puVar5);\n    yyerror(param_1,uVar3);\n    pbVar4 = pbVar4 + 1;\n  }" { (if_statement "if (pbVar4 == param_2 + param_3) {\n      if (param_4 != 0) {\n        uVar6 = 0x1f;\n      }\n      return uVar6;\n    }" if (parenthesized_expression "(pbVar4 == param_2 + param_3)" ( (binary_expression "pbVar4 == param_2 + param_3" identifier == (binary_expression "param_2 + param_3" identifier + identifier)) )) (compound_statement "{\n      if (param_4 != 0) {\n        uVar6 = 0x1f;\n      }\n      return uVar6;\n    }" { (if_statement "if (param_4 != 0) {\n        uVar6 = 0x1f;\n      }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar6 = 0x1f;\n      }" { (expression_statement "uVar6 = 0x1f;" (assignment_expression "uVar6 = 0x1f" identifier = number_literal) ;) })) (return_statement "return uVar6;" return identifier ;) })) (expression_statement "uVar2 = *pbVar4 - 0x41 & 0xff;" (assignment_expression "uVar2 = *pbVar4 - 0x41 & 0xff" identifier = (binary_expression "*pbVar4 - 0x41 & 0xff" (binary_expression "*pbVar4 - 0x41" (pointer_expression "*pbVar4" * identifier) - number_literal) & number_literal)) ;) (if_statement "if (uVar2 < 0x38) break;" if (parenthesized_expression "(uVar2 < 0x38)" ( (binary_expression "uVar2 < 0x38" identifier < number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar3 = (*(code *)PTR_gettext_004c5c30)(puVar5);" (assignment_expression "uVar3 = (*(code *)PTR_gettext_004c5c30)(puVar5)" identifier = (call_expression "(*(code *)PTR_gettext_004c5c30)(puVar5)" (parenthesized_expression "(*(code *)PTR_gettext_004c5c30)" ( (pointer_expression "*(code *)PTR_gettext_004c5c30" * (cast_expression "(code *)PTR_gettext_004c5c30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar5)" ( identifier )))) ;) (expression_statement "yyerror(param_1,uVar3);" (call_expression "yyerror(param_1,uVar3)" identifier (argument_list "(param_1,uVar3)" ( identifier , identifier ))) ;) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar6 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210))();" (assignment_expression "uVar6 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210))()" identifier = (call_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210))()" (parenthesized_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210))" ( (pointer_expression "*(code *)(gold::Position_dependent_options::default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210)" * (cast_expression "(code *)(gold::Position_dependent_options::default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(gold::Position_dependent_options::default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210)" ( (ERROR "gold::Position_dependent_options::" identifier : : identifier : :) (binary_expression "default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210" (binary_expression "default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028)" identifier + (pointer_expression "*(int *)(puVar1 + uVar2 * 4 + 0x2028)" * (cast_expression "(int *)(puVar1 + uVar2 * 4 + 0x2028)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + uVar2 * 4 + 0x2028)" ( (binary_expression "puVar1 + uVar2 * 4 + 0x2028" (binary_expression "puVar1 + uVar2 * 4" identifier + (binary_expression "uVar2 * 4" identifier * number_literal)) + number_literal) ))))) + number_literal) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar6;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (binary_expression IDENT + IDENT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * IDENT) - LIT) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (ERROR IDENT : : IDENT : :) (binary_expression (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) ))))) + LIT) )))) )) (argument_list ( )))) ;) (return_statement return IDENT ;) })))
(function_definition "undefined4 script_parse_memory_attr(undefined4 param_1,byte *param_2,int param_3,int param_4)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  byte *pbVar4;\n  undefined *puVar5;\n  undefined4 uVar6;\n  \n  puVar1 = PTR_s_in_a_linker_script_004c191c;\n  uVar6 = 0;\n  puVar5 = PTR_s_in_a_linker_script_004c191c + 0x1060;\n  pbVar4 = param_2;\n  while( true ) {\n    if (pbVar4 == param_2 + param_3) {\n      if (param_4 != 0) {\n        uVar6 = 0x1f;\n      }\n      return uVar6;\n    }\n    uVar2 = *pbVar4 - 0x41 & 0xff;\n    if (uVar2 < 0x38) break;\n    uVar3 = (*(code *)PTR_gettext_004c5c30)(puVar5);\n    yyerror(param_1,uVar3);\n    pbVar4 = pbVar4 + 1;\n  }\n                    \n                    \n  uVar6 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210))();\n  return uVar6;\n}" (type_identifier "undefined4") (function_declarator "script_parse_memory_attr(undefined4 param_1,byte *param_2,int param_3,int param_4)" (identifier "script_parse_memory_attr") (parameter_list "(undefined4 param_1,byte *param_2,int param_3,int param_4)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "byte *param_2" (type_identifier "byte") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  byte *pbVar4;\n  undefined *puVar5;\n  undefined4 uVar6;\n  \n  puVar1 = PTR_s_in_a_linker_script_004c191c;\n  uVar6 = 0;\n  puVar5 = PTR_s_in_a_linker_script_004c191c + 0x1060;\n  pbVar4 = param_2;\n  while( true ) {\n    if (pbVar4 == param_2 + param_3) {\n      if (param_4 != 0) {\n        uVar6 = 0x1f;\n      }\n      return uVar6;\n    }\n    uVar2 = *pbVar4 - 0x41 & 0xff;\n    if (uVar2 < 0x38) break;\n    uVar3 = (*(code *)PTR_gettext_004c5c30)(puVar5);\n    yyerror(param_1,uVar3);\n    pbVar4 = pbVar4 + 1;\n  }\n                    \n                    \n  uVar6 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210))();\n  return uVar6;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "byte *pbVar4;" (type_identifier "byte") (pointer_declarator "*pbVar4" (* "*") (identifier "pbVar4")) (; ";")) (declaration "undefined *puVar5;" (type_identifier "undefined") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (expression_statement "puVar1 = PTR_s_in_a_linker_script_004c191c;" (assignment_expression "puVar1 = PTR_s_in_a_linker_script_004c191c" (identifier "puVar1") (= "=") (identifier "PTR_s_in_a_linker_script_004c191c")) (; ";")) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar5 = PTR_s_in_a_linker_script_004c191c + 0x1060;" (assignment_expression "puVar5 = PTR_s_in_a_linker_script_004c191c + 0x1060" (identifier "puVar5") (= "=") (binary_expression "PTR_s_in_a_linker_script_004c191c + 0x1060" (identifier "PTR_s_in_a_linker_script_004c191c") (+ "+") (number_literal "0x1060"))) (; ";")) (expression_statement "pbVar4 = param_2;" (assignment_expression "pbVar4 = param_2" (identifier "pbVar4") (= "=") (identifier "param_2")) (; ";")) (while_statement "while( true ) {\n    if (pbVar4 == param_2 + param_3) {\n      if (param_4 != 0) {\n        uVar6 = 0x1f;\n      }\n      return uVar6;\n    }\n    uVar2 = *pbVar4 - 0x41 & 0xff;\n    if (uVar2 < 0x38) break;\n    uVar3 = (*(code *)PTR_gettext_004c5c30)(puVar5);\n    yyerror(param_1,uVar3);\n    pbVar4 = pbVar4 + 1;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    if (pbVar4 == param_2 + param_3) {\n      if (param_4 != 0) {\n        uVar6 = 0x1f;\n      }\n      return uVar6;\n    }\n    uVar2 = *pbVar4 - 0x41 & 0xff;\n    if (uVar2 < 0x38) break;\n    uVar3 = (*(code *)PTR_gettext_004c5c30)(puVar5);\n    yyerror(param_1,uVar3);\n    pbVar4 = pbVar4 + 1;\n  }" ({ "{") (if_statement "if (pbVar4 == param_2 + param_3) {\n      if (param_4 != 0) {\n        uVar6 = 0x1f;\n      }\n      return uVar6;\n    }" (if "if") (parenthesized_expression "(pbVar4 == param_2 + param_3)" (( "(") (binary_expression "pbVar4 == param_2 + param_3" (identifier "pbVar4") (== "==") (binary_expression "param_2 + param_3" (identifier "param_2") (+ "+") (identifier "param_3"))) () ")")) (compound_statement "{\n      if (param_4 != 0) {\n        uVar6 = 0x1f;\n      }\n      return uVar6;\n    }" ({ "{") (if_statement "if (param_4 != 0) {\n        uVar6 = 0x1f;\n      }" (if "if") (parenthesized_expression "(param_4 != 0)" (( "(") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        uVar6 = 0x1f;\n      }" ({ "{") (expression_statement "uVar6 = 0x1f;" (assignment_expression "uVar6 = 0x1f" (identifier "uVar6") (= "=") (number_literal "0x1f")) (; ";")) (} "}"))) (return_statement "return uVar6;" (return "return") (identifier "uVar6") (; ";")) (} "}"))) (expression_statement "uVar2 = *pbVar4 - 0x41 & 0xff;" (assignment_expression "uVar2 = *pbVar4 - 0x41 & 0xff" (identifier "uVar2") (= "=") (binary_expression "*pbVar4 - 0x41 & 0xff" (binary_expression "*pbVar4 - 0x41" (pointer_expression "*pbVar4" (* "*") (identifier "pbVar4")) (- "-") (number_literal "0x41")) (& "&") (number_literal "0xff"))) (; ";")) (if_statement "if (uVar2 < 0x38) break;" (if "if") (parenthesized_expression "(uVar2 < 0x38)" (( "(") (binary_expression "uVar2 < 0x38" (identifier "uVar2") (< "<") (number_literal "0x38")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar3 = (*(code *)PTR_gettext_004c5c30)(puVar5);" (assignment_expression "uVar3 = (*(code *)PTR_gettext_004c5c30)(puVar5)" (identifier "uVar3") (= "=") (call_expression "(*(code *)PTR_gettext_004c5c30)(puVar5)" (parenthesized_expression "(*(code *)PTR_gettext_004c5c30)" (( "(") (pointer_expression "*(code *)PTR_gettext_004c5c30" (* "*") (cast_expression "(code *)PTR_gettext_004c5c30" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_gettext_004c5c30"))) () ")")) (argument_list "(puVar5)" (( "(") (identifier "puVar5") () ")")))) (; ";")) (expression_statement "yyerror(param_1,uVar3);" (call_expression "yyerror(param_1,uVar3)" (identifier "yyerror") (argument_list "(param_1,uVar3)" (( "(") (identifier "param_1") (, ",") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" (identifier "pbVar4") (= "=") (binary_expression "pbVar4 + 1" (identifier "pbVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "uVar6 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210))();" (assignment_expression "uVar6 = (*(code *)(gold::Position_dependent_options::default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210))()" (identifier "uVar6") (= "=") (call_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210))()" (parenthesized_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210))" (( "(") (pointer_expression "*(code *)(gold::Position_dependent_options::default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210)" (* "*") (cast_expression "(code *)(gold::Position_dependent_options::default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(gold::Position_dependent_options::default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210)" (( "(") (ERROR "gold::Position_dependent_options::" (identifier "gold") (: ":") (: ":") (identifier "Position_dependent_options") (: ":") (: ":")) (binary_expression "default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210" (binary_expression "default_options_ +\n                    *(int *)(puVar1 + uVar2 * 4 + 0x2028)" (identifier "default_options_") (+ "+") (pointer_expression "*(int *)(puVar1 + uVar2 * 4 + 0x2028)" (* "*") (cast_expression "(int *)(puVar1 + uVar2 * 4 + 0x2028)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + uVar2 * 4 + 0x2028)" (( "(") (binary_expression "puVar1 + uVar2 * 4 + 0x2028" (binary_expression "puVar1 + uVar2 * 4" (identifier "puVar1") (+ "+") (binary_expression "uVar2 * 4" (identifier "uVar2") (* "*") (number_literal "4"))) (+ "+") (number_literal "0x2028")) () ")"))))) (+ "+") (number_literal "0x3210")) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return uVar6;" (return "return") (identifier "uVar6") (; ";")) (} "}")))

/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */
/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */

type_1 function_1(void *closurev,char *var_3,size_t var_4,int var_5)

{
  type_2 *var_8;
  type_1 var_6;
  char *message;
  type_3 *var_2;
  type_2 *puVar4;
  type_1 uVar5;
  
  var_8 = var_1;
  uVar5 = 0;
  puVar4 = var_1 + 0x1060;
  var_2 = (type_3 *)var_3;
  while( true ) {
    if (var_2 == (type_3 *)(var_3 + var_4)) {
      if (var_5 != 0) {
        uVar5 = 0x1f;
      }
      return uVar5;
    }
    var_6 = *var_2 - 0x41 & 0xff;
    if (var_6 < 0x38) break;
    message = (char *)(*(type_4 *)PTR_gettext_004c5c30)(puVar4);
    var_7(closurev,message);
    var_2 = var_2 + 1;
  }
                    /* WARNING: Could not emulate address calculation at 0x002a6b6c */
                    /* WARNING: Treating indirect jump as call */
  uVar5 = (*(type_4 *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option
                    + *(int *)(var_8 + var_6 * 4 + 0x2028)))();
  return uVar5;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator 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: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (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 (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (ERROR (identifier) (identifier)) (binary_expression left: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))) right: (number_literal)))))) arguments: (argument_list)))) (return_statement (identifier)))))

undefined4 MASKED(undefined4 param_1,byte *param_2,int param_3,int param_4)

{
  undefined *puVar1;
  uint uVar2;
  undefined4 uVar3;
  byte *pbVar4;
  undefined *puVar5;
  undefined4 uVar6;
  
  puVar1 = PTR_s_in_a_linker_script_004c191c;
  uVar6 = 0;
  puVar5 = PTR_s_in_a_linker_script_004c191c + 0x1060;
  pbVar4 = param_2;
  while( true ) {
    if (pbVar4 == param_2 + param_3) {
      if (param_4 != 0) {
        uVar6 = 0x1f;
      }
      return uVar6;
    }
    uVar2 = *pbVar4 - 0x41 & 0xff;
    if (uVar2 < 0x38) break;
    uVar3 = (*(code *)PTR_gettext_004c5c30)(puVar5);
    yyerror(param_1,uVar3);
    pbVar4 = pbVar4 + 1;
  }
                    /* WARNING: Could not emulate address calculation at 0x002a6b6c */
                    /* WARNING: Treating indirect jump as call */
  uVar6 = (*(code *)(gold::Position_dependent_options::default_options_ +
                    *(int *)(puVar1 + uVar2 * 4 + 0x2028) + 0x3210))();
  return uVar6;
}

