
/* 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_004c5b9c)();
  pcVar3 = sym;
  if (sym < sym + iVar1 + -0x13) {
    uVar2 = (byte)*sym - 0x24 & 0xff;
    if (uVar2 < 0x57) {
                    /* WARNING: Could not emulate address calculation at 0x0032dd94 */
                    /* WARNING: Treating indirect jump as call */
      (*(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option +
                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564)))();
      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_004c5b9c)();
  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 0x0032dd94 */
                    /* WARNING: Treating indirect jump as call */
      (*(code *)(gold::Position_dependent_options::default_options_ +
                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210))();
      return;
    }
    pbVar3 = param_1 + 1;
    *param_1 = 0x3f;
  }
  *pbVar3 = 0;
  return;
}


lui gp,0x1a
addiu gp,gp,-0x4aac
addu gp,gp,t9
beq a0,zero,0x0032e148
_lw t9,-0x36a4(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,-0x66bc(gp)
lw s1,-0x7f64(gp)
addiu s6,s6,-0x4564
addiu s0,s0,-0x2860
addiu s1,s1,-0x4748
sltu v0,v1,s5
beq v0,zero,0x0032e0cc
_lw v0,0x18(sp)
lbu v0,0x0(v1)
addiu v0,v0,-0x24
andi v0,v0,0xff
sltiu a0,v0,0x57
beq a0,zero,0x0032e0b4
_sll v0,v0,0x2
addu v0,s6,v0
lw v0,0x0(v0)
addu v0,v0,gp
jr v0
_nop
beq s4,v1,0x0032e12c
_addiu a0,v1,0x1
lb a1,-0x1(v1)
li v0,0x3a
beq a1,v0,0x0032e12c
_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 0x0032dd70
_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 0x0032dd70
_lw v1,0x1c(sp)
lw v0,0x18(sp)
li a0,0x2e
lb a1,0x1(v1)
beq a1,a0,0x0032e100
_addiu v1,v0,0x1
sw v1,0x18(sp)
li v1,0x2d
sb v1,0x0(v0)
lw v1,0x1c(sp)
addiu v1,v1,0x1
b 0x0032dd70
_sw v1,0x1c(sp)
addiu s7,sp,0x1c
addiu s8,sp,0x18
li a3,0x2c
addiu a2,s2,-0x474c
or a1,s8,zero
or t9,s0,zero
bal 0x0032d7a0
_or a0,s7,zero
bne v0,zero,0x0032ddd4
_lw gp,0x10(sp)
li a3,0x40
or a2,s1,zero
or a1,s8,zero
or t9,s0,zero
bal 0x0032d7a0
_or a0,s7,zero
bne v0,zero,0x0032ddd4
_lw gp,0x10(sp)
li a3,0x2a
addiu a2,s3,-0x4740
or a1,s8,zero
or t9,s0,zero
bal 0x0032d7a0
_or a0,s7,zero
bne v0,zero,0x0032ddd4
_lw gp,0x10(sp)
lw a2,-0x7f64(gp)
li a3,0x26
or a1,s8,zero
or a0,s7,zero
or t9,s0,zero
bal 0x0032d7a0
_addiu a2,a2,-0x4738
bne v0,zero,0x0032ddd4
_lw gp,0x10(sp)
lw a2,-0x7f64(gp)
li a3,0x3c
or a1,s8,zero
or a0,s7,zero
or t9,s0,zero
bal 0x0032d7a0
_addiu a2,a2,-0x4730
bne v0,zero,0x0032ddd4
_lw gp,0x10(sp)
lw a2,-0x7f64(gp)
li a3,0x3e
or a1,s8,zero
or a0,s7,zero
or t9,s0,zero
bal 0x0032d7a0
_addiu a2,a2,-0x4728
bne v0,zero,0x0032ddd4
_lw gp,0x10(sp)
lw a2,-0x7f64(gp)
li a3,0x28
or a1,s8,zero
or a0,s7,zero
or t9,s0,zero
bal 0x0032d7a0
_addiu a2,a2,-0x4720
bne v0,zero,0x0032ddd4
_lw gp,0x10(sp)
lw a2,-0x7f64(gp)
li a3,0x29
or a1,s8,zero
or a0,s7,zero
or t9,s0,zero
bal 0x0032d7a0
_addiu a2,a2,-0x4718
bne v0,zero,0x0032ddd4
_lw gp,0x10(sp)
lw a2,-0x7f64(gp)
li a3,0x20
or a1,s8,zero
or a0,s7,zero
or t9,s0,zero
bal 0x0032d7a0
_addiu a2,a2,-0x4710
bne v0,zero,0x0032ddd4
_lw gp,0x10(sp)
lw a2,-0x7f64(gp)
li a3,0x22
or a1,s8,zero
or a0,s7,zero
or t9,s0,zero
bal 0x0032d7a0
_addiu a2,a2,-0x4708
bne v0,zero,0x0032ddd4
_lw gp,0x10(sp)
lw a2,-0x7f64(gp)
li a3,0x27
or a1,s8,zero
or a0,s7,zero
or t9,s0,zero
bal 0x0032d7a0
_addiu a2,a2,-0x4700
bne v0,zero,0x0032ddd4
_lw gp,0x10(sp)
lw a2,-0x7f64(gp)
li a3,0x2b
or a1,s8,zero
or a0,s7,zero
or t9,s0,zero
bal 0x0032d7a0
_addiu a2,a2,-0x46f8
bne v0,zero,0x0032ddd4
_lw gp,0x10(sp)
lw a2,-0x7f64(gp)
li a3,0x3b
or a1,s8,zero
or a0,s7,zero
or t9,s0,zero
bal 0x0032d7a0
_addiu a2,a2,-0x46f0
bne v0,zero,0x0032ddd4
_lw gp,0x10(sp)
lw a2,-0x7f64(gp)
li a3,0x5b
or a1,s8,zero
or a0,s7,zero
or t9,s0,zero
bal 0x0032d7a0
_addiu a2,a2,-0x46e8
bne v0,zero,0x0032ddd4
_lw gp,0x10(sp)
lw a2,-0x7f64(gp)
li a3,0x5d
or a1,s8,zero
or a0,s7,zero
or t9,s0,zero
bal 0x0032d7a0
_addiu a2,a2,-0x46e0
bne v0,zero,0x0032ddd4
_lw gp,0x10(sp)
lw a2,-0x7f64(gp)
li a3,0x7b
or a1,s8,zero
or a0,s7,zero
or t9,s0,zero
bal 0x0032d7a0
_addiu a2,a2,-0x46d8
bne v0,zero,0x0032ddd4
_lw gp,0x10(sp)
lw a2,-0x7f64(gp)
li a3,0x7d
or a1,s8,zero
or a0,s7,zero
or t9,s0,zero
bal 0x0032d7a0
_addiu a2,a2,-0x46d0
bne v0,zero,0x0032ddd4
_lw gp,0x10(sp)
lw a2,-0x7f64(gp)
li a3,0x7e
or a1,s8,zero
or a0,s7,zero
or t9,s0,zero
bal 0x0032d7a0
_addiu a2,a2,-0x46c8
bne v0,zero,0x0032ddd4
_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 0x0032dd70
_sw v1,0x1c(sp)
lb a1,0x1(v1)
li v0,0x24
bne a1,v0,0x0032ddc0
_lw v0,0x18(sp)
sw a0,0x1c(sp)
b 0x0032dd70
_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_004c5b9c)();\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 0x0032dd94 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210))();\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_004c5b9c)();\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 0x0032dd94 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210))();\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_004c5b9c)();\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 0x0032dd94 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210))();\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_004c5b9c)();" (assignment_expression "iVar1 = (*(code *)PTR_strlen_004c5b9c)()" identifier = (call_expression "(*(code *)PTR_strlen_004c5b9c)()" (parenthesized_expression "(*(code *)PTR_strlen_004c5b9c)" ( (pointer_expression "*(code *)PTR_strlen_004c5b9c" * (cast_expression "(code *)PTR_strlen_004c5b9c" ( (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 0x0032dd94 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210))();\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 0x0032dd94 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210))();\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 0x0032dd94 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210))();\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 0x0032dd94 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210))();\n      return;\n    }" { comment comment (expression_statement "(*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210))();" (call_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210))()" (parenthesized_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210))" ( (pointer_expression "*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210)" * (cast_expression "(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210)" ( (ERROR "gold::Position_dependent_options::" identifier : : identifier : :) (binary_expression "default_options_ +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210" (binary_expression "default_options_ +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564)" identifier + (pointer_expression "*(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564)" * (cast_expression "(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564)" ( (binary_expression "PTR_UINT_004c12dc + uVar2 * 4 + -0x4564" (binary_expression "PTR_UINT_004c12dc + 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_004c5b9c)();\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 0x0032dd94 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564)))();\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_004c5b9c)();\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 0x0032dd94 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564)))();\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_004c5b9c)();\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 0x0032dd94 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564)))();\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_004c5b9c)();" (assignment_expression "iVar1 = (*(code *)PTR_strlen_004c5b9c)()" identifier = (call_expression "(*(code *)PTR_strlen_004c5b9c)()" (parenthesized_expression "(*(code *)PTR_strlen_004c5b9c)" ( (pointer_expression "*(code *)PTR_strlen_004c5b9c" * (cast_expression "(code *)PTR_strlen_004c5b9c" ( (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 0x0032dd94 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564)))();\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 0x0032dd94 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564)))();\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 0x0032dd94 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564)))();\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 0x0032dd94 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564)))();\n      return;\n    }" { comment comment (expression_statement "(*(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564)))();" (call_expression "(*(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564)))()" (parenthesized_expression "(*(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564)))" ( (pointer_expression "*(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564))" * (cast_expression "(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564))" ( (ERROR "&gold::Position_dependent_options::" (pointer_expression "&gold" & identifier) : : identifier : :) (binary_expression "default_options_.relax_.user_set_via_option +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564)" (field_expression "default_options_.relax_.user_set_via_option" (field_expression "default_options_.relax_" identifier . field_identifier) . field_identifier) + (pointer_expression "*(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564)" * (cast_expression "(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564)" ( (binary_expression "PTR_UINT_004c12dc + uVar2 * 4 + -0x4564" (binary_expression "PTR_UINT_004c12dc + 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_004c5b9c)();\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_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210))();\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_004c5b9c)();\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_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210))();\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_004c5b9c)();\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_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210))();\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_004c5b9c)();" (assignment_expression "iVar1 = (*(code *)PTR_strlen_004c5b9c)()" identifier = (call_expression "(*(code *)PTR_strlen_004c5b9c)()" (parenthesized_expression "(*(code *)PTR_strlen_004c5b9c)" ( (pointer_expression "*(code *)PTR_strlen_004c5b9c" * (cast_expression "(code *)PTR_strlen_004c5b9c" ( (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_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210))();\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_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210))();\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_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210))();\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_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210))();\n      return;\n    }" { (expression_statement "(*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210))();" (call_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210))()" (parenthesized_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210))" ( (pointer_expression "*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210)" * (cast_expression "(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210)" ( (ERROR "gold::Position_dependent_options::" identifier : : identifier : :) (binary_expression "default_options_ +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210" (binary_expression "default_options_ +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564)" identifier + (pointer_expression "*(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564)" * (cast_expression "(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564)" ( (binary_expression "PTR_UINT_004c12dc + uVar2 * 4 + -0x4564" (binary_expression "PTR_UINT_004c12dc + 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_004c5b9c)();\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_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210))();\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_004c5b9c)();\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_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210))();\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_004c5b9c)();" (assignment_expression "iVar1 = (*(code *)PTR_strlen_004c5b9c)()" (identifier "iVar1") (= "=") (call_expression "(*(code *)PTR_strlen_004c5b9c)()" (parenthesized_expression "(*(code *)PTR_strlen_004c5b9c)" (( "(") (pointer_expression "*(code *)PTR_strlen_004c5b9c" (* "*") (cast_expression "(code *)PTR_strlen_004c5b9c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strlen_004c5b9c"))) () ")")) (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_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210))();\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_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210))();\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_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210))();\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_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210))();\n      return;\n    }" ({ "{") (expression_statement "(*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210))();" (call_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210))()" (parenthesized_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210))" (( "(") (pointer_expression "*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210)" (* "*") (cast_expression "(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210)" (( "(") (ERROR "gold::Position_dependent_options::" (identifier "gold") (: ":") (: ":") (identifier "Position_dependent_options") (: ":") (: ":")) (binary_expression "default_options_ +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210" (binary_expression "default_options_ +\n                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564)" (identifier "default_options_") (+ "+") (pointer_expression "*(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564)" (* "*") (cast_expression "(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564)" (( "(") (binary_expression "PTR_UINT_004c12dc + uVar2 * 4 + -0x4564" (binary_expression "PTR_UINT_004c12dc + uVar2 * 4" (identifier "PTR_UINT_004c12dc") (+ "+") (binary_expression "uVar2 * 4" (identifier "uVar2") (* "*") (number_literal "4"))) (+ "+") (number_literal "-0x4564")) () ")"))))) (+ "+") (number_literal "0x3210")) () ")")))) () ")")) (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") (; ";")) (} "}")))
(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_004c5b9c)();
  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 0x0032dd94 */
                    /* WARNING: Treating indirect jump as call */
      (*(code *)(gold::Position_dependent_options::default_options_ +
                *(int *)(PTR_UINT_004c12dc + uVar2 * 4 + -0x4564) + 0x3210))();
      return;
    }
    pbVar3 = param_1 + 1;
    *param_1 = 0x3f;
  }
  *pbVar3 = 0;
  return;
}

