
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "DT": Some values do not have unique names */

void anon_unknown.dwarf_484c35::Target_sparc<64,_true>::Scan::generate_tls_call
               (Symbol_table *symtab,Layout *layout,Target_sparc<64,_true> *target)

{
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void __regparm3 FUN_0009ffa0(undefined4 param_1,undefined4 param_2,int param_3)

{
  int iVar1;
  
  iVar1 = *(int *)(param_3 + 0x40);
  if (iVar1 == 0) {
    iVar1 = FUN_0034ef60(param_1,"__tls_get_addr",0);
    *(int *)(param_3 + 0x40) = iVar1;
    if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      FUN_002446e0("../../gold/sparc.cc",0x187,"tls_get_addr_sym",0);
    }
  }
  if (*(int *)(iVar1 + 0x18) != -1) {
    return;
  }
  FUN_0009fb00(iVar1);
  return;
}


PUSH EDI
MOV EDI,EAX
PUSH ESI
MOV ESI,ECX
PUSH EBX
CALL 0x00050b50
ADD EBX,0x54a054
SUB ESP,0x10
MOV EAX,dword ptr [ECX + 0x40]
TEST EAX,EAX
JZ 0x0009fff0
CMP dword ptr [EAX + 0x18],-0x1
JZ 0x0009ffd0
ADD ESP,0x10
POP EBX
POP ESI
POP EDI
RET
SUB ESP,0xc
MOV ECX,EDX
MOV EDX,EDI
PUSH EAX
MOV EAX,ESI
CALL 0x0009fb00
ADD ESP,0x10
ADD ESP,0x10
POP EBX
POP ESI
POP EDI
RET
MOV dword ptr [ESP + 0xc],EDX
LEA EAX,[EBX + 0xffe633ac]
SUB ESP,0x4
PUSH 0x0
PUSH EAX
PUSH EDI
CALL 0x0034ef60
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0xc]
TEST EAX,EAX
MOV dword ptr [ESI + 0x40],EAX
JNZ 0x0009ffbc
PUSH EAX
LEA EAX,[EBX + 0xffe6c098]
PUSH EAX
LEA EAX,[EBX + 0xffe69dae]
PUSH 0x187
PUSH EAX
CALL 0x002446e0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid __regparm3 FUN_0009ffa0(undefined4 param_1,undefined4 param_2,int param_3)\n\n{\n  int iVar1;\n  \n  iVar1 = *(int *)(param_3 + 0x40);\n  if (iVar1 == 0) {\n    iVar1 = FUN_0034ef60(param_1,"__tls_get_addr",0);\n    *(int *)(param_3 + 0x40) = iVar1;\n    if (iVar1 == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/sparc.cc",0x187,"tls_get_addr_sym",0);\n    }\n  }\n  if (*(int *)(iVar1 + 0x18) != -1) {\n    return;\n  }\n  FUN_0009fb00(iVar1);\n  return;\n}\n\n" comment (function_definition "void __regparm3 FUN_0009ffa0(undefined4 param_1,undefined4 param_2,int param_3)\n\n{\n  int iVar1;\n  \n  iVar1 = *(int *)(param_3 + 0x40);\n  if (iVar1 == 0) {\n    iVar1 = FUN_0034ef60(param_1,"__tls_get_addr",0);\n    *(int *)(param_3 + 0x40) = iVar1;\n    if (iVar1 == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/sparc.cc",0x187,"tls_get_addr_sym",0);\n    }\n  }\n  if (*(int *)(iVar1 + 0x18) != -1) {\n    return;\n  }\n  FUN_0009fb00(iVar1);\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0009ffa0(undefined4 param_1,undefined4 param_2,int param_3)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,int param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  \n  iVar1 = *(int *)(param_3 + 0x40);\n  if (iVar1 == 0) {\n    iVar1 = FUN_0034ef60(param_1,"__tls_get_addr",0);\n    *(int *)(param_3 + 0x40) = iVar1;\n    if (iVar1 == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/sparc.cc",0x187,"tls_get_addr_sym",0);\n    }\n  }\n  if (*(int *)(iVar1 + 0x18) != -1) {\n    return;\n  }\n  FUN_0009fb00(iVar1);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (expression_statement "iVar1 = *(int *)(param_3 + 0x40);" (assignment_expression "iVar1 = *(int *)(param_3 + 0x40)" identifier = (pointer_expression "*(int *)(param_3 + 0x40)" * (cast_expression "(int *)(param_3 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x40)" ( (binary_expression "param_3 + 0x40" identifier + number_literal) ))))) ;) (if_statement "if (iVar1 == 0) {\n    iVar1 = FUN_0034ef60(param_1,"__tls_get_addr",0);\n    *(int *)(param_3 + 0x40) = iVar1;\n    if (iVar1 == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/sparc.cc",0x187,"tls_get_addr_sym",0);\n    }\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar1 = FUN_0034ef60(param_1,"__tls_get_addr",0);\n    *(int *)(param_3 + 0x40) = iVar1;\n    if (iVar1 == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/sparc.cc",0x187,"tls_get_addr_sym",0);\n    }\n  }" { (expression_statement "iVar1 = FUN_0034ef60(param_1,"__tls_get_addr",0);" (assignment_expression "iVar1 = FUN_0034ef60(param_1,"__tls_get_addr",0)" identifier = (call_expression "FUN_0034ef60(param_1,"__tls_get_addr",0)" identifier (argument_list "(param_1,"__tls_get_addr",0)" ( identifier , (string_literal ""__tls_get_addr"" " string_content ") , number_literal )))) ;) (expression_statement "*(int *)(param_3 + 0x40) = iVar1;" (assignment_expression "*(int *)(param_3 + 0x40) = iVar1" (pointer_expression "*(int *)(param_3 + 0x40)" * (cast_expression "(int *)(param_3 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x40)" ( (binary_expression "param_3 + 0x40" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar1 == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/sparc.cc",0x187,"tls_get_addr_sym",0);\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/sparc.cc",0x187,"tls_get_addr_sym",0);\n    }" { comment (expression_statement "FUN_002446e0("../../gold/sparc.cc",0x187,"tls_get_addr_sym",0);" (call_expression "FUN_002446e0("../../gold/sparc.cc",0x187,"tls_get_addr_sym",0)" identifier (argument_list "("../../gold/sparc.cc",0x187,"tls_get_addr_sym",0)" ( (string_literal ""../../gold/sparc.cc"" " string_content ") , number_literal , (string_literal ""tls_get_addr_sym"" " string_content ") , number_literal ))) ;) })) })) (if_statement "if (*(int *)(iVar1 + 0x18) != -1) {\n    return;\n  }" if (parenthesized_expression "(*(int *)(iVar1 + 0x18) != -1)" ( (binary_expression "*(int *)(iVar1 + 0x18) != -1" (pointer_expression "*(int *)(iVar1 + 0x18)" * (cast_expression "(int *)(iVar1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "FUN_0009fb00(iVar1);" (call_expression "FUN_0009fb00(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Enum "DT": Some values do not have unique names */\n\nvoid anon_unknown.dwarf_484c35::Target_sparc<64,_true>::Scan::generate_tls_call\n               (Symbol_table *symtab,Layout *layout,Target_sparc<64,_true> *target)\n\n{\n}\n\n" comment comment (ERROR "void anon_unknown.dwarf_484c35::Target_sparc<64,_true>::Scan::generate_tls_call\n               (Symbol_table *symtab,Layout *layout,Target_sparc<64,_true> *target)" primitive_type identifier (ERROR ".dwarf_484c35::Target_sparc<64" . identifier : : identifier < number_literal) , (ERROR "_true>::Scan::" identifier > : : identifier : :) (function_declarator "generate_tls_call\n               (Symbol_table *symtab,Layout *layout,Target_sparc<64,_true> *target)" identifier (parameter_list "(Symbol_table *symtab,Layout *layout,Target_sparc<64,_true> *target)" ( (parameter_declaration "Symbol_table *symtab" type_identifier (pointer_declarator "*symtab" * identifier)) , (parameter_declaration "Layout *layout" type_identifier (pointer_declarator "*layout" * identifier)) , (parameter_declaration "Target_sparc" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_true> *target" type_identifier (ERROR ">" >) (pointer_declarator "*target" * identifier)) )))) (compound_statement "{\n}" { }))
(translation_unit "void __regparm3 FUN_0009ffa0(undefined4 param_1,undefined4 param_2,int param_3)\n\n{\n  int iVar1;\n  \n  iVar1 = *(int *)(param_3 + 0x40);\n  if (iVar1 == 0) {\n    iVar1 = FUN_0034ef60(param_1,"__tls_get_addr",0);\n    *(int *)(param_3 + 0x40) = iVar1;\n    if (iVar1 == 0) {\n                    \n      FUN_002446e0("../../gold/sparc.cc",0x187,"tls_get_addr_sym",0);\n    }\n  }\n  if (*(int *)(iVar1 + 0x18) != -1) {\n    return;\n  }\n  FUN_0009fb00(iVar1);\n  return;\n}\n\n" (function_definition "void __regparm3 FUN_0009ffa0(undefined4 param_1,undefined4 param_2,int param_3)\n\n{\n  int iVar1;\n  \n  iVar1 = *(int *)(param_3 + 0x40);\n  if (iVar1 == 0) {\n    iVar1 = FUN_0034ef60(param_1,"__tls_get_addr",0);\n    *(int *)(param_3 + 0x40) = iVar1;\n    if (iVar1 == 0) {\n                    \n      FUN_002446e0("../../gold/sparc.cc",0x187,"tls_get_addr_sym",0);\n    }\n  }\n  if (*(int *)(iVar1 + 0x18) != -1) {\n    return;\n  }\n  FUN_0009fb00(iVar1);\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0009ffa0(undefined4 param_1,undefined4 param_2,int param_3)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,int param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  \n  iVar1 = *(int *)(param_3 + 0x40);\n  if (iVar1 == 0) {\n    iVar1 = FUN_0034ef60(param_1,"__tls_get_addr",0);\n    *(int *)(param_3 + 0x40) = iVar1;\n    if (iVar1 == 0) {\n                    \n      FUN_002446e0("../../gold/sparc.cc",0x187,"tls_get_addr_sym",0);\n    }\n  }\n  if (*(int *)(iVar1 + 0x18) != -1) {\n    return;\n  }\n  FUN_0009fb00(iVar1);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (expression_statement "iVar1 = *(int *)(param_3 + 0x40);" (assignment_expression "iVar1 = *(int *)(param_3 + 0x40)" identifier = (pointer_expression "*(int *)(param_3 + 0x40)" * (cast_expression "(int *)(param_3 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x40)" ( (binary_expression "param_3 + 0x40" identifier + number_literal) ))))) ;) (if_statement "if (iVar1 == 0) {\n    iVar1 = FUN_0034ef60(param_1,"__tls_get_addr",0);\n    *(int *)(param_3 + 0x40) = iVar1;\n    if (iVar1 == 0) {\n                    \n      FUN_002446e0("../../gold/sparc.cc",0x187,"tls_get_addr_sym",0);\n    }\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar1 = FUN_0034ef60(param_1,"__tls_get_addr",0);\n    *(int *)(param_3 + 0x40) = iVar1;\n    if (iVar1 == 0) {\n                    \n      FUN_002446e0("../../gold/sparc.cc",0x187,"tls_get_addr_sym",0);\n    }\n  }" { (expression_statement "iVar1 = FUN_0034ef60(param_1,"__tls_get_addr",0);" (assignment_expression "iVar1 = FUN_0034ef60(param_1,"__tls_get_addr",0)" identifier = (call_expression "FUN_0034ef60(param_1,"__tls_get_addr",0)" identifier (argument_list "(param_1,"__tls_get_addr",0)" ( identifier , (string_literal ""__tls_get_addr"" " string_content ") , number_literal )))) ;) (expression_statement "*(int *)(param_3 + 0x40) = iVar1;" (assignment_expression "*(int *)(param_3 + 0x40) = iVar1" (pointer_expression "*(int *)(param_3 + 0x40)" * (cast_expression "(int *)(param_3 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x40)" ( (binary_expression "param_3 + 0x40" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar1 == 0) {\n                    \n      FUN_002446e0("../../gold/sparc.cc",0x187,"tls_get_addr_sym",0);\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n      FUN_002446e0("../../gold/sparc.cc",0x187,"tls_get_addr_sym",0);\n    }" { (expression_statement "FUN_002446e0("../../gold/sparc.cc",0x187,"tls_get_addr_sym",0);" (call_expression "FUN_002446e0("../../gold/sparc.cc",0x187,"tls_get_addr_sym",0)" identifier (argument_list "("../../gold/sparc.cc",0x187,"tls_get_addr_sym",0)" ( (string_literal ""../../gold/sparc.cc"" " string_content ") , number_literal , (string_literal ""tls_get_addr_sym"" " string_content ") , number_literal ))) ;) })) })) (if_statement "if (*(int *)(iVar1 + 0x18) != -1) {\n    return;\n  }" if (parenthesized_expression "(*(int *)(iVar1 + 0x18) != -1)" ( (binary_expression "*(int *)(iVar1 + 0x18) != -1" (pointer_expression "*(int *)(iVar1 + 0x18)" * (cast_expression "(int *)(iVar1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "FUN_0009fb00(iVar1);" (call_expression "FUN_0009fb00(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , LIT ))) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return ;) })))
(function_definition "void __regparm3 FUN_0009ffa0(undefined4 param_1,undefined4 param_2,int param_3)\n\n{\n  int iVar1;\n  \n  iVar1 = *(int *)(param_3 + 0x40);\n  if (iVar1 == 0) {\n    iVar1 = FUN_0034ef60(param_1,"__tls_get_addr",0);\n    *(int *)(param_3 + 0x40) = iVar1;\n    if (iVar1 == 0) {\n                    \n      FUN_002446e0("../../gold/sparc.cc",0x187,"tls_get_addr_sym",0);\n    }\n  }\n  if (*(int *)(iVar1 + 0x18) != -1) {\n    return;\n  }\n  FUN_0009fb00(iVar1);\n  return;\n}" (primitive_type "void") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_0009ffa0(undefined4 param_1,undefined4 param_2,int param_3)" (identifier "FUN_0009ffa0") (parameter_list "(undefined4 param_1,undefined4 param_2,int param_3)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  int iVar1;\n  \n  iVar1 = *(int *)(param_3 + 0x40);\n  if (iVar1 == 0) {\n    iVar1 = FUN_0034ef60(param_1,"__tls_get_addr",0);\n    *(int *)(param_3 + 0x40) = iVar1;\n    if (iVar1 == 0) {\n                    \n      FUN_002446e0("../../gold/sparc.cc",0x187,"tls_get_addr_sym",0);\n    }\n  }\n  if (*(int *)(iVar1 + 0x18) != -1) {\n    return;\n  }\n  FUN_0009fb00(iVar1);\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (expression_statement "iVar1 = *(int *)(param_3 + 0x40);" (assignment_expression "iVar1 = *(int *)(param_3 + 0x40)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(param_3 + 0x40)" (* "*") (cast_expression "(int *)(param_3 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x40)" (( "(") (binary_expression "param_3 + 0x40" (identifier "param_3") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (if_statement "if (iVar1 == 0) {\n    iVar1 = FUN_0034ef60(param_1,"__tls_get_addr",0);\n    *(int *)(param_3 + 0x40) = iVar1;\n    if (iVar1 == 0) {\n                    \n      FUN_002446e0("../../gold/sparc.cc",0x187,"tls_get_addr_sym",0);\n    }\n  }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar1 = FUN_0034ef60(param_1,"__tls_get_addr",0);\n    *(int *)(param_3 + 0x40) = iVar1;\n    if (iVar1 == 0) {\n                    \n      FUN_002446e0("../../gold/sparc.cc",0x187,"tls_get_addr_sym",0);\n    }\n  }" ({ "{") (expression_statement "iVar1 = FUN_0034ef60(param_1,"__tls_get_addr",0);" (assignment_expression "iVar1 = FUN_0034ef60(param_1,"__tls_get_addr",0)" (identifier "iVar1") (= "=") (call_expression "FUN_0034ef60(param_1,"__tls_get_addr",0)" (identifier "FUN_0034ef60") (argument_list "(param_1,"__tls_get_addr",0)" (( "(") (identifier "param_1") (, ",") (string_literal ""__tls_get_addr"" (" """) (string_content "__tls_get_addr") (" """)) (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "*(int *)(param_3 + 0x40) = iVar1;" (assignment_expression "*(int *)(param_3 + 0x40) = iVar1" (pointer_expression "*(int *)(param_3 + 0x40)" (* "*") (cast_expression "(int *)(param_3 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x40)" (( "(") (binary_expression "param_3 + 0x40" (identifier "param_3") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (identifier "iVar1")) (; ";")) (if_statement "if (iVar1 == 0) {\n                    \n      FUN_002446e0("../../gold/sparc.cc",0x187,"tls_get_addr_sym",0);\n    }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n      FUN_002446e0("../../gold/sparc.cc",0x187,"tls_get_addr_sym",0);\n    }" ({ "{") (expression_statement "FUN_002446e0("../../gold/sparc.cc",0x187,"tls_get_addr_sym",0);" (call_expression "FUN_002446e0("../../gold/sparc.cc",0x187,"tls_get_addr_sym",0)" (identifier "FUN_002446e0") (argument_list "("../../gold/sparc.cc",0x187,"tls_get_addr_sym",0)" (( "(") (string_literal ""../../gold/sparc.cc"" (" """) (string_content "../../gold/sparc.cc") (" """)) (, ",") (number_literal "0x187") (, ",") (string_literal ""tls_get_addr_sym"" (" """) (string_content "tls_get_addr_sym") (" """)) (, ",") (number_literal "0") () ")"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if (*(int *)(iVar1 + 0x18) != -1) {\n    return;\n  }" (if "if") (parenthesized_expression "(*(int *)(iVar1 + 0x18) != -1)" (( "(") (binary_expression "*(int *)(iVar1 + 0x18) != -1" (pointer_expression "*(int *)(iVar1 + 0x18)" (* "*") (cast_expression "(int *)(iVar1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x18)" (( "(") (binary_expression "iVar1 + 0x18" (identifier "iVar1") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_0009fb00(iVar1);" (call_expression "FUN_0009fb00(iVar1)" (identifier "FUN_0009fb00") (argument_list "(iVar1)" (( "(") (identifier "iVar1") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "DT": Some values do not have unique names */

void anon_unknown.dwarf_484c35::Target_sparc<64,_true>::Scan::generate_tls_call
               (Symbol_table *symtab,Layout *layout,Target_sparc<64,_true> *target)

{
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void __regparm3 MASKED(undefined4 param_1,undefined4 param_2,int param_3)

{
  int iVar1;
  
  iVar1 = *(int *)(param_3 + 0x40);
  if (iVar1 == 0) {
    iVar1 = FUN_0034ef60(param_1,"__tls_get_addr",0);
    *(int *)(param_3 + 0x40) = iVar1;
    if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
      FUN_002446e0("../../gold/sparc.cc",0x187,"tls_get_addr_sym",0);
    }
  }
  if (*(int *)(iVar1 + 0x18) != -1) {
    return;
  }
  FUN_0009fb00(iVar1);
  return;
}

