
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: uint64_t address_for_global(Output_data_plt_aarch64<64,_true> * this,
   Symbol * gsym) */

uint64_t __thiscall
anon_unknown.dwarf_12235f4::Output_data_plt_aarch64<64,_true>::address_for_global
          (Output_data_plt_aarch64<64,_true> *this,Symbol *gsym)

{
  bool bVar1;
  ulong uVar2;
  
  if ((gsym->field_0x38 & 0xf) == 10) {
    if ((gsym->field_0x3a & 7) == 0) {
      if ((((ulong)((gsym->u1_).output_segment)->output_lists_[2].
                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.
                   _M_impl._M_finish & 0x100000000) == 0) &&
         (((gsym->u2_).shndx != 0 || ((gsym->field_0x3b & 0x20) == 0)))) {
LAB_002f9a90:
        bVar1 = gold::Symbol::is_preemptible(gsym);
        if (!bVar1) {
          uVar2 = (ulong)(this->count_ * 0x10 + 0x20);
          goto LAB_002f9a45;
        }
      }
    }
    else if ((gsym->field_0x3a & 7) != 4) goto LAB_002f9a90;
  }
  uVar2 = 0;
LAB_002f9a45:
  if (((this->super_Output_section_data).super_Output_data.field_0x20 & 1) == 0) {
                    /* WARNING: Subroutine does not return */
    gold::do_gold_unreachable("../../gold/output.h",0xc5,"address");
  }
  if (gsym->plt_offset_ == 0xffffffff) {
                    /* WARNING: Subroutine does not return */
    gold::do_gold_unreachable("../../gold/symtab.h",0x1ce,"plt_offset");
  }
  return (ulong)gsym->plt_offset_ + (this->super_Output_section_data).super_Output_data.address_ +
         uVar2;
}



long FUN_002f9a30(long param_1,long param_2)

{
  char cVar1;
  ulong uVar2;
  
  if ((*(byte *)(param_2 + 0x38) & 0xf) == 10) {
    if ((*(byte *)(param_2 + 0x3a) & 7) == 0) {
      if (((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0) &&
         ((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)))) {
LAB_002f9a90:
        cVar1 = FUN_001a5460(param_2);
        if (cVar1 == '\0') {
          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);
          goto LAB_002f9a45;
        }
      }
    }
    else if ((*(byte *)(param_2 + 0x3a) & 7) != 4) goto LAB_002f9a90;
  }
  uVar2 = 0;
LAB_002f9a45:
  if ((*(byte *)(param_1 + 0x20) & 1) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00352af0("../../gold/output.h",0xc5,"address");
  }
  if (*(uint *)(param_2 + 0x24) == 0xffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_00352af0("../../gold/symtab.h",0x1ce,"plt_offset");
  }
  return (ulong)*(uint *)(param_2 + 0x24) + *(long *)(param_1 + 8) + uVar2;
}


PUSH RBX
MOV RBX,RDI
SUB RSP,0x10
MOVZX EAX,byte ptr [RSI + 0x38]
AND EAX,0xf
CMP AL,0xa
JZ 0x002f9a70
XOR ECX,ECX
TEST byte ptr [RBX + 0x20],0x1
JZ 0x002f9ad6
MOV EDX,dword ptr [RSI + 0x24]
MOV RDI,qword ptr [RBX + 0x8]
CMP EDX,-0x1
JZ 0x002f9abe
MOV EAX,EDX
ADD RSP,0x10
ADD RAX,RDI
POP RBX
ADD RAX,RCX
RET
MOVZX EAX,byte ptr [RSI + 0x3a]
AND EAX,0x7
JNZ 0x002f9ab8
MOV RAX,qword ptr [RSI + 0x10]
TEST byte ptr [RAX + 0x3c],0x1
JNZ 0x002f9a43
MOV EAX,dword ptr [RSI + 0x18]
TEST EAX,EAX
JNZ 0x002f9a90
TEST byte ptr [RSI + 0x3b],0x20
JNZ 0x002f9a43
MOV RDI,RSI
MOV qword ptr [RSP + 0x8],RSI
CALL 0x001a5460
MOV RSI,qword ptr [RSP + 0x8]
TEST AL,AL
JNZ 0x002f9a43
MOV EAX,dword ptr [RBX + 0x68]
SHL EAX,0x4
LEA ECX,[RAX + 0x20]
JMP 0x002f9a45
CMP AL,0x4
JZ 0x002f9a43
JMP 0x002f9a90
LEA RDX,[0x5657d0]
MOV ESI,0x1ce
LEA RDI,[0x533407]
CALL 0x00352af0
LEA RDX,[0x566640]
MOV ESI,0xc5
LEA RDI,[0x533384]
CALL 0x00352af0
(translation_unit "long FUN_002f9a30(long param_1,long param_2)\n\n{\n  char cVar1;\n  ulong uVar2;\n  \n  if ((*(byte *)(param_2 + 0x38) & 0xf) == 10) {\n    if ((*(byte *)(param_2 + 0x3a) & 7) == 0) {\n      if (((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0) &&\n         ((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)))) {\nLAB_002f9a90:\n        cVar1 = FUN_001a5460(param_2);\n        if (cVar1 == '\0') {\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }\n    }\n    else if ((*(byte *)(param_2 + 0x3a) & 7) != 4) goto LAB_002f9a90;\n  }\n  uVar2 = 0;\nLAB_002f9a45:\n  if ((*(byte *)(param_1 + 0x20) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00352af0("../../gold/output.h",0xc5,"address");\n  }\n  if (*(uint *)(param_2 + 0x24) == 0xffffffff) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00352af0("../../gold/symtab.h",0x1ce,"plt_offset");\n  }\n  return (ulong)*(uint *)(param_2 + 0x24) + *(long *)(param_1 + 8) + uVar2;\n}\n\n" (function_definition "long FUN_002f9a30(long param_1,long param_2)\n\n{\n  char cVar1;\n  ulong uVar2;\n  \n  if ((*(byte *)(param_2 + 0x38) & 0xf) == 10) {\n    if ((*(byte *)(param_2 + 0x3a) & 7) == 0) {\n      if (((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0) &&\n         ((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)))) {\nLAB_002f9a90:\n        cVar1 = FUN_001a5460(param_2);\n        if (cVar1 == '\0') {\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }\n    }\n    else if ((*(byte *)(param_2 + 0x3a) & 7) != 4) goto LAB_002f9a90;\n  }\n  uVar2 = 0;\nLAB_002f9a45:\n  if ((*(byte *)(param_1 + 0x20) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00352af0("../../gold/output.h",0xc5,"address");\n  }\n  if (*(uint *)(param_2 + 0x24) == 0xffffffff) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00352af0("../../gold/symtab.h",0x1ce,"plt_offset");\n  }\n  return (ulong)*(uint *)(param_2 + 0x24) + *(long *)(param_1 + 8) + uVar2;\n}" (sized_type_specifier "long" long) (function_declarator "FUN_002f9a30(long param_1,long param_2)" identifier (parameter_list "(long param_1,long param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  char cVar1;\n  ulong uVar2;\n  \n  if ((*(byte *)(param_2 + 0x38) & 0xf) == 10) {\n    if ((*(byte *)(param_2 + 0x3a) & 7) == 0) {\n      if (((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0) &&\n         ((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)))) {\nLAB_002f9a90:\n        cVar1 = FUN_001a5460(param_2);\n        if (cVar1 == '\0') {\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }\n    }\n    else if ((*(byte *)(param_2 + 0x3a) & 7) != 4) goto LAB_002f9a90;\n  }\n  uVar2 = 0;\nLAB_002f9a45:\n  if ((*(byte *)(param_1 + 0x20) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00352af0("../../gold/output.h",0xc5,"address");\n  }\n  if (*(uint *)(param_2 + 0x24) == 0xffffffff) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00352af0("../../gold/symtab.h",0x1ce,"plt_offset");\n  }\n  return (ulong)*(uint *)(param_2 + 0x24) + *(long *)(param_1 + 8) + uVar2;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (if_statement "if ((*(byte *)(param_2 + 0x38) & 0xf) == 10) {\n    if ((*(byte *)(param_2 + 0x3a) & 7) == 0) {\n      if (((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0) &&\n         ((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)))) {\nLAB_002f9a90:\n        cVar1 = FUN_001a5460(param_2);\n        if (cVar1 == '\0') {\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }\n    }\n    else if ((*(byte *)(param_2 + 0x3a) & 7) != 4) goto LAB_002f9a90;\n  }" if (parenthesized_expression "((*(byte *)(param_2 + 0x38) & 0xf) == 10)" ( (binary_expression "(*(byte *)(param_2 + 0x38) & 0xf) == 10" (parenthesized_expression "(*(byte *)(param_2 + 0x38) & 0xf)" ( (binary_expression "*(byte *)(param_2 + 0x38) & 0xf" (pointer_expression "*(byte *)(param_2 + 0x38)" * (cast_expression "(byte *)(param_2 + 0x38)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    if ((*(byte *)(param_2 + 0x3a) & 7) == 0) {\n      if (((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0) &&\n         ((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)))) {\nLAB_002f9a90:\n        cVar1 = FUN_001a5460(param_2);\n        if (cVar1 == '\0') {\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }\n    }\n    else if ((*(byte *)(param_2 + 0x3a) & 7) != 4) goto LAB_002f9a90;\n  }" { (if_statement "if ((*(byte *)(param_2 + 0x3a) & 7) == 0) {\n      if (((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0) &&\n         ((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)))) {\nLAB_002f9a90:\n        cVar1 = FUN_001a5460(param_2);\n        if (cVar1 == '\0') {\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }\n    }\n    else if ((*(byte *)(param_2 + 0x3a) & 7) != 4) goto LAB_002f9a90;" if (parenthesized_expression "((*(byte *)(param_2 + 0x3a) & 7) == 0)" ( (binary_expression "(*(byte *)(param_2 + 0x3a) & 7) == 0" (parenthesized_expression "(*(byte *)(param_2 + 0x3a) & 7)" ( (binary_expression "*(byte *)(param_2 + 0x3a) & 7" (pointer_expression "*(byte *)(param_2 + 0x3a)" * (cast_expression "(byte *)(param_2 + 0x3a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3a)" ( (binary_expression "param_2 + 0x3a" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      if (((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0) &&\n         ((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)))) {\nLAB_002f9a90:\n        cVar1 = FUN_001a5460(param_2);\n        if (cVar1 == '\0') {\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }\n    }" { (if_statement "if (((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0) &&\n         ((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)))) {\nLAB_002f9a90:\n        cVar1 = FUN_001a5460(param_2);\n        if (cVar1 == '\0') {\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }" if (parenthesized_expression "(((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0) &&\n         ((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0))))" ( (binary_expression "((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0) &&\n         ((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)))" (parenthesized_expression "((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0)" ( (binary_expression "(*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0" (parenthesized_expression "(*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1)" ( (binary_expression "*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1" (pointer_expression "*(byte *)(*(long *)(param_2 + 0x10) + 0x3c)" * (cast_expression "(byte *)(*(long *)(param_2 + 0x10) + 0x3c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x10) + 0x3c)" ( (binary_expression "*(long *)(param_2 + 0x10) + 0x3c" (pointer_expression "*(long *)(param_2 + 0x10)" * (cast_expression "(long *)(param_2 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)))" ( (parenthesized_expression "(*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0))" ( (binary_expression "*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)" (binary_expression "*(int *)(param_2 + 0x18) != 0" (pointer_expression "*(int *)(param_2 + 0x18)" * (cast_expression "(int *)(param_2 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) != number_literal) || (parenthesized_expression "((*(byte *)(param_2 + 0x3b) & 0x20) == 0)" ( (binary_expression "(*(byte *)(param_2 + 0x3b) & 0x20) == 0" (parenthesized_expression "(*(byte *)(param_2 + 0x3b) & 0x20)" ( (binary_expression "*(byte *)(param_2 + 0x3b) & 0x20" (pointer_expression "*(byte *)(param_2 + 0x3b)" * (cast_expression "(byte *)(param_2 + 0x3b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3b)" ( (binary_expression "param_2 + 0x3b" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) ))) )) (compound_statement "{\nLAB_002f9a90:\n        cVar1 = FUN_001a5460(param_2);\n        if (cVar1 == '\0') {\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }" { (labeled_statement "LAB_002f9a90:\n        cVar1 = FUN_001a5460(param_2);" statement_identifier : (expression_statement "cVar1 = FUN_001a5460(param_2);" (assignment_expression "cVar1 = FUN_001a5460(param_2)" identifier = (call_expression "FUN_001a5460(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;)) (if_statement "if (cVar1 == '\0') {\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }" { (expression_statement "uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);" (assignment_expression "uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20)" identifier = (call_expression "(ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*(int *)(param_1 + 0x68) * 0x10 + 0x20)" ( (binary_expression "*(int *)(param_1 + 0x68) * 0x10 + 0x20" (binary_expression "*(int *)(param_1 + 0x68) * 0x10" (pointer_expression "*(int *)(param_1 + 0x68)" * (cast_expression "(int *)(param_1 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) )))) * number_literal) + number_literal) )))) ;) (goto_statement "goto LAB_002f9a45;" goto statement_identifier ;) })) })) }) (else_clause "else if ((*(byte *)(param_2 + 0x3a) & 7) != 4) goto LAB_002f9a90;" else (if_statement "if ((*(byte *)(param_2 + 0x3a) & 7) != 4) goto LAB_002f9a90;" if (parenthesized_expression "((*(byte *)(param_2 + 0x3a) & 7) != 4)" ( (binary_expression "(*(byte *)(param_2 + 0x3a) & 7) != 4" (parenthesized_expression "(*(byte *)(param_2 + 0x3a) & 7)" ( (binary_expression "*(byte *)(param_2 + 0x3a) & 7" (pointer_expression "*(byte *)(param_2 + 0x3a)" * (cast_expression "(byte *)(param_2 + 0x3a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3a)" ( (binary_expression "param_2 + 0x3a" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_002f9a90;" goto statement_identifier ;)))) })) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (labeled_statement "LAB_002f9a45:\n  if ((*(byte *)(param_1 + 0x20) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00352af0("../../gold/output.h",0xc5,"address");\n  }" statement_identifier : (if_statement "if ((*(byte *)(param_1 + 0x20) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00352af0("../../gold/output.h",0xc5,"address");\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 1) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x20) & 1) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 1)" ( (binary_expression "*(byte *)(param_1 + 0x20) & 1" (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00352af0("../../gold/output.h",0xc5,"address");\n  }" { comment (expression_statement "FUN_00352af0("../../gold/output.h",0xc5,"address");" (call_expression "FUN_00352af0("../../gold/output.h",0xc5,"address")" identifier (argument_list "("../../gold/output.h",0xc5,"address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""address"" " string_content ") ))) ;) }))) (if_statement "if (*(uint *)(param_2 + 0x24) == 0xffffffff) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00352af0("../../gold/symtab.h",0x1ce,"plt_offset");\n  }" if (parenthesized_expression "(*(uint *)(param_2 + 0x24) == 0xffffffff)" ( (binary_expression "*(uint *)(param_2 + 0x24) == 0xffffffff" (pointer_expression "*(uint *)(param_2 + 0x24)" * (cast_expression "(uint *)(param_2 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x24)" ( (binary_expression "param_2 + 0x24" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00352af0("../../gold/symtab.h",0x1ce,"plt_offset");\n  }" { comment (expression_statement "FUN_00352af0("../../gold/symtab.h",0x1ce,"plt_offset");" (call_expression "FUN_00352af0("../../gold/symtab.h",0x1ce,"plt_offset")" identifier (argument_list "("../../gold/symtab.h",0x1ce,"plt_offset")" ( (string_literal ""../../gold/symtab.h"" " string_content ") , number_literal , (string_literal ""plt_offset"" " string_content ") ))) ;) })) (return_statement "return (ulong)*(uint *)(param_2 + 0x24) + *(long *)(param_1 + 8) + uVar2;" return (binary_expression "(ulong)*(uint *)(param_2 + 0x24) + *(long *)(param_1 + 8) + uVar2" (binary_expression "(ulong)*(uint *)(param_2 + 0x24) + *(long *)(param_1 + 8)" (binary_expression "(ulong)*(uint *)(param_2 + 0x24)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_2 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x24)" ( (binary_expression "param_2 + 0x24" identifier + number_literal) )))) + (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) + identifier) ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: uint64_t address_for_global(Output_data_plt_aarch64<64,_true> * this,\n   Symbol * gsym) */\n\nuint64_t __thiscall\nanon_unknown.dwarf_12235f4::Output_data_plt_aarch64<64,_true>::address_for_global\n          (Output_data_plt_aarch64<64,_true> *this,Symbol *gsym)\n\n{\n  bool bVar1;\n  ulong uVar2;\n  \n  if ((gsym->field_0x38 & 0xf) == 10) {\n    if ((gsym->field_0x3a & 7) == 0) {\n      if ((((ulong)((gsym->u1_).output_segment)->output_lists_[2].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                   _M_impl._M_finish & 0x100000000) == 0) &&\n         (((gsym->u2_).shndx != 0 || ((gsym->field_0x3b & 0x20) == 0)))) {\nLAB_002f9a90:\n        bVar1 = gold::Symbol::is_preemptible(gsym);\n        if (!bVar1) {\n          uVar2 = (ulong)(this->count_ * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }\n    }\n    else if ((gsym->field_0x3a & 7) != 4) goto LAB_002f9a90;\n  }\n  uVar2 = 0;\nLAB_002f9a45:\n  if (((this->super_Output_section_data).super_Output_data.field_0x20 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/output.h",0xc5,"address");\n  }\n  if (gsym->plt_offset_ == 0xffffffff) {\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/symtab.h",0x1ce,"plt_offset");\n  }\n  return (ulong)gsym->plt_offset_ + (this->super_Output_section_data).super_Output_data.address_ +\n         uVar2;\n}\n\n" comment comment (declaration "uint64_t __thiscall\nanon_unknown.dwarf_12235f4::Output_data_plt_aarch64<64,_true>::address_for_global\n          (Output_data_plt_aarch64<64,_true> *this,Symbol *gsym)\n\n{\n  bool bVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "anon_unknown.dwarf_12235f4::" identifier . identifier : :) identifier (ERROR "<64" < number_literal) , (ERROR "_true>::address_for_global\n          (Output_data_plt_aarch64<64,_true> *this,Symbol *gsym)\n\n{\n  bool" identifier > : : (function_declarator "address_for_global\n          (Output_data_plt_aarch64<64,_true> *this,Symbol *gsym)" identifier (parameter_list "(Output_data_plt_aarch64<64,_true> *this,Symbol *gsym)" ( (parameter_declaration "Output_data_plt_aarch64" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_true> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Symbol *gsym" type_identifier (pointer_declarator "*gsym" * identifier)) ))) { primitive_type) identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (if_statement "if ((gsym->field_0x38 & 0xf) == 10) {\n    if ((gsym->field_0x3a & 7) == 0) {\n      if ((((ulong)((gsym->u1_).output_segment)->output_lists_[2].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                   _M_impl._M_finish & 0x100000000) == 0) &&\n         (((gsym->u2_).shndx != 0 || ((gsym->field_0x3b & 0x20) == 0)))) {\nLAB_002f9a90:\n        bVar1 = gold::Symbol::is_preemptible(gsym);\n        if (!bVar1) {\n          uVar2 = (ulong)(this->count_ * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }\n    }\n    else if ((gsym->field_0x3a & 7) != 4) goto LAB_002f9a90;\n  }" if (parenthesized_expression "((gsym->field_0x38 & 0xf) == 10)" ( (binary_expression "(gsym->field_0x38 & 0xf) == 10" (parenthesized_expression "(gsym->field_0x38 & 0xf)" ( (binary_expression "gsym->field_0x38 & 0xf" (field_expression "gsym->field_0x38" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    if ((gsym->field_0x3a & 7) == 0) {\n      if ((((ulong)((gsym->u1_).output_segment)->output_lists_[2].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                   _M_impl._M_finish & 0x100000000) == 0) &&\n         (((gsym->u2_).shndx != 0 || ((gsym->field_0x3b & 0x20) == 0)))) {\nLAB_002f9a90:\n        bVar1 = gold::Symbol::is_preemptible(gsym);\n        if (!bVar1) {\n          uVar2 = (ulong)(this->count_ * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }\n    }\n    else if ((gsym->field_0x3a & 7) != 4) goto LAB_002f9a90;\n  }" { (if_statement "if ((gsym->field_0x3a & 7) == 0) {\n      if ((((ulong)((gsym->u1_).output_segment)->output_lists_[2].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                   _M_impl._M_finish & 0x100000000) == 0) &&\n         (((gsym->u2_).shndx != 0 || ((gsym->field_0x3b & 0x20) == 0)))) {\nLAB_002f9a90:\n        bVar1 = gold::Symbol::is_preemptible(gsym);\n        if (!bVar1) {\n          uVar2 = (ulong)(this->count_ * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }\n    }\n    else if ((gsym->field_0x3a & 7) != 4) goto LAB_002f9a90;" if (parenthesized_expression "((gsym->field_0x3a & 7) == 0)" ( (binary_expression "(gsym->field_0x3a & 7) == 0" (parenthesized_expression "(gsym->field_0x3a & 7)" ( (binary_expression "gsym->field_0x3a & 7" (field_expression "gsym->field_0x3a" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      if ((((ulong)((gsym->u1_).output_segment)->output_lists_[2].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                   _M_impl._M_finish & 0x100000000) == 0) &&\n         (((gsym->u2_).shndx != 0 || ((gsym->field_0x3b & 0x20) == 0)))) {\nLAB_002f9a90:\n        bVar1 = gold::Symbol::is_preemptible(gsym);\n        if (!bVar1) {\n          uVar2 = (ulong)(this->count_ * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }\n    }" { (if_statement "if ((((ulong)((gsym->u1_).output_segment)->output_lists_[2].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                   _M_impl._M_finish & 0x100000000) == 0) &&\n         (((gsym->u2_).shndx != 0 || ((gsym->field_0x3b & 0x20) == 0)))) {\nLAB_002f9a90:\n        bVar1 = gold::Symbol::is_preemptible(gsym);\n        if (!bVar1) {\n          uVar2 = (ulong)(this->count_ * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }" if (parenthesized_expression "((((ulong)((gsym->u1_).output_segment)->output_lists_[2].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                   _M_impl._M_finish & 0x100000000) == 0) &&\n         (((gsym->u2_).shndx != 0 || ((gsym->field_0x3b & 0x20) == 0))))" ( (binary_expression "(((ulong)((gsym->u1_).output_segment)->output_lists_[2].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                   _M_impl._M_finish & 0x100000000) == 0) &&\n         (((gsym->u2_).shndx != 0 || ((gsym->field_0x3b & 0x20) == 0)))" (parenthesized_expression "(((ulong)((gsym->u1_).output_segment)->output_lists_[2].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                   _M_impl._M_finish & 0x100000000) == 0)" ( (binary_expression "((ulong)((gsym->u1_).output_segment)->output_lists_[2].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                   _M_impl._M_finish & 0x100000000) == 0" (parenthesized_expression "((ulong)((gsym->u1_).output_segment)->output_lists_[2].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                   _M_impl._M_finish & 0x100000000)" ( (binary_expression "(ulong)((gsym->u1_).output_segment)->output_lists_[2].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                   _M_impl._M_finish & 0x100000000" (field_expression "(ulong)((gsym->u1_).output_segment)->output_lists_[2].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                   _M_impl._M_finish" (field_expression "(ulong)((gsym->u1_).output_segment)->output_lists_[2].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                   _M_impl" (binary_expression "(ulong)((gsym->u1_).output_segment)->output_lists_[2].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "(ulong)((gsym->u1_).output_segment)->output_lists_[2].\n                   super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "(ulong)((gsym->u1_).output_segment)->output_lists_[2].\n                   super__Vector_base<gold::Output_data*,_std" (binary_expression "(ulong)((gsym->u1_).output_segment)->output_lists_[2].\n                   super__Vector_base<gold" (field_expression "(ulong)((gsym->u1_).output_segment)->output_lists_[2].\n                   super__Vector_base" (subscript_expression "(ulong)((gsym->u1_).output_segment)->output_lists_[2]" (field_expression "(ulong)((gsym->u1_).output_segment)->output_lists_" (call_expression "(ulong)((gsym->u1_).output_segment)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((gsym->u1_).output_segment)" ( (field_expression "(gsym->u1_).output_segment" (parenthesized_expression "(gsym->u1_)" ( (field_expression "gsym->u1_" identifier -> field_identifier) )) . field_identifier) ))) -> field_identifier) [ number_literal ]) . field_identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "(((gsym->u2_).shndx != 0 || ((gsym->field_0x3b & 0x20) == 0)))" ( (parenthesized_expression "((gsym->u2_).shndx != 0 || ((gsym->field_0x3b & 0x20) == 0))" ( (binary_expression "(gsym->u2_).shndx != 0 || ((gsym->field_0x3b & 0x20) == 0)" (binary_expression "(gsym->u2_).shndx != 0" (field_expression "(gsym->u2_).shndx" (parenthesized_expression "(gsym->u2_)" ( (field_expression "gsym->u2_" identifier -> field_identifier) )) . field_identifier) != number_literal) || (parenthesized_expression "((gsym->field_0x3b & 0x20) == 0)" ( (binary_expression "(gsym->field_0x3b & 0x20) == 0" (parenthesized_expression "(gsym->field_0x3b & 0x20)" ( (binary_expression "gsym->field_0x3b & 0x20" (field_expression "gsym->field_0x3b" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) ))) )) (compound_statement "{\nLAB_002f9a90:\n        bVar1 = gold::Symbol::is_preemptible(gsym);\n        if (!bVar1) {\n          uVar2 = (ulong)(this->count_ * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }" { (labeled_statement "LAB_002f9a90:\n        bVar1 = gold::Symbol::is_preemptible(gsym);" statement_identifier : (ERROR "bVar1 = gold::" (assignment_expression "bVar1 = gold" identifier = identifier) : :) (labeled_statement "Symbol::is_preemptible(gsym);" statement_identifier : (ERROR ":" :) (expression_statement "is_preemptible(gsym);" (call_expression "is_preemptible(gsym)" identifier (argument_list "(gsym)" ( identifier ))) ;))) (if_statement "if (!bVar1) {\n          uVar2 = (ulong)(this->count_ * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }" if (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) (compound_statement "{\n          uVar2 = (ulong)(this->count_ * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }" { (expression_statement "uVar2 = (ulong)(this->count_ * 0x10 + 0x20);" (assignment_expression "uVar2 = (ulong)(this->count_ * 0x10 + 0x20)" identifier = (call_expression "(ulong)(this->count_ * 0x10 + 0x20)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(this->count_ * 0x10 + 0x20)" ( (binary_expression "this->count_ * 0x10 + 0x20" (binary_expression "this->count_ * 0x10" (field_expression "this->count_" identifier -> field_identifier) * number_literal) + number_literal) )))) ;) (goto_statement "goto LAB_002f9a45;" goto statement_identifier ;) })) })) }) (else_clause "else if ((gsym->field_0x3a & 7) != 4) goto LAB_002f9a90;" else (if_statement "if ((gsym->field_0x3a & 7) != 4) goto LAB_002f9a90;" if (parenthesized_expression "((gsym->field_0x3a & 7) != 4)" ( (binary_expression "(gsym->field_0x3a & 7) != 4" (parenthesized_expression "(gsym->field_0x3a & 7)" ( (binary_expression "gsym->field_0x3a & 7" (field_expression "gsym->field_0x3a" identifier -> field_identifier) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_002f9a90;" goto statement_identifier ;)))) })) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (labeled_statement "LAB_002f9a45:\n  if (((this->super_Output_section_data).super_Output_data.field_0x20 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/output.h",0xc5,"address");\n  }" statement_identifier : (if_statement "if (((this->super_Output_section_data).super_Output_data.field_0x20 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/output.h",0xc5,"address");\n  }" if (parenthesized_expression "(((this->super_Output_section_data).super_Output_data.field_0x20 & 1) == 0)" ( (binary_expression "((this->super_Output_section_data).super_Output_data.field_0x20 & 1) == 0" (parenthesized_expression "((this->super_Output_section_data).super_Output_data.field_0x20 & 1)" ( (binary_expression "(this->super_Output_section_data).super_Output_data.field_0x20 & 1" (field_expression "(this->super_Output_section_data).super_Output_data.field_0x20" (field_expression "(this->super_Output_section_data).super_Output_data" (parenthesized_expression "(this->super_Output_section_data)" ( (field_expression "this->super_Output_section_data" identifier -> field_identifier) )) . field_identifier) . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/output.h",0xc5,"address");\n  }" { comment (labeled_statement "gold::do_gold_unreachable("../../gold/output.h",0xc5,"address");" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable("../../gold/output.h",0xc5,"address");" (call_expression "do_gold_unreachable("../../gold/output.h",0xc5,"address")" identifier (argument_list "("../../gold/output.h",0xc5,"address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""address"" " string_content ") ))) ;)) }))) (if_statement "if (gsym->plt_offset_ == 0xffffffff) {\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/symtab.h",0x1ce,"plt_offset");\n  }" if (parenthesized_expression "(gsym->plt_offset_ == 0xffffffff)" ( (binary_expression "gsym->plt_offset_ == 0xffffffff" (field_expression "gsym->plt_offset_" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    gold::do_gold_unreachable("../../gold/symtab.h",0x1ce,"plt_offset");\n  }" { comment (labeled_statement "gold::do_gold_unreachable("../../gold/symtab.h",0x1ce,"plt_offset");" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable("../../gold/symtab.h",0x1ce,"plt_offset");" (call_expression "do_gold_unreachable("../../gold/symtab.h",0x1ce,"plt_offset")" identifier (argument_list "("../../gold/symtab.h",0x1ce,"plt_offset")" ( (string_literal ""../../gold/symtab.h"" " string_content ") , number_literal , (string_literal ""plt_offset"" " string_content ") ))) ;)) })) (return_statement "return (ulong)gsym->plt_offset_ + (this->super_Output_section_data).super_Output_data.address_ +\n         uVar2;" return (binary_expression "(ulong)gsym->plt_offset_ + (this->super_Output_section_data).super_Output_data.address_ +\n         uVar2" (binary_expression "(ulong)gsym->plt_offset_ + (this->super_Output_section_data).super_Output_data.address_" (cast_expression "(ulong)gsym->plt_offset_" ( (type_descriptor "ulong" type_identifier) ) (field_expression "gsym->plt_offset_" identifier -> field_identifier)) + (field_expression "(this->super_Output_section_data).super_Output_data.address_" (field_expression "(this->super_Output_section_data).super_Output_data" (parenthesized_expression "(this->super_Output_section_data)" ( (field_expression "this->super_Output_section_data" identifier -> field_identifier) )) . field_identifier) . field_identifier)) + identifier) ;) (ERROR "}" }))
(translation_unit "long FUN_002f9a30(long param_1,long param_2)\n\n{\n  char cVar1;\n  ulong uVar2;\n  \n  if ((*(byte *)(param_2 + 0x38) & 0xf) == 10) {\n    if ((*(byte *)(param_2 + 0x3a) & 7) == 0) {\n      if (((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0) &&\n         ((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)))) {\nLAB_002f9a90:\n        cVar1 = FUN_001a5460(param_2);\n        if (cVar1 == '\0') {\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }\n    }\n    else if ((*(byte *)(param_2 + 0x3a) & 7) != 4) goto LAB_002f9a90;\n  }\n  uVar2 = 0;\nLAB_002f9a45:\n  if ((*(byte *)(param_1 + 0x20) & 1) == 0) {\n                    \n    FUN_00352af0("../../gold/output.h",0xc5,"address");\n  }\n  if (*(uint *)(param_2 + 0x24) == 0xffffffff) {\n                    \n    FUN_00352af0("../../gold/symtab.h",0x1ce,"plt_offset");\n  }\n  return (ulong)*(uint *)(param_2 + 0x24) + *(long *)(param_1 + 8) + uVar2;\n}\n\n" (function_definition "long FUN_002f9a30(long param_1,long param_2)\n\n{\n  char cVar1;\n  ulong uVar2;\n  \n  if ((*(byte *)(param_2 + 0x38) & 0xf) == 10) {\n    if ((*(byte *)(param_2 + 0x3a) & 7) == 0) {\n      if (((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0) &&\n         ((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)))) {\nLAB_002f9a90:\n        cVar1 = FUN_001a5460(param_2);\n        if (cVar1 == '\0') {\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }\n    }\n    else if ((*(byte *)(param_2 + 0x3a) & 7) != 4) goto LAB_002f9a90;\n  }\n  uVar2 = 0;\nLAB_002f9a45:\n  if ((*(byte *)(param_1 + 0x20) & 1) == 0) {\n                    \n    FUN_00352af0("../../gold/output.h",0xc5,"address");\n  }\n  if (*(uint *)(param_2 + 0x24) == 0xffffffff) {\n                    \n    FUN_00352af0("../../gold/symtab.h",0x1ce,"plt_offset");\n  }\n  return (ulong)*(uint *)(param_2 + 0x24) + *(long *)(param_1 + 8) + uVar2;\n}" (sized_type_specifier "long" long) (function_declarator "FUN_002f9a30(long param_1,long param_2)" identifier (parameter_list "(long param_1,long param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  char cVar1;\n  ulong uVar2;\n  \n  if ((*(byte *)(param_2 + 0x38) & 0xf) == 10) {\n    if ((*(byte *)(param_2 + 0x3a) & 7) == 0) {\n      if (((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0) &&\n         ((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)))) {\nLAB_002f9a90:\n        cVar1 = FUN_001a5460(param_2);\n        if (cVar1 == '\0') {\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }\n    }\n    else if ((*(byte *)(param_2 + 0x3a) & 7) != 4) goto LAB_002f9a90;\n  }\n  uVar2 = 0;\nLAB_002f9a45:\n  if ((*(byte *)(param_1 + 0x20) & 1) == 0) {\n                    \n    FUN_00352af0("../../gold/output.h",0xc5,"address");\n  }\n  if (*(uint *)(param_2 + 0x24) == 0xffffffff) {\n                    \n    FUN_00352af0("../../gold/symtab.h",0x1ce,"plt_offset");\n  }\n  return (ulong)*(uint *)(param_2 + 0x24) + *(long *)(param_1 + 8) + uVar2;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (if_statement "if ((*(byte *)(param_2 + 0x38) & 0xf) == 10) {\n    if ((*(byte *)(param_2 + 0x3a) & 7) == 0) {\n      if (((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0) &&\n         ((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)))) {\nLAB_002f9a90:\n        cVar1 = FUN_001a5460(param_2);\n        if (cVar1 == '\0') {\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }\n    }\n    else if ((*(byte *)(param_2 + 0x3a) & 7) != 4) goto LAB_002f9a90;\n  }" if (parenthesized_expression "((*(byte *)(param_2 + 0x38) & 0xf) == 10)" ( (binary_expression "(*(byte *)(param_2 + 0x38) & 0xf) == 10" (parenthesized_expression "(*(byte *)(param_2 + 0x38) & 0xf)" ( (binary_expression "*(byte *)(param_2 + 0x38) & 0xf" (pointer_expression "*(byte *)(param_2 + 0x38)" * (cast_expression "(byte *)(param_2 + 0x38)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x38)" ( (binary_expression "param_2 + 0x38" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    if ((*(byte *)(param_2 + 0x3a) & 7) == 0) {\n      if (((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0) &&\n         ((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)))) {\nLAB_002f9a90:\n        cVar1 = FUN_001a5460(param_2);\n        if (cVar1 == '\0') {\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }\n    }\n    else if ((*(byte *)(param_2 + 0x3a) & 7) != 4) goto LAB_002f9a90;\n  }" { (if_statement "if ((*(byte *)(param_2 + 0x3a) & 7) == 0) {\n      if (((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0) &&\n         ((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)))) {\nLAB_002f9a90:\n        cVar1 = FUN_001a5460(param_2);\n        if (cVar1 == '\0') {\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }\n    }\n    else if ((*(byte *)(param_2 + 0x3a) & 7) != 4) goto LAB_002f9a90;" if (parenthesized_expression "((*(byte *)(param_2 + 0x3a) & 7) == 0)" ( (binary_expression "(*(byte *)(param_2 + 0x3a) & 7) == 0" (parenthesized_expression "(*(byte *)(param_2 + 0x3a) & 7)" ( (binary_expression "*(byte *)(param_2 + 0x3a) & 7" (pointer_expression "*(byte *)(param_2 + 0x3a)" * (cast_expression "(byte *)(param_2 + 0x3a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3a)" ( (binary_expression "param_2 + 0x3a" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      if (((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0) &&\n         ((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)))) {\nLAB_002f9a90:\n        cVar1 = FUN_001a5460(param_2);\n        if (cVar1 == '\0') {\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }\n    }" { (if_statement "if (((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0) &&\n         ((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)))) {\nLAB_002f9a90:\n        cVar1 = FUN_001a5460(param_2);\n        if (cVar1 == '\0') {\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }" if (parenthesized_expression "(((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0) &&\n         ((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0))))" ( (binary_expression "((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0) &&\n         ((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)))" (parenthesized_expression "((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0)" ( (binary_expression "(*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0" (parenthesized_expression "(*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1)" ( (binary_expression "*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1" (pointer_expression "*(byte *)(*(long *)(param_2 + 0x10) + 0x3c)" * (cast_expression "(byte *)(*(long *)(param_2 + 0x10) + 0x3c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x10) + 0x3c)" ( (binary_expression "*(long *)(param_2 + 0x10) + 0x3c" (pointer_expression "*(long *)(param_2 + 0x10)" * (cast_expression "(long *)(param_2 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)))" ( (parenthesized_expression "(*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0))" ( (binary_expression "*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)" (binary_expression "*(int *)(param_2 + 0x18) != 0" (pointer_expression "*(int *)(param_2 + 0x18)" * (cast_expression "(int *)(param_2 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) )))) != number_literal) || (parenthesized_expression "((*(byte *)(param_2 + 0x3b) & 0x20) == 0)" ( (binary_expression "(*(byte *)(param_2 + 0x3b) & 0x20) == 0" (parenthesized_expression "(*(byte *)(param_2 + 0x3b) & 0x20)" ( (binary_expression "*(byte *)(param_2 + 0x3b) & 0x20" (pointer_expression "*(byte *)(param_2 + 0x3b)" * (cast_expression "(byte *)(param_2 + 0x3b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3b)" ( (binary_expression "param_2 + 0x3b" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) ))) )) (compound_statement "{\nLAB_002f9a90:\n        cVar1 = FUN_001a5460(param_2);\n        if (cVar1 == '\0') {\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }" { (labeled_statement "LAB_002f9a90:\n        cVar1 = FUN_001a5460(param_2);" statement_identifier : (expression_statement "cVar1 = FUN_001a5460(param_2);" (assignment_expression "cVar1 = FUN_001a5460(param_2)" identifier = (call_expression "FUN_001a5460(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;)) (if_statement "if (cVar1 == '\0') {\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }" { (expression_statement "uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);" (assignment_expression "uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20)" identifier = (call_expression "(ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*(int *)(param_1 + 0x68) * 0x10 + 0x20)" ( (binary_expression "*(int *)(param_1 + 0x68) * 0x10 + 0x20" (binary_expression "*(int *)(param_1 + 0x68) * 0x10" (pointer_expression "*(int *)(param_1 + 0x68)" * (cast_expression "(int *)(param_1 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) )))) * number_literal) + number_literal) )))) ;) (goto_statement "goto LAB_002f9a45;" goto statement_identifier ;) })) })) }) (else_clause "else if ((*(byte *)(param_2 + 0x3a) & 7) != 4) goto LAB_002f9a90;" else (if_statement "if ((*(byte *)(param_2 + 0x3a) & 7) != 4) goto LAB_002f9a90;" if (parenthesized_expression "((*(byte *)(param_2 + 0x3a) & 7) != 4)" ( (binary_expression "(*(byte *)(param_2 + 0x3a) & 7) != 4" (parenthesized_expression "(*(byte *)(param_2 + 0x3a) & 7)" ( (binary_expression "*(byte *)(param_2 + 0x3a) & 7" (pointer_expression "*(byte *)(param_2 + 0x3a)" * (cast_expression "(byte *)(param_2 + 0x3a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x3a)" ( (binary_expression "param_2 + 0x3a" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_002f9a90;" goto statement_identifier ;)))) })) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (labeled_statement "LAB_002f9a45:\n  if ((*(byte *)(param_1 + 0x20) & 1) == 0) {\n                    \n    FUN_00352af0("../../gold/output.h",0xc5,"address");\n  }" statement_identifier : (if_statement "if ((*(byte *)(param_1 + 0x20) & 1) == 0) {\n                    \n    FUN_00352af0("../../gold/output.h",0xc5,"address");\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 1) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x20) & 1) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 1)" ( (binary_expression "*(byte *)(param_1 + 0x20) & 1" (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n    FUN_00352af0("../../gold/output.h",0xc5,"address");\n  }" { (expression_statement "FUN_00352af0("../../gold/output.h",0xc5,"address");" (call_expression "FUN_00352af0("../../gold/output.h",0xc5,"address")" identifier (argument_list "("../../gold/output.h",0xc5,"address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""address"" " string_content ") ))) ;) }))) (if_statement "if (*(uint *)(param_2 + 0x24) == 0xffffffff) {\n                    \n    FUN_00352af0("../../gold/symtab.h",0x1ce,"plt_offset");\n  }" if (parenthesized_expression "(*(uint *)(param_2 + 0x24) == 0xffffffff)" ( (binary_expression "*(uint *)(param_2 + 0x24) == 0xffffffff" (pointer_expression "*(uint *)(param_2 + 0x24)" * (cast_expression "(uint *)(param_2 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x24)" ( (binary_expression "param_2 + 0x24" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n    FUN_00352af0("../../gold/symtab.h",0x1ce,"plt_offset");\n  }" { (expression_statement "FUN_00352af0("../../gold/symtab.h",0x1ce,"plt_offset");" (call_expression "FUN_00352af0("../../gold/symtab.h",0x1ce,"plt_offset")" identifier (argument_list "("../../gold/symtab.h",0x1ce,"plt_offset")" ( (string_literal ""../../gold/symtab.h"" " string_content ") , number_literal , (string_literal ""plt_offset"" " string_content ") ))) ;) })) (return_statement "return (ulong)*(uint *)(param_2 + 0x24) + *(long *)(param_1 + 8) + uVar2;" return (binary_expression "(ulong)*(uint *)(param_2 + 0x24) + *(long *)(param_1 + 8) + uVar2" (binary_expression "(ulong)*(uint *)(param_2 + 0x24) + *(long *)(param_1 + 8)" (binary_expression "(ulong)*(uint *)(param_2 + 0x24)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(param_2 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x24)" ( (binary_expression "param_2 + 0x24" identifier + number_literal) )))) + (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) + identifier) ;) })))
(translation_unit (function_definition (sized_type_specifier long) (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (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) )))) & LIT) )) == LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) ))) )) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT) + LIT) )))) ;) (goto_statement goto statement_identifier ;) })) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)))) })) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & 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 IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (return_statement return (binary_expression (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + IDENT) ;) })))
(function_definition "long FUN_002f9a30(long param_1,long param_2)\n\n{\n  char cVar1;\n  ulong uVar2;\n  \n  if ((*(byte *)(param_2 + 0x38) & 0xf) == 10) {\n    if ((*(byte *)(param_2 + 0x3a) & 7) == 0) {\n      if (((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0) &&\n         ((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)))) {\nLAB_002f9a90:\n        cVar1 = FUN_001a5460(param_2);\n        if (cVar1 == '\0') {\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }\n    }\n    else if ((*(byte *)(param_2 + 0x3a) & 7) != 4) goto LAB_002f9a90;\n  }\n  uVar2 = 0;\nLAB_002f9a45:\n  if ((*(byte *)(param_1 + 0x20) & 1) == 0) {\n                    \n    FUN_00352af0("../../gold/output.h",0xc5,"address");\n  }\n  if (*(uint *)(param_2 + 0x24) == 0xffffffff) {\n                    \n    FUN_00352af0("../../gold/symtab.h",0x1ce,"plt_offset");\n  }\n  return (ulong)*(uint *)(param_2 + 0x24) + *(long *)(param_1 + 8) + uVar2;\n}" (sized_type_specifier "long" (long "long")) (function_declarator "FUN_002f9a30(long param_1,long param_2)" (identifier "FUN_002f9a30") (parameter_list "(long param_1,long param_2)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) () ")"))) (compound_statement "{\n  char cVar1;\n  ulong uVar2;\n  \n  if ((*(byte *)(param_2 + 0x38) & 0xf) == 10) {\n    if ((*(byte *)(param_2 + 0x3a) & 7) == 0) {\n      if (((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0) &&\n         ((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)))) {\nLAB_002f9a90:\n        cVar1 = FUN_001a5460(param_2);\n        if (cVar1 == '\0') {\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }\n    }\n    else if ((*(byte *)(param_2 + 0x3a) & 7) != 4) goto LAB_002f9a90;\n  }\n  uVar2 = 0;\nLAB_002f9a45:\n  if ((*(byte *)(param_1 + 0x20) & 1) == 0) {\n                    \n    FUN_00352af0("../../gold/output.h",0xc5,"address");\n  }\n  if (*(uint *)(param_2 + 0x24) == 0xffffffff) {\n                    \n    FUN_00352af0("../../gold/symtab.h",0x1ce,"plt_offset");\n  }\n  return (ulong)*(uint *)(param_2 + 0x24) + *(long *)(param_1 + 8) + uVar2;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "ulong uVar2;" (type_identifier "ulong") (identifier "uVar2") (; ";")) (if_statement "if ((*(byte *)(param_2 + 0x38) & 0xf) == 10) {\n    if ((*(byte *)(param_2 + 0x3a) & 7) == 0) {\n      if (((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0) &&\n         ((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)))) {\nLAB_002f9a90:\n        cVar1 = FUN_001a5460(param_2);\n        if (cVar1 == '\0') {\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }\n    }\n    else if ((*(byte *)(param_2 + 0x3a) & 7) != 4) goto LAB_002f9a90;\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_2 + 0x38) & 0xf) == 10)" (( "(") (binary_expression "(*(byte *)(param_2 + 0x38) & 0xf) == 10" (parenthesized_expression "(*(byte *)(param_2 + 0x38) & 0xf)" (( "(") (binary_expression "*(byte *)(param_2 + 0x38) & 0xf" (pointer_expression "*(byte *)(param_2 + 0x38)" (* "*") (cast_expression "(byte *)(param_2 + 0x38)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x38)" (( "(") (binary_expression "param_2 + 0x38" (identifier "param_2") (+ "+") (number_literal "0x38")) () ")")))) (& "&") (number_literal "0xf")) () ")")) (== "==") (number_literal "10")) () ")")) (compound_statement "{\n    if ((*(byte *)(param_2 + 0x3a) & 7) == 0) {\n      if (((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0) &&\n         ((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)))) {\nLAB_002f9a90:\n        cVar1 = FUN_001a5460(param_2);\n        if (cVar1 == '\0') {\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }\n    }\n    else if ((*(byte *)(param_2 + 0x3a) & 7) != 4) goto LAB_002f9a90;\n  }" ({ "{") (if_statement "if ((*(byte *)(param_2 + 0x3a) & 7) == 0) {\n      if (((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0) &&\n         ((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)))) {\nLAB_002f9a90:\n        cVar1 = FUN_001a5460(param_2);\n        if (cVar1 == '\0') {\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }\n    }\n    else if ((*(byte *)(param_2 + 0x3a) & 7) != 4) goto LAB_002f9a90;" (if "if") (parenthesized_expression "((*(byte *)(param_2 + 0x3a) & 7) == 0)" (( "(") (binary_expression "(*(byte *)(param_2 + 0x3a) & 7) == 0" (parenthesized_expression "(*(byte *)(param_2 + 0x3a) & 7)" (( "(") (binary_expression "*(byte *)(param_2 + 0x3a) & 7" (pointer_expression "*(byte *)(param_2 + 0x3a)" (* "*") (cast_expression "(byte *)(param_2 + 0x3a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3a)" (( "(") (binary_expression "param_2 + 0x3a" (identifier "param_2") (+ "+") (number_literal "0x3a")) () ")")))) (& "&") (number_literal "7")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0) &&\n         ((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)))) {\nLAB_002f9a90:\n        cVar1 = FUN_001a5460(param_2);\n        if (cVar1 == '\0') {\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }\n    }" ({ "{") (if_statement "if (((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0) &&\n         ((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)))) {\nLAB_002f9a90:\n        cVar1 = FUN_001a5460(param_2);\n        if (cVar1 == '\0') {\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }" (if "if") (parenthesized_expression "(((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0) &&\n         ((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0))))" (( "(") (binary_expression "((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0) &&\n         ((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)))" (parenthesized_expression "((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0" (parenthesized_expression "(*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1)" (( "(") (binary_expression "*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1" (pointer_expression "*(byte *)(*(long *)(param_2 + 0x10) + 0x3c)" (* "*") (cast_expression "(byte *)(*(long *)(param_2 + 0x10) + 0x3c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_2 + 0x10) + 0x3c)" (( "(") (binary_expression "*(long *)(param_2 + 0x10) + 0x3c" (pointer_expression "*(long *)(param_2 + 0x10)" (* "*") (cast_expression "(long *)(param_2 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x10)" (( "(") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "0x3c")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)))" (( "(") (parenthesized_expression "(*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0))" (( "(") (binary_expression "*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)" (binary_expression "*(int *)(param_2 + 0x18) != 0" (pointer_expression "*(int *)(param_2 + 0x18)" (* "*") (cast_expression "(int *)(param_2 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (number_literal "0")) (|| "||") (parenthesized_expression "((*(byte *)(param_2 + 0x3b) & 0x20) == 0)" (( "(") (binary_expression "(*(byte *)(param_2 + 0x3b) & 0x20) == 0" (parenthesized_expression "(*(byte *)(param_2 + 0x3b) & 0x20)" (( "(") (binary_expression "*(byte *)(param_2 + 0x3b) & 0x20" (pointer_expression "*(byte *)(param_2 + 0x3b)" (* "*") (cast_expression "(byte *)(param_2 + 0x3b)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3b)" (( "(") (binary_expression "param_2 + 0x3b" (identifier "param_2") (+ "+") (number_literal "0x3b")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\nLAB_002f9a90:\n        cVar1 = FUN_001a5460(param_2);\n        if (cVar1 == '\0') {\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }\n      }" ({ "{") (labeled_statement "LAB_002f9a90:\n        cVar1 = FUN_001a5460(param_2);" (statement_identifier "LAB_002f9a90") (: ":") (expression_statement "cVar1 = FUN_001a5460(param_2);" (assignment_expression "cVar1 = FUN_001a5460(param_2)" (identifier "cVar1") (= "=") (call_expression "FUN_001a5460(param_2)" (identifier "FUN_001a5460") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";"))) (if_statement "if (cVar1 == '\0') {\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }" (if "if") (parenthesized_expression "(cVar1 == '\0')" (( "(") (binary_expression "cVar1 == '\0'" (identifier "cVar1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);\n          goto LAB_002f9a45;\n        }" ({ "{") (expression_statement "uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);" (assignment_expression "uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20)" (identifier "uVar2") (= "=") (call_expression "(ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(*(int *)(param_1 + 0x68) * 0x10 + 0x20)" (( "(") (binary_expression "*(int *)(param_1 + 0x68) * 0x10 + 0x20" (binary_expression "*(int *)(param_1 + 0x68) * 0x10" (pointer_expression "*(int *)(param_1 + 0x68)" (* "*") (cast_expression "(int *)(param_1 + 0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x68)" (( "(") (binary_expression "param_1 + 0x68" (identifier "param_1") (+ "+") (number_literal "0x68")) () ")")))) (* "*") (number_literal "0x10")) (+ "+") (number_literal "0x20")) () ")")))) (; ";")) (goto_statement "goto LAB_002f9a45;" (goto "goto") (statement_identifier "LAB_002f9a45") (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else if ((*(byte *)(param_2 + 0x3a) & 7) != 4) goto LAB_002f9a90;" (else "else") (if_statement "if ((*(byte *)(param_2 + 0x3a) & 7) != 4) goto LAB_002f9a90;" (if "if") (parenthesized_expression "((*(byte *)(param_2 + 0x3a) & 7) != 4)" (( "(") (binary_expression "(*(byte *)(param_2 + 0x3a) & 7) != 4" (parenthesized_expression "(*(byte *)(param_2 + 0x3a) & 7)" (( "(") (binary_expression "*(byte *)(param_2 + 0x3a) & 7" (pointer_expression "*(byte *)(param_2 + 0x3a)" (* "*") (cast_expression "(byte *)(param_2 + 0x3a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x3a)" (( "(") (binary_expression "param_2 + 0x3a" (identifier "param_2") (+ "+") (number_literal "0x3a")) () ")")))) (& "&") (number_literal "7")) () ")")) (!= "!=") (number_literal "4")) () ")")) (goto_statement "goto LAB_002f9a90;" (goto "goto") (statement_identifier "LAB_002f9a90") (; ";"))))) (} "}"))) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_002f9a45:\n  if ((*(byte *)(param_1 + 0x20) & 1) == 0) {\n                    \n    FUN_00352af0("../../gold/output.h",0xc5,"address");\n  }" (statement_identifier "LAB_002f9a45") (: ":") (if_statement "if ((*(byte *)(param_1 + 0x20) & 1) == 0) {\n                    \n    FUN_00352af0("../../gold/output.h",0xc5,"address");\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x20) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x20) & 1) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x20) & 1)" (( "(") (binary_expression "*(byte *)(param_1 + 0x20) & 1" (pointer_expression "*(byte *)(param_1 + 0x20)" (* "*") (cast_expression "(byte *)(param_1 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_00352af0("../../gold/output.h",0xc5,"address");\n  }" ({ "{") (expression_statement "FUN_00352af0("../../gold/output.h",0xc5,"address");" (call_expression "FUN_00352af0("../../gold/output.h",0xc5,"address")" (identifier "FUN_00352af0") (argument_list "("../../gold/output.h",0xc5,"address")" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0xc5") (, ",") (string_literal ""address"" (" """) (string_content "address") (" """)) () ")"))) (; ";")) (} "}")))) (if_statement "if (*(uint *)(param_2 + 0x24) == 0xffffffff) {\n                    \n    FUN_00352af0("../../gold/symtab.h",0x1ce,"plt_offset");\n  }" (if "if") (parenthesized_expression "(*(uint *)(param_2 + 0x24) == 0xffffffff)" (( "(") (binary_expression "*(uint *)(param_2 + 0x24) == 0xffffffff" (pointer_expression "*(uint *)(param_2 + 0x24)" (* "*") (cast_expression "(uint *)(param_2 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x24)" (( "(") (binary_expression "param_2 + 0x24" (identifier "param_2") (+ "+") (number_literal "0x24")) () ")")))) (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n                    \n    FUN_00352af0("../../gold/symtab.h",0x1ce,"plt_offset");\n  }" ({ "{") (expression_statement "FUN_00352af0("../../gold/symtab.h",0x1ce,"plt_offset");" (call_expression "FUN_00352af0("../../gold/symtab.h",0x1ce,"plt_offset")" (identifier "FUN_00352af0") (argument_list "("../../gold/symtab.h",0x1ce,"plt_offset")" (( "(") (string_literal ""../../gold/symtab.h"" (" """) (string_content "../../gold/symtab.h") (" """)) (, ",") (number_literal "0x1ce") (, ",") (string_literal ""plt_offset"" (" """) (string_content "plt_offset") (" """)) () ")"))) (; ";")) (} "}"))) (return_statement "return (ulong)*(uint *)(param_2 + 0x24) + *(long *)(param_1 + 8) + uVar2;" (return "return") (binary_expression "(ulong)*(uint *)(param_2 + 0x24) + *(long *)(param_1 + 8) + uVar2" (binary_expression "(ulong)*(uint *)(param_2 + 0x24) + *(long *)(param_1 + 8)" (binary_expression "(ulong)*(uint *)(param_2 + 0x24)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)(param_2 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x24)" (( "(") (binary_expression "param_2 + 0x24" (identifier "param_2") (+ "+") (number_literal "0x24")) () ")")))) (+ "+") (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (+ "+") (identifier "uVar2")) (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: uint64_t address_for_global(Output_data_plt_aarch64<64,_true> * this,
   Symbol * gsym) */

uint64_t __thiscall
anon_unknown.dwarf_12235f4::Output_data_plt_aarch64<64,_true>::address_for_global
          (Output_data_plt_aarch64<64,_true> *this,Symbol *gsym)

{
  bool bVar1;
  type_1 var_6;
  
  if ((gsym->field_0x38 & 0xf) == 10) {
    if ((gsym->field_0x3a & 7) == 0) {
      if ((((type_1)((gsym->u1_).output_segment)->output_lists_[2].
                   super__Vector_base<var_1::Output_data*,var_2::allocator<var_1::Output_data*>var_3>.
                   _M_impl._M_finish & 0x100000000) == 0) &&
         (((gsym->u2_).shndx != 0 || ((gsym->field_0x3b & 0x20) == 0)))) {
LAB_002f9a90:
        bVar1 = var_1::Symbol::var_4(gsym);
        if (!bVar1) {
          var_6 = (type_1)(this->count_ * 0x10 + 0x20);
          goto LAB_002f9a45;
        }
      }
    }
    else if ((gsym->field_0x3a & 7) != 4) goto LAB_002f9a90;
  }
  var_6 = 0;
LAB_002f9a45:
  if (((this->super_Output_section_data).super_Output_data.field_0x20 & 1) == 0) {
                    /* WARNING: Subroutine does not return */
    gold::var_5("../../gold/output.h",0xc5,"address");
  }
  if (gsym->plt_offset_ == 0xffffffff) {
                    /* WARNING: Subroutine does not return */
    gold::var_5("../../gold/symtab.h",0x1ce,"plt_offset");
  }
  return (type_1)gsym->plt_offset_ + (this->super_Output_section_data).super_Output_data.address_ +
         var_6;
}


(translation_unit (function_definition type: (sized_type_specifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (sized_type_specifier) declarator: (identifier)) (parameter_declaration type: (sized_type_specifier) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) 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: (number_literal))) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (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)) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal)))))))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (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)) right: (number_literal)))))) (goto_statement label: (statement_identifier))))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) 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: (type_identifier) 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))))))) (return_statement (binary_expression left: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (identifier))))))

long MASKED(long param_1,long param_2)

{
  char cVar1;
  ulong uVar2;
  
  if ((*(byte *)(param_2 + 0x38) & 0xf) == 10) {
    if ((*(byte *)(param_2 + 0x3a) & 7) == 0) {
      if (((*(byte *)(*(long *)(param_2 + 0x10) + 0x3c) & 1) == 0) &&
         ((*(int *)(param_2 + 0x18) != 0 || ((*(byte *)(param_2 + 0x3b) & 0x20) == 0)))) {
LAB_002f9a90:
        cVar1 = FUN_001a5460(param_2);
        if (cVar1 == '\0') {
          uVar2 = (ulong)(*(int *)(param_1 + 0x68) * 0x10 + 0x20);
          goto LAB_002f9a45;
        }
      }
    }
    else if ((*(byte *)(param_2 + 0x3a) & 7) != 4) goto LAB_002f9a90;
  }
  uVar2 = 0;
LAB_002f9a45:
  if ((*(byte *)(param_1 + 0x20) & 1) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00352af0("../../gold/output.h",0xc5,"address");
  }
  if (*(uint *)(param_2 + 0x24) == 0xffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_00352af0("../../gold/symtab.h",0x1ce,"plt_offset");
  }
  return (ulong)*(uint *)(param_2 + 0x24) + *(long *)(param_1 + 8) + uVar2;
}

