
/* 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_" */

void rust_demangle_sym(char *sym)

{
  int iVar1;
  uint uVar2;
  char *pcVar3;
  char *out;
  char *in;
  
  if (sym == (char *)0x0) {
    return;
  }
  iVar1 = (*(code *)PTR_strlen_0043677c)();
  pcVar3 = sym;
  if (sym < sym + iVar1 + -0x13) {
    uVar2 = (byte)*sym - 0x24 & 0xff;
    if (uVar2 < 0x57) {
                    /* WARNING: Could not emulate address calculation at 0x002b2cf4 */
                    /* WARNING: Treating indirect jump as call */
      (*(code *)(&gold::Position_dependent_options::default_options_.sort_common_.
                  user_set_via_option + *(int *)(PTR_s__0043226c + uVar2 * 4 + 0x687c)))();
      return;
    }
    pcVar3 = sym + 1;
    *sym = '?';
  }
  *pcVar3 = '\0';
  return;
}



void rust_demangle_sym(byte *param_1)

{
  int iVar1;
  uint uVar2;
  byte *pbVar3;
  
  if (param_1 == (byte *)0x0) {
    return;
  }
  iVar1 = (*(code *)PTR_strlen_0043677c)();
  pbVar3 = param_1;
  if (param_1 < param_1 + iVar1 + -0x13) {
    uVar2 = *param_1 - 0x24 & 0xff;
    if (uVar2 < 0x57) {
                    /* WARNING: Could not emulate address calculation at 0x002b2cf4 */
                    /* WARNING: Treating indirect jump as call */
      (*(code *)(gold::Position_dependent_options::default_options_ +
                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0))();
      return;
    }
    pbVar3 = param_1 + 1;
    *param_1 = 0x3f;
  }
  *pbVar3 = 0;
  return;
}


lui gp,0x18
addiu gp,gp,0x7584
addu gp,gp,t9
beq a0,zero,0x002b30a8
_lw t9,-0x3a54(gp)
addiu sp,sp,-0x48
sw gp,0x10(sp)
sw s6,0x38(sp)
sw s5,0x34(sp)
sw s4,0x30(sp)
or s4,a0,zero
sw s3,0x2c(sp)
sw s2,0x28(sp)
sw s1,0x24(sp)
sw s0,0x20(sp)
sw ra,0x44(sp)
sw s8,0x40(sp)
sw s7,0x3c(sp)
sw a0,0x1c(sp)
lw s2,-0x7f64(gp)
lw s3,-0x7f64(gp)
jalr t9
_sw a0,0x18(sp)
or v1,s4,zero
lw gp,0x10(sp)
addiu v0,v0,-0x13
addu s5,s4,v0
lw s6,-0x7f64(gp)
lw s0,-0x6ac0(gp)
lw s1,-0x7f64(gp)
addiu s6,s6,0x687c
addiu s0,s0,0x2700
addiu s1,s1,0x6698
sltu v0,v1,s5
beq v0,zero,0x002b302c
_lw v0,0x18(sp)
lbu v0,0x0(v1)
addiu v0,v0,-0x24
andi v0,v0,0xff
sltiu a0,v0,0x57
beq a0,zero,0x002b3014
_sll v0,v0,0x2
addu v0,s6,v0
lw v0,0x0(v0)
addu v0,v0,gp
jr v0
_nop
beq s4,v1,0x002b308c
_addiu a0,v1,0x1
lb a1,-0x1(v1)
li v0,0x3a
beq a1,v0,0x002b308c
_lw v0,0x18(sp)
sw a0,0x1c(sp)
addiu a0,v0,0x1
sw a0,0x18(sp)
lb v1,0x0(v1)
sb v1,0x0(v0)
b 0x002b2cd0
_lw v1,0x1c(sp)
lw v0,0x18(sp)
addiu a0,v1,0x1
sw a0,0x1c(sp)
addiu a0,v0,0x1
sw a0,0x18(sp)
lb v1,0x0(v1)
sb v1,0x0(v0)
b 0x002b2cd0
_lw v1,0x1c(sp)
lw v0,0x18(sp)
li a0,0x2e
lb a1,0x1(v1)
beq a1,a0,0x002b3060
_addiu v1,v0,0x1
sw v1,0x18(sp)
li v1,0x2d
sb v1,0x0(v0)
lw v1,0x1c(sp)
addiu v1,v1,0x1
b 0x002b2cd0
_sw v1,0x1c(sp)
addiu s7,sp,0x1c
addiu s8,sp,0x18
li a3,0x2c
addiu a2,s2,0x6694
or a1,s8,zero
or t9,s0,zero
bal 0x002b2700
_or a0,s7,zero
bne v0,zero,0x002b2d34
_lw gp,0x10(sp)
li a3,0x40
or a2,s1,zero
or a1,s8,zero
or t9,s0,zero
bal 0x002b2700
_or a0,s7,zero
bne v0,zero,0x002b2d34
_lw gp,0x10(sp)
li a3,0x2a
addiu a2,s3,0x66a0
or a1,s8,zero
or t9,s0,zero
bal 0x002b2700
_or a0,s7,zero
bne v0,zero,0x002b2d34
_lw gp,0x10(sp)
lw a2,-0x7f64(gp)
li a3,0x26
or a1,s8,zero
or a0,s7,zero
or t9,s0,zero
bal 0x002b2700
_addiu a2,a2,0x66a8
bne v0,zero,0x002b2d34
_lw gp,0x10(sp)
lw a2,-0x7f64(gp)
li a3,0x3c
or a1,s8,zero
or a0,s7,zero
or t9,s0,zero
bal 0x002b2700
_addiu a2,a2,0x66b0
bne v0,zero,0x002b2d34
_lw gp,0x10(sp)
lw a2,-0x7f64(gp)
li a3,0x3e
or a1,s8,zero
or a0,s7,zero
or t9,s0,zero
bal 0x002b2700
_addiu a2,a2,0x66b8
bne v0,zero,0x002b2d34
_lw gp,0x10(sp)
lw a2,-0x7f64(gp)
li a3,0x28
or a1,s8,zero
or a0,s7,zero
or t9,s0,zero
bal 0x002b2700
_addiu a2,a2,0x66c0
bne v0,zero,0x002b2d34
_lw gp,0x10(sp)
lw a2,-0x7f64(gp)
li a3,0x29
or a1,s8,zero
or a0,s7,zero
or t9,s0,zero
bal 0x002b2700
_addiu a2,a2,0x66c8
bne v0,zero,0x002b2d34
_lw gp,0x10(sp)
lw a2,-0x7f64(gp)
li a3,0x20
or a1,s8,zero
or a0,s7,zero
or t9,s0,zero
bal 0x002b2700
_addiu a2,a2,0x66d0
bne v0,zero,0x002b2d34
_lw gp,0x10(sp)
lw a2,-0x7f64(gp)
li a3,0x22
or a1,s8,zero
or a0,s7,zero
or t9,s0,zero
bal 0x002b2700
_addiu a2,a2,0x66d8
bne v0,zero,0x002b2d34
_lw gp,0x10(sp)
lw a2,-0x7f64(gp)
li a3,0x27
or a1,s8,zero
or a0,s7,zero
or t9,s0,zero
bal 0x002b2700
_addiu a2,a2,0x66e0
bne v0,zero,0x002b2d34
_lw gp,0x10(sp)
lw a2,-0x7f64(gp)
li a3,0x2b
or a1,s8,zero
or a0,s7,zero
or t9,s0,zero
bal 0x002b2700
_addiu a2,a2,0x66e8
bne v0,zero,0x002b2d34
_lw gp,0x10(sp)
lw a2,-0x7f64(gp)
li a3,0x3b
or a1,s8,zero
or a0,s7,zero
or t9,s0,zero
bal 0x002b2700
_addiu a2,a2,0x66f0
bne v0,zero,0x002b2d34
_lw gp,0x10(sp)
lw a2,-0x7f64(gp)
li a3,0x5b
or a1,s8,zero
or a0,s7,zero
or t9,s0,zero
bal 0x002b2700
_addiu a2,a2,0x66f8
bne v0,zero,0x002b2d34
_lw gp,0x10(sp)
lw a2,-0x7f64(gp)
li a3,0x5d
or a1,s8,zero
or a0,s7,zero
or t9,s0,zero
bal 0x002b2700
_addiu a2,a2,0x6700
bne v0,zero,0x002b2d34
_lw gp,0x10(sp)
lw a2,-0x7f64(gp)
li a3,0x7b
or a1,s8,zero
or a0,s7,zero
or t9,s0,zero
bal 0x002b2700
_addiu a2,a2,0x6708
bne v0,zero,0x002b2d34
_lw gp,0x10(sp)
lw a2,-0x7f64(gp)
li a3,0x7d
or a1,s8,zero
or a0,s7,zero
or t9,s0,zero
bal 0x002b2700
_addiu a2,a2,0x6710
bne v0,zero,0x002b2d34
_lw gp,0x10(sp)
lw a2,-0x7f64(gp)
li a3,0x7e
or a1,s8,zero
or a0,s7,zero
or t9,s0,zero
bal 0x002b2700
_addiu a2,a2,0x6718
bne v0,zero,0x002b2d34
_lw gp,0x10(sp)
lw v0,0x18(sp)
addiu v1,v0,0x1
sw v1,0x18(sp)
li v1,0x3f
sb v1,0x0(v0)
lw v0,0x18(sp)
sb zero,0x0(v0)
lw ra,0x44(sp)
lw s8,0x40(sp)
lw s7,0x3c(sp)
lw s6,0x38(sp)
lw s5,0x34(sp)
lw s4,0x30(sp)
lw s3,0x2c(sp)
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
jr ra
_addiu sp,sp,0x48
li a0,0x3a
sw v1,0x18(sp)
sb a0,0x0(v0)
lw v0,0x18(sp)
addiu v1,v0,0x1
sw v1,0x18(sp)
sb a0,0x0(v0)
lw v1,0x1c(sp)
addiu v1,v1,0x2
b 0x002b2cd0
_sw v1,0x1c(sp)
lb a1,0x1(v1)
li v0,0x24
bne a1,v0,0x002b2d20
_lw v0,0x18(sp)
sw a0,0x1c(sp)
b 0x002b2cd0
_or v1,a0,zero
jr ra
_nop
(translation_unit "void rust_demangle_sym(byte *param_1)\n\n{\n  int iVar1;\n  uint uVar2;\n  byte *pbVar3;\n  \n  if (param_1 == (byte *)0x0) {\n    return;\n  }\n  iVar1 = (*(code *)PTR_strlen_0043677c)();\n  pbVar3 = param_1;\n  if (param_1 < param_1 + iVar1 + -0x13) {\n    uVar2 = *param_1 - 0x24 & 0xff;\n    if (uVar2 < 0x57) {\n                    /* WARNING: Could not emulate address calculation at 0x002b2cf4 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0))();\n      return;\n    }\n    pbVar3 = param_1 + 1;\n    *param_1 = 0x3f;\n  }\n  *pbVar3 = 0;\n  return;\n}\n\n" (function_definition "void rust_demangle_sym(byte *param_1)\n\n{\n  int iVar1;\n  uint uVar2;\n  byte *pbVar3;\n  \n  if (param_1 == (byte *)0x0) {\n    return;\n  }\n  iVar1 = (*(code *)PTR_strlen_0043677c)();\n  pbVar3 = param_1;\n  if (param_1 < param_1 + iVar1 + -0x13) {\n    uVar2 = *param_1 - 0x24 & 0xff;\n    if (uVar2 < 0x57) {\n                    /* WARNING: Could not emulate address calculation at 0x002b2cf4 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0))();\n      return;\n    }\n    pbVar3 = param_1 + 1;\n    *param_1 = 0x3f;\n  }\n  *pbVar3 = 0;\n  return;\n}" primitive_type (function_declarator "rust_demangle_sym(byte *param_1)" identifier (parameter_list "(byte *param_1)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  byte *pbVar3;\n  \n  if (param_1 == (byte *)0x0) {\n    return;\n  }\n  iVar1 = (*(code *)PTR_strlen_0043677c)();\n  pbVar3 = param_1;\n  if (param_1 < param_1 + iVar1 + -0x13) {\n    uVar2 = *param_1 - 0x24 & 0xff;\n    if (uVar2 < 0x57) {\n                    /* WARNING: Could not emulate address calculation at 0x002b2cf4 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0))();\n      return;\n    }\n    pbVar3 = param_1 + 1;\n    *param_1 = 0x3f;\n  }\n  *pbVar3 = 0;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (if_statement "if (param_1 == (byte *)0x0) {\n    return;\n  }" if (parenthesized_expression "(param_1 == (byte *)0x0)" ( (binary_expression "param_1 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "iVar1 = (*(code *)PTR_strlen_0043677c)();" (assignment_expression "iVar1 = (*(code *)PTR_strlen_0043677c)()" identifier = (call_expression "(*(code *)PTR_strlen_0043677c)()" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" ( (pointer_expression "*(code *)PTR_strlen_0043677c" * (cast_expression "(code *)PTR_strlen_0043677c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (expression_statement "pbVar3 = param_1;" (assignment_expression "pbVar3 = param_1" identifier = identifier) ;) (if_statement "if (param_1 < param_1 + iVar1 + -0x13) {\n    uVar2 = *param_1 - 0x24 & 0xff;\n    if (uVar2 < 0x57) {\n                    /* WARNING: Could not emulate address calculation at 0x002b2cf4 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0))();\n      return;\n    }\n    pbVar3 = param_1 + 1;\n    *param_1 = 0x3f;\n  }" if (parenthesized_expression "(param_1 < param_1 + iVar1 + -0x13)" ( (binary_expression "param_1 < param_1 + iVar1 + -0x13" identifier < (binary_expression "param_1 + iVar1 + -0x13" (binary_expression "param_1 + iVar1" identifier + identifier) + number_literal)) )) (compound_statement "{\n    uVar2 = *param_1 - 0x24 & 0xff;\n    if (uVar2 < 0x57) {\n                    /* WARNING: Could not emulate address calculation at 0x002b2cf4 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0))();\n      return;\n    }\n    pbVar3 = param_1 + 1;\n    *param_1 = 0x3f;\n  }" { (expression_statement "uVar2 = *param_1 - 0x24 & 0xff;" (assignment_expression "uVar2 = *param_1 - 0x24 & 0xff" identifier = (binary_expression "*param_1 - 0x24 & 0xff" (binary_expression "*param_1 - 0x24" (pointer_expression "*param_1" * identifier) - number_literal) & number_literal)) ;) (if_statement "if (uVar2 < 0x57) {\n                    /* WARNING: Could not emulate address calculation at 0x002b2cf4 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0))();\n      return;\n    }" if (parenthesized_expression "(uVar2 < 0x57)" ( (binary_expression "uVar2 < 0x57" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not emulate address calculation at 0x002b2cf4 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0))();\n      return;\n    }" { comment comment (expression_statement "(*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0))();" (call_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0))()" (parenthesized_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0))" ( (pointer_expression "*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0)" * (cast_expression "(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0)" ( (ERROR "gold::Position_dependent_options::" identifier : : identifier : :) (binary_expression "default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0" (binary_expression "default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c)" identifier + (pointer_expression "*(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c)" * (cast_expression "(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043226c + uVar2 * 4 + 0x687c)" ( (binary_expression "PTR_DAT_0043226c + uVar2 * 4 + 0x687c" (binary_expression "PTR_DAT_0043226c + uVar2 * 4" identifier + (binary_expression "uVar2 * 4" identifier * number_literal)) + number_literal) ))))) + number_literal) )))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "pbVar3 = param_1 + 1;" (assignment_expression "pbVar3 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "*param_1 = 0x3f;" (assignment_expression "*param_1 = 0x3f" (pointer_expression "*param_1" * identifier) = number_literal) ;) })) (expression_statement "*pbVar3 = 0;" (assignment_expression "*pbVar3 = 0" (pointer_expression "*pbVar3" * identifier) = number_literal) ;) (return_statement "return;" return ;) })))
(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\nvoid rust_demangle_sym(char *sym)\n\n{\n  int iVar1;\n  uint uVar2;\n  char *pcVar3;\n  char *out;\n  char *in;\n  \n  if (sym == (char *)0x0) {\n    return;\n  }\n  iVar1 = (*(code *)PTR_strlen_0043677c)();\n  pcVar3 = sym;\n  if (sym < sym + iVar1 + -0x13) {\n    uVar2 = (byte)*sym - 0x24 & 0xff;\n    if (uVar2 < 0x57) {\n                    /* WARNING: Could not emulate address calculation at 0x002b2cf4 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&gold::Position_dependent_options::default_options_.sort_common_.\n                  user_set_via_option + *(int *)(PTR_s__0043226c + uVar2 * 4 + 0x687c)))();\n      return;\n    }\n    pcVar3 = sym + 1;\n    *sym = '?';\n  }\n  *pcVar3 = '\0';\n  return;\n}\n\n" comment comment comment comment comment comment (function_definition "void rust_demangle_sym(char *sym)\n\n{\n  int iVar1;\n  uint uVar2;\n  char *pcVar3;\n  char *out;\n  char *in;\n  \n  if (sym == (char *)0x0) {\n    return;\n  }\n  iVar1 = (*(code *)PTR_strlen_0043677c)();\n  pcVar3 = sym;\n  if (sym < sym + iVar1 + -0x13) {\n    uVar2 = (byte)*sym - 0x24 & 0xff;\n    if (uVar2 < 0x57) {\n                    /* WARNING: Could not emulate address calculation at 0x002b2cf4 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&gold::Position_dependent_options::default_options_.sort_common_.\n                  user_set_via_option + *(int *)(PTR_s__0043226c + uVar2 * 4 + 0x687c)))();\n      return;\n    }\n    pcVar3 = sym + 1;\n    *sym = '?';\n  }\n  *pcVar3 = '\0';\n  return;\n}" primitive_type (function_declarator "rust_demangle_sym(char *sym)" identifier (parameter_list "(char *sym)" ( (parameter_declaration "char *sym" primitive_type (pointer_declarator "*sym" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  char *pcVar3;\n  char *out;\n  char *in;\n  \n  if (sym == (char *)0x0) {\n    return;\n  }\n  iVar1 = (*(code *)PTR_strlen_0043677c)();\n  pcVar3 = sym;\n  if (sym < sym + iVar1 + -0x13) {\n    uVar2 = (byte)*sym - 0x24 & 0xff;\n    if (uVar2 < 0x57) {\n                    /* WARNING: Could not emulate address calculation at 0x002b2cf4 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&gold::Position_dependent_options::default_options_.sort_common_.\n                  user_set_via_option + *(int *)(PTR_s__0043226c + uVar2 * 4 + 0x687c)))();\n      return;\n    }\n    pcVar3 = sym + 1;\n    *sym = '?';\n  }\n  *pcVar3 = '\0';\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "char *out;" primitive_type (pointer_declarator "*out" * identifier) ;) (declaration "char *in;" primitive_type (pointer_declarator "*in" * identifier) ;) (if_statement "if (sym == (char *)0x0) {\n    return;\n  }" if (parenthesized_expression "(sym == (char *)0x0)" ( (binary_expression "sym == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "iVar1 = (*(code *)PTR_strlen_0043677c)();" (assignment_expression "iVar1 = (*(code *)PTR_strlen_0043677c)()" identifier = (call_expression "(*(code *)PTR_strlen_0043677c)()" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" ( (pointer_expression "*(code *)PTR_strlen_0043677c" * (cast_expression "(code *)PTR_strlen_0043677c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (expression_statement "pcVar3 = sym;" (assignment_expression "pcVar3 = sym" identifier = identifier) ;) (if_statement "if (sym < sym + iVar1 + -0x13) {\n    uVar2 = (byte)*sym - 0x24 & 0xff;\n    if (uVar2 < 0x57) {\n                    /* WARNING: Could not emulate address calculation at 0x002b2cf4 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&gold::Position_dependent_options::default_options_.sort_common_.\n                  user_set_via_option + *(int *)(PTR_s__0043226c + uVar2 * 4 + 0x687c)))();\n      return;\n    }\n    pcVar3 = sym + 1;\n    *sym = '?';\n  }" if (parenthesized_expression "(sym < sym + iVar1 + -0x13)" ( (binary_expression "sym < sym + iVar1 + -0x13" identifier < (binary_expression "sym + iVar1 + -0x13" (binary_expression "sym + iVar1" identifier + identifier) + number_literal)) )) (compound_statement "{\n    uVar2 = (byte)*sym - 0x24 & 0xff;\n    if (uVar2 < 0x57) {\n                    /* WARNING: Could not emulate address calculation at 0x002b2cf4 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&gold::Position_dependent_options::default_options_.sort_common_.\n                  user_set_via_option + *(int *)(PTR_s__0043226c + uVar2 * 4 + 0x687c)))();\n      return;\n    }\n    pcVar3 = sym + 1;\n    *sym = '?';\n  }" { (expression_statement "uVar2 = (byte)*sym - 0x24 & 0xff;" (assignment_expression "uVar2 = (byte)*sym - 0x24 & 0xff" identifier = (binary_expression "(byte)*sym - 0x24 & 0xff" (binary_expression "(byte)*sym - 0x24" (binary_expression "(byte)*sym" (parenthesized_expression "(byte)" ( identifier )) * identifier) - number_literal) & number_literal)) ;) (if_statement "if (uVar2 < 0x57) {\n                    /* WARNING: Could not emulate address calculation at 0x002b2cf4 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&gold::Position_dependent_options::default_options_.sort_common_.\n                  user_set_via_option + *(int *)(PTR_s__0043226c + uVar2 * 4 + 0x687c)))();\n      return;\n    }" if (parenthesized_expression "(uVar2 < 0x57)" ( (binary_expression "uVar2 < 0x57" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not emulate address calculation at 0x002b2cf4 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&gold::Position_dependent_options::default_options_.sort_common_.\n                  user_set_via_option + *(int *)(PTR_s__0043226c + uVar2 * 4 + 0x687c)))();\n      return;\n    }" { comment comment (expression_statement "(*(code *)(&gold::Position_dependent_options::default_options_.sort_common_.\n                  user_set_via_option + *(int *)(PTR_s__0043226c + uVar2 * 4 + 0x687c)))();" (call_expression "(*(code *)(&gold::Position_dependent_options::default_options_.sort_common_.\n                  user_set_via_option + *(int *)(PTR_s__0043226c + uVar2 * 4 + 0x687c)))()" (parenthesized_expression "(*(code *)(&gold::Position_dependent_options::default_options_.sort_common_.\n                  user_set_via_option + *(int *)(PTR_s__0043226c + uVar2 * 4 + 0x687c)))" ( (pointer_expression "*(code *)(&gold::Position_dependent_options::default_options_.sort_common_.\n                  user_set_via_option + *(int *)(PTR_s__0043226c + uVar2 * 4 + 0x687c))" * (cast_expression "(code *)(&gold::Position_dependent_options::default_options_.sort_common_.\n                  user_set_via_option + *(int *)(PTR_s__0043226c + uVar2 * 4 + 0x687c))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&gold::Position_dependent_options::default_options_.sort_common_.\n                  user_set_via_option + *(int *)(PTR_s__0043226c + uVar2 * 4 + 0x687c))" ( (ERROR "&gold::Position_dependent_options::" (pointer_expression "&gold" & identifier) : : identifier : :) (binary_expression "default_options_.sort_common_.\n                  user_set_via_option + *(int *)(PTR_s__0043226c + uVar2 * 4 + 0x687c)" (field_expression "default_options_.sort_common_.\n                  user_set_via_option" (field_expression "default_options_.sort_common_" identifier . field_identifier) . field_identifier) + (pointer_expression "*(int *)(PTR_s__0043226c + uVar2 * 4 + 0x687c)" * (cast_expression "(int *)(PTR_s__0043226c + uVar2 * 4 + 0x687c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s__0043226c + uVar2 * 4 + 0x687c)" ( (binary_expression "PTR_s__0043226c + uVar2 * 4 + 0x687c" (binary_expression "PTR_s__0043226c + uVar2 * 4" identifier + (binary_expression "uVar2 * 4" identifier * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "pcVar3 = sym + 1;" (assignment_expression "pcVar3 = sym + 1" identifier = (binary_expression "sym + 1" identifier + number_literal)) ;) (expression_statement "*sym = '?';" (assignment_expression "*sym = '?'" (pointer_expression "*sym" * identifier) = (char_literal "'?'" ' character ')) ;) })) (expression_statement "*pcVar3 = '\0';" (assignment_expression "*pcVar3 = '\0'" (pointer_expression "*pcVar3" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (return_statement "return;" return ;) })))
(translation_unit "void rust_demangle_sym(byte *param_1)\n\n{\n  int iVar1;\n  uint uVar2;\n  byte *pbVar3;\n  \n  if (param_1 == (byte *)0x0) {\n    return;\n  }\n  iVar1 = (*(code *)PTR_strlen_0043677c)();\n  pbVar3 = param_1;\n  if (param_1 < param_1 + iVar1 + -0x13) {\n    uVar2 = *param_1 - 0x24 & 0xff;\n    if (uVar2 < 0x57) {\n                    \n                    \n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0))();\n      return;\n    }\n    pbVar3 = param_1 + 1;\n    *param_1 = 0x3f;\n  }\n  *pbVar3 = 0;\n  return;\n}\n\n" (function_definition "void rust_demangle_sym(byte *param_1)\n\n{\n  int iVar1;\n  uint uVar2;\n  byte *pbVar3;\n  \n  if (param_1 == (byte *)0x0) {\n    return;\n  }\n  iVar1 = (*(code *)PTR_strlen_0043677c)();\n  pbVar3 = param_1;\n  if (param_1 < param_1 + iVar1 + -0x13) {\n    uVar2 = *param_1 - 0x24 & 0xff;\n    if (uVar2 < 0x57) {\n                    \n                    \n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0))();\n      return;\n    }\n    pbVar3 = param_1 + 1;\n    *param_1 = 0x3f;\n  }\n  *pbVar3 = 0;\n  return;\n}" primitive_type (function_declarator "rust_demangle_sym(byte *param_1)" identifier (parameter_list "(byte *param_1)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  byte *pbVar3;\n  \n  if (param_1 == (byte *)0x0) {\n    return;\n  }\n  iVar1 = (*(code *)PTR_strlen_0043677c)();\n  pbVar3 = param_1;\n  if (param_1 < param_1 + iVar1 + -0x13) {\n    uVar2 = *param_1 - 0x24 & 0xff;\n    if (uVar2 < 0x57) {\n                    \n                    \n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0))();\n      return;\n    }\n    pbVar3 = param_1 + 1;\n    *param_1 = 0x3f;\n  }\n  *pbVar3 = 0;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (if_statement "if (param_1 == (byte *)0x0) {\n    return;\n  }" if (parenthesized_expression "(param_1 == (byte *)0x0)" ( (binary_expression "param_1 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "iVar1 = (*(code *)PTR_strlen_0043677c)();" (assignment_expression "iVar1 = (*(code *)PTR_strlen_0043677c)()" identifier = (call_expression "(*(code *)PTR_strlen_0043677c)()" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" ( (pointer_expression "*(code *)PTR_strlen_0043677c" * (cast_expression "(code *)PTR_strlen_0043677c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (expression_statement "pbVar3 = param_1;" (assignment_expression "pbVar3 = param_1" identifier = identifier) ;) (if_statement "if (param_1 < param_1 + iVar1 + -0x13) {\n    uVar2 = *param_1 - 0x24 & 0xff;\n    if (uVar2 < 0x57) {\n                    \n                    \n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0))();\n      return;\n    }\n    pbVar3 = param_1 + 1;\n    *param_1 = 0x3f;\n  }" if (parenthesized_expression "(param_1 < param_1 + iVar1 + -0x13)" ( (binary_expression "param_1 < param_1 + iVar1 + -0x13" identifier < (binary_expression "param_1 + iVar1 + -0x13" (binary_expression "param_1 + iVar1" identifier + identifier) + number_literal)) )) (compound_statement "{\n    uVar2 = *param_1 - 0x24 & 0xff;\n    if (uVar2 < 0x57) {\n                    \n                    \n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0))();\n      return;\n    }\n    pbVar3 = param_1 + 1;\n    *param_1 = 0x3f;\n  }" { (expression_statement "uVar2 = *param_1 - 0x24 & 0xff;" (assignment_expression "uVar2 = *param_1 - 0x24 & 0xff" identifier = (binary_expression "*param_1 - 0x24 & 0xff" (binary_expression "*param_1 - 0x24" (pointer_expression "*param_1" * identifier) - number_literal) & number_literal)) ;) (if_statement "if (uVar2 < 0x57) {\n                    \n                    \n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0))();\n      return;\n    }" if (parenthesized_expression "(uVar2 < 0x57)" ( (binary_expression "uVar2 < 0x57" identifier < number_literal) )) (compound_statement "{\n                    \n                    \n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0))();\n      return;\n    }" { (expression_statement "(*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0))();" (call_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0))()" (parenthesized_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0))" ( (pointer_expression "*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0)" * (cast_expression "(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0)" ( (ERROR "gold::Position_dependent_options::" identifier : : identifier : :) (binary_expression "default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0" (binary_expression "default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c)" identifier + (pointer_expression "*(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c)" * (cast_expression "(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043226c + uVar2 * 4 + 0x687c)" ( (binary_expression "PTR_DAT_0043226c + uVar2 * 4 + 0x687c" (binary_expression "PTR_DAT_0043226c + uVar2 * 4" identifier + (binary_expression "uVar2 * 4" identifier * number_literal)) + number_literal) ))))) + number_literal) )))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "pbVar3 = param_1 + 1;" (assignment_expression "pbVar3 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "*param_1 = 0x3f;" (assignment_expression "*param_1 = 0x3f" (pointer_expression "*param_1" * identifier) = number_literal) ;) })) (expression_statement "*pbVar3 = 0;" (assignment_expression "*pbVar3 = 0" (pointer_expression "*pbVar3" * identifier) = number_literal) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression (binary_expression IDENT + IDENT) + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * IDENT) - LIT) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (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 ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return ;) })))
(function_definition "void rust_demangle_sym(byte *param_1)\n\n{\n  int iVar1;\n  uint uVar2;\n  byte *pbVar3;\n  \n  if (param_1 == (byte *)0x0) {\n    return;\n  }\n  iVar1 = (*(code *)PTR_strlen_0043677c)();\n  pbVar3 = param_1;\n  if (param_1 < param_1 + iVar1 + -0x13) {\n    uVar2 = *param_1 - 0x24 & 0xff;\n    if (uVar2 < 0x57) {\n                    \n                    \n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0))();\n      return;\n    }\n    pbVar3 = param_1 + 1;\n    *param_1 = 0x3f;\n  }\n  *pbVar3 = 0;\n  return;\n}" (primitive_type "void") (function_declarator "rust_demangle_sym(byte *param_1)" (identifier "rust_demangle_sym") (parameter_list "(byte *param_1)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  byte *pbVar3;\n  \n  if (param_1 == (byte *)0x0) {\n    return;\n  }\n  iVar1 = (*(code *)PTR_strlen_0043677c)();\n  pbVar3 = param_1;\n  if (param_1 < param_1 + iVar1 + -0x13) {\n    uVar2 = *param_1 - 0x24 & 0xff;\n    if (uVar2 < 0x57) {\n                    \n                    \n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0))();\n      return;\n    }\n    pbVar3 = param_1 + 1;\n    *param_1 = 0x3f;\n  }\n  *pbVar3 = 0;\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "byte *pbVar3;" (type_identifier "byte") (pointer_declarator "*pbVar3" (* "*") (identifier "pbVar3")) (; ";")) (if_statement "if (param_1 == (byte *)0x0) {\n    return;\n  }" (if "if") (parenthesized_expression "(param_1 == (byte *)0x0)" (( "(") (binary_expression "param_1 == (byte *)0x0" (identifier "param_1") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "iVar1 = (*(code *)PTR_strlen_0043677c)();" (assignment_expression "iVar1 = (*(code *)PTR_strlen_0043677c)()" (identifier "iVar1") (= "=") (call_expression "(*(code *)PTR_strlen_0043677c)()" (parenthesized_expression "(*(code *)PTR_strlen_0043677c)" (( "(") (pointer_expression "*(code *)PTR_strlen_0043677c" (* "*") (cast_expression "(code *)PTR_strlen_0043677c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strlen_0043677c"))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pbVar3 = param_1;" (assignment_expression "pbVar3 = param_1" (identifier "pbVar3") (= "=") (identifier "param_1")) (; ";")) (if_statement "if (param_1 < param_1 + iVar1 + -0x13) {\n    uVar2 = *param_1 - 0x24 & 0xff;\n    if (uVar2 < 0x57) {\n                    \n                    \n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0))();\n      return;\n    }\n    pbVar3 = param_1 + 1;\n    *param_1 = 0x3f;\n  }" (if "if") (parenthesized_expression "(param_1 < param_1 + iVar1 + -0x13)" (( "(") (binary_expression "param_1 < param_1 + iVar1 + -0x13" (identifier "param_1") (< "<") (binary_expression "param_1 + iVar1 + -0x13" (binary_expression "param_1 + iVar1" (identifier "param_1") (+ "+") (identifier "iVar1")) (+ "+") (number_literal "-0x13"))) () ")")) (compound_statement "{\n    uVar2 = *param_1 - 0x24 & 0xff;\n    if (uVar2 < 0x57) {\n                    \n                    \n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0))();\n      return;\n    }\n    pbVar3 = param_1 + 1;\n    *param_1 = 0x3f;\n  }" ({ "{") (expression_statement "uVar2 = *param_1 - 0x24 & 0xff;" (assignment_expression "uVar2 = *param_1 - 0x24 & 0xff" (identifier "uVar2") (= "=") (binary_expression "*param_1 - 0x24 & 0xff" (binary_expression "*param_1 - 0x24" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (- "-") (number_literal "0x24")) (& "&") (number_literal "0xff"))) (; ";")) (if_statement "if (uVar2 < 0x57) {\n                    \n                    \n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0))();\n      return;\n    }" (if "if") (parenthesized_expression "(uVar2 < 0x57)" (( "(") (binary_expression "uVar2 < 0x57" (identifier "uVar2") (< "<") (number_literal "0x57")) () ")")) (compound_statement "{\n                    \n                    \n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0))();\n      return;\n    }" ({ "{") (expression_statement "(*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0))();" (call_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0))()" (parenthesized_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0))" (( "(") (pointer_expression "*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0)" (* "*") (cast_expression "(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0)" (( "(") (ERROR "gold::Position_dependent_options::" (identifier "gold") (: ":") (: ":") (identifier "Position_dependent_options") (: ":") (: ":")) (binary_expression "default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0" (binary_expression "default_options_ +\n                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c)" (identifier "default_options_") (+ "+") (pointer_expression "*(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c)" (* "*") (cast_expression "(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0043226c + uVar2 * 4 + 0x687c)" (( "(") (binary_expression "PTR_DAT_0043226c + uVar2 * 4 + 0x687c" (binary_expression "PTR_DAT_0043226c + uVar2 * 4" (identifier "PTR_DAT_0043226c") (+ "+") (binary_expression "uVar2 * 4" (identifier "uVar2") (* "*") (number_literal "4"))) (+ "+") (number_literal "0x687c")) () ")"))))) (+ "+") (number_literal "0x37e0")) () ")")))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "pbVar3 = param_1 + 1;" (assignment_expression "pbVar3 = param_1 + 1" (identifier "pbVar3") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*param_1 = 0x3f;" (assignment_expression "*param_1 = 0x3f" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (number_literal "0x3f")) (; ";")) (} "}"))) (expression_statement "*pbVar3 = 0;" (assignment_expression "*pbVar3 = 0" (pointer_expression "*pbVar3" (* "*") (identifier "pbVar3")) (= "=") (number_literal "0")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* 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_" */

void function_1(char *var_1)

{
  int var_2;
  type_1 var_3;
  char *pcVar3;
  char *out;
  char *in;
  
  if (var_1 == (char *)0x0) {
    return;
  }
  var_2 = (*(type_2 *)PTR_strlen_0043677c)();
  pcVar3 = var_1;
  if (var_1 < var_1 + var_2 + -0x13) {
    var_3 = (byte)*var_1 - 0x24 & 0xff;
    if (var_3 < 0x57) {
                    /* WARNING: Could not emulate address calculation at 0x002b2cf4 */
                    /* WARNING: Treating indirect jump as call */
      (*(type_2 *)(&gold::Position_dependent_options::default_options_.sort_common_.
                  user_set_via_option + *(int *)(var_4 + var_3 * 4 + 0x687c)))();
      return;
    }
    pcVar3 = var_1 + 1;
    *var_1 = '?';
  }
  *pcVar3 = '\0';
  return;
}


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

void MASKED(byte *param_1)

{
  int iVar1;
  uint uVar2;
  byte *pbVar3;
  
  if (param_1 == (byte *)0x0) {
    return;
  }
  iVar1 = (*(code *)PTR_strlen_0043677c)();
  pbVar3 = param_1;
  if (param_1 < param_1 + iVar1 + -0x13) {
    uVar2 = *param_1 - 0x24 & 0xff;
    if (uVar2 < 0x57) {
                    /* WARNING: Could not emulate address calculation at 0x002b2cf4 */
                    /* WARNING: Treating indirect jump as call */
      (*(code *)(gold::Position_dependent_options::default_options_ +
                *(int *)(PTR_DAT_0043226c + uVar2 * 4 + 0x687c) + 0x37e0))();
      return;
    }
    pbVar3 = param_1 + 1;
    *param_1 = 0x3f;
  }
  *pbVar3 = 0;
  return;
}

