
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* DWARF original prototype: bool reloc_needs_plt_for_ifunc(Scan * this,
   Sized_relobj_file<64,_false> * object, uint r_type) */

bool __thiscall
anon_unknown.dwarf_109b185::Target_aarch64<64,_false>::Scan::reloc_needs_plt_for_ifunc
          (Scan *this,Sized_relobj_file<64,_false> *object,uint r_type)

{
}



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

bool __regparm3 FUN_001e0520(uint param_1,uint param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  uint uVar4;
  undefined4 uVar5;
  uint uVar6;
  undefined8 uVar7;
  
  iVar1 = DAT_005eb634;
  uVar4 = param_1;
  if (param_2 != 0) {
    uVar4 = param_2 - 0x101;
    uVar6 = param_2;
    if ((0x38 < uVar4) && (uVar4 = param_2 - 0x200, 0x3d < uVar4)) {
      uVar3 = gettext("Invalid/unrecognized reloc reloc %d.");
      uVar7 = FUN_0023b810(uVar3,param_2);
      uVar6 = (uint)((ulonglong)uVar7 >> 0x20);
      uVar4 = (uint)uVar7;
    }
    if ((param_2 & 0x200) == 0) {
      if ((param_2 & 0x100) == 0) goto LAB_001e05ed;
      param_2 = param_2 - 0x100;
    }
    else {
      param_2 = param_2 - 0x180;
    }
    if (300 < param_2) {
LAB_001e05ed:
                    /* WARNING: Subroutine does not return */
      FUN_002446e0("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6);
    }
  }
  iVar1 = *(int *)(iVar1 + param_2 * 4);
  if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_002446e0("../../gold/aarch64.cc",0x17b9,"reloc_needs_plt_for_ifunc",uVar4);
  }
  if ((*(uint *)(iVar1 + 0x34) & 4) == 0) {
    return *(uint *)(iVar1 + 0x34) != 0;
  }
  uVar3 = *(undefined4 *)(iVar1 + 4);
  uVar2 = *(undefined4 *)(param_1 + 4);
  uVar5 = gettext("%s: unsupported TLS reloc %s for IFUNC symbol");
  FUN_0023b810(uVar5,uVar2,uVar3);
  return false;
}


PUSH EBP
PUSH EDI
MOV EDI,EAX
PUSH ESI
MOV ESI,EDX
PUSH EBX
CALL 0x00050b50
ADD EBX,0x409ad3
SUB ESP,0xc
MOV EBP,dword ptr [EBX + 0x1634]
TEST EDX,EDX
JZ 0x001e058f
LEA EAX,[EDX + 0xfffffeff]
CMP EAX,0x38
JBE 0x001e0571
LEA EAX,[EDX + 0xfffffe00]
CMP EAX,0x3d
JBE 0x001e0571
SUB ESP,0xc
LEA EAX,[EBX + 0xffe924b8]
PUSH EAX
CALL 0x00039440
POP ECX
POP EDX
PUSH ESI
PUSH EAX
CALL 0x0023b810
ADD ESP,0x10
TEST ESI,0x200
JNZ 0x001e05b0
TEST ESI,0x100
JZ 0x001e05ed
SUB ESI,0x100
CMP ESI,0x12c
JA 0x001e05ed
MOV EDX,dword ptr [EBP + ESI*0x4]
TEST EDX,EDX
JZ 0x001e0606
MOV ECX,dword ptr [EDX + 0x34]
TEST ECX,ECX
SETNZ AL
AND ECX,0x4
JNZ 0x001e05c0
ADD ESP,0xc
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESI,0x180
JMP 0x001e0587
SUB ESP,0xc
LEA EAX,[EBX + 0xffe92504]
MOV EBP,dword ptr [EDX + 0x4]
MOV ESI,dword ptr [EDI + 0x4]
PUSH EAX
CALL 0x00039440
ADD ESP,0xc
PUSH EBP
PUSH ESI
PUSH EAX
CALL 0x0023b810
ADD ESP,0x10
XOR EAX,EAX
ADD ESP,0xc
POP EBX
POP ESI
POP EDI
POP EBP
RET
LEA EAX,[EBX + 0xffe95714]
PUSH EDX
PUSH EAX
LEA EAX,[EBX + 0xffe924e0]
PUSH 0xeb
PUSH EAX
CALL 0x002446e0
PUSH EAX
LEA EAX,[EBX + 0xffe954f4]
PUSH EAX
LEA EAX,[EBX + 0xffe923cf]
PUSH 0x17b9
PUSH EAX
CALL 0x002446e0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nbool __regparm3 FUN_001e0520(uint param_1,uint param_2)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  uint uVar6;\n  undefined8 uVar7;\n  \n  iVar1 = DAT_005eb634;\n  uVar4 = param_1;\n  if (param_2 != 0) {\n    uVar4 = param_2 - 0x101;\n    uVar6 = param_2;\n    if ((0x38 < uVar4) && (uVar4 = param_2 - 0x200, 0x3d < uVar4)) {\n      uVar3 = gettext("Invalid/unrecognized reloc reloc %d.");\n      uVar7 = FUN_0023b810(uVar3,param_2);\n      uVar6 = (uint)((ulonglong)uVar7 >> 0x20);\n      uVar4 = (uint)uVar7;\n    }\n    if ((param_2 & 0x200) == 0) {\n      if ((param_2 & 0x100) == 0) goto LAB_001e05ed;\n      param_2 = param_2 - 0x100;\n    }\n    else {\n      param_2 = param_2 - 0x180;\n    }\n    if (300 < param_2) {\nLAB_001e05ed:\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6);\n    }\n  }\n  iVar1 = *(int *)(iVar1 + param_2 * 4);\n  if (iVar1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/aarch64.cc",0x17b9,"reloc_needs_plt_for_ifunc",uVar4);\n  }\n  if ((*(uint *)(iVar1 + 0x34) & 4) == 0) {\n    return *(uint *)(iVar1 + 0x34) != 0;\n  }\n  uVar3 = *(undefined4 *)(iVar1 + 4);\n  uVar2 = *(undefined4 *)(param_1 + 4);\n  uVar5 = gettext("%s: unsupported TLS reloc %s for IFUNC symbol");\n  FUN_0023b810(uVar5,uVar2,uVar3);\n  return false;\n}\n\n" comment (function_definition "bool __regparm3 FUN_001e0520(uint param_1,uint param_2)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  uint uVar6;\n  undefined8 uVar7;\n  \n  iVar1 = DAT_005eb634;\n  uVar4 = param_1;\n  if (param_2 != 0) {\n    uVar4 = param_2 - 0x101;\n    uVar6 = param_2;\n    if ((0x38 < uVar4) && (uVar4 = param_2 - 0x200, 0x3d < uVar4)) {\n      uVar3 = gettext("Invalid/unrecognized reloc reloc %d.");\n      uVar7 = FUN_0023b810(uVar3,param_2);\n      uVar6 = (uint)((ulonglong)uVar7 >> 0x20);\n      uVar4 = (uint)uVar7;\n    }\n    if ((param_2 & 0x200) == 0) {\n      if ((param_2 & 0x100) == 0) goto LAB_001e05ed;\n      param_2 = param_2 - 0x100;\n    }\n    else {\n      param_2 = param_2 - 0x180;\n    }\n    if (300 < param_2) {\nLAB_001e05ed:\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6);\n    }\n  }\n  iVar1 = *(int *)(iVar1 + param_2 * 4);\n  if (iVar1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/aarch64.cc",0x17b9,"reloc_needs_plt_for_ifunc",uVar4);\n  }\n  if ((*(uint *)(iVar1 + 0x34) & 4) == 0) {\n    return *(uint *)(iVar1 + 0x34) != 0;\n  }\n  uVar3 = *(undefined4 *)(iVar1 + 4);\n  uVar2 = *(undefined4 *)(param_1 + 4);\n  uVar5 = gettext("%s: unsupported TLS reloc %s for IFUNC symbol");\n  FUN_0023b810(uVar5,uVar2,uVar3);\n  return false;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_001e0520(uint param_1,uint param_2)" identifier (parameter_list "(uint param_1,uint param_2)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  uint uVar6;\n  undefined8 uVar7;\n  \n  iVar1 = DAT_005eb634;\n  uVar4 = param_1;\n  if (param_2 != 0) {\n    uVar4 = param_2 - 0x101;\n    uVar6 = param_2;\n    if ((0x38 < uVar4) && (uVar4 = param_2 - 0x200, 0x3d < uVar4)) {\n      uVar3 = gettext("Invalid/unrecognized reloc reloc %d.");\n      uVar7 = FUN_0023b810(uVar3,param_2);\n      uVar6 = (uint)((ulonglong)uVar7 >> 0x20);\n      uVar4 = (uint)uVar7;\n    }\n    if ((param_2 & 0x200) == 0) {\n      if ((param_2 & 0x100) == 0) goto LAB_001e05ed;\n      param_2 = param_2 - 0x100;\n    }\n    else {\n      param_2 = param_2 - 0x180;\n    }\n    if (300 < param_2) {\nLAB_001e05ed:\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6);\n    }\n  }\n  iVar1 = *(int *)(iVar1 + param_2 * 4);\n  if (iVar1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/aarch64.cc",0x17b9,"reloc_needs_plt_for_ifunc",uVar4);\n  }\n  if ((*(uint *)(iVar1 + 0x34) & 4) == 0) {\n    return *(uint *)(iVar1 + 0x34) != 0;\n  }\n  uVar3 = *(undefined4 *)(iVar1 + 4);\n  uVar2 = *(undefined4 *)(param_1 + 4);\n  uVar5 = gettext("%s: unsupported TLS reloc %s for IFUNC symbol");\n  FUN_0023b810(uVar5,uVar2,uVar3);\n  return false;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (expression_statement "iVar1 = DAT_005eb634;" (assignment_expression "iVar1 = DAT_005eb634" identifier = identifier) ;) (expression_statement "uVar4 = param_1;" (assignment_expression "uVar4 = param_1" identifier = identifier) ;) (if_statement "if (param_2 != 0) {\n    uVar4 = param_2 - 0x101;\n    uVar6 = param_2;\n    if ((0x38 < uVar4) && (uVar4 = param_2 - 0x200, 0x3d < uVar4)) {\n      uVar3 = gettext("Invalid/unrecognized reloc reloc %d.");\n      uVar7 = FUN_0023b810(uVar3,param_2);\n      uVar6 = (uint)((ulonglong)uVar7 >> 0x20);\n      uVar4 = (uint)uVar7;\n    }\n    if ((param_2 & 0x200) == 0) {\n      if ((param_2 & 0x100) == 0) goto LAB_001e05ed;\n      param_2 = param_2 - 0x100;\n    }\n    else {\n      param_2 = param_2 - 0x180;\n    }\n    if (300 < param_2) {\nLAB_001e05ed:\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6);\n    }\n  }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar4 = param_2 - 0x101;\n    uVar6 = param_2;\n    if ((0x38 < uVar4) && (uVar4 = param_2 - 0x200, 0x3d < uVar4)) {\n      uVar3 = gettext("Invalid/unrecognized reloc reloc %d.");\n      uVar7 = FUN_0023b810(uVar3,param_2);\n      uVar6 = (uint)((ulonglong)uVar7 >> 0x20);\n      uVar4 = (uint)uVar7;\n    }\n    if ((param_2 & 0x200) == 0) {\n      if ((param_2 & 0x100) == 0) goto LAB_001e05ed;\n      param_2 = param_2 - 0x100;\n    }\n    else {\n      param_2 = param_2 - 0x180;\n    }\n    if (300 < param_2) {\nLAB_001e05ed:\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6);\n    }\n  }" { (expression_statement "uVar4 = param_2 - 0x101;" (assignment_expression "uVar4 = param_2 - 0x101" identifier = (binary_expression "param_2 - 0x101" identifier - number_literal)) ;) (expression_statement "uVar6 = param_2;" (assignment_expression "uVar6 = param_2" identifier = identifier) ;) (if_statement "if ((0x38 < uVar4) && (uVar4 = param_2 - 0x200, 0x3d < uVar4)) {\n      uVar3 = gettext("Invalid/unrecognized reloc reloc %d.");\n      uVar7 = FUN_0023b810(uVar3,param_2);\n      uVar6 = (uint)((ulonglong)uVar7 >> 0x20);\n      uVar4 = (uint)uVar7;\n    }" if (parenthesized_expression "((0x38 < uVar4) && (uVar4 = param_2 - 0x200, 0x3d < uVar4))" ( (binary_expression "(0x38 < uVar4) && (uVar4 = param_2 - 0x200, 0x3d < uVar4)" (parenthesized_expression "(0x38 < uVar4)" ( (binary_expression "0x38 < uVar4" number_literal < identifier) )) && (parenthesized_expression "(uVar4 = param_2 - 0x200, 0x3d < uVar4)" ( (comma_expression "uVar4 = param_2 - 0x200, 0x3d < uVar4" (assignment_expression "uVar4 = param_2 - 0x200" identifier = (binary_expression "param_2 - 0x200" identifier - number_literal)) , (binary_expression "0x3d < uVar4" number_literal < identifier)) ))) )) (compound_statement "{\n      uVar3 = gettext("Invalid/unrecognized reloc reloc %d.");\n      uVar7 = FUN_0023b810(uVar3,param_2);\n      uVar6 = (uint)((ulonglong)uVar7 >> 0x20);\n      uVar4 = (uint)uVar7;\n    }" { (expression_statement "uVar3 = gettext("Invalid/unrecognized reloc reloc %d.");" (assignment_expression "uVar3 = gettext("Invalid/unrecognized reloc reloc %d.")" identifier = (call_expression "gettext("Invalid/unrecognized reloc reloc %d.")" identifier (argument_list "("Invalid/unrecognized reloc reloc %d.")" ( (string_literal ""Invalid/unrecognized reloc reloc %d."" " string_content ") )))) ;) (expression_statement "uVar7 = FUN_0023b810(uVar3,param_2);" (assignment_expression "uVar7 = FUN_0023b810(uVar3,param_2)" identifier = (call_expression "FUN_0023b810(uVar3,param_2)" identifier (argument_list "(uVar3,param_2)" ( identifier , identifier )))) ;) (expression_statement "uVar6 = (uint)((ulonglong)uVar7 >> 0x20);" (assignment_expression "uVar6 = (uint)((ulonglong)uVar7 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)uVar7 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)uVar7 >> 0x20)" ( (binary_expression "(ulonglong)uVar7 >> 0x20" (cast_expression "(ulonglong)uVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar4 = (uint)uVar7;" (assignment_expression "uVar4 = (uint)uVar7" identifier = (cast_expression "(uint)uVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) (if_statement "if ((param_2 & 0x200) == 0) {\n      if ((param_2 & 0x100) == 0) goto LAB_001e05ed;\n      param_2 = param_2 - 0x100;\n    }\n    else {\n      param_2 = param_2 - 0x180;\n    }" if (parenthesized_expression "((param_2 & 0x200) == 0)" ( (binary_expression "(param_2 & 0x200) == 0" (parenthesized_expression "(param_2 & 0x200)" ( (binary_expression "param_2 & 0x200" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if ((param_2 & 0x100) == 0) goto LAB_001e05ed;\n      param_2 = param_2 - 0x100;\n    }" { (if_statement "if ((param_2 & 0x100) == 0) goto LAB_001e05ed;" if (parenthesized_expression "((param_2 & 0x100) == 0)" ( (binary_expression "(param_2 & 0x100) == 0" (parenthesized_expression "(param_2 & 0x100)" ( (binary_expression "param_2 & 0x100" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001e05ed;" goto statement_identifier ;)) (expression_statement "param_2 = param_2 - 0x100;" (assignment_expression "param_2 = param_2 - 0x100" identifier = (binary_expression "param_2 - 0x100" identifier - number_literal)) ;) }) (else_clause "else {\n      param_2 = param_2 - 0x180;\n    }" else (compound_statement "{\n      param_2 = param_2 - 0x180;\n    }" { (expression_statement "param_2 = param_2 - 0x180;" (assignment_expression "param_2 = param_2 - 0x180" identifier = (binary_expression "param_2 - 0x180" identifier - number_literal)) ;) }))) (if_statement "if (300 < param_2) {\nLAB_001e05ed:\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6);\n    }" if (parenthesized_expression "(300 < param_2)" ( (binary_expression "300 < param_2" number_literal < identifier) )) (compound_statement "{\nLAB_001e05ed:\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6);\n    }" { (labeled_statement "LAB_001e05ed:\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6);" statement_identifier : comment (expression_statement "FUN_002446e0("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6);" (call_expression "FUN_002446e0("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6)" identifier (argument_list "("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6)" ( (string_literal ""../../gold/aarch64-reloc-property.h"" " string_content ") , number_literal , (string_literal ""code_to_array_index"" " string_content ") , identifier ))) ;)) })) })) (expression_statement "iVar1 = *(int *)(iVar1 + param_2 * 4);" (assignment_expression "iVar1 = *(int *)(iVar1 + param_2 * 4)" identifier = (pointer_expression "*(int *)(iVar1 + param_2 * 4)" * (cast_expression "(int *)(iVar1 + param_2 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + param_2 * 4)" ( (binary_expression "iVar1 + param_2 * 4" identifier + (binary_expression "param_2 * 4" identifier * number_literal)) ))))) ;) (if_statement "if (iVar1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/aarch64.cc",0x17b9,"reloc_needs_plt_for_ifunc",uVar4);\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/aarch64.cc",0x17b9,"reloc_needs_plt_for_ifunc",uVar4);\n  }" { comment (expression_statement "FUN_002446e0("../../gold/aarch64.cc",0x17b9,"reloc_needs_plt_for_ifunc",uVar4);" (call_expression "FUN_002446e0("../../gold/aarch64.cc",0x17b9,"reloc_needs_plt_for_ifunc",uVar4)" identifier (argument_list "("../../gold/aarch64.cc",0x17b9,"reloc_needs_plt_for_ifunc",uVar4)" ( (string_literal ""../../gold/aarch64.cc"" " string_content ") , number_literal , (string_literal ""reloc_needs_plt_for_ifunc"" " string_content ") , identifier ))) ;) })) (if_statement "if ((*(uint *)(iVar1 + 0x34) & 4) == 0) {\n    return *(uint *)(iVar1 + 0x34) != 0;\n  }" if (parenthesized_expression "((*(uint *)(iVar1 + 0x34) & 4) == 0)" ( (binary_expression "(*(uint *)(iVar1 + 0x34) & 4) == 0" (parenthesized_expression "(*(uint *)(iVar1 + 0x34) & 4)" ( (binary_expression "*(uint *)(iVar1 + 0x34) & 4" (pointer_expression "*(uint *)(iVar1 + 0x34)" * (cast_expression "(uint *)(iVar1 + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x34)" ( (binary_expression "iVar1 + 0x34" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    return *(uint *)(iVar1 + 0x34) != 0;\n  }" { (return_statement "return *(uint *)(iVar1 + 0x34) != 0;" return (binary_expression "*(uint *)(iVar1 + 0x34) != 0" (pointer_expression "*(uint *)(iVar1 + 0x34)" * (cast_expression "(uint *)(iVar1 + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x34)" ( (binary_expression "iVar1 + 0x34" identifier + number_literal) )))) != number_literal) ;) })) (expression_statement "uVar3 = *(undefined4 *)(iVar1 + 4);" (assignment_expression "uVar3 = *(undefined4 *)(iVar1 + 4)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 4)" * (cast_expression "(undefined4 *)(iVar1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(undefined4 *)(param_1 + 4);" (assignment_expression "uVar2 = *(undefined4 *)(param_1 + 4)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = gettext("%s: unsupported TLS reloc %s for IFUNC symbol");" (assignment_expression "uVar5 = gettext("%s: unsupported TLS reloc %s for IFUNC symbol")" identifier = (call_expression "gettext("%s: unsupported TLS reloc %s for IFUNC symbol")" identifier (argument_list "("%s: unsupported TLS reloc %s for IFUNC symbol")" ( (string_literal ""%s: unsupported TLS reloc %s for IFUNC symbol"" " string_content ") )))) ;) (expression_statement "FUN_0023b810(uVar5,uVar2,uVar3);" (call_expression "FUN_0023b810(uVar5,uVar2,uVar3)" identifier (argument_list "(uVar5,uVar2,uVar3)" ( identifier , identifier , identifier ))) ;) (return_statement "return false;" return false ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* DWARF original prototype: bool reloc_needs_plt_for_ifunc(Scan * this,\n   Sized_relobj_file<64,_false> * object, uint r_type) */\n\nbool __thiscall\nanon_unknown.dwarf_109b185::Target_aarch64<64,_false>::Scan::reloc_needs_plt_for_ifunc\n          (Scan *this,Sized_relobj_file<64,_false> *object,uint r_type)\n\n{\n}\n\n" comment comment (ERROR "bool __thiscall\nanon_unknown.dwarf_109b185::Target_aarch64<64,_false>::Scan::reloc_needs_plt_for_ifunc\n          (Scan *this,Sized_relobj_file<64,_false> *object,uint r_type)" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "anon_unknown.dwarf_109b185::" identifier . identifier : :) identifier (ERROR "<64" < number_literal) , (ERROR "_false>::Scan::" identifier > : : identifier : :) (function_declarator "reloc_needs_plt_for_ifunc\n          (Scan *this,Sized_relobj_file<64,_false> *object,uint r_type)" identifier (parameter_list "(Scan *this,Sized_relobj_file<64,_false> *object,uint r_type)" ( (parameter_declaration "Scan *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Sized_relobj_file" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_false> *object" type_identifier (ERROR ">" >) (pointer_declarator "*object" * identifier)) , (parameter_declaration "uint r_type" type_identifier identifier) )))) (compound_statement "{\n}" { }))
(translation_unit "bool __regparm3 FUN_001e0520(uint param_1,uint param_2)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  uint uVar6;\n  undefined8 uVar7;\n  \n  iVar1 = DAT_005eb634;\n  uVar4 = param_1;\n  if (param_2 != 0) {\n    uVar4 = param_2 - 0x101;\n    uVar6 = param_2;\n    if ((0x38 < uVar4) && (uVar4 = param_2 - 0x200, 0x3d < uVar4)) {\n      uVar3 = gettext("Invalid/unrecognized reloc reloc %d.");\n      uVar7 = FUN_0023b810(uVar3,param_2);\n      uVar6 = (uint)((ulonglong)uVar7 >> 0x20);\n      uVar4 = (uint)uVar7;\n    }\n    if ((param_2 & 0x200) == 0) {\n      if ((param_2 & 0x100) == 0) goto LAB_001e05ed;\n      param_2 = param_2 - 0x100;\n    }\n    else {\n      param_2 = param_2 - 0x180;\n    }\n    if (300 < param_2) {\nLAB_001e05ed:\n                    \n      FUN_002446e0("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6);\n    }\n  }\n  iVar1 = *(int *)(iVar1 + param_2 * 4);\n  if (iVar1 == 0) {\n                    \n    FUN_002446e0("../../gold/aarch64.cc",0x17b9,"reloc_needs_plt_for_ifunc",uVar4);\n  }\n  if ((*(uint *)(iVar1 + 0x34) & 4) == 0) {\n    return *(uint *)(iVar1 + 0x34) != 0;\n  }\n  uVar3 = *(undefined4 *)(iVar1 + 4);\n  uVar2 = *(undefined4 *)(param_1 + 4);\n  uVar5 = gettext("%s: unsupported TLS reloc %s for IFUNC symbol");\n  FUN_0023b810(uVar5,uVar2,uVar3);\n  return false;\n}\n\n" (function_definition "bool __regparm3 FUN_001e0520(uint param_1,uint param_2)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  uint uVar6;\n  undefined8 uVar7;\n  \n  iVar1 = DAT_005eb634;\n  uVar4 = param_1;\n  if (param_2 != 0) {\n    uVar4 = param_2 - 0x101;\n    uVar6 = param_2;\n    if ((0x38 < uVar4) && (uVar4 = param_2 - 0x200, 0x3d < uVar4)) {\n      uVar3 = gettext("Invalid/unrecognized reloc reloc %d.");\n      uVar7 = FUN_0023b810(uVar3,param_2);\n      uVar6 = (uint)((ulonglong)uVar7 >> 0x20);\n      uVar4 = (uint)uVar7;\n    }\n    if ((param_2 & 0x200) == 0) {\n      if ((param_2 & 0x100) == 0) goto LAB_001e05ed;\n      param_2 = param_2 - 0x100;\n    }\n    else {\n      param_2 = param_2 - 0x180;\n    }\n    if (300 < param_2) {\nLAB_001e05ed:\n                    \n      FUN_002446e0("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6);\n    }\n  }\n  iVar1 = *(int *)(iVar1 + param_2 * 4);\n  if (iVar1 == 0) {\n                    \n    FUN_002446e0("../../gold/aarch64.cc",0x17b9,"reloc_needs_plt_for_ifunc",uVar4);\n  }\n  if ((*(uint *)(iVar1 + 0x34) & 4) == 0) {\n    return *(uint *)(iVar1 + 0x34) != 0;\n  }\n  uVar3 = *(undefined4 *)(iVar1 + 4);\n  uVar2 = *(undefined4 *)(param_1 + 4);\n  uVar5 = gettext("%s: unsupported TLS reloc %s for IFUNC symbol");\n  FUN_0023b810(uVar5,uVar2,uVar3);\n  return false;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_001e0520(uint param_1,uint param_2)" identifier (parameter_list "(uint param_1,uint param_2)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  uint uVar6;\n  undefined8 uVar7;\n  \n  iVar1 = DAT_005eb634;\n  uVar4 = param_1;\n  if (param_2 != 0) {\n    uVar4 = param_2 - 0x101;\n    uVar6 = param_2;\n    if ((0x38 < uVar4) && (uVar4 = param_2 - 0x200, 0x3d < uVar4)) {\n      uVar3 = gettext("Invalid/unrecognized reloc reloc %d.");\n      uVar7 = FUN_0023b810(uVar3,param_2);\n      uVar6 = (uint)((ulonglong)uVar7 >> 0x20);\n      uVar4 = (uint)uVar7;\n    }\n    if ((param_2 & 0x200) == 0) {\n      if ((param_2 & 0x100) == 0) goto LAB_001e05ed;\n      param_2 = param_2 - 0x100;\n    }\n    else {\n      param_2 = param_2 - 0x180;\n    }\n    if (300 < param_2) {\nLAB_001e05ed:\n                    \n      FUN_002446e0("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6);\n    }\n  }\n  iVar1 = *(int *)(iVar1 + param_2 * 4);\n  if (iVar1 == 0) {\n                    \n    FUN_002446e0("../../gold/aarch64.cc",0x17b9,"reloc_needs_plt_for_ifunc",uVar4);\n  }\n  if ((*(uint *)(iVar1 + 0x34) & 4) == 0) {\n    return *(uint *)(iVar1 + 0x34) != 0;\n  }\n  uVar3 = *(undefined4 *)(iVar1 + 4);\n  uVar2 = *(undefined4 *)(param_1 + 4);\n  uVar5 = gettext("%s: unsupported TLS reloc %s for IFUNC symbol");\n  FUN_0023b810(uVar5,uVar2,uVar3);\n  return false;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (expression_statement "iVar1 = DAT_005eb634;" (assignment_expression "iVar1 = DAT_005eb634" identifier = identifier) ;) (expression_statement "uVar4 = param_1;" (assignment_expression "uVar4 = param_1" identifier = identifier) ;) (if_statement "if (param_2 != 0) {\n    uVar4 = param_2 - 0x101;\n    uVar6 = param_2;\n    if ((0x38 < uVar4) && (uVar4 = param_2 - 0x200, 0x3d < uVar4)) {\n      uVar3 = gettext("Invalid/unrecognized reloc reloc %d.");\n      uVar7 = FUN_0023b810(uVar3,param_2);\n      uVar6 = (uint)((ulonglong)uVar7 >> 0x20);\n      uVar4 = (uint)uVar7;\n    }\n    if ((param_2 & 0x200) == 0) {\n      if ((param_2 & 0x100) == 0) goto LAB_001e05ed;\n      param_2 = param_2 - 0x100;\n    }\n    else {\n      param_2 = param_2 - 0x180;\n    }\n    if (300 < param_2) {\nLAB_001e05ed:\n                    \n      FUN_002446e0("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6);\n    }\n  }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar4 = param_2 - 0x101;\n    uVar6 = param_2;\n    if ((0x38 < uVar4) && (uVar4 = param_2 - 0x200, 0x3d < uVar4)) {\n      uVar3 = gettext("Invalid/unrecognized reloc reloc %d.");\n      uVar7 = FUN_0023b810(uVar3,param_2);\n      uVar6 = (uint)((ulonglong)uVar7 >> 0x20);\n      uVar4 = (uint)uVar7;\n    }\n    if ((param_2 & 0x200) == 0) {\n      if ((param_2 & 0x100) == 0) goto LAB_001e05ed;\n      param_2 = param_2 - 0x100;\n    }\n    else {\n      param_2 = param_2 - 0x180;\n    }\n    if (300 < param_2) {\nLAB_001e05ed:\n                    \n      FUN_002446e0("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6);\n    }\n  }" { (expression_statement "uVar4 = param_2 - 0x101;" (assignment_expression "uVar4 = param_2 - 0x101" identifier = (binary_expression "param_2 - 0x101" identifier - number_literal)) ;) (expression_statement "uVar6 = param_2;" (assignment_expression "uVar6 = param_2" identifier = identifier) ;) (if_statement "if ((0x38 < uVar4) && (uVar4 = param_2 - 0x200, 0x3d < uVar4)) {\n      uVar3 = gettext("Invalid/unrecognized reloc reloc %d.");\n      uVar7 = FUN_0023b810(uVar3,param_2);\n      uVar6 = (uint)((ulonglong)uVar7 >> 0x20);\n      uVar4 = (uint)uVar7;\n    }" if (parenthesized_expression "((0x38 < uVar4) && (uVar4 = param_2 - 0x200, 0x3d < uVar4))" ( (binary_expression "(0x38 < uVar4) && (uVar4 = param_2 - 0x200, 0x3d < uVar4)" (parenthesized_expression "(0x38 < uVar4)" ( (binary_expression "0x38 < uVar4" number_literal < identifier) )) && (parenthesized_expression "(uVar4 = param_2 - 0x200, 0x3d < uVar4)" ( (comma_expression "uVar4 = param_2 - 0x200, 0x3d < uVar4" (assignment_expression "uVar4 = param_2 - 0x200" identifier = (binary_expression "param_2 - 0x200" identifier - number_literal)) , (binary_expression "0x3d < uVar4" number_literal < identifier)) ))) )) (compound_statement "{\n      uVar3 = gettext("Invalid/unrecognized reloc reloc %d.");\n      uVar7 = FUN_0023b810(uVar3,param_2);\n      uVar6 = (uint)((ulonglong)uVar7 >> 0x20);\n      uVar4 = (uint)uVar7;\n    }" { (expression_statement "uVar3 = gettext("Invalid/unrecognized reloc reloc %d.");" (assignment_expression "uVar3 = gettext("Invalid/unrecognized reloc reloc %d.")" identifier = (call_expression "gettext("Invalid/unrecognized reloc reloc %d.")" identifier (argument_list "("Invalid/unrecognized reloc reloc %d.")" ( (string_literal ""Invalid/unrecognized reloc reloc %d."" " string_content ") )))) ;) (expression_statement "uVar7 = FUN_0023b810(uVar3,param_2);" (assignment_expression "uVar7 = FUN_0023b810(uVar3,param_2)" identifier = (call_expression "FUN_0023b810(uVar3,param_2)" identifier (argument_list "(uVar3,param_2)" ( identifier , identifier )))) ;) (expression_statement "uVar6 = (uint)((ulonglong)uVar7 >> 0x20);" (assignment_expression "uVar6 = (uint)((ulonglong)uVar7 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)uVar7 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)uVar7 >> 0x20)" ( (binary_expression "(ulonglong)uVar7 >> 0x20" (cast_expression "(ulonglong)uVar7" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar4 = (uint)uVar7;" (assignment_expression "uVar4 = (uint)uVar7" identifier = (cast_expression "(uint)uVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) (if_statement "if ((param_2 & 0x200) == 0) {\n      if ((param_2 & 0x100) == 0) goto LAB_001e05ed;\n      param_2 = param_2 - 0x100;\n    }\n    else {\n      param_2 = param_2 - 0x180;\n    }" if (parenthesized_expression "((param_2 & 0x200) == 0)" ( (binary_expression "(param_2 & 0x200) == 0" (parenthesized_expression "(param_2 & 0x200)" ( (binary_expression "param_2 & 0x200" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if ((param_2 & 0x100) == 0) goto LAB_001e05ed;\n      param_2 = param_2 - 0x100;\n    }" { (if_statement "if ((param_2 & 0x100) == 0) goto LAB_001e05ed;" if (parenthesized_expression "((param_2 & 0x100) == 0)" ( (binary_expression "(param_2 & 0x100) == 0" (parenthesized_expression "(param_2 & 0x100)" ( (binary_expression "param_2 & 0x100" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001e05ed;" goto statement_identifier ;)) (expression_statement "param_2 = param_2 - 0x100;" (assignment_expression "param_2 = param_2 - 0x100" identifier = (binary_expression "param_2 - 0x100" identifier - number_literal)) ;) }) (else_clause "else {\n      param_2 = param_2 - 0x180;\n    }" else (compound_statement "{\n      param_2 = param_2 - 0x180;\n    }" { (expression_statement "param_2 = param_2 - 0x180;" (assignment_expression "param_2 = param_2 - 0x180" identifier = (binary_expression "param_2 - 0x180" identifier - number_literal)) ;) }))) (if_statement "if (300 < param_2) {\nLAB_001e05ed:\n                    \n      FUN_002446e0("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6);\n    }" if (parenthesized_expression "(300 < param_2)" ( (binary_expression "300 < param_2" number_literal < identifier) )) (compound_statement "{\nLAB_001e05ed:\n                    \n      FUN_002446e0("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6);\n    }" { (labeled_statement "LAB_001e05ed:\n                    \n      FUN_002446e0("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6);" statement_identifier : (expression_statement "FUN_002446e0("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6);" (call_expression "FUN_002446e0("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6)" identifier (argument_list "("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6)" ( (string_literal ""../../gold/aarch64-reloc-property.h"" " string_content ") , number_literal , (string_literal ""code_to_array_index"" " string_content ") , identifier ))) ;)) })) })) (expression_statement "iVar1 = *(int *)(iVar1 + param_2 * 4);" (assignment_expression "iVar1 = *(int *)(iVar1 + param_2 * 4)" identifier = (pointer_expression "*(int *)(iVar1 + param_2 * 4)" * (cast_expression "(int *)(iVar1 + param_2 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + param_2 * 4)" ( (binary_expression "iVar1 + param_2 * 4" identifier + (binary_expression "param_2 * 4" identifier * number_literal)) ))))) ;) (if_statement "if (iVar1 == 0) {\n                    \n    FUN_002446e0("../../gold/aarch64.cc",0x17b9,"reloc_needs_plt_for_ifunc",uVar4);\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    FUN_002446e0("../../gold/aarch64.cc",0x17b9,"reloc_needs_plt_for_ifunc",uVar4);\n  }" { (expression_statement "FUN_002446e0("../../gold/aarch64.cc",0x17b9,"reloc_needs_plt_for_ifunc",uVar4);" (call_expression "FUN_002446e0("../../gold/aarch64.cc",0x17b9,"reloc_needs_plt_for_ifunc",uVar4)" identifier (argument_list "("../../gold/aarch64.cc",0x17b9,"reloc_needs_plt_for_ifunc",uVar4)" ( (string_literal ""../../gold/aarch64.cc"" " string_content ") , number_literal , (string_literal ""reloc_needs_plt_for_ifunc"" " string_content ") , identifier ))) ;) })) (if_statement "if ((*(uint *)(iVar1 + 0x34) & 4) == 0) {\n    return *(uint *)(iVar1 + 0x34) != 0;\n  }" if (parenthesized_expression "((*(uint *)(iVar1 + 0x34) & 4) == 0)" ( (binary_expression "(*(uint *)(iVar1 + 0x34) & 4) == 0" (parenthesized_expression "(*(uint *)(iVar1 + 0x34) & 4)" ( (binary_expression "*(uint *)(iVar1 + 0x34) & 4" (pointer_expression "*(uint *)(iVar1 + 0x34)" * (cast_expression "(uint *)(iVar1 + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x34)" ( (binary_expression "iVar1 + 0x34" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    return *(uint *)(iVar1 + 0x34) != 0;\n  }" { (return_statement "return *(uint *)(iVar1 + 0x34) != 0;" return (binary_expression "*(uint *)(iVar1 + 0x34) != 0" (pointer_expression "*(uint *)(iVar1 + 0x34)" * (cast_expression "(uint *)(iVar1 + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x34)" ( (binary_expression "iVar1 + 0x34" identifier + number_literal) )))) != number_literal) ;) })) (expression_statement "uVar3 = *(undefined4 *)(iVar1 + 4);" (assignment_expression "uVar3 = *(undefined4 *)(iVar1 + 4)" identifier = (pointer_expression "*(undefined4 *)(iVar1 + 4)" * (cast_expression "(undefined4 *)(iVar1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(undefined4 *)(param_1 + 4);" (assignment_expression "uVar2 = *(undefined4 *)(param_1 + 4)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = gettext("%s: unsupported TLS reloc %s for IFUNC symbol");" (assignment_expression "uVar5 = gettext("%s: unsupported TLS reloc %s for IFUNC symbol")" identifier = (call_expression "gettext("%s: unsupported TLS reloc %s for IFUNC symbol")" identifier (argument_list "("%s: unsupported TLS reloc %s for IFUNC symbol")" ( (string_literal ""%s: unsupported TLS reloc %s for IFUNC symbol"" " string_content ") )))) ;) (expression_statement "FUN_0023b810(uVar5,uVar2,uVar3);" (call_expression "FUN_0023b810(uVar5,uVar2,uVar3)" identifier (argument_list "(uVar5,uVar2,uVar3)" ( identifier , identifier , identifier ))) ;) (return_statement "return false;" return false ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT - LIT)) , (binary_expression LIT < IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;)) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (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 ") , 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 { (return_statement return (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (return_statement return BOOL ;) })))
(function_definition "bool __regparm3 FUN_001e0520(uint param_1,uint param_2)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  uint uVar6;\n  undefined8 uVar7;\n  \n  iVar1 = DAT_005eb634;\n  uVar4 = param_1;\n  if (param_2 != 0) {\n    uVar4 = param_2 - 0x101;\n    uVar6 = param_2;\n    if ((0x38 < uVar4) && (uVar4 = param_2 - 0x200, 0x3d < uVar4)) {\n      uVar3 = gettext("Invalid/unrecognized reloc reloc %d.");\n      uVar7 = FUN_0023b810(uVar3,param_2);\n      uVar6 = (uint)((ulonglong)uVar7 >> 0x20);\n      uVar4 = (uint)uVar7;\n    }\n    if ((param_2 & 0x200) == 0) {\n      if ((param_2 & 0x100) == 0) goto LAB_001e05ed;\n      param_2 = param_2 - 0x100;\n    }\n    else {\n      param_2 = param_2 - 0x180;\n    }\n    if (300 < param_2) {\nLAB_001e05ed:\n                    \n      FUN_002446e0("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6);\n    }\n  }\n  iVar1 = *(int *)(iVar1 + param_2 * 4);\n  if (iVar1 == 0) {\n                    \n    FUN_002446e0("../../gold/aarch64.cc",0x17b9,"reloc_needs_plt_for_ifunc",uVar4);\n  }\n  if ((*(uint *)(iVar1 + 0x34) & 4) == 0) {\n    return *(uint *)(iVar1 + 0x34) != 0;\n  }\n  uVar3 = *(undefined4 *)(iVar1 + 4);\n  uVar2 = *(undefined4 *)(param_1 + 4);\n  uVar5 = gettext("%s: unsupported TLS reloc %s for IFUNC symbol");\n  FUN_0023b810(uVar5,uVar2,uVar3);\n  return false;\n}" (primitive_type "bool") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_001e0520(uint param_1,uint param_2)" (identifier "FUN_001e0520") (parameter_list "(uint param_1,uint param_2)" (( "(") (parameter_declaration "uint param_1" (type_identifier "uint") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) () ")"))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  uint uVar6;\n  undefined8 uVar7;\n  \n  iVar1 = DAT_005eb634;\n  uVar4 = param_1;\n  if (param_2 != 0) {\n    uVar4 = param_2 - 0x101;\n    uVar6 = param_2;\n    if ((0x38 < uVar4) && (uVar4 = param_2 - 0x200, 0x3d < uVar4)) {\n      uVar3 = gettext("Invalid/unrecognized reloc reloc %d.");\n      uVar7 = FUN_0023b810(uVar3,param_2);\n      uVar6 = (uint)((ulonglong)uVar7 >> 0x20);\n      uVar4 = (uint)uVar7;\n    }\n    if ((param_2 & 0x200) == 0) {\n      if ((param_2 & 0x100) == 0) goto LAB_001e05ed;\n      param_2 = param_2 - 0x100;\n    }\n    else {\n      param_2 = param_2 - 0x180;\n    }\n    if (300 < param_2) {\nLAB_001e05ed:\n                    \n      FUN_002446e0("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6);\n    }\n  }\n  iVar1 = *(int *)(iVar1 + param_2 * 4);\n  if (iVar1 == 0) {\n                    \n    FUN_002446e0("../../gold/aarch64.cc",0x17b9,"reloc_needs_plt_for_ifunc",uVar4);\n  }\n  if ((*(uint *)(iVar1 + 0x34) & 4) == 0) {\n    return *(uint *)(iVar1 + 0x34) != 0;\n  }\n  uVar3 = *(undefined4 *)(iVar1 + 4);\n  uVar2 = *(undefined4 *)(param_1 + 4);\n  uVar5 = gettext("%s: unsupported TLS reloc %s for IFUNC symbol");\n  FUN_0023b810(uVar5,uVar2,uVar3);\n  return false;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "undefined8 uVar7;" (type_identifier "undefined8") (identifier "uVar7") (; ";")) (expression_statement "iVar1 = DAT_005eb634;" (assignment_expression "iVar1 = DAT_005eb634" (identifier "iVar1") (= "=") (identifier "DAT_005eb634")) (; ";")) (expression_statement "uVar4 = param_1;" (assignment_expression "uVar4 = param_1" (identifier "uVar4") (= "=") (identifier "param_1")) (; ";")) (if_statement "if (param_2 != 0) {\n    uVar4 = param_2 - 0x101;\n    uVar6 = param_2;\n    if ((0x38 < uVar4) && (uVar4 = param_2 - 0x200, 0x3d < uVar4)) {\n      uVar3 = gettext("Invalid/unrecognized reloc reloc %d.");\n      uVar7 = FUN_0023b810(uVar3,param_2);\n      uVar6 = (uint)((ulonglong)uVar7 >> 0x20);\n      uVar4 = (uint)uVar7;\n    }\n    if ((param_2 & 0x200) == 0) {\n      if ((param_2 & 0x100) == 0) goto LAB_001e05ed;\n      param_2 = param_2 - 0x100;\n    }\n    else {\n      param_2 = param_2 - 0x180;\n    }\n    if (300 < param_2) {\nLAB_001e05ed:\n                    \n      FUN_002446e0("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6);\n    }\n  }" (if "if") (parenthesized_expression "(param_2 != 0)" (( "(") (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar4 = param_2 - 0x101;\n    uVar6 = param_2;\n    if ((0x38 < uVar4) && (uVar4 = param_2 - 0x200, 0x3d < uVar4)) {\n      uVar3 = gettext("Invalid/unrecognized reloc reloc %d.");\n      uVar7 = FUN_0023b810(uVar3,param_2);\n      uVar6 = (uint)((ulonglong)uVar7 >> 0x20);\n      uVar4 = (uint)uVar7;\n    }\n    if ((param_2 & 0x200) == 0) {\n      if ((param_2 & 0x100) == 0) goto LAB_001e05ed;\n      param_2 = param_2 - 0x100;\n    }\n    else {\n      param_2 = param_2 - 0x180;\n    }\n    if (300 < param_2) {\nLAB_001e05ed:\n                    \n      FUN_002446e0("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6);\n    }\n  }" ({ "{") (expression_statement "uVar4 = param_2 - 0x101;" (assignment_expression "uVar4 = param_2 - 0x101" (identifier "uVar4") (= "=") (binary_expression "param_2 - 0x101" (identifier "param_2") (- "-") (number_literal "0x101"))) (; ";")) (expression_statement "uVar6 = param_2;" (assignment_expression "uVar6 = param_2" (identifier "uVar6") (= "=") (identifier "param_2")) (; ";")) (if_statement "if ((0x38 < uVar4) && (uVar4 = param_2 - 0x200, 0x3d < uVar4)) {\n      uVar3 = gettext("Invalid/unrecognized reloc reloc %d.");\n      uVar7 = FUN_0023b810(uVar3,param_2);\n      uVar6 = (uint)((ulonglong)uVar7 >> 0x20);\n      uVar4 = (uint)uVar7;\n    }" (if "if") (parenthesized_expression "((0x38 < uVar4) && (uVar4 = param_2 - 0x200, 0x3d < uVar4))" (( "(") (binary_expression "(0x38 < uVar4) && (uVar4 = param_2 - 0x200, 0x3d < uVar4)" (parenthesized_expression "(0x38 < uVar4)" (( "(") (binary_expression "0x38 < uVar4" (number_literal "0x38") (< "<") (identifier "uVar4")) () ")")) (&& "&&") (parenthesized_expression "(uVar4 = param_2 - 0x200, 0x3d < uVar4)" (( "(") (comma_expression "uVar4 = param_2 - 0x200, 0x3d < uVar4" (assignment_expression "uVar4 = param_2 - 0x200" (identifier "uVar4") (= "=") (binary_expression "param_2 - 0x200" (identifier "param_2") (- "-") (number_literal "0x200"))) (, ",") (binary_expression "0x3d < uVar4" (number_literal "0x3d") (< "<") (identifier "uVar4"))) () ")"))) () ")")) (compound_statement "{\n      uVar3 = gettext("Invalid/unrecognized reloc reloc %d.");\n      uVar7 = FUN_0023b810(uVar3,param_2);\n      uVar6 = (uint)((ulonglong)uVar7 >> 0x20);\n      uVar4 = (uint)uVar7;\n    }" ({ "{") (expression_statement "uVar3 = gettext("Invalid/unrecognized reloc reloc %d.");" (assignment_expression "uVar3 = gettext("Invalid/unrecognized reloc reloc %d.")" (identifier "uVar3") (= "=") (call_expression "gettext("Invalid/unrecognized reloc reloc %d.")" (identifier "gettext") (argument_list "("Invalid/unrecognized reloc reloc %d.")" (( "(") (string_literal ""Invalid/unrecognized reloc reloc %d."" (" """) (string_content "Invalid/unrecognized reloc reloc %d.") (" """)) () ")")))) (; ";")) (expression_statement "uVar7 = FUN_0023b810(uVar3,param_2);" (assignment_expression "uVar7 = FUN_0023b810(uVar3,param_2)" (identifier "uVar7") (= "=") (call_expression "FUN_0023b810(uVar3,param_2)" (identifier "FUN_0023b810") (argument_list "(uVar3,param_2)" (( "(") (identifier "uVar3") (, ",") (identifier "param_2") () ")")))) (; ";")) (expression_statement "uVar6 = (uint)((ulonglong)uVar7 >> 0x20);" (assignment_expression "uVar6 = (uint)((ulonglong)uVar7 >> 0x20)" (identifier "uVar6") (= "=") (call_expression "(uint)((ulonglong)uVar7 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)uVar7 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar7 >> 0x20" (cast_expression "(ulonglong)uVar7" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar7")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar4 = (uint)uVar7;" (assignment_expression "uVar4 = (uint)uVar7" (identifier "uVar4") (= "=") (cast_expression "(uint)uVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar7"))) (; ";")) (} "}"))) (if_statement "if ((param_2 & 0x200) == 0) {\n      if ((param_2 & 0x100) == 0) goto LAB_001e05ed;\n      param_2 = param_2 - 0x100;\n    }\n    else {\n      param_2 = param_2 - 0x180;\n    }" (if "if") (parenthesized_expression "((param_2 & 0x200) == 0)" (( "(") (binary_expression "(param_2 & 0x200) == 0" (parenthesized_expression "(param_2 & 0x200)" (( "(") (binary_expression "param_2 & 0x200" (identifier "param_2") (& "&") (number_literal "0x200")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if ((param_2 & 0x100) == 0) goto LAB_001e05ed;\n      param_2 = param_2 - 0x100;\n    }" ({ "{") (if_statement "if ((param_2 & 0x100) == 0) goto LAB_001e05ed;" (if "if") (parenthesized_expression "((param_2 & 0x100) == 0)" (( "(") (binary_expression "(param_2 & 0x100) == 0" (parenthesized_expression "(param_2 & 0x100)" (( "(") (binary_expression "param_2 & 0x100" (identifier "param_2") (& "&") (number_literal "0x100")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001e05ed;" (goto "goto") (statement_identifier "LAB_001e05ed") (; ";"))) (expression_statement "param_2 = param_2 - 0x100;" (assignment_expression "param_2 = param_2 - 0x100" (identifier "param_2") (= "=") (binary_expression "param_2 - 0x100" (identifier "param_2") (- "-") (number_literal "0x100"))) (; ";")) (} "}")) (else_clause "else {\n      param_2 = param_2 - 0x180;\n    }" (else "else") (compound_statement "{\n      param_2 = param_2 - 0x180;\n    }" ({ "{") (expression_statement "param_2 = param_2 - 0x180;" (assignment_expression "param_2 = param_2 - 0x180" (identifier "param_2") (= "=") (binary_expression "param_2 - 0x180" (identifier "param_2") (- "-") (number_literal "0x180"))) (; ";")) (} "}")))) (if_statement "if (300 < param_2) {\nLAB_001e05ed:\n                    \n      FUN_002446e0("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6);\n    }" (if "if") (parenthesized_expression "(300 < param_2)" (( "(") (binary_expression "300 < param_2" (number_literal "300") (< "<") (identifier "param_2")) () ")")) (compound_statement "{\nLAB_001e05ed:\n                    \n      FUN_002446e0("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6);\n    }" ({ "{") (labeled_statement "LAB_001e05ed:\n                    \n      FUN_002446e0("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6);" (statement_identifier "LAB_001e05ed") (: ":") (expression_statement "FUN_002446e0("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6);" (call_expression "FUN_002446e0("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6)" (identifier "FUN_002446e0") (argument_list "("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6)" (( "(") (string_literal ""../../gold/aarch64-reloc-property.h"" (" """) (string_content "../../gold/aarch64-reloc-property.h") (" """)) (, ",") (number_literal "0xeb") (, ",") (string_literal ""code_to_array_index"" (" """) (string_content "code_to_array_index") (" """)) (, ",") (identifier "uVar6") () ")"))) (; ";"))) (} "}"))) (} "}"))) (expression_statement "iVar1 = *(int *)(iVar1 + param_2 * 4);" (assignment_expression "iVar1 = *(int *)(iVar1 + param_2 * 4)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(iVar1 + param_2 * 4)" (* "*") (cast_expression "(int *)(iVar1 + param_2 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + param_2 * 4)" (( "(") (binary_expression "iVar1 + param_2 * 4" (identifier "iVar1") (+ "+") (binary_expression "param_2 * 4" (identifier "param_2") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (iVar1 == 0) {\n                    \n    FUN_002446e0("../../gold/aarch64.cc",0x17b9,"reloc_needs_plt_for_ifunc",uVar4);\n  }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_002446e0("../../gold/aarch64.cc",0x17b9,"reloc_needs_plt_for_ifunc",uVar4);\n  }" ({ "{") (expression_statement "FUN_002446e0("../../gold/aarch64.cc",0x17b9,"reloc_needs_plt_for_ifunc",uVar4);" (call_expression "FUN_002446e0("../../gold/aarch64.cc",0x17b9,"reloc_needs_plt_for_ifunc",uVar4)" (identifier "FUN_002446e0") (argument_list "("../../gold/aarch64.cc",0x17b9,"reloc_needs_plt_for_ifunc",uVar4)" (( "(") (string_literal ""../../gold/aarch64.cc"" (" """) (string_content "../../gold/aarch64.cc") (" """)) (, ",") (number_literal "0x17b9") (, ",") (string_literal ""reloc_needs_plt_for_ifunc"" (" """) (string_content "reloc_needs_plt_for_ifunc") (" """)) (, ",") (identifier "uVar4") () ")"))) (; ";")) (} "}"))) (if_statement "if ((*(uint *)(iVar1 + 0x34) & 4) == 0) {\n    return *(uint *)(iVar1 + 0x34) != 0;\n  }" (if "if") (parenthesized_expression "((*(uint *)(iVar1 + 0x34) & 4) == 0)" (( "(") (binary_expression "(*(uint *)(iVar1 + 0x34) & 4) == 0" (parenthesized_expression "(*(uint *)(iVar1 + 0x34) & 4)" (( "(") (binary_expression "*(uint *)(iVar1 + 0x34) & 4" (pointer_expression "*(uint *)(iVar1 + 0x34)" (* "*") (cast_expression "(uint *)(iVar1 + 0x34)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x34)" (( "(") (binary_expression "iVar1 + 0x34" (identifier "iVar1") (+ "+") (number_literal "0x34")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return *(uint *)(iVar1 + 0x34) != 0;\n  }" ({ "{") (return_statement "return *(uint *)(iVar1 + 0x34) != 0;" (return "return") (binary_expression "*(uint *)(iVar1 + 0x34) != 0" (pointer_expression "*(uint *)(iVar1 + 0x34)" (* "*") (cast_expression "(uint *)(iVar1 + 0x34)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x34)" (( "(") (binary_expression "iVar1 + 0x34" (identifier "iVar1") (+ "+") (number_literal "0x34")) () ")")))) (!= "!=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "uVar3 = *(undefined4 *)(iVar1 + 4);" (assignment_expression "uVar3 = *(undefined4 *)(iVar1 + 4)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined4 *)(iVar1 + 4)" (* "*") (cast_expression "(undefined4 *)(iVar1 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 4)" (( "(") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "uVar2 = *(undefined4 *)(param_1 + 4);" (assignment_expression "uVar2 = *(undefined4 *)(param_1 + 4)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "uVar5 = gettext("%s: unsupported TLS reloc %s for IFUNC symbol");" (assignment_expression "uVar5 = gettext("%s: unsupported TLS reloc %s for IFUNC symbol")" (identifier "uVar5") (= "=") (call_expression "gettext("%s: unsupported TLS reloc %s for IFUNC symbol")" (identifier "gettext") (argument_list "("%s: unsupported TLS reloc %s for IFUNC symbol")" (( "(") (string_literal ""%s: unsupported TLS reloc %s for IFUNC symbol"" (" """) (string_content "%s: unsupported TLS reloc %s for IFUNC symbol") (" """)) () ")")))) (; ";")) (expression_statement "FUN_0023b810(uVar5,uVar2,uVar3);" (call_expression "FUN_0023b810(uVar5,uVar2,uVar3)" (identifier "FUN_0023b810") (argument_list "(uVar5,uVar2,uVar3)" (( "(") (identifier "uVar5") (, ",") (identifier "uVar2") (, ",") (identifier "uVar3") () ")"))) (; ";")) (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* DWARF original prototype: bool reloc_needs_plt_for_ifunc(Scan * this,
   Sized_relobj_file<64,_false> * object, uint r_type) */

bool __thiscall
anon_unknown.dwarf_109b185::Target_aarch64<64,_false>::Scan::reloc_needs_plt_for_ifunc
          (Scan *this,Sized_relobj_file<64,_false> *object,uint r_type)

{
}


(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)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (number_literal) right: (identifier)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content)) (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: (binary_expression left: (identifier) right: (number_literal)))))))) (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)) (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 (return_statement (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))))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (return_statement (false)))))

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

bool __regparm3 MASKED(uint param_1,uint param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  uint uVar4;
  undefined4 uVar5;
  uint uVar6;
  undefined8 uVar7;
  
  iVar1 = DAT_005eb634;
  uVar4 = param_1;
  if (param_2 != 0) {
    uVar4 = param_2 - 0x101;
    uVar6 = param_2;
    if ((0x38 < uVar4) && (uVar4 = param_2 - 0x200, 0x3d < uVar4)) {
      uVar3 = gettext("Invalid/unrecognized reloc reloc %d.");
      uVar7 = FUN_0023b810(uVar3,param_2);
      uVar6 = (uint)((ulonglong)uVar7 >> 0x20);
      uVar4 = (uint)uVar7;
    }
    if ((param_2 & 0x200) == 0) {
      if ((param_2 & 0x100) == 0) goto LAB_001e05ed;
      param_2 = param_2 - 0x100;
    }
    else {
      param_2 = param_2 - 0x180;
    }
    if (300 < param_2) {
LAB_001e05ed:
                    /* WARNING: Subroutine does not return */
      FUN_002446e0("../../gold/aarch64-reloc-property.h",0xeb,"code_to_array_index",uVar6);
    }
  }
  iVar1 = *(int *)(iVar1 + param_2 * 4);
  if (iVar1 == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_002446e0("../../gold/aarch64.cc",0x17b9,"reloc_needs_plt_for_ifunc",uVar4);
  }
  if ((*(uint *)(iVar1 + 0x34) & 4) == 0) {
    return *(uint *)(iVar1 + 0x34) != 0;
  }
  uVar3 = *(undefined4 *)(iVar1 + 4);
  uVar2 = *(undefined4 *)(param_1 + 4);
  uVar5 = gettext("%s: unsupported TLS reloc %s for IFUNC symbol");
  FUN_0023b810(uVar5,uVar2,uVar3);
  return false;
}

