
/* WARNING: Unknown calling convention -- yet parameter storage is locked */

void aarch64_elf_create_output_section_statements(void)

{
  undefined1 *puVar1;
  _func_bfd_boolean_bfd_ptr_bfd_architecture_ulong *p_Var2;
  bfd_architecture bVar3;
  bfd_boolean bVar4;
  char *pcVar5;
  lang_input_statement_type *plVar6;
  bfd *pbVar7;
  ulong uVar8;
  
  pbVar7 = link_info.output_bfd;
  pcVar5 = strstr((link_info.output_bfd)->xvec->name,"aarch64");
  if (pcVar5 == (char *)0x0) {
    pcVar5 = (char *)dcgettext(0,
                               "%F%P: error: cannot change output format whilst linking %s binaries\n"
                               ,5);
    einfo(pcVar5,"AArch64");
    return;
  }
  bfd_elf32_aarch64_set_options
            (pbVar7,&link_info,no_enum_size_warning,no_wchar_size_warning,pic_veneer,
             fix_erratum_835769);
  plVar6 = lang_add_input_file("linker stubs",lang_input_file_is_fake_enum,(char *)0x0);
  stub_file = plVar6;
  pbVar7 = (bfd *)bfd_create("linker stubs",link_info.output_bfd);
  plVar6->the_bfd = pbVar7;
  if (stub_file->the_bfd != (bfd *)0x0) {
    p_Var2 = stub_file->the_bfd->xvec->_bfd_set_arch_mach;
    uVar8 = bfd_get_mach(link_info.output_bfd);
    bVar3 = bfd_get_arch(link_info.output_bfd);
    bVar4 = (*p_Var2)(stub_file->the_bfd,bVar3,uVar8);
    plVar6 = stub_file;
    if (bVar4 != 0) {
      puVar1 = &stub_file->the_bfd->field_0x44;
      *(uint *)puVar1 = *(uint *)puVar1 | 0x20000;
      ldlang_add_file(plVar6);
      return;
    }
  }
  pcVar5 = (char *)dcgettext(0,"%F%P: can not create BFD: %E\n",5);
  einfo(pcVar5);
  return;
}



void FUN_0014d070(void)

{
  uint *puVar1;
  code *pcVar2;
  undefined4 uVar3;
  int iVar4;
  char *pcVar5;
  long lVar6;
  undefined8 uVar7;
  
  lVar6 = DAT_002a66f0;
  pcVar5 = strstr((char *)**(undefined8 **)(DAT_002a66f0 + 8),"aarch64");
  if (pcVar5 == (char *)0x0) {
    uVar7 = dcgettext(0,"%F%P: error: cannot change output format whilst linking %s binaries\n",5);
    FUN_00129410(uVar7,"AArch64");
    return;
  }
  bfd_elf32_aarch64_set_options
            (lVar6,&DAT_002a66a0,DAT_002a60a4,DAT_002a60a0,DAT_002a609c,DAT_002a6098);
  lVar6 = FUN_00119dd0("linker stubs",3,0);
  DAT_002a6088 = lVar6;
  uVar7 = bfd_create("linker stubs",DAT_002a66f0);
  *(undefined8 *)(lVar6 + 0x20) = uVar7;
  if (*(long *)(DAT_002a6088 + 0x20) != 0) {
    pcVar2 = *(code **)(*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290);
    uVar7 = bfd_get_mach(DAT_002a66f0);
    uVar3 = bfd_get_arch(DAT_002a66f0);
    iVar4 = (*pcVar2)(*(undefined8 *)(DAT_002a6088 + 0x20),uVar3,uVar7);
    if (iVar4 != 0) {
      puVar1 = (uint *)(*(long *)(DAT_002a6088 + 0x20) + 0x44);
      *puVar1 = *puVar1 | 0x20000;
      FUN_0011ce70();
      return;
    }
  }
  uVar7 = dcgettext(0,"%F%P: can not create BFD: %E\n",5);
  FUN_00129410(uVar7);
  return;
}


PUSH RBP
LEA RSI,[0x1a1235]
PUSH RBX
SUB RSP,0x8
MOV RBX,qword ptr [0x002a66f0]
MOV RAX,qword ptr [RBX + 0x8]
MOV RDI,qword ptr [RAX]
CALL 0x0010de00
TEST RAX,RAX
JZ 0x0014d198
MOV EAX,dword ptr [0x002a6090]
MOV ECX,dword ptr [0x002a60a0]
MOV RDI,RBX
LEA RSI,[0x2a66a0]
MOV R9D,dword ptr [0x002a6098]
MOV R8D,dword ptr [0x002a609c]
PUSH RAX
MOV EAX,dword ptr [0x002a6094]
MOV EDX,dword ptr [0x002a60a4]
PUSH RAX
CALL 0x0010d030
XOR EDX,EDX
MOV ESI,0x3
LEA RDI,[0x1a09ac]
CALL 0x00119dd0
MOV RSI,qword ptr [0x002a66f0]
LEA RDI,[0x1a09ac]
MOV RBX,RAX
MOV qword ptr [0x002a6088],RAX
CALL 0x0010d680
MOV qword ptr [RBX + 0x20],RAX
MOV RAX,qword ptr [0x002a6088]
POP RDX
POP RCX
MOV RAX,qword ptr [RAX + 0x20]
TEST RAX,RAX
JZ 0x0014d152
MOV RAX,qword ptr [RAX + 0x8]
MOV RDI,qword ptr [0x002a66f0]
MOV RBX,qword ptr [RAX + 0x290]
CALL 0x0010d9d0
MOV RDI,qword ptr [0x002a66f0]
MOV RBP,RAX
CALL 0x0010d8d0
MOV RDX,qword ptr [0x002a6088]
MOV ESI,EAX
MOV RDI,qword ptr [RDX + 0x20]
MOV RDX,RBP
CALL RBX
TEST EAX,EAX
JNZ 0x0014d178
XOR EDI,EDI
MOV EDX,0x5
LEA RSI,[0x1a09b9]
CALL 0x0010d380
ADD RSP,0x8
MOV RDI,RAX
POP RBX
XOR EAX,EAX
POP RBP
JMP 0x00129410
MOV RDI,qword ptr [0x002a6088]
MOV RAX,qword ptr [RDI + 0x20]
OR dword ptr [RAX + 0x44],0x20000
ADD RSP,0x8
POP RBX
POP RBP
JMP 0x0011ce70
LEA RSI,[0x1a0370]
XOR EDI,EDI
MOV EDX,0x5
CALL 0x0010d380
ADD RSP,0x8
LEA RSI,[0x1a09a4]
MOV RDI,RAX
POP RBX
XOR EAX,EAX
POP RBP
JMP 0x00129410
(translation_unit "void FUN_0014d070(void)\n\n{\n  uint *puVar1;\n  code *pcVar2;\n  undefined4 uVar3;\n  int iVar4;\n  char *pcVar5;\n  long lVar6;\n  undefined8 uVar7;\n  \n  lVar6 = DAT_002a66f0;\n  pcVar5 = strstr((char *)**(undefined8 **)(DAT_002a66f0 + 8),"aarch64");\n  if (pcVar5 == (char *)0x0) {\n    uVar7 = dcgettext(0,"%F%P: error: cannot change output format whilst linking %s binaries\n",5);\n    FUN_00129410(uVar7,"AArch64");\n    return;\n  }\n  bfd_elf32_aarch64_set_options\n            (lVar6,&DAT_002a66a0,DAT_002a60a4,DAT_002a60a0,DAT_002a609c,DAT_002a6098);\n  lVar6 = FUN_00119dd0("linker stubs",3,0);\n  DAT_002a6088 = lVar6;\n  uVar7 = bfd_create("linker stubs",DAT_002a66f0);\n  *(undefined8 *)(lVar6 + 0x20) = uVar7;\n  if (*(long *)(DAT_002a6088 + 0x20) != 0) {\n    pcVar2 = *(code **)(*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290);\n    uVar7 = bfd_get_mach(DAT_002a66f0);\n    uVar3 = bfd_get_arch(DAT_002a66f0);\n    iVar4 = (*pcVar2)(*(undefined8 *)(DAT_002a6088 + 0x20),uVar3,uVar7);\n    if (iVar4 != 0) {\n      puVar1 = (uint *)(*(long *)(DAT_002a6088 + 0x20) + 0x44);\n      *puVar1 = *puVar1 | 0x20000;\n      FUN_0011ce70();\n      return;\n    }\n  }\n  uVar7 = dcgettext(0,"%F%P: can not create BFD: %E\n",5);\n  FUN_00129410(uVar7);\n  return;\n}\n\n" (function_definition "void FUN_0014d070(void)\n\n{\n  uint *puVar1;\n  code *pcVar2;\n  undefined4 uVar3;\n  int iVar4;\n  char *pcVar5;\n  long lVar6;\n  undefined8 uVar7;\n  \n  lVar6 = DAT_002a66f0;\n  pcVar5 = strstr((char *)**(undefined8 **)(DAT_002a66f0 + 8),"aarch64");\n  if (pcVar5 == (char *)0x0) {\n    uVar7 = dcgettext(0,"%F%P: error: cannot change output format whilst linking %s binaries\n",5);\n    FUN_00129410(uVar7,"AArch64");\n    return;\n  }\n  bfd_elf32_aarch64_set_options\n            (lVar6,&DAT_002a66a0,DAT_002a60a4,DAT_002a60a0,DAT_002a609c,DAT_002a6098);\n  lVar6 = FUN_00119dd0("linker stubs",3,0);\n  DAT_002a6088 = lVar6;\n  uVar7 = bfd_create("linker stubs",DAT_002a66f0);\n  *(undefined8 *)(lVar6 + 0x20) = uVar7;\n  if (*(long *)(DAT_002a6088 + 0x20) != 0) {\n    pcVar2 = *(code **)(*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290);\n    uVar7 = bfd_get_mach(DAT_002a66f0);\n    uVar3 = bfd_get_arch(DAT_002a66f0);\n    iVar4 = (*pcVar2)(*(undefined8 *)(DAT_002a6088 + 0x20),uVar3,uVar7);\n    if (iVar4 != 0) {\n      puVar1 = (uint *)(*(long *)(DAT_002a6088 + 0x20) + 0x44);\n      *puVar1 = *puVar1 | 0x20000;\n      FUN_0011ce70();\n      return;\n    }\n  }\n  uVar7 = dcgettext(0,"%F%P: can not create BFD: %E\n",5);\n  FUN_00129410(uVar7);\n  return;\n}" primitive_type (function_declarator "FUN_0014d070(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  uint *puVar1;\n  code *pcVar2;\n  undefined4 uVar3;\n  int iVar4;\n  char *pcVar5;\n  long lVar6;\n  undefined8 uVar7;\n  \n  lVar6 = DAT_002a66f0;\n  pcVar5 = strstr((char *)**(undefined8 **)(DAT_002a66f0 + 8),"aarch64");\n  if (pcVar5 == (char *)0x0) {\n    uVar7 = dcgettext(0,"%F%P: error: cannot change output format whilst linking %s binaries\n",5);\n    FUN_00129410(uVar7,"AArch64");\n    return;\n  }\n  bfd_elf32_aarch64_set_options\n            (lVar6,&DAT_002a66a0,DAT_002a60a4,DAT_002a60a0,DAT_002a609c,DAT_002a6098);\n  lVar6 = FUN_00119dd0("linker stubs",3,0);\n  DAT_002a6088 = lVar6;\n  uVar7 = bfd_create("linker stubs",DAT_002a66f0);\n  *(undefined8 *)(lVar6 + 0x20) = uVar7;\n  if (*(long *)(DAT_002a6088 + 0x20) != 0) {\n    pcVar2 = *(code **)(*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290);\n    uVar7 = bfd_get_mach(DAT_002a66f0);\n    uVar3 = bfd_get_arch(DAT_002a66f0);\n    iVar4 = (*pcVar2)(*(undefined8 *)(DAT_002a6088 + 0x20),uVar3,uVar7);\n    if (iVar4 != 0) {\n      puVar1 = (uint *)(*(long *)(DAT_002a6088 + 0x20) + 0x44);\n      *puVar1 = *puVar1 | 0x20000;\n      FUN_0011ce70();\n      return;\n    }\n  }\n  uVar7 = dcgettext(0,"%F%P: can not create BFD: %E\n",5);\n  FUN_00129410(uVar7);\n  return;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "code *pcVar2;" type_identifier (pointer_declarator "*pcVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (expression_statement "lVar6 = DAT_002a66f0;" (assignment_expression "lVar6 = DAT_002a66f0" identifier = identifier) ;) (expression_statement "pcVar5 = strstr((char *)**(undefined8 **)(DAT_002a66f0 + 8),"aarch64");" (assignment_expression "pcVar5 = strstr((char *)**(undefined8 **)(DAT_002a66f0 + 8),"aarch64")" identifier = (call_expression "strstr((char *)**(undefined8 **)(DAT_002a66f0 + 8),"aarch64")" identifier (argument_list "((char *)**(undefined8 **)(DAT_002a66f0 + 8),"aarch64")" ( (cast_expression "(char *)**(undefined8 **)(DAT_002a66f0 + 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined8 **)(DAT_002a66f0 + 8)" * (pointer_expression "*(undefined8 **)(DAT_002a66f0 + 8)" * (cast_expression "(undefined8 **)(DAT_002a66f0 + 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(DAT_002a66f0 + 8)" ( (binary_expression "DAT_002a66f0 + 8" identifier + number_literal) )))))) , (string_literal ""aarch64"" " string_content ") )))) ;) (if_statement "if (pcVar5 == (char *)0x0) {\n    uVar7 = dcgettext(0,"%F%P: error: cannot change output format whilst linking %s binaries\n",5);\n    FUN_00129410(uVar7,"AArch64");\n    return;\n  }" if (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar7 = dcgettext(0,"%F%P: error: cannot change output format whilst linking %s binaries\n",5);\n    FUN_00129410(uVar7,"AArch64");\n    return;\n  }" { (expression_statement "uVar7 = dcgettext(0,"%F%P: error: cannot change output format whilst linking %s binaries\n",5);" (assignment_expression "uVar7 = dcgettext(0,"%F%P: error: cannot change output format whilst linking %s binaries\n",5)" identifier = (call_expression "dcgettext(0,"%F%P: error: cannot change output format whilst linking %s binaries\n",5)" identifier (argument_list "(0,"%F%P: error: cannot change output format whilst linking %s binaries\n",5)" ( number_literal , (string_literal ""%F%P: error: cannot change output format whilst linking %s binaries\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00129410(uVar7,"AArch64");" (call_expression "FUN_00129410(uVar7,"AArch64")" identifier (argument_list "(uVar7,"AArch64")" ( identifier , (string_literal ""AArch64"" " string_content ") ))) ;) (return_statement "return;" return ;) })) (expression_statement "bfd_elf32_aarch64_set_options\n            (lVar6,&DAT_002a66a0,DAT_002a60a4,DAT_002a60a0,DAT_002a609c,DAT_002a6098);" (call_expression "bfd_elf32_aarch64_set_options\n            (lVar6,&DAT_002a66a0,DAT_002a60a4,DAT_002a60a0,DAT_002a609c,DAT_002a6098)" identifier (argument_list "(lVar6,&DAT_002a66a0,DAT_002a60a4,DAT_002a60a0,DAT_002a609c,DAT_002a6098)" ( identifier , (pointer_expression "&DAT_002a66a0" & identifier) , identifier , identifier , identifier , identifier ))) ;) (expression_statement "lVar6 = FUN_00119dd0("linker stubs",3,0);" (assignment_expression "lVar6 = FUN_00119dd0("linker stubs",3,0)" identifier = (call_expression "FUN_00119dd0("linker stubs",3,0)" identifier (argument_list "("linker stubs",3,0)" ( (string_literal ""linker stubs"" " string_content ") , number_literal , number_literal )))) ;) (expression_statement "DAT_002a6088 = lVar6;" (assignment_expression "DAT_002a6088 = lVar6" identifier = identifier) ;) (expression_statement "uVar7 = bfd_create("linker stubs",DAT_002a66f0);" (assignment_expression "uVar7 = bfd_create("linker stubs",DAT_002a66f0)" identifier = (call_expression "bfd_create("linker stubs",DAT_002a66f0)" identifier (argument_list "("linker stubs",DAT_002a66f0)" ( (string_literal ""linker stubs"" " string_content ") , identifier )))) ;) (expression_statement "*(undefined8 *)(lVar6 + 0x20) = uVar7;" (assignment_expression "*(undefined8 *)(lVar6 + 0x20) = uVar7" (pointer_expression "*(undefined8 *)(lVar6 + 0x20)" * (cast_expression "(undefined8 *)(lVar6 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x20)" ( (binary_expression "lVar6 + 0x20" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(long *)(DAT_002a6088 + 0x20) != 0) {\n    pcVar2 = *(code **)(*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290);\n    uVar7 = bfd_get_mach(DAT_002a66f0);\n    uVar3 = bfd_get_arch(DAT_002a66f0);\n    iVar4 = (*pcVar2)(*(undefined8 *)(DAT_002a6088 + 0x20),uVar3,uVar7);\n    if (iVar4 != 0) {\n      puVar1 = (uint *)(*(long *)(DAT_002a6088 + 0x20) + 0x44);\n      *puVar1 = *puVar1 | 0x20000;\n      FUN_0011ce70();\n      return;\n    }\n  }" if (parenthesized_expression "(*(long *)(DAT_002a6088 + 0x20) != 0)" ( (binary_expression "*(long *)(DAT_002a6088 + 0x20) != 0" (pointer_expression "*(long *)(DAT_002a6088 + 0x20)" * (cast_expression "(long *)(DAT_002a6088 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002a6088 + 0x20)" ( (binary_expression "DAT_002a6088 + 0x20" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    pcVar2 = *(code **)(*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290);\n    uVar7 = bfd_get_mach(DAT_002a66f0);\n    uVar3 = bfd_get_arch(DAT_002a66f0);\n    iVar4 = (*pcVar2)(*(undefined8 *)(DAT_002a6088 + 0x20),uVar3,uVar7);\n    if (iVar4 != 0) {\n      puVar1 = (uint *)(*(long *)(DAT_002a6088 + 0x20) + 0x44);\n      *puVar1 = *puVar1 | 0x20000;\n      FUN_0011ce70();\n      return;\n    }\n  }" { (expression_statement "pcVar2 = *(code **)(*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290);" (assignment_expression "pcVar2 = *(code **)(*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290)" identifier = (pointer_expression "*(code **)(*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290)" * (cast_expression "(code **)(*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290)" ( (binary_expression "*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290" (pointer_expression "*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8)" * (cast_expression "(long *)(*(long *)(DAT_002a6088 + 0x20) + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(DAT_002a6088 + 0x20) + 8)" ( (binary_expression "*(long *)(DAT_002a6088 + 0x20) + 8" (pointer_expression "*(long *)(DAT_002a6088 + 0x20)" * (cast_expression "(long *)(DAT_002a6088 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002a6088 + 0x20)" ( (binary_expression "DAT_002a6088 + 0x20" identifier + number_literal) )))) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar7 = bfd_get_mach(DAT_002a66f0);" (assignment_expression "uVar7 = bfd_get_mach(DAT_002a66f0)" identifier = (call_expression "bfd_get_mach(DAT_002a66f0)" identifier (argument_list "(DAT_002a66f0)" ( identifier )))) ;) (expression_statement "uVar3 = bfd_get_arch(DAT_002a66f0);" (assignment_expression "uVar3 = bfd_get_arch(DAT_002a66f0)" identifier = (call_expression "bfd_get_arch(DAT_002a66f0)" identifier (argument_list "(DAT_002a66f0)" ( identifier )))) ;) (expression_statement "iVar4 = (*pcVar2)(*(undefined8 *)(DAT_002a6088 + 0x20),uVar3,uVar7);" (assignment_expression "iVar4 = (*pcVar2)(*(undefined8 *)(DAT_002a6088 + 0x20),uVar3,uVar7)" identifier = (call_expression "(*pcVar2)(*(undefined8 *)(DAT_002a6088 + 0x20),uVar3,uVar7)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(*(undefined8 *)(DAT_002a6088 + 0x20),uVar3,uVar7)" ( (pointer_expression "*(undefined8 *)(DAT_002a6088 + 0x20)" * (cast_expression "(undefined8 *)(DAT_002a6088 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002a6088 + 0x20)" ( (binary_expression "DAT_002a6088 + 0x20" identifier + number_literal) )))) , identifier , identifier )))) ;) (if_statement "if (iVar4 != 0) {\n      puVar1 = (uint *)(*(long *)(DAT_002a6088 + 0x20) + 0x44);\n      *puVar1 = *puVar1 | 0x20000;\n      FUN_0011ce70();\n      return;\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar1 = (uint *)(*(long *)(DAT_002a6088 + 0x20) + 0x44);\n      *puVar1 = *puVar1 | 0x20000;\n      FUN_0011ce70();\n      return;\n    }" { (expression_statement "puVar1 = (uint *)(*(long *)(DAT_002a6088 + 0x20) + 0x44);" (assignment_expression "puVar1 = (uint *)(*(long *)(DAT_002a6088 + 0x20) + 0x44)" identifier = (cast_expression "(uint *)(*(long *)(DAT_002a6088 + 0x20) + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(DAT_002a6088 + 0x20) + 0x44)" ( (binary_expression "*(long *)(DAT_002a6088 + 0x20) + 0x44" (pointer_expression "*(long *)(DAT_002a6088 + 0x20)" * (cast_expression "(long *)(DAT_002a6088 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002a6088 + 0x20)" ( (binary_expression "DAT_002a6088 + 0x20" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "*puVar1 = *puVar1 | 0x20000;" (assignment_expression "*puVar1 = *puVar1 | 0x20000" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 | 0x20000" (pointer_expression "*puVar1" * identifier) | number_literal)) ;) (expression_statement "FUN_0011ce70();" (call_expression "FUN_0011ce70()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) })) (expression_statement "uVar7 = dcgettext(0,"%F%P: can not create BFD: %E\n",5);" (assignment_expression "uVar7 = dcgettext(0,"%F%P: can not create BFD: %E\n",5)" identifier = (call_expression "dcgettext(0,"%F%P: can not create BFD: %E\n",5)" identifier (argument_list "(0,"%F%P: can not create BFD: %E\n",5)" ( number_literal , (string_literal ""%F%P: can not create BFD: %E\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00129410(uVar7);" (call_expression "FUN_00129410(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n\nvoid aarch64_elf_create_output_section_statements(void)\n\n{\n  undefined1 *puVar1;\n  _func_bfd_boolean_bfd_ptr_bfd_architecture_ulong *p_Var2;\n  bfd_architecture bVar3;\n  bfd_boolean bVar4;\n  char *pcVar5;\n  lang_input_statement_type *plVar6;\n  bfd *pbVar7;\n  ulong uVar8;\n  \n  pbVar7 = link_info.output_bfd;\n  pcVar5 = strstr((link_info.output_bfd)->xvec->name,"aarch64");\n  if (pcVar5 == (char *)0x0) {\n    pcVar5 = (char *)dcgettext(0,\n                               "%F%P: error: cannot change output format whilst linking %s binaries\n"\n                               ,5);\n    einfo(pcVar5,"AArch64");\n    return;\n  }\n  bfd_elf32_aarch64_set_options\n            (pbVar7,&link_info,no_enum_size_warning,no_wchar_size_warning,pic_veneer,\n             fix_erratum_835769);\n  plVar6 = lang_add_input_file("linker stubs",lang_input_file_is_fake_enum,(char *)0x0);\n  stub_file = plVar6;\n  pbVar7 = (bfd *)bfd_create("linker stubs",link_info.output_bfd);\n  plVar6->the_bfd = pbVar7;\n  if (stub_file->the_bfd != (bfd *)0x0) {\n    p_Var2 = stub_file->the_bfd->xvec->_bfd_set_arch_mach;\n    uVar8 = bfd_get_mach(link_info.output_bfd);\n    bVar3 = bfd_get_arch(link_info.output_bfd);\n    bVar4 = (*p_Var2)(stub_file->the_bfd,bVar3,uVar8);\n    plVar6 = stub_file;\n    if (bVar4 != 0) {\n      puVar1 = &stub_file->the_bfd->field_0x44;\n      *(uint *)puVar1 = *(uint *)puVar1 | 0x20000;\n      ldlang_add_file(plVar6);\n      return;\n    }\n  }\n  pcVar5 = (char *)dcgettext(0,"%F%P: can not create BFD: %E\n",5);\n  einfo(pcVar5);\n  return;\n}\n\n" comment (function_definition "void aarch64_elf_create_output_section_statements(void)\n\n{\n  undefined1 *puVar1;\n  _func_bfd_boolean_bfd_ptr_bfd_architecture_ulong *p_Var2;\n  bfd_architecture bVar3;\n  bfd_boolean bVar4;\n  char *pcVar5;\n  lang_input_statement_type *plVar6;\n  bfd *pbVar7;\n  ulong uVar8;\n  \n  pbVar7 = link_info.output_bfd;\n  pcVar5 = strstr((link_info.output_bfd)->xvec->name,"aarch64");\n  if (pcVar5 == (char *)0x0) {\n    pcVar5 = (char *)dcgettext(0,\n                               "%F%P: error: cannot change output format whilst linking %s binaries\n"\n                               ,5);\n    einfo(pcVar5,"AArch64");\n    return;\n  }\n  bfd_elf32_aarch64_set_options\n            (pbVar7,&link_info,no_enum_size_warning,no_wchar_size_warning,pic_veneer,\n             fix_erratum_835769);\n  plVar6 = lang_add_input_file("linker stubs",lang_input_file_is_fake_enum,(char *)0x0);\n  stub_file = plVar6;\n  pbVar7 = (bfd *)bfd_create("linker stubs",link_info.output_bfd);\n  plVar6->the_bfd = pbVar7;\n  if (stub_file->the_bfd != (bfd *)0x0) {\n    p_Var2 = stub_file->the_bfd->xvec->_bfd_set_arch_mach;\n    uVar8 = bfd_get_mach(link_info.output_bfd);\n    bVar3 = bfd_get_arch(link_info.output_bfd);\n    bVar4 = (*p_Var2)(stub_file->the_bfd,bVar3,uVar8);\n    plVar6 = stub_file;\n    if (bVar4 != 0) {\n      puVar1 = &stub_file->the_bfd->field_0x44;\n      *(uint *)puVar1 = *(uint *)puVar1 | 0x20000;\n      ldlang_add_file(plVar6);\n      return;\n    }\n  }\n  pcVar5 = (char *)dcgettext(0,"%F%P: can not create BFD: %E\n",5);\n  einfo(pcVar5);\n  return;\n}" primitive_type (function_declarator "aarch64_elf_create_output_section_statements(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined1 *puVar1;\n  _func_bfd_boolean_bfd_ptr_bfd_architecture_ulong *p_Var2;\n  bfd_architecture bVar3;\n  bfd_boolean bVar4;\n  char *pcVar5;\n  lang_input_statement_type *plVar6;\n  bfd *pbVar7;\n  ulong uVar8;\n  \n  pbVar7 = link_info.output_bfd;\n  pcVar5 = strstr((link_info.output_bfd)->xvec->name,"aarch64");\n  if (pcVar5 == (char *)0x0) {\n    pcVar5 = (char *)dcgettext(0,\n                               "%F%P: error: cannot change output format whilst linking %s binaries\n"\n                               ,5);\n    einfo(pcVar5,"AArch64");\n    return;\n  }\n  bfd_elf32_aarch64_set_options\n            (pbVar7,&link_info,no_enum_size_warning,no_wchar_size_warning,pic_veneer,\n             fix_erratum_835769);\n  plVar6 = lang_add_input_file("linker stubs",lang_input_file_is_fake_enum,(char *)0x0);\n  stub_file = plVar6;\n  pbVar7 = (bfd *)bfd_create("linker stubs",link_info.output_bfd);\n  plVar6->the_bfd = pbVar7;\n  if (stub_file->the_bfd != (bfd *)0x0) {\n    p_Var2 = stub_file->the_bfd->xvec->_bfd_set_arch_mach;\n    uVar8 = bfd_get_mach(link_info.output_bfd);\n    bVar3 = bfd_get_arch(link_info.output_bfd);\n    bVar4 = (*p_Var2)(stub_file->the_bfd,bVar3,uVar8);\n    plVar6 = stub_file;\n    if (bVar4 != 0) {\n      puVar1 = &stub_file->the_bfd->field_0x44;\n      *(uint *)puVar1 = *(uint *)puVar1 | 0x20000;\n      ldlang_add_file(plVar6);\n      return;\n    }\n  }\n  pcVar5 = (char *)dcgettext(0,"%F%P: can not create BFD: %E\n",5);\n  einfo(pcVar5);\n  return;\n}" { (declaration "undefined1 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "_func_bfd_boolean_bfd_ptr_bfd_architecture_ulong *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (declaration "bfd_architecture bVar3;" type_identifier identifier ;) (declaration "bfd_boolean bVar4;" type_identifier identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "lang_input_statement_type *plVar6;" type_identifier (pointer_declarator "*plVar6" * identifier) ;) (declaration "bfd *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "ulong uVar8;" type_identifier identifier ;) (expression_statement "pbVar7 = link_info.output_bfd;" (assignment_expression "pbVar7 = link_info.output_bfd" identifier = (field_expression "link_info.output_bfd" identifier . field_identifier)) ;) (expression_statement "pcVar5 = strstr((link_info.output_bfd)->xvec->name,"aarch64");" (assignment_expression "pcVar5 = strstr((link_info.output_bfd)->xvec->name,"aarch64")" identifier = (call_expression "strstr((link_info.output_bfd)->xvec->name,"aarch64")" identifier (argument_list "((link_info.output_bfd)->xvec->name,"aarch64")" ( (field_expression "(link_info.output_bfd)->xvec->name" (field_expression "(link_info.output_bfd)->xvec" (parenthesized_expression "(link_info.output_bfd)" ( (field_expression "link_info.output_bfd" identifier . field_identifier) )) -> field_identifier) -> field_identifier) , (string_literal ""aarch64"" " string_content ") )))) ;) (if_statement "if (pcVar5 == (char *)0x0) {\n    pcVar5 = (char *)dcgettext(0,\n                               "%F%P: error: cannot change output format whilst linking %s binaries\n"\n                               ,5);\n    einfo(pcVar5,"AArch64");\n    return;\n  }" if (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar5 = (char *)dcgettext(0,\n                               "%F%P: error: cannot change output format whilst linking %s binaries\n"\n                               ,5);\n    einfo(pcVar5,"AArch64");\n    return;\n  }" { (expression_statement "pcVar5 = (char *)dcgettext(0,\n                               "%F%P: error: cannot change output format whilst linking %s binaries\n"\n                               ,5);" (assignment_expression "pcVar5 = (char *)dcgettext(0,\n                               "%F%P: error: cannot change output format whilst linking %s binaries\n"\n                               ,5)" identifier = (cast_expression "(char *)dcgettext(0,\n                               "%F%P: error: cannot change output format whilst linking %s binaries\n"\n                               ,5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,\n                               "%F%P: error: cannot change output format whilst linking %s binaries\n"\n                               ,5)" identifier (argument_list "(0,\n                               "%F%P: error: cannot change output format whilst linking %s binaries\n"\n                               ,5)" ( number_literal , (string_literal ""%F%P: error: cannot change output format whilst linking %s binaries\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "einfo(pcVar5,"AArch64");" (call_expression "einfo(pcVar5,"AArch64")" identifier (argument_list "(pcVar5,"AArch64")" ( identifier , (string_literal ""AArch64"" " string_content ") ))) ;) (return_statement "return;" return ;) })) (expression_statement "bfd_elf32_aarch64_set_options\n            (pbVar7,&link_info,no_enum_size_warning,no_wchar_size_warning,pic_veneer,\n             fix_erratum_835769);" (call_expression "bfd_elf32_aarch64_set_options\n            (pbVar7,&link_info,no_enum_size_warning,no_wchar_size_warning,pic_veneer,\n             fix_erratum_835769)" identifier (argument_list "(pbVar7,&link_info,no_enum_size_warning,no_wchar_size_warning,pic_veneer,\n             fix_erratum_835769)" ( identifier , (pointer_expression "&link_info" & identifier) , identifier , identifier , identifier , identifier ))) ;) (expression_statement "plVar6 = lang_add_input_file("linker stubs",lang_input_file_is_fake_enum,(char *)0x0);" (assignment_expression "plVar6 = lang_add_input_file("linker stubs",lang_input_file_is_fake_enum,(char *)0x0)" identifier = (call_expression "lang_add_input_file("linker stubs",lang_input_file_is_fake_enum,(char *)0x0)" identifier (argument_list "("linker stubs",lang_input_file_is_fake_enum,(char *)0x0)" ( (string_literal ""linker stubs"" " string_content ") , identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (expression_statement "stub_file = plVar6;" (assignment_expression "stub_file = plVar6" identifier = identifier) ;) (expression_statement "pbVar7 = (bfd *)bfd_create("linker stubs",link_info.output_bfd);" (assignment_expression "pbVar7 = (bfd *)bfd_create("linker stubs",link_info.output_bfd)" identifier = (cast_expression "(bfd *)bfd_create("linker stubs",link_info.output_bfd)" ( (type_descriptor "bfd *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_create("linker stubs",link_info.output_bfd)" identifier (argument_list "("linker stubs",link_info.output_bfd)" ( (string_literal ""linker stubs"" " string_content ") , (field_expression "link_info.output_bfd" identifier . field_identifier) ))))) ;) (expression_statement "plVar6->the_bfd = pbVar7;" (assignment_expression "plVar6->the_bfd = pbVar7" (field_expression "plVar6->the_bfd" identifier -> field_identifier) = identifier) ;) (if_statement "if (stub_file->the_bfd != (bfd *)0x0) {\n    p_Var2 = stub_file->the_bfd->xvec->_bfd_set_arch_mach;\n    uVar8 = bfd_get_mach(link_info.output_bfd);\n    bVar3 = bfd_get_arch(link_info.output_bfd);\n    bVar4 = (*p_Var2)(stub_file->the_bfd,bVar3,uVar8);\n    plVar6 = stub_file;\n    if (bVar4 != 0) {\n      puVar1 = &stub_file->the_bfd->field_0x44;\n      *(uint *)puVar1 = *(uint *)puVar1 | 0x20000;\n      ldlang_add_file(plVar6);\n      return;\n    }\n  }" if (parenthesized_expression "(stub_file->the_bfd != (bfd *)0x0)" ( (binary_expression "stub_file->the_bfd != (bfd *)0x0" (field_expression "stub_file->the_bfd" identifier -> field_identifier) != (cast_expression "(bfd *)0x0" ( (type_descriptor "bfd *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    p_Var2 = stub_file->the_bfd->xvec->_bfd_set_arch_mach;\n    uVar8 = bfd_get_mach(link_info.output_bfd);\n    bVar3 = bfd_get_arch(link_info.output_bfd);\n    bVar4 = (*p_Var2)(stub_file->the_bfd,bVar3,uVar8);\n    plVar6 = stub_file;\n    if (bVar4 != 0) {\n      puVar1 = &stub_file->the_bfd->field_0x44;\n      *(uint *)puVar1 = *(uint *)puVar1 | 0x20000;\n      ldlang_add_file(plVar6);\n      return;\n    }\n  }" { (expression_statement "p_Var2 = stub_file->the_bfd->xvec->_bfd_set_arch_mach;" (assignment_expression "p_Var2 = stub_file->the_bfd->xvec->_bfd_set_arch_mach" identifier = (field_expression "stub_file->the_bfd->xvec->_bfd_set_arch_mach" (field_expression "stub_file->the_bfd->xvec" (field_expression "stub_file->the_bfd" identifier -> field_identifier) -> field_identifier) -> field_identifier)) ;) (expression_statement "uVar8 = bfd_get_mach(link_info.output_bfd);" (assignment_expression "uVar8 = bfd_get_mach(link_info.output_bfd)" identifier = (call_expression "bfd_get_mach(link_info.output_bfd)" identifier (argument_list "(link_info.output_bfd)" ( (field_expression "link_info.output_bfd" identifier . field_identifier) )))) ;) (expression_statement "bVar3 = bfd_get_arch(link_info.output_bfd);" (assignment_expression "bVar3 = bfd_get_arch(link_info.output_bfd)" identifier = (call_expression "bfd_get_arch(link_info.output_bfd)" identifier (argument_list "(link_info.output_bfd)" ( (field_expression "link_info.output_bfd" identifier . field_identifier) )))) ;) (expression_statement "bVar4 = (*p_Var2)(stub_file->the_bfd,bVar3,uVar8);" (assignment_expression "bVar4 = (*p_Var2)(stub_file->the_bfd,bVar3,uVar8)" identifier = (call_expression "(*p_Var2)(stub_file->the_bfd,bVar3,uVar8)" (parenthesized_expression "(*p_Var2)" ( (pointer_expression "*p_Var2" * identifier) )) (argument_list "(stub_file->the_bfd,bVar3,uVar8)" ( (field_expression "stub_file->the_bfd" identifier -> field_identifier) , identifier , identifier )))) ;) (expression_statement "plVar6 = stub_file;" (assignment_expression "plVar6 = stub_file" identifier = identifier) ;) (if_statement "if (bVar4 != 0) {\n      puVar1 = &stub_file->the_bfd->field_0x44;\n      *(uint *)puVar1 = *(uint *)puVar1 | 0x20000;\n      ldlang_add_file(plVar6);\n      return;\n    }" if (parenthesized_expression "(bVar4 != 0)" ( (binary_expression "bVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar1 = &stub_file->the_bfd->field_0x44;\n      *(uint *)puVar1 = *(uint *)puVar1 | 0x20000;\n      ldlang_add_file(plVar6);\n      return;\n    }" { (expression_statement "puVar1 = &stub_file->the_bfd->field_0x44;" (assignment_expression "puVar1 = &stub_file->the_bfd->field_0x44" identifier = (pointer_expression "&stub_file->the_bfd->field_0x44" & (field_expression "stub_file->the_bfd->field_0x44" (field_expression "stub_file->the_bfd" identifier -> field_identifier) -> field_identifier))) ;) (expression_statement "*(uint *)puVar1 = *(uint *)puVar1 | 0x20000;" (assignment_expression "*(uint *)puVar1 = *(uint *)puVar1 | 0x20000" (pointer_expression "*(uint *)puVar1" * (cast_expression "(uint *)puVar1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "*(uint *)puVar1 | 0x20000" (pointer_expression "*(uint *)puVar1" * (cast_expression "(uint *)puVar1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) | number_literal)) ;) (expression_statement "ldlang_add_file(plVar6);" (call_expression "ldlang_add_file(plVar6)" identifier (argument_list "(plVar6)" ( identifier ))) ;) (return_statement "return;" return ;) })) })) (expression_statement "pcVar5 = (char *)dcgettext(0,"%F%P: can not create BFD: %E\n",5);" (assignment_expression "pcVar5 = (char *)dcgettext(0,"%F%P: can not create BFD: %E\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"%F%P: can not create BFD: %E\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%F%P: can not create BFD: %E\n",5)" identifier (argument_list "(0,"%F%P: can not create BFD: %E\n",5)" ( number_literal , (string_literal ""%F%P: can not create BFD: %E\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "einfo(pcVar5);" (call_expression "einfo(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0014d070(void)\n\n{\n  uint *puVar1;\n  code *pcVar2;\n  undefined4 uVar3;\n  int iVar4;\n  char *pcVar5;\n  long lVar6;\n  undefined8 uVar7;\n  \n  lVar6 = DAT_002a66f0;\n  pcVar5 = strstr((char *)**(undefined8 **)(DAT_002a66f0 + 8),"aarch64");\n  if (pcVar5 == (char *)0x0) {\n    uVar7 = dcgettext(0,"%F%P: error: cannot change output format whilst linking %s binaries\n",5);\n    FUN_00129410(uVar7,"AArch64");\n    return;\n  }\n  bfd_elf32_aarch64_set_options\n            (lVar6,&DAT_002a66a0,DAT_002a60a4,DAT_002a60a0,DAT_002a609c,DAT_002a6098);\n  lVar6 = FUN_00119dd0("linker stubs",3,0);\n  DAT_002a6088 = lVar6;\n  uVar7 = bfd_create("linker stubs",DAT_002a66f0);\n  *(undefined8 *)(lVar6 + 0x20) = uVar7;\n  if (*(long *)(DAT_002a6088 + 0x20) != 0) {\n    pcVar2 = *(code **)(*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290);\n    uVar7 = bfd_get_mach(DAT_002a66f0);\n    uVar3 = bfd_get_arch(DAT_002a66f0);\n    iVar4 = (*pcVar2)(*(undefined8 *)(DAT_002a6088 + 0x20),uVar3,uVar7);\n    if (iVar4 != 0) {\n      puVar1 = (uint *)(*(long *)(DAT_002a6088 + 0x20) + 0x44);\n      *puVar1 = *puVar1 | 0x20000;\n      FUN_0011ce70();\n      return;\n    }\n  }\n  uVar7 = dcgettext(0,"%F%P: can not create BFD: %E\n",5);\n  FUN_00129410(uVar7);\n  return;\n}\n\n" (function_definition "void FUN_0014d070(void)\n\n{\n  uint *puVar1;\n  code *pcVar2;\n  undefined4 uVar3;\n  int iVar4;\n  char *pcVar5;\n  long lVar6;\n  undefined8 uVar7;\n  \n  lVar6 = DAT_002a66f0;\n  pcVar5 = strstr((char *)**(undefined8 **)(DAT_002a66f0 + 8),"aarch64");\n  if (pcVar5 == (char *)0x0) {\n    uVar7 = dcgettext(0,"%F%P: error: cannot change output format whilst linking %s binaries\n",5);\n    FUN_00129410(uVar7,"AArch64");\n    return;\n  }\n  bfd_elf32_aarch64_set_options\n            (lVar6,&DAT_002a66a0,DAT_002a60a4,DAT_002a60a0,DAT_002a609c,DAT_002a6098);\n  lVar6 = FUN_00119dd0("linker stubs",3,0);\n  DAT_002a6088 = lVar6;\n  uVar7 = bfd_create("linker stubs",DAT_002a66f0);\n  *(undefined8 *)(lVar6 + 0x20) = uVar7;\n  if (*(long *)(DAT_002a6088 + 0x20) != 0) {\n    pcVar2 = *(code **)(*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290);\n    uVar7 = bfd_get_mach(DAT_002a66f0);\n    uVar3 = bfd_get_arch(DAT_002a66f0);\n    iVar4 = (*pcVar2)(*(undefined8 *)(DAT_002a6088 + 0x20),uVar3,uVar7);\n    if (iVar4 != 0) {\n      puVar1 = (uint *)(*(long *)(DAT_002a6088 + 0x20) + 0x44);\n      *puVar1 = *puVar1 | 0x20000;\n      FUN_0011ce70();\n      return;\n    }\n  }\n  uVar7 = dcgettext(0,"%F%P: can not create BFD: %E\n",5);\n  FUN_00129410(uVar7);\n  return;\n}" primitive_type (function_declarator "FUN_0014d070(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  uint *puVar1;\n  code *pcVar2;\n  undefined4 uVar3;\n  int iVar4;\n  char *pcVar5;\n  long lVar6;\n  undefined8 uVar7;\n  \n  lVar6 = DAT_002a66f0;\n  pcVar5 = strstr((char *)**(undefined8 **)(DAT_002a66f0 + 8),"aarch64");\n  if (pcVar5 == (char *)0x0) {\n    uVar7 = dcgettext(0,"%F%P: error: cannot change output format whilst linking %s binaries\n",5);\n    FUN_00129410(uVar7,"AArch64");\n    return;\n  }\n  bfd_elf32_aarch64_set_options\n            (lVar6,&DAT_002a66a0,DAT_002a60a4,DAT_002a60a0,DAT_002a609c,DAT_002a6098);\n  lVar6 = FUN_00119dd0("linker stubs",3,0);\n  DAT_002a6088 = lVar6;\n  uVar7 = bfd_create("linker stubs",DAT_002a66f0);\n  *(undefined8 *)(lVar6 + 0x20) = uVar7;\n  if (*(long *)(DAT_002a6088 + 0x20) != 0) {\n    pcVar2 = *(code **)(*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290);\n    uVar7 = bfd_get_mach(DAT_002a66f0);\n    uVar3 = bfd_get_arch(DAT_002a66f0);\n    iVar4 = (*pcVar2)(*(undefined8 *)(DAT_002a6088 + 0x20),uVar3,uVar7);\n    if (iVar4 != 0) {\n      puVar1 = (uint *)(*(long *)(DAT_002a6088 + 0x20) + 0x44);\n      *puVar1 = *puVar1 | 0x20000;\n      FUN_0011ce70();\n      return;\n    }\n  }\n  uVar7 = dcgettext(0,"%F%P: can not create BFD: %E\n",5);\n  FUN_00129410(uVar7);\n  return;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "code *pcVar2;" type_identifier (pointer_declarator "*pcVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (expression_statement "lVar6 = DAT_002a66f0;" (assignment_expression "lVar6 = DAT_002a66f0" identifier = identifier) ;) (expression_statement "pcVar5 = strstr((char *)**(undefined8 **)(DAT_002a66f0 + 8),"aarch64");" (assignment_expression "pcVar5 = strstr((char *)**(undefined8 **)(DAT_002a66f0 + 8),"aarch64")" identifier = (call_expression "strstr((char *)**(undefined8 **)(DAT_002a66f0 + 8),"aarch64")" identifier (argument_list "((char *)**(undefined8 **)(DAT_002a66f0 + 8),"aarch64")" ( (cast_expression "(char *)**(undefined8 **)(DAT_002a66f0 + 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined8 **)(DAT_002a66f0 + 8)" * (pointer_expression "*(undefined8 **)(DAT_002a66f0 + 8)" * (cast_expression "(undefined8 **)(DAT_002a66f0 + 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(DAT_002a66f0 + 8)" ( (binary_expression "DAT_002a66f0 + 8" identifier + number_literal) )))))) , (string_literal ""aarch64"" " string_content ") )))) ;) (if_statement "if (pcVar5 == (char *)0x0) {\n    uVar7 = dcgettext(0,"%F%P: error: cannot change output format whilst linking %s binaries\n",5);\n    FUN_00129410(uVar7,"AArch64");\n    return;\n  }" if (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar7 = dcgettext(0,"%F%P: error: cannot change output format whilst linking %s binaries\n",5);\n    FUN_00129410(uVar7,"AArch64");\n    return;\n  }" { (expression_statement "uVar7 = dcgettext(0,"%F%P: error: cannot change output format whilst linking %s binaries\n",5);" (assignment_expression "uVar7 = dcgettext(0,"%F%P: error: cannot change output format whilst linking %s binaries\n",5)" identifier = (call_expression "dcgettext(0,"%F%P: error: cannot change output format whilst linking %s binaries\n",5)" identifier (argument_list "(0,"%F%P: error: cannot change output format whilst linking %s binaries\n",5)" ( number_literal , (string_literal ""%F%P: error: cannot change output format whilst linking %s binaries\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00129410(uVar7,"AArch64");" (call_expression "FUN_00129410(uVar7,"AArch64")" identifier (argument_list "(uVar7,"AArch64")" ( identifier , (string_literal ""AArch64"" " string_content ") ))) ;) (return_statement "return;" return ;) })) (expression_statement "bfd_elf32_aarch64_set_options\n            (lVar6,&DAT_002a66a0,DAT_002a60a4,DAT_002a60a0,DAT_002a609c,DAT_002a6098);" (call_expression "bfd_elf32_aarch64_set_options\n            (lVar6,&DAT_002a66a0,DAT_002a60a4,DAT_002a60a0,DAT_002a609c,DAT_002a6098)" identifier (argument_list "(lVar6,&DAT_002a66a0,DAT_002a60a4,DAT_002a60a0,DAT_002a609c,DAT_002a6098)" ( identifier , (pointer_expression "&DAT_002a66a0" & identifier) , identifier , identifier , identifier , identifier ))) ;) (expression_statement "lVar6 = FUN_00119dd0("linker stubs",3,0);" (assignment_expression "lVar6 = FUN_00119dd0("linker stubs",3,0)" identifier = (call_expression "FUN_00119dd0("linker stubs",3,0)" identifier (argument_list "("linker stubs",3,0)" ( (string_literal ""linker stubs"" " string_content ") , number_literal , number_literal )))) ;) (expression_statement "DAT_002a6088 = lVar6;" (assignment_expression "DAT_002a6088 = lVar6" identifier = identifier) ;) (expression_statement "uVar7 = bfd_create("linker stubs",DAT_002a66f0);" (assignment_expression "uVar7 = bfd_create("linker stubs",DAT_002a66f0)" identifier = (call_expression "bfd_create("linker stubs",DAT_002a66f0)" identifier (argument_list "("linker stubs",DAT_002a66f0)" ( (string_literal ""linker stubs"" " string_content ") , identifier )))) ;) (expression_statement "*(undefined8 *)(lVar6 + 0x20) = uVar7;" (assignment_expression "*(undefined8 *)(lVar6 + 0x20) = uVar7" (pointer_expression "*(undefined8 *)(lVar6 + 0x20)" * (cast_expression "(undefined8 *)(lVar6 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x20)" ( (binary_expression "lVar6 + 0x20" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(long *)(DAT_002a6088 + 0x20) != 0) {\n    pcVar2 = *(code **)(*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290);\n    uVar7 = bfd_get_mach(DAT_002a66f0);\n    uVar3 = bfd_get_arch(DAT_002a66f0);\n    iVar4 = (*pcVar2)(*(undefined8 *)(DAT_002a6088 + 0x20),uVar3,uVar7);\n    if (iVar4 != 0) {\n      puVar1 = (uint *)(*(long *)(DAT_002a6088 + 0x20) + 0x44);\n      *puVar1 = *puVar1 | 0x20000;\n      FUN_0011ce70();\n      return;\n    }\n  }" if (parenthesized_expression "(*(long *)(DAT_002a6088 + 0x20) != 0)" ( (binary_expression "*(long *)(DAT_002a6088 + 0x20) != 0" (pointer_expression "*(long *)(DAT_002a6088 + 0x20)" * (cast_expression "(long *)(DAT_002a6088 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002a6088 + 0x20)" ( (binary_expression "DAT_002a6088 + 0x20" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    pcVar2 = *(code **)(*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290);\n    uVar7 = bfd_get_mach(DAT_002a66f0);\n    uVar3 = bfd_get_arch(DAT_002a66f0);\n    iVar4 = (*pcVar2)(*(undefined8 *)(DAT_002a6088 + 0x20),uVar3,uVar7);\n    if (iVar4 != 0) {\n      puVar1 = (uint *)(*(long *)(DAT_002a6088 + 0x20) + 0x44);\n      *puVar1 = *puVar1 | 0x20000;\n      FUN_0011ce70();\n      return;\n    }\n  }" { (expression_statement "pcVar2 = *(code **)(*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290);" (assignment_expression "pcVar2 = *(code **)(*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290)" identifier = (pointer_expression "*(code **)(*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290)" * (cast_expression "(code **)(*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290)" ( (binary_expression "*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290" (pointer_expression "*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8)" * (cast_expression "(long *)(*(long *)(DAT_002a6088 + 0x20) + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(DAT_002a6088 + 0x20) + 8)" ( (binary_expression "*(long *)(DAT_002a6088 + 0x20) + 8" (pointer_expression "*(long *)(DAT_002a6088 + 0x20)" * (cast_expression "(long *)(DAT_002a6088 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002a6088 + 0x20)" ( (binary_expression "DAT_002a6088 + 0x20" identifier + number_literal) )))) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar7 = bfd_get_mach(DAT_002a66f0);" (assignment_expression "uVar7 = bfd_get_mach(DAT_002a66f0)" identifier = (call_expression "bfd_get_mach(DAT_002a66f0)" identifier (argument_list "(DAT_002a66f0)" ( identifier )))) ;) (expression_statement "uVar3 = bfd_get_arch(DAT_002a66f0);" (assignment_expression "uVar3 = bfd_get_arch(DAT_002a66f0)" identifier = (call_expression "bfd_get_arch(DAT_002a66f0)" identifier (argument_list "(DAT_002a66f0)" ( identifier )))) ;) (expression_statement "iVar4 = (*pcVar2)(*(undefined8 *)(DAT_002a6088 + 0x20),uVar3,uVar7);" (assignment_expression "iVar4 = (*pcVar2)(*(undefined8 *)(DAT_002a6088 + 0x20),uVar3,uVar7)" identifier = (call_expression "(*pcVar2)(*(undefined8 *)(DAT_002a6088 + 0x20),uVar3,uVar7)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(*(undefined8 *)(DAT_002a6088 + 0x20),uVar3,uVar7)" ( (pointer_expression "*(undefined8 *)(DAT_002a6088 + 0x20)" * (cast_expression "(undefined8 *)(DAT_002a6088 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002a6088 + 0x20)" ( (binary_expression "DAT_002a6088 + 0x20" identifier + number_literal) )))) , identifier , identifier )))) ;) (if_statement "if (iVar4 != 0) {\n      puVar1 = (uint *)(*(long *)(DAT_002a6088 + 0x20) + 0x44);\n      *puVar1 = *puVar1 | 0x20000;\n      FUN_0011ce70();\n      return;\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar1 = (uint *)(*(long *)(DAT_002a6088 + 0x20) + 0x44);\n      *puVar1 = *puVar1 | 0x20000;\n      FUN_0011ce70();\n      return;\n    }" { (expression_statement "puVar1 = (uint *)(*(long *)(DAT_002a6088 + 0x20) + 0x44);" (assignment_expression "puVar1 = (uint *)(*(long *)(DAT_002a6088 + 0x20) + 0x44)" identifier = (cast_expression "(uint *)(*(long *)(DAT_002a6088 + 0x20) + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(DAT_002a6088 + 0x20) + 0x44)" ( (binary_expression "*(long *)(DAT_002a6088 + 0x20) + 0x44" (pointer_expression "*(long *)(DAT_002a6088 + 0x20)" * (cast_expression "(long *)(DAT_002a6088 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002a6088 + 0x20)" ( (binary_expression "DAT_002a6088 + 0x20" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "*puVar1 = *puVar1 | 0x20000;" (assignment_expression "*puVar1 = *puVar1 | 0x20000" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 | 0x20000" (pointer_expression "*puVar1" * identifier) | number_literal)) ;) (expression_statement "FUN_0011ce70();" (call_expression "FUN_0011ce70()" identifier (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) })) (expression_statement "uVar7 = dcgettext(0,"%F%P: can not create BFD: %E\n",5);" (assignment_expression "uVar7 = dcgettext(0,"%F%P: can not create BFD: %E\n",5)" identifier = (call_expression "dcgettext(0,"%F%P: can not create BFD: %E\n",5)" identifier (argument_list "(0,"%F%P: can not create BFD: %E\n",5)" ( number_literal , (string_literal ""%F%P: can not create BFD: %E\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00129410(uVar7);" (call_expression "FUN_00129410(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") ))) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (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) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (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) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return ;) })) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_0014d070(void)\n\n{\n  uint *puVar1;\n  code *pcVar2;\n  undefined4 uVar3;\n  int iVar4;\n  char *pcVar5;\n  long lVar6;\n  undefined8 uVar7;\n  \n  lVar6 = DAT_002a66f0;\n  pcVar5 = strstr((char *)**(undefined8 **)(DAT_002a66f0 + 8),"aarch64");\n  if (pcVar5 == (char *)0x0) {\n    uVar7 = dcgettext(0,"%F%P: error: cannot change output format whilst linking %s binaries\n",5);\n    FUN_00129410(uVar7,"AArch64");\n    return;\n  }\n  bfd_elf32_aarch64_set_options\n            (lVar6,&DAT_002a66a0,DAT_002a60a4,DAT_002a60a0,DAT_002a609c,DAT_002a6098);\n  lVar6 = FUN_00119dd0("linker stubs",3,0);\n  DAT_002a6088 = lVar6;\n  uVar7 = bfd_create("linker stubs",DAT_002a66f0);\n  *(undefined8 *)(lVar6 + 0x20) = uVar7;\n  if (*(long *)(DAT_002a6088 + 0x20) != 0) {\n    pcVar2 = *(code **)(*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290);\n    uVar7 = bfd_get_mach(DAT_002a66f0);\n    uVar3 = bfd_get_arch(DAT_002a66f0);\n    iVar4 = (*pcVar2)(*(undefined8 *)(DAT_002a6088 + 0x20),uVar3,uVar7);\n    if (iVar4 != 0) {\n      puVar1 = (uint *)(*(long *)(DAT_002a6088 + 0x20) + 0x44);\n      *puVar1 = *puVar1 | 0x20000;\n      FUN_0011ce70();\n      return;\n    }\n  }\n  uVar7 = dcgettext(0,"%F%P: can not create BFD: %E\n",5);\n  FUN_00129410(uVar7);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0014d070(void)" (identifier "FUN_0014d070") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  uint *puVar1;\n  code *pcVar2;\n  undefined4 uVar3;\n  int iVar4;\n  char *pcVar5;\n  long lVar6;\n  undefined8 uVar7;\n  \n  lVar6 = DAT_002a66f0;\n  pcVar5 = strstr((char *)**(undefined8 **)(DAT_002a66f0 + 8),"aarch64");\n  if (pcVar5 == (char *)0x0) {\n    uVar7 = dcgettext(0,"%F%P: error: cannot change output format whilst linking %s binaries\n",5);\n    FUN_00129410(uVar7,"AArch64");\n    return;\n  }\n  bfd_elf32_aarch64_set_options\n            (lVar6,&DAT_002a66a0,DAT_002a60a4,DAT_002a60a0,DAT_002a609c,DAT_002a6098);\n  lVar6 = FUN_00119dd0("linker stubs",3,0);\n  DAT_002a6088 = lVar6;\n  uVar7 = bfd_create("linker stubs",DAT_002a66f0);\n  *(undefined8 *)(lVar6 + 0x20) = uVar7;\n  if (*(long *)(DAT_002a6088 + 0x20) != 0) {\n    pcVar2 = *(code **)(*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290);\n    uVar7 = bfd_get_mach(DAT_002a66f0);\n    uVar3 = bfd_get_arch(DAT_002a66f0);\n    iVar4 = (*pcVar2)(*(undefined8 *)(DAT_002a6088 + 0x20),uVar3,uVar7);\n    if (iVar4 != 0) {\n      puVar1 = (uint *)(*(long *)(DAT_002a6088 + 0x20) + 0x44);\n      *puVar1 = *puVar1 | 0x20000;\n      FUN_0011ce70();\n      return;\n    }\n  }\n  uVar7 = dcgettext(0,"%F%P: can not create BFD: %E\n",5);\n  FUN_00129410(uVar7);\n  return;\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "code *pcVar2;" (type_identifier "code") (pointer_declarator "*pcVar2" (* "*") (identifier "pcVar2")) (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "undefined8 uVar7;" (type_identifier "undefined8") (identifier "uVar7") (; ";")) (expression_statement "lVar6 = DAT_002a66f0;" (assignment_expression "lVar6 = DAT_002a66f0" (identifier "lVar6") (= "=") (identifier "DAT_002a66f0")) (; ";")) (expression_statement "pcVar5 = strstr((char *)**(undefined8 **)(DAT_002a66f0 + 8),"aarch64");" (assignment_expression "pcVar5 = strstr((char *)**(undefined8 **)(DAT_002a66f0 + 8),"aarch64")" (identifier "pcVar5") (= "=") (call_expression "strstr((char *)**(undefined8 **)(DAT_002a66f0 + 8),"aarch64")" (identifier "strstr") (argument_list "((char *)**(undefined8 **)(DAT_002a66f0 + 8),"aarch64")" (( "(") (cast_expression "(char *)**(undefined8 **)(DAT_002a66f0 + 8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "**(undefined8 **)(DAT_002a66f0 + 8)" (* "*") (pointer_expression "*(undefined8 **)(DAT_002a66f0 + 8)" (* "*") (cast_expression "(undefined8 **)(DAT_002a66f0 + 8)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(DAT_002a66f0 + 8)" (( "(") (binary_expression "DAT_002a66f0 + 8" (identifier "DAT_002a66f0") (+ "+") (number_literal "8")) () ")")))))) (, ",") (string_literal ""aarch64"" (" """) (string_content "aarch64") (" """)) () ")")))) (; ";")) (if_statement "if (pcVar5 == (char *)0x0) {\n    uVar7 = dcgettext(0,"%F%P: error: cannot change output format whilst linking %s binaries\n",5);\n    FUN_00129410(uVar7,"AArch64");\n    return;\n  }" (if "if") (parenthesized_expression "(pcVar5 == (char *)0x0)" (( "(") (binary_expression "pcVar5 == (char *)0x0" (identifier "pcVar5") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    uVar7 = dcgettext(0,"%F%P: error: cannot change output format whilst linking %s binaries\n",5);\n    FUN_00129410(uVar7,"AArch64");\n    return;\n  }" ({ "{") (expression_statement "uVar7 = dcgettext(0,"%F%P: error: cannot change output format whilst linking %s binaries\n",5);" (assignment_expression "uVar7 = dcgettext(0,"%F%P: error: cannot change output format whilst linking %s binaries\n",5)" (identifier "uVar7") (= "=") (call_expression "dcgettext(0,"%F%P: error: cannot change output format whilst linking %s binaries\n",5)" (identifier "dcgettext") (argument_list "(0,"%F%P: error: cannot change output format whilst linking %s binaries\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%F%P: error: cannot change output format whilst linking %s binaries\n"" (" """) (string_content "%F%P: error: cannot change output format whilst linking %s binaries") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00129410(uVar7,"AArch64");" (call_expression "FUN_00129410(uVar7,"AArch64")" (identifier "FUN_00129410") (argument_list "(uVar7,"AArch64")" (( "(") (identifier "uVar7") (, ",") (string_literal ""AArch64"" (" """) (string_content "AArch64") (" """)) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "bfd_elf32_aarch64_set_options\n            (lVar6,&DAT_002a66a0,DAT_002a60a4,DAT_002a60a0,DAT_002a609c,DAT_002a6098);" (call_expression "bfd_elf32_aarch64_set_options\n            (lVar6,&DAT_002a66a0,DAT_002a60a4,DAT_002a60a0,DAT_002a609c,DAT_002a6098)" (identifier "bfd_elf32_aarch64_set_options") (argument_list "(lVar6,&DAT_002a66a0,DAT_002a60a4,DAT_002a60a0,DAT_002a609c,DAT_002a6098)" (( "(") (identifier "lVar6") (, ",") (pointer_expression "&DAT_002a66a0" (& "&") (identifier "DAT_002a66a0")) (, ",") (identifier "DAT_002a60a4") (, ",") (identifier "DAT_002a60a0") (, ",") (identifier "DAT_002a609c") (, ",") (identifier "DAT_002a6098") () ")"))) (; ";")) (expression_statement "lVar6 = FUN_00119dd0("linker stubs",3,0);" (assignment_expression "lVar6 = FUN_00119dd0("linker stubs",3,0)" (identifier "lVar6") (= "=") (call_expression "FUN_00119dd0("linker stubs",3,0)" (identifier "FUN_00119dd0") (argument_list "("linker stubs",3,0)" (( "(") (string_literal ""linker stubs"" (" """) (string_content "linker stubs") (" """)) (, ",") (number_literal "3") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "DAT_002a6088 = lVar6;" (assignment_expression "DAT_002a6088 = lVar6" (identifier "DAT_002a6088") (= "=") (identifier "lVar6")) (; ";")) (expression_statement "uVar7 = bfd_create("linker stubs",DAT_002a66f0);" (assignment_expression "uVar7 = bfd_create("linker stubs",DAT_002a66f0)" (identifier "uVar7") (= "=") (call_expression "bfd_create("linker stubs",DAT_002a66f0)" (identifier "bfd_create") (argument_list "("linker stubs",DAT_002a66f0)" (( "(") (string_literal ""linker stubs"" (" """) (string_content "linker stubs") (" """)) (, ",") (identifier "DAT_002a66f0") () ")")))) (; ";")) (expression_statement "*(undefined8 *)(lVar6 + 0x20) = uVar7;" (assignment_expression "*(undefined8 *)(lVar6 + 0x20) = uVar7" (pointer_expression "*(undefined8 *)(lVar6 + 0x20)" (* "*") (cast_expression "(undefined8 *)(lVar6 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x20)" (( "(") (binary_expression "lVar6 + 0x20" (identifier "lVar6") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (identifier "uVar7")) (; ";")) (if_statement "if (*(long *)(DAT_002a6088 + 0x20) != 0) {\n    pcVar2 = *(code **)(*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290);\n    uVar7 = bfd_get_mach(DAT_002a66f0);\n    uVar3 = bfd_get_arch(DAT_002a66f0);\n    iVar4 = (*pcVar2)(*(undefined8 *)(DAT_002a6088 + 0x20),uVar3,uVar7);\n    if (iVar4 != 0) {\n      puVar1 = (uint *)(*(long *)(DAT_002a6088 + 0x20) + 0x44);\n      *puVar1 = *puVar1 | 0x20000;\n      FUN_0011ce70();\n      return;\n    }\n  }" (if "if") (parenthesized_expression "(*(long *)(DAT_002a6088 + 0x20) != 0)" (( "(") (binary_expression "*(long *)(DAT_002a6088 + 0x20) != 0" (pointer_expression "*(long *)(DAT_002a6088 + 0x20)" (* "*") (cast_expression "(long *)(DAT_002a6088 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002a6088 + 0x20)" (( "(") (binary_expression "DAT_002a6088 + 0x20" (identifier "DAT_002a6088") (+ "+") (number_literal "0x20")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    pcVar2 = *(code **)(*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290);\n    uVar7 = bfd_get_mach(DAT_002a66f0);\n    uVar3 = bfd_get_arch(DAT_002a66f0);\n    iVar4 = (*pcVar2)(*(undefined8 *)(DAT_002a6088 + 0x20),uVar3,uVar7);\n    if (iVar4 != 0) {\n      puVar1 = (uint *)(*(long *)(DAT_002a6088 + 0x20) + 0x44);\n      *puVar1 = *puVar1 | 0x20000;\n      FUN_0011ce70();\n      return;\n    }\n  }" ({ "{") (expression_statement "pcVar2 = *(code **)(*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290);" (assignment_expression "pcVar2 = *(code **)(*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290)" (* "*") (cast_expression "(code **)(*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290)" (( "(") (binary_expression "*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290" (pointer_expression "*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8)" (* "*") (cast_expression "(long *)(*(long *)(DAT_002a6088 + 0x20) + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(DAT_002a6088 + 0x20) + 8)" (( "(") (binary_expression "*(long *)(DAT_002a6088 + 0x20) + 8" (pointer_expression "*(long *)(DAT_002a6088 + 0x20)" (* "*") (cast_expression "(long *)(DAT_002a6088 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002a6088 + 0x20)" (( "(") (binary_expression "DAT_002a6088 + 0x20" (identifier "DAT_002a6088") (+ "+") (number_literal "0x20")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x290")) () ")"))))) (; ";")) (expression_statement "uVar7 = bfd_get_mach(DAT_002a66f0);" (assignment_expression "uVar7 = bfd_get_mach(DAT_002a66f0)" (identifier "uVar7") (= "=") (call_expression "bfd_get_mach(DAT_002a66f0)" (identifier "bfd_get_mach") (argument_list "(DAT_002a66f0)" (( "(") (identifier "DAT_002a66f0") () ")")))) (; ";")) (expression_statement "uVar3 = bfd_get_arch(DAT_002a66f0);" (assignment_expression "uVar3 = bfd_get_arch(DAT_002a66f0)" (identifier "uVar3") (= "=") (call_expression "bfd_get_arch(DAT_002a66f0)" (identifier "bfd_get_arch") (argument_list "(DAT_002a66f0)" (( "(") (identifier "DAT_002a66f0") () ")")))) (; ";")) (expression_statement "iVar4 = (*pcVar2)(*(undefined8 *)(DAT_002a6088 + 0x20),uVar3,uVar7);" (assignment_expression "iVar4 = (*pcVar2)(*(undefined8 *)(DAT_002a6088 + 0x20),uVar3,uVar7)" (identifier "iVar4") (= "=") (call_expression "(*pcVar2)(*(undefined8 *)(DAT_002a6088 + 0x20),uVar3,uVar7)" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "(*(undefined8 *)(DAT_002a6088 + 0x20),uVar3,uVar7)" (( "(") (pointer_expression "*(undefined8 *)(DAT_002a6088 + 0x20)" (* "*") (cast_expression "(undefined8 *)(DAT_002a6088 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002a6088 + 0x20)" (( "(") (binary_expression "DAT_002a6088 + 0x20" (identifier "DAT_002a6088") (+ "+") (number_literal "0x20")) () ")")))) (, ",") (identifier "uVar3") (, ",") (identifier "uVar7") () ")")))) (; ";")) (if_statement "if (iVar4 != 0) {\n      puVar1 = (uint *)(*(long *)(DAT_002a6088 + 0x20) + 0x44);\n      *puVar1 = *puVar1 | 0x20000;\n      FUN_0011ce70();\n      return;\n    }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      puVar1 = (uint *)(*(long *)(DAT_002a6088 + 0x20) + 0x44);\n      *puVar1 = *puVar1 | 0x20000;\n      FUN_0011ce70();\n      return;\n    }" ({ "{") (expression_statement "puVar1 = (uint *)(*(long *)(DAT_002a6088 + 0x20) + 0x44);" (assignment_expression "puVar1 = (uint *)(*(long *)(DAT_002a6088 + 0x20) + 0x44)" (identifier "puVar1") (= "=") (cast_expression "(uint *)(*(long *)(DAT_002a6088 + 0x20) + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(DAT_002a6088 + 0x20) + 0x44)" (( "(") (binary_expression "*(long *)(DAT_002a6088 + 0x20) + 0x44" (pointer_expression "*(long *)(DAT_002a6088 + 0x20)" (* "*") (cast_expression "(long *)(DAT_002a6088 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002a6088 + 0x20)" (( "(") (binary_expression "DAT_002a6088 + 0x20" (identifier "DAT_002a6088") (+ "+") (number_literal "0x20")) () ")")))) (+ "+") (number_literal "0x44")) () ")")))) (; ";")) (expression_statement "*puVar1 = *puVar1 | 0x20000;" (assignment_expression "*puVar1 = *puVar1 | 0x20000" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (binary_expression "*puVar1 | 0x20000" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (| "|") (number_literal "0x20000"))) (; ";")) (expression_statement "FUN_0011ce70();" (call_expression "FUN_0011ce70()" (identifier "FUN_0011ce70") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar7 = dcgettext(0,"%F%P: can not create BFD: %E\n",5);" (assignment_expression "uVar7 = dcgettext(0,"%F%P: can not create BFD: %E\n",5)" (identifier "uVar7") (= "=") (call_expression "dcgettext(0,"%F%P: can not create BFD: %E\n",5)" (identifier "dcgettext") (argument_list "(0,"%F%P: can not create BFD: %E\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%F%P: can not create BFD: %E\n"" (" """) (string_content "%F%P: can not create BFD: %E") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00129410(uVar7);" (call_expression "FUN_00129410(uVar7)" (identifier "FUN_00129410") (argument_list "(uVar7)" (( "(") (identifier "uVar7") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Unknown calling convention -- yet parameter storage is locked */

void function_1(void)

{
  type_1 *puVar1;
  type_2 *p_Var2;
  type_3 bVar3;
  type_4 var_10;
  char *var_2;
  type_5 *plVar6;
  type_6 *pbVar7;
  type_7 uVar8;
  
  pbVar7 = link_info.output_bfd;
  var_2 = var_1((link_info.output_bfd)->xvec->name,"aarch64");
  if (var_2 == (char *)0x0) {
    var_2 = (char *)var_3(0,
                               "%F%P: error: cannot change output format whilst linking %s binaries\n"
                               ,5);
    var_4(var_2,"AArch64");
    return;
  }
  var_5
            (pbVar7,&link_info,no_enum_size_warning,no_wchar_size_warning,pic_veneer,
             fix_erratum_835769);
  plVar6 = var_6("linker stubs",lang_input_file_is_fake_enum,(char *)0x0);
  stub_file = plVar6;
  pbVar7 = (type_6 *)var_7("linker stubs",link_info.output_bfd);
  plVar6->the_bfd = pbVar7;
  if (stub_file->the_bfd != (type_6 *)0x0) {
    p_Var2 = stub_file->the_bfd->xvec->_bfd_set_arch_mach;
    uVar8 = var_8(link_info.output_bfd);
    bVar3 = var_9(link_info.output_bfd);
    var_10 = (*p_Var2)(stub_file->the_bfd,bVar3,uVar8);
    plVar6 = stub_file;
    if (var_10 != 0) {
      puVar1 = &stub_file->the_bfd->field_0x44;
      *(type_8 *)puVar1 = *(type_8 *)puVar1 | 0x20000;
      var_11(plVar6);
      return;
    }
  }
  var_2 = (char *)var_3(0,"%F%P: can not create BFD: %E\n",5);
  var_4(var_2);
  return;
}


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

void MASKED(void)

{
  uint *puVar1;
  code *pcVar2;
  undefined4 uVar3;
  int iVar4;
  char *pcVar5;
  long lVar6;
  undefined8 uVar7;
  
  lVar6 = DAT_002a66f0;
  pcVar5 = strstr((char *)**(undefined8 **)(DAT_002a66f0 + 8),"aarch64");
  if (pcVar5 == (char *)0x0) {
    uVar7 = dcgettext(0,"%F%P: error: cannot change output format whilst linking %s binaries\n",5);
    FUN_00129410(uVar7,"AArch64");
    return;
  }
  bfd_elf32_aarch64_set_options
            (lVar6,&DAT_002a66a0,DAT_002a60a4,DAT_002a60a0,DAT_002a609c,DAT_002a6098);
  lVar6 = FUN_00119dd0("linker stubs",3,0);
  DAT_002a6088 = lVar6;
  uVar7 = bfd_create("linker stubs",DAT_002a66f0);
  *(undefined8 *)(lVar6 + 0x20) = uVar7;
  if (*(long *)(DAT_002a6088 + 0x20) != 0) {
    pcVar2 = *(code **)(*(long *)(*(long *)(DAT_002a6088 + 0x20) + 8) + 0x290);
    uVar7 = bfd_get_mach(DAT_002a66f0);
    uVar3 = bfd_get_arch(DAT_002a66f0);
    iVar4 = (*pcVar2)(*(undefined8 *)(DAT_002a6088 + 0x20),uVar3,uVar7);
    if (iVar4 != 0) {
      puVar1 = (uint *)(*(long *)(DAT_002a6088 + 0x20) + 0x44);
      *puVar1 = *puVar1 | 0x20000;
      FUN_0011ce70();
      return;
    }
  }
  uVar7 = dcgettext(0,"%F%P: can not create BFD: %E\n",5);
  FUN_00129410(uVar7);
  return;
}

