
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */

Tls_optimization
anon_unknown.dwarf_358c2b::Target_x86_64<64>::optimize_tls_reloc(bool is_final,int r_type)

{
  if (gold::parameters->options_ == (General_options *)0x0) {
                    /* WARNING: Subroutine does not return */
    gold::do_gold_unreachable("../../gold/parameters.h",0x5c,"options");
  }
  if ((gold::parameters->options_->shared_).value == false) {
    switch(r_type) {
    case 0x11:
    case 0x14:
    case 0x15:
      return TLSOPT_TO_LE;
    default:
                    /* WARNING: Subroutine does not return */
      gold::do_gold_unreachable("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");
    case 0x13:
    case 0x22:
    case 0x23:
      return !is_final + TLSOPT_TO_LE;
    case 0x16:
      return (uint)is_final * 2;
    case 0x17:
      break;
    }
  }
  return TLSOPT_NONE;
}



char FUN_001a9480(char param_1,undefined4 param_2)

{
  if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00352af0("../../gold/parameters.h",0x5c,"options");
  }
  if (*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x2a61) == '\0') {
    switch(param_2) {
    case 0x11:
    case 0x14:
    case 0x15:
      return '\x02';
    default:
                    /* WARNING: Subroutine does not return */
      FUN_00352af0("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");
    case 0x13:
    case 0x22:
    case 0x23:
      return (param_1 == '\0') + '\x02';
    case 0x16:
      return (param_1 != '\0') * '\x02';
    case 0x17:
      break;
    }
  }
  return '\0';
}


SUB RSP,0x8
MOV RAX,qword ptr [0x0067cb08]
MOV RAX,qword ptr [RAX + 0x10]
TEST RAX,RAX
JZ 0x001a9502
CMP byte ptr [RAX + 0x2a61],0x0
JNZ 0x001a94b8
SUB ESI,0x11
CMP ESI,0x12
JA 0x001a94ea
LEA RDX,[0x5366ac]
MOVSXD RAX,dword ptr [RDX + RSI*0x4]
ADD RAX,RDX
JMP RAX
XOR EAX,EAX
ADD RSP,0x8
RET
XOR EAX,EAX
TEST DIL,DIL
SETNZ AL
ADD RSP,0x8
ADD EAX,EAX
RET
XOR EAX,EAX
TEST DIL,DIL
SETZ AL
ADD RSP,0x8
ADD EAX,0x2
RET
MOV EAX,0x2
ADD RSP,0x8
RET
LEA RDX,[0x5389a0]
MOV ESI,0xd01
LEA RDI,[0x53618e]
CALL 0x00352af0
LEA RDX,[0x5394a8]
MOV ESI,0x5c
LEA RDI,[0x52e279]
CALL 0x00352af0
(translation_unit "char FUN_001a9480(char param_1,undefined4 param_2)\n\n{\n  if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x2a61) == '\0') {\n    switch(param_2) {\n    case 0x11:\n    case 0x14:\n    case 0x15:\n      return '\x02';\n    default:\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");\n    case 0x13:\n    case 0x22:\n    case 0x23:\n      return (param_1 == '\0') + '\x02';\n    case 0x16:\n      return (param_1 != '\0') * '\x02';\n    case 0x17:\n      break;\n    }\n  }\n  return '\0';\n}\n\n" (function_definition "char FUN_001a9480(char param_1,undefined4 param_2)\n\n{\n  if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x2a61) == '\0') {\n    switch(param_2) {\n    case 0x11:\n    case 0x14:\n    case 0x15:\n      return '\x02';\n    default:\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");\n    case 0x13:\n    case 0x22:\n    case 0x23:\n      return (param_1 == '\0') + '\x02';\n    case 0x16:\n      return (param_1 != '\0') * '\x02';\n    case 0x17:\n      break;\n    }\n  }\n  return '\0';\n}" primitive_type (function_declarator "FUN_001a9480(char param_1,undefined4 param_2)" identifier (parameter_list "(char param_1,undefined4 param_2)" ( (parameter_declaration "char param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x2a61) == '\0') {\n    switch(param_2) {\n    case 0x11:\n    case 0x14:\n    case 0x15:\n      return '\x02';\n    default:\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");\n    case 0x13:\n    case 0x22:\n    case 0x23:\n      return (param_1 == '\0') + '\x02';\n    case 0x16:\n      return (param_1 != '\0') * '\x02';\n    case 0x17:\n      break;\n    }\n  }\n  return '\0';\n}" { (if_statement "if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n  }" if (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x10)" ( (binary_expression "PTR_DAT_0067cb08 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n  }" { comment (expression_statement "FUN_00352af0("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_00352af0("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (if_statement "if (*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x2a61) == '\0') {\n    switch(param_2) {\n    case 0x11:\n    case 0x14:\n    case 0x15:\n      return '\x02';\n    default:\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");\n    case 0x13:\n    case 0x22:\n    case 0x23:\n      return (param_1 == '\0') + '\x02';\n    case 0x16:\n      return (param_1 != '\0') * '\x02';\n    case 0x17:\n      break;\n    }\n  }" if (parenthesized_expression "(*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x2a61) == '\0')" ( (binary_expression "*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x2a61) == '\0'" (pointer_expression "*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x2a61)" * (cast_expression "(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x2a61)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x2a61)" ( (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x2a61" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x10)" ( (binary_expression "PTR_DAT_0067cb08 + 0x10" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    switch(param_2) {\n    case 0x11:\n    case 0x14:\n    case 0x15:\n      return '\x02';\n    default:\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");\n    case 0x13:\n    case 0x22:\n    case 0x23:\n      return (param_1 == '\0') + '\x02';\n    case 0x16:\n      return (param_1 != '\0') * '\x02';\n    case 0x17:\n      break;\n    }\n  }" { (switch_statement "switch(param_2) {\n    case 0x11:\n    case 0x14:\n    case 0x15:\n      return '\x02';\n    default:\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");\n    case 0x13:\n    case 0x22:\n    case 0x23:\n      return (param_1 == '\0') + '\x02';\n    case 0x16:\n      return (param_1 != '\0') * '\x02';\n    case 0x17:\n      break;\n    }" switch (parenthesized_expression "(param_2)" ( identifier )) (compound_statement "{\n    case 0x11:\n    case 0x14:\n    case 0x15:\n      return '\x02';\n    default:\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");\n    case 0x13:\n    case 0x22:\n    case 0x23:\n      return (param_1 == '\0') + '\x02';\n    case 0x16:\n      return (param_1 != '\0') * '\x02';\n    case 0x17:\n      break;\n    }" { (case_statement "case 0x11:" case number_literal :) (case_statement "case 0x14:" case number_literal :) (case_statement "case 0x15:\n      return '\x02';" case number_literal : (return_statement "return '\x02';" return (char_literal "'\x02'" ' escape_sequence ') ;)) (case_statement "default:\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");" default : comment (expression_statement "FUN_00352af0("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");" (call_expression "FUN_00352af0("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc")" identifier (argument_list "("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc")" ( (string_literal ""../../gold/x86_64.cc"" " string_content ") , number_literal , (string_literal ""optimize_tls_reloc"" " string_content ") ))) ;)) (case_statement "case 0x13:" case number_literal :) (case_statement "case 0x22:" case number_literal :) (case_statement "case 0x23:\n      return (param_1 == '\0') + '\x02';" case number_literal : (return_statement "return (param_1 == '\0') + '\x02';" return (binary_expression "(param_1 == '\0') + '\x02'" (parenthesized_expression "(param_1 == '\0')" ( (binary_expression "param_1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) + (char_literal "'\x02'" ' escape_sequence ')) ;)) (case_statement "case 0x16:\n      return (param_1 != '\0') * '\x02';" case number_literal : (return_statement "return (param_1 != '\0') * '\x02';" return (binary_expression "(param_1 != '\0') * '\x02'" (parenthesized_expression "(param_1 != '\0')" ( (binary_expression "param_1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) * (char_literal "'\x02'" ' escape_sequence ')) ;)) (case_statement "case 0x17:\n      break;" case number_literal : (break_statement "break;" break ;)) })) })) (return_statement "return '\0';" return (char_literal "'\0'" ' escape_sequence ') ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Enum "ELFOSABI": Some values do not have unique names */\n\nTls_optimization\nanon_unknown.dwarf_358c2b::Target_x86_64<64>::optimize_tls_reloc(bool is_final,int r_type)\n\n{\n  if (gold::parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }\n  if ((gold::parameters->options_->shared_).value == false) {\n    switch(r_type) {\n    case 0x11:\n    case 0x14:\n    case 0x15:\n      return TLSOPT_TO_LE;\n    default:\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");\n    case 0x13:\n    case 0x22:\n    case 0x23:\n      return !is_final + TLSOPT_TO_LE;\n    case 0x16:\n      return (uint)is_final * 2;\n    case 0x17:\n      break;\n    }\n  }\n  return TLSOPT_NONE;\n}\n\n" comment comment (function_definition "Tls_optimization\nanon_unknown.dwarf_358c2b::Target_x86_64<64>::optimize_tls_reloc(bool is_final,int r_type)\n\n{\n  if (gold::parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }\n  if ((gold::parameters->options_->shared_).value == false) {\n    switch(r_type) {\n    case 0x11:\n    case 0x14:\n    case 0x15:\n      return TLSOPT_TO_LE;\n    default:\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");\n    case 0x13:\n    case 0x22:\n    case 0x23:\n      return !is_final + TLSOPT_TO_LE;\n    case 0x16:\n      return (uint)is_final * 2;\n    case 0x17:\n      break;\n    }\n  }\n  return TLSOPT_NONE;\n}" type_identifier (ERROR "anon_unknown.dwarf_358c2b::Target_x86_64<64>::" identifier . identifier : : identifier < number_literal > : :) (function_declarator "optimize_tls_reloc(bool is_final,int r_type)" identifier (parameter_list "(bool is_final,int r_type)" ( (parameter_declaration "bool is_final" primitive_type identifier) , (parameter_declaration "int r_type" primitive_type identifier) ))) (compound_statement "{\n  if (gold::parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }\n  if ((gold::parameters->options_->shared_).value == false) {\n    switch(r_type) {\n    case 0x11:\n    case 0x14:\n    case 0x15:\n      return TLSOPT_TO_LE;\n    default:\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");\n    case 0x13:\n    case 0x22:\n    case 0x23:\n      return !is_final + TLSOPT_TO_LE;\n    case 0x16:\n      return (uint)is_final * 2;\n    case 0x17:\n      break;\n    }\n  }\n  return TLSOPT_NONE;\n}" { (if_statement "if (gold::parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }" if (parenthesized_expression "(gold::parameters->options_ == (General_options *)0x0)" ( (ERROR "gold::" identifier : :) (binary_expression "parameters->options_ == (General_options *)0x0" (field_expression "parameters->options_" identifier -> field_identifier) == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }" { comment (labeled_statement "gold::do_gold_unreachable("../../gold/parameters.h",0x5c,"options");" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x5c,"options");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;)) })) (if_statement "if ((gold::parameters->options_->shared_).value == false) {\n    switch(r_type) {\n    case 0x11:\n    case 0x14:\n    case 0x15:\n      return TLSOPT_TO_LE;\n    default:\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");\n    case 0x13:\n    case 0x22:\n    case 0x23:\n      return !is_final + TLSOPT_TO_LE;\n    case 0x16:\n      return (uint)is_final * 2;\n    case 0x17:\n      break;\n    }\n  }" if (parenthesized_expression "((gold::parameters->options_->shared_).value == false)" ( (binary_expression "(gold::parameters->options_->shared_).value == false" (field_expression "(gold::parameters->options_->shared_).value" (parenthesized_expression "(gold::parameters->options_->shared_)" ( (ERROR "gold::" identifier : :) (field_expression "parameters->options_->shared_" (field_expression "parameters->options_" identifier -> field_identifier) -> field_identifier) )) . field_identifier) == false) )) (compound_statement "{\n    switch(r_type) {\n    case 0x11:\n    case 0x14:\n    case 0x15:\n      return TLSOPT_TO_LE;\n    default:\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");\n    case 0x13:\n    case 0x22:\n    case 0x23:\n      return !is_final + TLSOPT_TO_LE;\n    case 0x16:\n      return (uint)is_final * 2;\n    case 0x17:\n      break;\n    }\n  }" { (switch_statement "switch(r_type) {\n    case 0x11:\n    case 0x14:\n    case 0x15:\n      return TLSOPT_TO_LE;\n    default:\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");\n    case 0x13:\n    case 0x22:\n    case 0x23:\n      return !is_final + TLSOPT_TO_LE;\n    case 0x16:\n      return (uint)is_final * 2;\n    case 0x17:\n      break;\n    }" switch (parenthesized_expression "(r_type)" ( identifier )) (compound_statement "{\n    case 0x11:\n    case 0x14:\n    case 0x15:\n      return TLSOPT_TO_LE;\n    default:\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");\n    case 0x13:\n    case 0x22:\n    case 0x23:\n      return !is_final + TLSOPT_TO_LE;\n    case 0x16:\n      return (uint)is_final * 2;\n    case 0x17:\n      break;\n    }" { (case_statement "case 0x11:" case number_literal :) (case_statement "case 0x14:" case number_literal :) (case_statement "case 0x15:\n      return TLSOPT_TO_LE;" case number_literal : (return_statement "return TLSOPT_TO_LE;" return identifier ;)) (case_statement "default:\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");" default : comment (labeled_statement "gold::do_gold_unreachable("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");" (call_expression "do_gold_unreachable("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc")" identifier (argument_list "("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc")" ( (string_literal ""../../gold/x86_64.cc"" " string_content ") , number_literal , (string_literal ""optimize_tls_reloc"" " string_content ") ))) ;))) (case_statement "case 0x13:" case number_literal :) (case_statement "case 0x22:" case number_literal :) (case_statement "case 0x23:\n      return !is_final + TLSOPT_TO_LE;" case number_literal : (return_statement "return !is_final + TLSOPT_TO_LE;" return (binary_expression "!is_final + TLSOPT_TO_LE" (unary_expression "!is_final" ! identifier) + identifier) ;)) (case_statement "case 0x16:\n      return (uint)is_final * 2;" case number_literal : (return_statement "return (uint)is_final * 2;" return (binary_expression "(uint)is_final * 2" (cast_expression "(uint)is_final" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) ;)) (case_statement "case 0x17:\n      break;" case number_literal : (break_statement "break;" break ;)) })) })) (return_statement "return TLSOPT_NONE;" return identifier ;) })))
(translation_unit "char FUN_001a9480(char param_1,undefined4 param_2)\n\n{\n  if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) {\n                    \n    FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x2a61) == '\0') {\n    switch(param_2) {\n    case 0x11:\n    case 0x14:\n    case 0x15:\n      return '\x02';\n    default:\n                    \n      FUN_00352af0("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");\n    case 0x13:\n    case 0x22:\n    case 0x23:\n      return (param_1 == '\0') + '\x02';\n    case 0x16:\n      return (param_1 != '\0') * '\x02';\n    case 0x17:\n      break;\n    }\n  }\n  return '\0';\n}\n\n" (function_definition "char FUN_001a9480(char param_1,undefined4 param_2)\n\n{\n  if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) {\n                    \n    FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x2a61) == '\0') {\n    switch(param_2) {\n    case 0x11:\n    case 0x14:\n    case 0x15:\n      return '\x02';\n    default:\n                    \n      FUN_00352af0("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");\n    case 0x13:\n    case 0x22:\n    case 0x23:\n      return (param_1 == '\0') + '\x02';\n    case 0x16:\n      return (param_1 != '\0') * '\x02';\n    case 0x17:\n      break;\n    }\n  }\n  return '\0';\n}" primitive_type (function_declarator "FUN_001a9480(char param_1,undefined4 param_2)" identifier (parameter_list "(char param_1,undefined4 param_2)" ( (parameter_declaration "char param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) {\n                    \n    FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x2a61) == '\0') {\n    switch(param_2) {\n    case 0x11:\n    case 0x14:\n    case 0x15:\n      return '\x02';\n    default:\n                    \n      FUN_00352af0("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");\n    case 0x13:\n    case 0x22:\n    case 0x23:\n      return (param_1 == '\0') + '\x02';\n    case 0x16:\n      return (param_1 != '\0') * '\x02';\n    case 0x17:\n      break;\n    }\n  }\n  return '\0';\n}" { (if_statement "if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) {\n                    \n    FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n  }" if (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x10)" ( (binary_expression "PTR_DAT_0067cb08 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n    FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n  }" { (expression_statement "FUN_00352af0("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_00352af0("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (if_statement "if (*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x2a61) == '\0') {\n    switch(param_2) {\n    case 0x11:\n    case 0x14:\n    case 0x15:\n      return '\x02';\n    default:\n                    \n      FUN_00352af0("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");\n    case 0x13:\n    case 0x22:\n    case 0x23:\n      return (param_1 == '\0') + '\x02';\n    case 0x16:\n      return (param_1 != '\0') * '\x02';\n    case 0x17:\n      break;\n    }\n  }" if (parenthesized_expression "(*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x2a61) == '\0')" ( (binary_expression "*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x2a61) == '\0'" (pointer_expression "*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x2a61)" * (cast_expression "(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x2a61)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x2a61)" ( (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x2a61" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0067cb08 + 0x10)" ( (binary_expression "PTR_DAT_0067cb08 + 0x10" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    switch(param_2) {\n    case 0x11:\n    case 0x14:\n    case 0x15:\n      return '\x02';\n    default:\n                    \n      FUN_00352af0("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");\n    case 0x13:\n    case 0x22:\n    case 0x23:\n      return (param_1 == '\0') + '\x02';\n    case 0x16:\n      return (param_1 != '\0') * '\x02';\n    case 0x17:\n      break;\n    }\n  }" { (switch_statement "switch(param_2) {\n    case 0x11:\n    case 0x14:\n    case 0x15:\n      return '\x02';\n    default:\n                    \n      FUN_00352af0("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");\n    case 0x13:\n    case 0x22:\n    case 0x23:\n      return (param_1 == '\0') + '\x02';\n    case 0x16:\n      return (param_1 != '\0') * '\x02';\n    case 0x17:\n      break;\n    }" switch (parenthesized_expression "(param_2)" ( identifier )) (compound_statement "{\n    case 0x11:\n    case 0x14:\n    case 0x15:\n      return '\x02';\n    default:\n                    \n      FUN_00352af0("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");\n    case 0x13:\n    case 0x22:\n    case 0x23:\n      return (param_1 == '\0') + '\x02';\n    case 0x16:\n      return (param_1 != '\0') * '\x02';\n    case 0x17:\n      break;\n    }" { (case_statement "case 0x11:" case number_literal :) (case_statement "case 0x14:" case number_literal :) (case_statement "case 0x15:\n      return '\x02';" case number_literal : (return_statement "return '\x02';" return (char_literal "'\x02'" ' escape_sequence ') ;)) (case_statement "default:\n                    \n      FUN_00352af0("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");" default : (expression_statement "FUN_00352af0("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");" (call_expression "FUN_00352af0("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc")" identifier (argument_list "("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc")" ( (string_literal ""../../gold/x86_64.cc"" " string_content ") , number_literal , (string_literal ""optimize_tls_reloc"" " string_content ") ))) ;)) (case_statement "case 0x13:" case number_literal :) (case_statement "case 0x22:" case number_literal :) (case_statement "case 0x23:\n      return (param_1 == '\0') + '\x02';" case number_literal : (return_statement "return (param_1 == '\0') + '\x02';" return (binary_expression "(param_1 == '\0') + '\x02'" (parenthesized_expression "(param_1 == '\0')" ( (binary_expression "param_1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) + (char_literal "'\x02'" ' escape_sequence ')) ;)) (case_statement "case 0x16:\n      return (param_1 != '\0') * '\x02';" case number_literal : (return_statement "return (param_1 != '\0') * '\x02';" return (binary_expression "(param_1 != '\0') * '\x02'" (parenthesized_expression "(param_1 != '\0')" ( (binary_expression "param_1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) * (char_literal "'\x02'" ' escape_sequence ')) ;)) (case_statement "case 0x17:\n      break;" case number_literal : (break_statement "break;" break ;)) })) })) (return_statement "return '\0';" return (char_literal "'\0'" ' escape_sequence ') ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (switch_statement switch (parenthesized_expression ( IDENT )) (compound_statement { (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT : (return_statement return (char_literal ' escape_sequence ') ;)) (case_statement default : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;)) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT : (return_statement return (binary_expression (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) + (char_literal ' escape_sequence ')) ;)) (case_statement case LIT : (return_statement return (binary_expression (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) * (char_literal ' escape_sequence ')) ;)) (case_statement case LIT : (break_statement break ;)) })) })) (return_statement return (char_literal ' escape_sequence ') ;) })))
(function_definition "char FUN_001a9480(char param_1,undefined4 param_2)\n\n{\n  if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) {\n                    \n    FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x2a61) == '\0') {\n    switch(param_2) {\n    case 0x11:\n    case 0x14:\n    case 0x15:\n      return '\x02';\n    default:\n                    \n      FUN_00352af0("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");\n    case 0x13:\n    case 0x22:\n    case 0x23:\n      return (param_1 == '\0') + '\x02';\n    case 0x16:\n      return (param_1 != '\0') * '\x02';\n    case 0x17:\n      break;\n    }\n  }\n  return '\0';\n}" (primitive_type "char") (function_declarator "FUN_001a9480(char param_1,undefined4 param_2)" (identifier "FUN_001a9480") (parameter_list "(char param_1,undefined4 param_2)" (( "(") (parameter_declaration "char param_1" (primitive_type "char") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) () ")"))) (compound_statement "{\n  if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) {\n                    \n    FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x2a61) == '\0') {\n    switch(param_2) {\n    case 0x11:\n    case 0x14:\n    case 0x15:\n      return '\x02';\n    default:\n                    \n      FUN_00352af0("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");\n    case 0x13:\n    case 0x22:\n    case 0x23:\n      return (param_1 == '\0') + '\x02';\n    case 0x16:\n      return (param_1 != '\0') * '\x02';\n    case 0x17:\n      break;\n    }\n  }\n  return '\0';\n}" ({ "{") (if_statement "if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) {\n                    \n    FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n  }" (if "if") (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x10) == 0)" (( "(") (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0067cb08 + 0x10)" (( "(") (binary_expression "PTR_DAT_0067cb08 + 0x10" (identifier "PTR_DAT_0067cb08") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_00352af0("../../gold/parameters.h",0x5c,"options");\n  }" ({ "{") (expression_statement "FUN_00352af0("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_00352af0("../../gold/parameters.h",0x5c,"options")" (identifier "FUN_00352af0") (argument_list "("../../gold/parameters.h",0x5c,"options")" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x5c") (, ",") (string_literal ""options"" (" """) (string_content "options") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x2a61) == '\0') {\n    switch(param_2) {\n    case 0x11:\n    case 0x14:\n    case 0x15:\n      return '\x02';\n    default:\n                    \n      FUN_00352af0("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");\n    case 0x13:\n    case 0x22:\n    case 0x23:\n      return (param_1 == '\0') + '\x02';\n    case 0x16:\n      return (param_1 != '\0') * '\x02';\n    case 0x17:\n      break;\n    }\n  }" (if "if") (parenthesized_expression "(*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x2a61) == '\0')" (( "(") (binary_expression "*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x2a61) == '\0'" (pointer_expression "*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x2a61)" (* "*") (cast_expression "(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x2a61)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x2a61)" (( "(") (binary_expression "*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x2a61" (pointer_expression "*(long *)(PTR_DAT_0067cb08 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_0067cb08 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0067cb08 + 0x10)" (( "(") (binary_expression "PTR_DAT_0067cb08 + 0x10" (identifier "PTR_DAT_0067cb08") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "0x2a61")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    switch(param_2) {\n    case 0x11:\n    case 0x14:\n    case 0x15:\n      return '\x02';\n    default:\n                    \n      FUN_00352af0("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");\n    case 0x13:\n    case 0x22:\n    case 0x23:\n      return (param_1 == '\0') + '\x02';\n    case 0x16:\n      return (param_1 != '\0') * '\x02';\n    case 0x17:\n      break;\n    }\n  }" ({ "{") (switch_statement "switch(param_2) {\n    case 0x11:\n    case 0x14:\n    case 0x15:\n      return '\x02';\n    default:\n                    \n      FUN_00352af0("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");\n    case 0x13:\n    case 0x22:\n    case 0x23:\n      return (param_1 == '\0') + '\x02';\n    case 0x16:\n      return (param_1 != '\0') * '\x02';\n    case 0x17:\n      break;\n    }" (switch "switch") (parenthesized_expression "(param_2)" (( "(") (identifier "param_2") () ")")) (compound_statement "{\n    case 0x11:\n    case 0x14:\n    case 0x15:\n      return '\x02';\n    default:\n                    \n      FUN_00352af0("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");\n    case 0x13:\n    case 0x22:\n    case 0x23:\n      return (param_1 == '\0') + '\x02';\n    case 0x16:\n      return (param_1 != '\0') * '\x02';\n    case 0x17:\n      break;\n    }" ({ "{") (case_statement "case 0x11:" (case "case") (number_literal "0x11") (: ":")) (case_statement "case 0x14:" (case "case") (number_literal "0x14") (: ":")) (case_statement "case 0x15:\n      return '\x02';" (case "case") (number_literal "0x15") (: ":") (return_statement "return '\x02';" (return "return") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'")) (; ";"))) (case_statement "default:\n                    \n      FUN_00352af0("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");" (default "default") (: ":") (expression_statement "FUN_00352af0("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");" (call_expression "FUN_00352af0("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc")" (identifier "FUN_00352af0") (argument_list "("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc")" (( "(") (string_literal ""../../gold/x86_64.cc"" (" """) (string_content "../../gold/x86_64.cc") (" """)) (, ",") (number_literal "0xd01") (, ",") (string_literal ""optimize_tls_reloc"" (" """) (string_content "optimize_tls_reloc") (" """)) () ")"))) (; ";"))) (case_statement "case 0x13:" (case "case") (number_literal "0x13") (: ":")) (case_statement "case 0x22:" (case "case") (number_literal "0x22") (: ":")) (case_statement "case 0x23:\n      return (param_1 == '\0') + '\x02';" (case "case") (number_literal "0x23") (: ":") (return_statement "return (param_1 == '\0') + '\x02';" (return "return") (binary_expression "(param_1 == '\0') + '\x02'" (parenthesized_expression "(param_1 == '\0')" (( "(") (binary_expression "param_1 == '\0'" (identifier "param_1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (+ "+") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) (; ";"))) (case_statement "case 0x16:\n      return (param_1 != '\0') * '\x02';" (case "case") (number_literal "0x16") (: ":") (return_statement "return (param_1 != '\0') * '\x02';" (return "return") (binary_expression "(param_1 != '\0') * '\x02'" (parenthesized_expression "(param_1 != '\0')" (( "(") (binary_expression "param_1 != '\0'" (identifier "param_1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (* "*") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) (; ";"))) (case_statement "case 0x17:\n      break;" (case "case") (number_literal "0x17") (: ":") (break_statement "break;" (break "break") (; ";"))) (} "}"))) (} "}"))) (return_statement "return '\0';" (return "return") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")) (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */

type_1
anon_unknown.dwarf_358c2b::Target_x86_64<64>::function_1(bool is_final,int r_type)

{
  if (gold::parameters->options_ == (type_2 *)0x0) {
                    /* WARNING: Subroutine does not return */
    gold::var_1("../../gold/parameters.h",0x5c,"options");
  }
  if ((gold::parameters->options_->shared_).value == false) {
    switch(r_type) {
    case 0x11:
    case 0x14:
    case 0x15:
      return var_2;
    default:
                    /* WARNING: Subroutine does not return */
      gold::var_1("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");
    case 0x13:
    case 0x22:
    case 0x23:
      return !is_final + var_2;
    case 0x16:
      return (type_3)is_final * 2;
    case 0x17:
      break;
    }
  }
  return TLSOPT_NONE;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (switch_statement condition: (parenthesized_expression (identifier)) body: (compound_statement (case_statement value: (number_literal)) (case_statement value: (number_literal)) (case_statement value: (number_literal) (return_statement (char_literal (escape_sequence)))) (case_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content)))))) (case_statement value: (number_literal)) (case_statement value: (number_literal)) (case_statement value: (number_literal) (return_statement (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) right: (char_literal (escape_sequence))))) (case_statement value: (number_literal) (return_statement (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) right: (char_literal (escape_sequence))))) (case_statement value: (number_literal) (break_statement)))))) (return_statement (char_literal (escape_sequence))))))

char MASKED(char param_1,undefined4 param_2)

{
  if (*(long *)(PTR_DAT_0067cb08 + 0x10) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00352af0("../../gold/parameters.h",0x5c,"options");
  }
  if (*(char *)(*(long *)(PTR_DAT_0067cb08 + 0x10) + 0x2a61) == '\0') {
    switch(param_2) {
    case 0x11:
    case 0x14:
    case 0x15:
      return '\x02';
    default:
                    /* WARNING: Subroutine does not return */
      FUN_00352af0("../../gold/x86_64.cc",0xd01,"optimize_tls_reloc");
    case 0x13:
    case 0x22:
    case 0x23:
      return (param_1 == '\0') + '\x02';
    case 0x16:
      return (param_1 != '\0') * '\x02';
    case 0x17:
      break;
    }
  }
  return '\0';
}

