
/* DWARF original prototype: bfd_boolean gldelf64ppc_try_needed(dt_needed * needed, int force,
   dt_needed * needed) */

bfd_boolean gldelf64ppc_try_needed(dt_needed *needed,int force,dt_needed *needed_1)

{
  int iVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  ulong uVar4;
  char *pcVar5;
  long lVar6;
  undefined4 in_register_00000034;
  byte *pbVar7;
  undefined8 uVar8;
  byte *pbVar9;
  bool bVar10;
  bool bVar11;
  byte bVar12;
  bfd_link_needed_list *needs;
  
  uVar8 = CONCAT44(in_register_00000034,force);
  bVar12 = 0;
  puVar2 = (undefined8 *)bfd_openr(uVar8,(link_info.output_bfd)->xvec->name);
  if (puVar2 == (undefined8 *)0x0) {
    if (verbose != 0) {
      pcVar5 = (char *)dcgettext(0,"attempt to open %s failed\n",5);
      info_msg(pcVar5,uVar8);
      return 0;
    }
    return 0;
  }
  *(uint *)((long)puVar2 + 0x44) = *(uint *)((long)puVar2 + 0x44) | 0x100000;
  iVar1 = bfd_check_format(puVar2,1);
  if (iVar1 == 0) {
    bfd_close(puVar2);
    return 0;
  }
  if (((*(byte *)((long)puVar2 + 0x45) & 8) == 0) ||
     ((bfd_target *)puVar2[1] != (link_info.output_bfd)->xvec)) {
    bfd_close(puVar2);
    return 0;
  }
  if ((int)needed_1 == 0) {
    iVar1 = bfd_elf_get_bfd_needed_list(puVar2,&needs);
    if (iVar1 == 0) {
      pcVar5 = (char *)dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);
      einfo(pcVar5,puVar2);
    }
    if (needs != (bfd_link_needed_list *)0x0) {
      global_vercheck_needed = needs;
      global_vercheck_failed = 0;
      real_func = gldelf64ppc_vercheck;
      lang_for_each_input_file(ppc_for_each_input_file_wrapper);
      if (global_vercheck_failed == 0) {
        for (; bVar11 = needs == (bfd_link_needed_list *)0x0, !bVar11; needs = needs->next) {
          bVar10 = false;
          lVar6 = 7;
          pbVar7 = (byte *)needs->name;
          pbVar9 = (byte *)"libc.so";
          do {
            if (lVar6 == 0) break;
            lVar6 = lVar6 + -1;
            bVar10 = *pbVar7 < *pbVar9;
            bVar11 = *pbVar7 == *pbVar9;
            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;
            pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;
          } while (bVar11);
          if ((!bVar10 && !bVar11) == bVar10) goto LAB_00148998;
        }
      }
      bfd_close(puVar2);
      return 0;
    }
  }
LAB_00148998:
  iVar1 = bfd_stat(puVar2,&global_stat);
  if (iVar1 != 0) {
    pcVar5 = (char *)dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5);
    einfo(pcVar5,puVar2);
  }
  uVar3 = lbasename(*puVar2);
  if (verbose != 0) {
    pcVar5 = (char *)dcgettext(0,"found %s at %s\n",5);
    info_msg(pcVar5,uVar3,uVar8);
  }
  global_found = (lang_input_statement_type *)0x0;
  real_func = gldelf64ppc_stat_needed;
  lang_for_each_input_file(ppc_for_each_input_file_wrapper);
  if (global_found != (lang_input_statement_type *)0x0) {
    return 1;
  }
  bfd_elf_set_dt_needed_name(puVar2,uVar3);
  if (needed->by != (bfd *)0x0) {
    uVar4 = bfd_elf_get_dyn_lib_class();
    uVar8 = 0xe;
    if ((uVar4 & 4) != 0) goto LAB_00148aef;
  }
  uVar8 = 2;
LAB_00148aef:
  bfd_elf_set_dyn_lib_class(puVar2,uVar8);
  iVar1 = (**(code **)(puVar2[1] + 0x2c0))(puVar2,&link_info);
  if (iVar1 == 0) {
    pcVar5 = (char *)dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5);
    einfo(pcVar5,puVar2);
  }
  return 1;
}



/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined4 FUN_00148880(long *param_1,undefined8 param_2,int param_3)

{
  int iVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  ulong uVar5;
  long lVar6;
  byte *pbVar7;
  byte *pbVar8;
  bool bVar9;
  bool bVar10;
  byte bVar11;
  long *local_30;
  
  bVar11 = 0;
  puVar2 = (undefined8 *)bfd_openr(param_2,**(undefined8 **)(DAT_002a6810 + 8));
  if (puVar2 == (undefined8 *)0x0) {
    if (DAT_002a69d8 != 0) {
      uVar3 = dcgettext(0,"attempt to open %s failed\n",5);
      FUN_00128320(uVar3,param_2);
      return 0;
    }
    return 0;
  }
  *(uint *)((long)puVar2 + 0x44) = *(uint *)((long)puVar2 + 0x44) | 0x100000;
  iVar1 = bfd_check_format(puVar2,1);
  if (iVar1 == 0) {
    bfd_close(puVar2);
    return 0;
  }
  if (((*(byte *)((long)puVar2 + 0x45) & 8) == 0) || (puVar2[1] != *(long *)(DAT_002a6810 + 8))) {
    bfd_close(puVar2);
    return 0;
  }
  if (param_3 == 0) {
    iVar1 = bfd_elf_get_bfd_needed_list(puVar2,&local_30);
    if (iVar1 == 0) {
      uVar3 = dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);
      FUN_001283c0(uVar3,puVar2);
    }
    if (local_30 != (long *)0x0) {
      DAT_002a6370 = local_30;
      DAT_002a6368 = 0;
      _DAT_002a6418 = FUN_00149970;
      FUN_0011bdc0(FUN_00144b50);
      if (DAT_002a6368 == 0) {
        for (; bVar10 = local_30 == (long *)0x0, !bVar10; local_30 = (long *)*local_30) {
          bVar9 = false;
          lVar6 = 7;
          pbVar7 = (byte *)local_30[2];
          pbVar8 = (byte *)"libc.so";
          do {
            if (lVar6 == 0) break;
            lVar6 = lVar6 + -1;
            bVar9 = *pbVar7 < *pbVar8;
            bVar10 = *pbVar7 == *pbVar8;
            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;
            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;
          } while (bVar10);
          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;
        }
      }
      bfd_close(puVar2);
      return 0;
    }
  }
LAB_00148998:
  iVar1 = bfd_stat(puVar2,&DAT_002a6380);
  if (iVar1 != 0) {
    uVar3 = dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5);
    FUN_001283c0(uVar3,puVar2);
  }
  uVar3 = lbasename(*puVar2);
  if (DAT_002a69d8 != 0) {
    uVar4 = dcgettext(0,"found %s at %s\n",5);
    FUN_00128320(uVar4,uVar3,param_2);
  }
  DAT_002a6378 = 0;
  _DAT_002a6418 = FUN_001470e0;
  FUN_0011bdc0(FUN_00144b50);
  if (DAT_002a6378 != 0) {
    return 1;
  }
  bfd_elf_set_dt_needed_name(puVar2,uVar3);
  if (*param_1 != 0) {
    uVar5 = bfd_elf_get_dyn_lib_class();
    uVar3 = 0xe;
    if ((uVar5 & 4) != 0) goto LAB_00148aef;
  }
  uVar3 = 2;
LAB_00148aef:
  bfd_elf_set_dyn_lib_class(puVar2,uVar3);
  iVar1 = (**(code **)(puVar2[1] + 0x2c0))(puVar2,&DAT_002a67c0);
  if (iVar1 == 0) {
    uVar3 = dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5);
    FUN_001283c0(uVar3,puVar2);
  }
  return 1;
}


PUSH R14
MOV R14D,EDX
PUSH R13
MOV R13,RDI
PUSH R12
MOV R12,RSI
PUSH RBP
MOV RDI,R12
PUSH RBX
SUB RSP,0x10
MOV RAX,qword ptr [0x002a6810]
MOV RAX,qword ptr [RAX + 0x8]
MOV RSI,qword ptr [RAX]
CALL 0x0010c300
TEST RAX,RAX
JZ 0x00148a30
OR dword ptr [RAX + 0x44],0x100000
MOV ESI,0x1
MOV RDI,RAX
MOV RBX,RAX
CALL 0x0010cc20
MOV EBP,EAX
TEST EAX,EAX
JZ 0x00148b40
TEST byte ptr [RBX + 0x45],0x8
JZ 0x00148a10
MOV RAX,qword ptr [0x002a6810]
MOV RAX,qword ptr [RAX + 0x8]
CMP qword ptr [RBX + 0x8],RAX
JNZ 0x00148a10
TEST R14D,R14D
JNZ 0x00148998
LEA RSI,[RSP + 0x8]
MOV RDI,RBX
CALL 0x0010c7c0
TEST EAX,EAX
JZ 0x00148b60
MOV RAX,qword ptr [RSP + 0x8]
TEST RAX,RAX
JZ 0x00148998
MOV qword ptr [0x002a6370],RAX
LEA RDI,[0x144b50]
LEA RAX,[0x149970]
MOV dword ptr [0x002a6368],0x0
MOV qword ptr [0x002a6418],RAX
CALL 0x0011bdc0
MOV EDX,dword ptr [0x002a6368]
TEST EDX,EDX
JNZ 0x00148b88
MOV RAX,qword ptr [RSP + 0x8]
TEST RAX,RAX
JZ 0x00148b88
LEA R8,[0x196a8c]
JMP 0x0014897c
MOV RAX,qword ptr [RAX]
TEST RAX,RAX
JZ 0x00148b88
MOV RSI,qword ptr [RAX + 0x10]
MOV ECX,0x7
MOV RDI,R8
CMPSB.REPE RDI,RSI
SETA DL
SBB DL,0x0
TEST DL,DL
JNZ 0x00148970
NOP dword ptr [RAX]
LEA RSI,[0x2a6380]
MOV RDI,RBX
CALL 0x0010c290
TEST EAX,EAX
JNZ 0x00148aa0
MOV RDI,qword ptr [RBX]
CALL 0x0010c660
MOV RBP,RAX
MOV EAX,dword ptr [0x002a69d8]
TEST EAX,EAX
JNZ 0x00148a70
LEA RAX,[0x1470e0]
LEA RDI,[0x144b50]
MOV qword ptr [0x002a6378],0x0
MOV qword ptr [0x002a6418],RAX
CALL 0x0011bdc0
CMP qword ptr [0x002a6378],0x0
JZ 0x00148ac8
MOV EBP,0x1
ADD RSP,0x10
MOV EAX,EBP
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
MOV RDI,RBX
XOR EBP,EBP
CALL 0x0010cac0
ADD RSP,0x10
MOV EAX,EBP
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
MOV EBP,dword ptr [0x002a69d8]
TEST EBP,EBP
JZ 0x00148a00
MOV EDX,0x5
LEA RSI,[0x163e24]
XOR EDI,EDI
XOR EBP,EBP
CALL 0x0010c350
MOV RSI,R12
MOV RDI,RAX
XOR EAX,EAX
CALL 0x00128320
ADD RSP,0x10
MOV EAX,EBP
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
XOR EDI,EDI
MOV EDX,0x5
LEA RSI,[0x196a94]
CALL 0x0010c350
MOV RDX,R12
MOV RSI,RBP
MOV RDI,RAX
XOR EAX,EAX
CALL 0x00128320
JMP 0x001489c8
XOR EDI,EDI
MOV EDX,0x5
LEA RSI,[0x1965e0]
CALL 0x0010c350
MOV RSI,RBX
MOV RDI,RAX
XOR EAX,EAX
CALL 0x001283c0
JMP 0x001489af
MOV RDI,RBX
MOV RSI,RBP
CALL 0x0010cb50
MOV RDI,qword ptr [R13]
TEST RDI,RDI
JZ 0x00148aea
CALL 0x0010c450
MOV ESI,0xe
TEST AL,0x4
JNZ 0x00148aef
MOV ESI,0x2
MOV RDI,RBX
CALL 0x0010c7e0
MOV RAX,qword ptr [RBX + 0x8]
LEA RSI,[0x2a67c0]
MOV RDI,RBX
CALL qword ptr [RAX + 0x2c0]
TEST EAX,EAX
JNZ 0x001489fb
XOR EDI,EDI
MOV EDX,0x5
LEA RSI,[0x161b18]
CALL 0x0010c350
MOV RSI,RBX
MOV RDI,RAX
XOR EAX,EAX
CALL 0x001283c0
JMP 0x001489fb
MOV RDI,RBX
CALL 0x0010cac0
ADD RSP,0x10
MOV EAX,EBP
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
XOR EDI,EDI
MOV EDX,0x5
LEA RSI,[0x1965a8]
CALL 0x0010c350
MOV RSI,RBX
MOV RDI,RAX
XOR EAX,EAX
CALL 0x001283c0
JMP 0x00148912
MOV RDI,RBX
XOR EBP,EBP
CALL 0x0010cac0
JMP 0x00148a00
(translation_unit "/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n\nundefined4 FUN_00148880(long *param_1,undefined8 param_2,int param_3)\n\n{\n  int iVar1;\n  undefined8 *puVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  ulong uVar5;\n  long lVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  bool bVar9;\n  bool bVar10;\n  byte bVar11;\n  long *local_30;\n  \n  bVar11 = 0;\n  puVar2 = (undefined8 *)bfd_openr(param_2,**(undefined8 **)(DAT_002a6810 + 8));\n  if (puVar2 == (undefined8 *)0x0) {\n    if (DAT_002a69d8 != 0) {\n      uVar3 = dcgettext(0,"attempt to open %s failed\n",5);\n      FUN_00128320(uVar3,param_2);\n      return 0;\n    }\n    return 0;\n  }\n  *(uint *)((long)puVar2 + 0x44) = *(uint *)((long)puVar2 + 0x44) | 0x100000;\n  iVar1 = bfd_check_format(puVar2,1);\n  if (iVar1 == 0) {\n    bfd_close(puVar2);\n    return 0;\n  }\n  if (((*(byte *)((long)puVar2 + 0x45) & 8) == 0) || (puVar2[1] != *(long *)(DAT_002a6810 + 8))) {\n    bfd_close(puVar2);\n    return 0;\n  }\n  if (param_3 == 0) {\n    iVar1 = bfd_elf_get_bfd_needed_list(puVar2,&local_30);\n    if (iVar1 == 0) {\n      uVar3 = dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);\n      FUN_001283c0(uVar3,puVar2);\n    }\n    if (local_30 != (long *)0x0) {\n      DAT_002a6370 = local_30;\n      DAT_002a6368 = 0;\n      _DAT_002a6418 = FUN_00149970;\n      FUN_0011bdc0(FUN_00144b50);\n      if (DAT_002a6368 == 0) {\n        for (; bVar10 = local_30 == (long *)0x0, !bVar10; local_30 = (long *)*local_30) {\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }\n      }\n      bfd_close(puVar2);\n      return 0;\n    }\n  }\nLAB_00148998:\n  iVar1 = bfd_stat(puVar2,&DAT_002a6380);\n  if (iVar1 != 0) {\n    uVar3 = dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5);\n    FUN_001283c0(uVar3,puVar2);\n  }\n  uVar3 = lbasename(*puVar2);\n  if (DAT_002a69d8 != 0) {\n    uVar4 = dcgettext(0,"found %s at %s\n",5);\n    FUN_00128320(uVar4,uVar3,param_2);\n  }\n  DAT_002a6378 = 0;\n  _DAT_002a6418 = FUN_001470e0;\n  FUN_0011bdc0(FUN_00144b50);\n  if (DAT_002a6378 != 0) {\n    return 1;\n  }\n  bfd_elf_set_dt_needed_name(puVar2,uVar3);\n  if (*param_1 != 0) {\n    uVar5 = bfd_elf_get_dyn_lib_class();\n    uVar3 = 0xe;\n    if ((uVar5 & 4) != 0) goto LAB_00148aef;\n  }\n  uVar3 = 2;\nLAB_00148aef:\n  bfd_elf_set_dyn_lib_class(puVar2,uVar3);\n  iVar1 = (**(code **)(puVar2[1] + 0x2c0))(puVar2,&DAT_002a67c0);\n  if (iVar1 == 0) {\n    uVar3 = dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5);\n    FUN_001283c0(uVar3,puVar2);\n  }\n  return 1;\n}\n\n" comment (function_definition "undefined4 FUN_00148880(long *param_1,undefined8 param_2,int param_3)\n\n{\n  int iVar1;\n  undefined8 *puVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  ulong uVar5;\n  long lVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  bool bVar9;\n  bool bVar10;\n  byte bVar11;\n  long *local_30;\n  \n  bVar11 = 0;\n  puVar2 = (undefined8 *)bfd_openr(param_2,**(undefined8 **)(DAT_002a6810 + 8));\n  if (puVar2 == (undefined8 *)0x0) {\n    if (DAT_002a69d8 != 0) {\n      uVar3 = dcgettext(0,"attempt to open %s failed\n",5);\n      FUN_00128320(uVar3,param_2);\n      return 0;\n    }\n    return 0;\n  }\n  *(uint *)((long)puVar2 + 0x44) = *(uint *)((long)puVar2 + 0x44) | 0x100000;\n  iVar1 = bfd_check_format(puVar2,1);\n  if (iVar1 == 0) {\n    bfd_close(puVar2);\n    return 0;\n  }\n  if (((*(byte *)((long)puVar2 + 0x45) & 8) == 0) || (puVar2[1] != *(long *)(DAT_002a6810 + 8))) {\n    bfd_close(puVar2);\n    return 0;\n  }\n  if (param_3 == 0) {\n    iVar1 = bfd_elf_get_bfd_needed_list(puVar2,&local_30);\n    if (iVar1 == 0) {\n      uVar3 = dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);\n      FUN_001283c0(uVar3,puVar2);\n    }\n    if (local_30 != (long *)0x0) {\n      DAT_002a6370 = local_30;\n      DAT_002a6368 = 0;\n      _DAT_002a6418 = FUN_00149970;\n      FUN_0011bdc0(FUN_00144b50);\n      if (DAT_002a6368 == 0) {\n        for (; bVar10 = local_30 == (long *)0x0, !bVar10; local_30 = (long *)*local_30) {\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }\n      }\n      bfd_close(puVar2);\n      return 0;\n    }\n  }\nLAB_00148998:\n  iVar1 = bfd_stat(puVar2,&DAT_002a6380);\n  if (iVar1 != 0) {\n    uVar3 = dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5);\n    FUN_001283c0(uVar3,puVar2);\n  }\n  uVar3 = lbasename(*puVar2);\n  if (DAT_002a69d8 != 0) {\n    uVar4 = dcgettext(0,"found %s at %s\n",5);\n    FUN_00128320(uVar4,uVar3,param_2);\n  }\n  DAT_002a6378 = 0;\n  _DAT_002a6418 = FUN_001470e0;\n  FUN_0011bdc0(FUN_00144b50);\n  if (DAT_002a6378 != 0) {\n    return 1;\n  }\n  bfd_elf_set_dt_needed_name(puVar2,uVar3);\n  if (*param_1 != 0) {\n    uVar5 = bfd_elf_get_dyn_lib_class();\n    uVar3 = 0xe;\n    if ((uVar5 & 4) != 0) goto LAB_00148aef;\n  }\n  uVar3 = 2;\nLAB_00148aef:\n  bfd_elf_set_dyn_lib_class(puVar2,uVar3);\n  iVar1 = (**(code **)(puVar2[1] + 0x2c0))(puVar2,&DAT_002a67c0);\n  if (iVar1 == 0) {\n    uVar3 = dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5);\n    FUN_001283c0(uVar3,puVar2);\n  }\n  return 1;\n}" type_identifier (function_declarator "FUN_00148880(long *param_1,undefined8 param_2,int param_3)" identifier (parameter_list "(long *param_1,undefined8 param_2,int param_3)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined8 *puVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  ulong uVar5;\n  long lVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  bool bVar9;\n  bool bVar10;\n  byte bVar11;\n  long *local_30;\n  \n  bVar11 = 0;\n  puVar2 = (undefined8 *)bfd_openr(param_2,**(undefined8 **)(DAT_002a6810 + 8));\n  if (puVar2 == (undefined8 *)0x0) {\n    if (DAT_002a69d8 != 0) {\n      uVar3 = dcgettext(0,"attempt to open %s failed\n",5);\n      FUN_00128320(uVar3,param_2);\n      return 0;\n    }\n    return 0;\n  }\n  *(uint *)((long)puVar2 + 0x44) = *(uint *)((long)puVar2 + 0x44) | 0x100000;\n  iVar1 = bfd_check_format(puVar2,1);\n  if (iVar1 == 0) {\n    bfd_close(puVar2);\n    return 0;\n  }\n  if (((*(byte *)((long)puVar2 + 0x45) & 8) == 0) || (puVar2[1] != *(long *)(DAT_002a6810 + 8))) {\n    bfd_close(puVar2);\n    return 0;\n  }\n  if (param_3 == 0) {\n    iVar1 = bfd_elf_get_bfd_needed_list(puVar2,&local_30);\n    if (iVar1 == 0) {\n      uVar3 = dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);\n      FUN_001283c0(uVar3,puVar2);\n    }\n    if (local_30 != (long *)0x0) {\n      DAT_002a6370 = local_30;\n      DAT_002a6368 = 0;\n      _DAT_002a6418 = FUN_00149970;\n      FUN_0011bdc0(FUN_00144b50);\n      if (DAT_002a6368 == 0) {\n        for (; bVar10 = local_30 == (long *)0x0, !bVar10; local_30 = (long *)*local_30) {\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }\n      }\n      bfd_close(puVar2);\n      return 0;\n    }\n  }\nLAB_00148998:\n  iVar1 = bfd_stat(puVar2,&DAT_002a6380);\n  if (iVar1 != 0) {\n    uVar3 = dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5);\n    FUN_001283c0(uVar3,puVar2);\n  }\n  uVar3 = lbasename(*puVar2);\n  if (DAT_002a69d8 != 0) {\n    uVar4 = dcgettext(0,"found %s at %s\n",5);\n    FUN_00128320(uVar4,uVar3,param_2);\n  }\n  DAT_002a6378 = 0;\n  _DAT_002a6418 = FUN_001470e0;\n  FUN_0011bdc0(FUN_00144b50);\n  if (DAT_002a6378 != 0) {\n    return 1;\n  }\n  bfd_elf_set_dt_needed_name(puVar2,uVar3);\n  if (*param_1 != 0) {\n    uVar5 = bfd_elf_get_dyn_lib_class();\n    uVar3 = 0xe;\n    if ((uVar5 & 4) != 0) goto LAB_00148aef;\n  }\n  uVar3 = 2;\nLAB_00148aef:\n  bfd_elf_set_dyn_lib_class(puVar2,uVar3);\n  iVar1 = (**(code **)(puVar2[1] + 0x2c0))(puVar2,&DAT_002a67c0);\n  if (iVar1 == 0) {\n    uVar3 = dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5);\n    FUN_001283c0(uVar3,puVar2);\n  }\n  return 1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "byte bVar11;" type_identifier identifier ;) (declaration "long *local_30;" (sized_type_specifier "long" long) (pointer_declarator "*local_30" * identifier) ;) (expression_statement "bVar11 = 0;" (assignment_expression "bVar11 = 0" identifier = number_literal) ;) (expression_statement "puVar2 = (undefined8 *)bfd_openr(param_2,**(undefined8 **)(DAT_002a6810 + 8));" (assignment_expression "puVar2 = (undefined8 *)bfd_openr(param_2,**(undefined8 **)(DAT_002a6810 + 8))" identifier = (cast_expression "(undefined8 *)bfd_openr(param_2,**(undefined8 **)(DAT_002a6810 + 8))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_openr(param_2,**(undefined8 **)(DAT_002a6810 + 8))" identifier (argument_list "(param_2,**(undefined8 **)(DAT_002a6810 + 8))" ( identifier , (pointer_expression "**(undefined8 **)(DAT_002a6810 + 8)" * (pointer_expression "*(undefined8 **)(DAT_002a6810 + 8)" * (cast_expression "(undefined8 **)(DAT_002a6810 + 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(DAT_002a6810 + 8)" ( (binary_expression "DAT_002a6810 + 8" identifier + number_literal) ))))) ))))) ;) (if_statement "if (puVar2 == (undefined8 *)0x0) {\n    if (DAT_002a69d8 != 0) {\n      uVar3 = dcgettext(0,"attempt to open %s failed\n",5);\n      FUN_00128320(uVar3,param_2);\n      return 0;\n    }\n    return 0;\n  }" if (parenthesized_expression "(puVar2 == (undefined8 *)0x0)" ( (binary_expression "puVar2 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (DAT_002a69d8 != 0) {\n      uVar3 = dcgettext(0,"attempt to open %s failed\n",5);\n      FUN_00128320(uVar3,param_2);\n      return 0;\n    }\n    return 0;\n  }" { (if_statement "if (DAT_002a69d8 != 0) {\n      uVar3 = dcgettext(0,"attempt to open %s failed\n",5);\n      FUN_00128320(uVar3,param_2);\n      return 0;\n    }" if (parenthesized_expression "(DAT_002a69d8 != 0)" ( (binary_expression "DAT_002a69d8 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar3 = dcgettext(0,"attempt to open %s failed\n",5);\n      FUN_00128320(uVar3,param_2);\n      return 0;\n    }" { (expression_statement "uVar3 = dcgettext(0,"attempt to open %s failed\n",5);" (assignment_expression "uVar3 = dcgettext(0,"attempt to open %s failed\n",5)" identifier = (call_expression "dcgettext(0,"attempt to open %s failed\n",5)" identifier (argument_list "(0,"attempt to open %s failed\n",5)" ( number_literal , (string_literal ""attempt to open %s failed\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00128320(uVar3,param_2);" (call_expression "FUN_00128320(uVar3,param_2)" identifier (argument_list "(uVar3,param_2)" ( identifier , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (return_statement "return 0;" return number_literal ;) })) (expression_statement "*(uint *)((long)puVar2 + 0x44) = *(uint *)((long)puVar2 + 0x44) | 0x100000;" (assignment_expression "*(uint *)((long)puVar2 + 0x44) = *(uint *)((long)puVar2 + 0x44) | 0x100000" (pointer_expression "*(uint *)((long)puVar2 + 0x44)" * (cast_expression "(uint *)((long)puVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar2 + 0x44)" ( (binary_expression "(long)puVar2 + 0x44" (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(uint *)((long)puVar2 + 0x44) | 0x100000" (pointer_expression "*(uint *)((long)puVar2 + 0x44)" * (cast_expression "(uint *)((long)puVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar2 + 0x44)" ( (binary_expression "(long)puVar2 + 0x44" (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) | number_literal)) ;) (expression_statement "iVar1 = bfd_check_format(puVar2,1);" (assignment_expression "iVar1 = bfd_check_format(puVar2,1)" identifier = (call_expression "bfd_check_format(puVar2,1)" identifier (argument_list "(puVar2,1)" ( identifier , number_literal )))) ;) (if_statement "if (iVar1 == 0) {\n    bfd_close(puVar2);\n    return 0;\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    bfd_close(puVar2);\n    return 0;\n  }" { (expression_statement "bfd_close(puVar2);" (call_expression "bfd_close(puVar2)" identifier (argument_list "(puVar2)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (((*(byte *)((long)puVar2 + 0x45) & 8) == 0) || (puVar2[1] != *(long *)(DAT_002a6810 + 8))) {\n    bfd_close(puVar2);\n    return 0;\n  }" if (parenthesized_expression "(((*(byte *)((long)puVar2 + 0x45) & 8) == 0) || (puVar2[1] != *(long *)(DAT_002a6810 + 8)))" ( (binary_expression "((*(byte *)((long)puVar2 + 0x45) & 8) == 0) || (puVar2[1] != *(long *)(DAT_002a6810 + 8))" (parenthesized_expression "((*(byte *)((long)puVar2 + 0x45) & 8) == 0)" ( (binary_expression "(*(byte *)((long)puVar2 + 0x45) & 8) == 0" (parenthesized_expression "(*(byte *)((long)puVar2 + 0x45) & 8)" ( (binary_expression "*(byte *)((long)puVar2 + 0x45) & 8" (pointer_expression "*(byte *)((long)puVar2 + 0x45)" * (cast_expression "(byte *)((long)puVar2 + 0x45)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar2 + 0x45)" ( (binary_expression "(long)puVar2 + 0x45" (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "(puVar2[1] != *(long *)(DAT_002a6810 + 8))" ( (binary_expression "puVar2[1] != *(long *)(DAT_002a6810 + 8)" (subscript_expression "puVar2[1]" identifier [ number_literal ]) != (pointer_expression "*(long *)(DAT_002a6810 + 8)" * (cast_expression "(long *)(DAT_002a6810 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002a6810 + 8)" ( (binary_expression "DAT_002a6810 + 8" identifier + number_literal) ))))) ))) )) (compound_statement "{\n    bfd_close(puVar2);\n    return 0;\n  }" { (expression_statement "bfd_close(puVar2);" (call_expression "bfd_close(puVar2)" identifier (argument_list "(puVar2)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (param_3 == 0) {\n    iVar1 = bfd_elf_get_bfd_needed_list(puVar2,&local_30);\n    if (iVar1 == 0) {\n      uVar3 = dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);\n      FUN_001283c0(uVar3,puVar2);\n    }\n    if (local_30 != (long *)0x0) {\n      DAT_002a6370 = local_30;\n      DAT_002a6368 = 0;\n      _DAT_002a6418 = FUN_00149970;\n      FUN_0011bdc0(FUN_00144b50);\n      if (DAT_002a6368 == 0) {\n        for (; bVar10 = local_30 == (long *)0x0, !bVar10; local_30 = (long *)*local_30) {\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }\n      }\n      bfd_close(puVar2);\n      return 0;\n    }\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar1 = bfd_elf_get_bfd_needed_list(puVar2,&local_30);\n    if (iVar1 == 0) {\n      uVar3 = dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);\n      FUN_001283c0(uVar3,puVar2);\n    }\n    if (local_30 != (long *)0x0) {\n      DAT_002a6370 = local_30;\n      DAT_002a6368 = 0;\n      _DAT_002a6418 = FUN_00149970;\n      FUN_0011bdc0(FUN_00144b50);\n      if (DAT_002a6368 == 0) {\n        for (; bVar10 = local_30 == (long *)0x0, !bVar10; local_30 = (long *)*local_30) {\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }\n      }\n      bfd_close(puVar2);\n      return 0;\n    }\n  }" { (expression_statement "iVar1 = bfd_elf_get_bfd_needed_list(puVar2,&local_30);" (assignment_expression "iVar1 = bfd_elf_get_bfd_needed_list(puVar2,&local_30)" identifier = (call_expression "bfd_elf_get_bfd_needed_list(puVar2,&local_30)" identifier (argument_list "(puVar2,&local_30)" ( identifier , (pointer_expression "&local_30" & identifier) )))) ;) (if_statement "if (iVar1 == 0) {\n      uVar3 = dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);\n      FUN_001283c0(uVar3,puVar2);\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar3 = dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);\n      FUN_001283c0(uVar3,puVar2);\n    }" { (expression_statement "uVar3 = dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);" (assignment_expression "uVar3 = dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5)" identifier = (call_expression "dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5)" identifier (argument_list "(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5)" ( number_literal , (string_literal ""%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_001283c0(uVar3,puVar2);" (call_expression "FUN_001283c0(uVar3,puVar2)" identifier (argument_list "(uVar3,puVar2)" ( identifier , identifier ))) ;) })) (if_statement "if (local_30 != (long *)0x0) {\n      DAT_002a6370 = local_30;\n      DAT_002a6368 = 0;\n      _DAT_002a6418 = FUN_00149970;\n      FUN_0011bdc0(FUN_00144b50);\n      if (DAT_002a6368 == 0) {\n        for (; bVar10 = local_30 == (long *)0x0, !bVar10; local_30 = (long *)*local_30) {\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }\n      }\n      bfd_close(puVar2);\n      return 0;\n    }" if (parenthesized_expression "(local_30 != (long *)0x0)" ( (binary_expression "local_30 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      DAT_002a6370 = local_30;\n      DAT_002a6368 = 0;\n      _DAT_002a6418 = FUN_00149970;\n      FUN_0011bdc0(FUN_00144b50);\n      if (DAT_002a6368 == 0) {\n        for (; bVar10 = local_30 == (long *)0x0, !bVar10; local_30 = (long *)*local_30) {\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }\n      }\n      bfd_close(puVar2);\n      return 0;\n    }" { (expression_statement "DAT_002a6370 = local_30;" (assignment_expression "DAT_002a6370 = local_30" identifier = identifier) ;) (expression_statement "DAT_002a6368 = 0;" (assignment_expression "DAT_002a6368 = 0" identifier = number_literal) ;) (expression_statement "_DAT_002a6418 = FUN_00149970;" (assignment_expression "_DAT_002a6418 = FUN_00149970" identifier = identifier) ;) (expression_statement "FUN_0011bdc0(FUN_00144b50);" (call_expression "FUN_0011bdc0(FUN_00144b50)" identifier (argument_list "(FUN_00144b50)" ( identifier ))) ;) (if_statement "if (DAT_002a6368 == 0) {\n        for (; bVar10 = local_30 == (long *)0x0, !bVar10; local_30 = (long *)*local_30) {\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }\n      }" if (parenthesized_expression "(DAT_002a6368 == 0)" ( (binary_expression "DAT_002a6368 == 0" identifier == number_literal) )) (compound_statement "{\n        for (; bVar10 = local_30 == (long *)0x0, !bVar10; local_30 = (long *)*local_30) {\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }\n      }" { (for_statement "for (; bVar10 = local_30 == (long *)0x0, !bVar10; local_30 = (long *)*local_30) {\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }" for ( ; (comma_expression "bVar10 = local_30 == (long *)0x0, !bVar10" (assignment_expression "bVar10 = local_30 == (long *)0x0" identifier = (binary_expression "local_30 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal))) , (unary_expression "!bVar10" ! identifier)) ; (assignment_expression "local_30 = (long *)*local_30" identifier = (cast_expression "(long *)*local_30" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_30" * identifier))) ) (compound_statement "{\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }" { (expression_statement "bVar9 = false;" (assignment_expression "bVar9 = false" identifier = false) ;) (expression_statement "lVar6 = 7;" (assignment_expression "lVar6 = 7" identifier = number_literal) ;) (expression_statement "pbVar7 = (byte *)local_30[2];" (assignment_expression "pbVar7 = (byte *)local_30[2]" identifier = (cast_expression "(byte *)local_30[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_30[2]" identifier [ number_literal ]))) ;) (expression_statement "pbVar8 = (byte *)"libc.so";" (assignment_expression "pbVar8 = (byte *)"libc.so"" identifier = (cast_expression "(byte *)"libc.so"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""libc.so"" " string_content "))) ;) (do_statement "do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);" do (compound_statement "{\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          }" { (if_statement "if (lVar6 == 0) break;" if (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar6 = lVar6 + -1;" (assignment_expression "lVar6 = lVar6 + -1" identifier = (binary_expression "lVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar9 = *pbVar7 < *pbVar8;" (assignment_expression "bVar9 = *pbVar7 < *pbVar8" identifier = (binary_expression "*pbVar7 < *pbVar8" (pointer_expression "*pbVar7" * identifier) < (pointer_expression "*pbVar8" * identifier))) ;) (expression_statement "bVar10 = *pbVar7 == *pbVar8;" (assignment_expression "bVar10 = *pbVar7 == *pbVar8" identifier = (binary_expression "*pbVar7 == *pbVar8" (pointer_expression "*pbVar7" * identifier) == (pointer_expression "*pbVar8" * identifier))) ;) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1" identifier = (binary_expression "pbVar7 + (ulong)bVar11 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar11 * -2" identifier + (binary_expression "(ulong)bVar11 * -2" (cast_expression "(ulong)bVar11" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1" identifier = (binary_expression "pbVar8 + (ulong)bVar11 * -2 + 1" (binary_expression "pbVar8 + (ulong)bVar11 * -2" identifier + (binary_expression "(ulong)bVar11 * -2" (cast_expression "(ulong)bVar11" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar10)" ( identifier )) ;) (if_statement "if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;" if (parenthesized_expression "((!bVar9 && !bVar10) == bVar9)" ( (binary_expression "(!bVar9 && !bVar10) == bVar9" (parenthesized_expression "(!bVar9 && !bVar10)" ( (binary_expression "!bVar9 && !bVar10" (unary_expression "!bVar9" ! identifier) && (unary_expression "!bVar10" ! identifier)) )) == identifier) )) (goto_statement "goto LAB_00148998;" goto statement_identifier ;)) })) })) (expression_statement "bfd_close(puVar2);" (call_expression "bfd_close(puVar2)" identifier (argument_list "(puVar2)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) })) (labeled_statement "LAB_00148998:\n  iVar1 = bfd_stat(puVar2,&DAT_002a6380);" statement_identifier : (expression_statement "iVar1 = bfd_stat(puVar2,&DAT_002a6380);" (assignment_expression "iVar1 = bfd_stat(puVar2,&DAT_002a6380)" identifier = (call_expression "bfd_stat(puVar2,&DAT_002a6380)" identifier (argument_list "(puVar2,&DAT_002a6380)" ( identifier , (pointer_expression "&DAT_002a6380" & identifier) )))) ;)) (if_statement "if (iVar1 != 0) {\n    uVar3 = dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5);\n    FUN_001283c0(uVar3,puVar2);\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar3 = dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5);\n    FUN_001283c0(uVar3,puVar2);\n  }" { (expression_statement "uVar3 = dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5);" (assignment_expression "uVar3 = dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5)" identifier = (call_expression "dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5)" identifier (argument_list "(0,"%F%P: %pB: bfd_stat failed: %E\n",5)" ( number_literal , (string_literal ""%F%P: %pB: bfd_stat failed: %E\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_001283c0(uVar3,puVar2);" (call_expression "FUN_001283c0(uVar3,puVar2)" identifier (argument_list "(uVar3,puVar2)" ( identifier , identifier ))) ;) })) (expression_statement "uVar3 = lbasename(*puVar2);" (assignment_expression "uVar3 = lbasename(*puVar2)" identifier = (call_expression "lbasename(*puVar2)" identifier (argument_list "(*puVar2)" ( (pointer_expression "*puVar2" * identifier) )))) ;) (if_statement "if (DAT_002a69d8 != 0) {\n    uVar4 = dcgettext(0,"found %s at %s\n",5);\n    FUN_00128320(uVar4,uVar3,param_2);\n  }" if (parenthesized_expression "(DAT_002a69d8 != 0)" ( (binary_expression "DAT_002a69d8 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar4 = dcgettext(0,"found %s at %s\n",5);\n    FUN_00128320(uVar4,uVar3,param_2);\n  }" { (expression_statement "uVar4 = dcgettext(0,"found %s at %s\n",5);" (assignment_expression "uVar4 = dcgettext(0,"found %s at %s\n",5)" identifier = (call_expression "dcgettext(0,"found %s at %s\n",5)" identifier (argument_list "(0,"found %s at %s\n",5)" ( number_literal , (string_literal ""found %s at %s\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00128320(uVar4,uVar3,param_2);" (call_expression "FUN_00128320(uVar4,uVar3,param_2)" identifier (argument_list "(uVar4,uVar3,param_2)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "DAT_002a6378 = 0;" (assignment_expression "DAT_002a6378 = 0" identifier = number_literal) ;) (expression_statement "_DAT_002a6418 = FUN_001470e0;" (assignment_expression "_DAT_002a6418 = FUN_001470e0" identifier = identifier) ;) (expression_statement "FUN_0011bdc0(FUN_00144b50);" (call_expression "FUN_0011bdc0(FUN_00144b50)" identifier (argument_list "(FUN_00144b50)" ( identifier ))) ;) (if_statement "if (DAT_002a6378 != 0) {\n    return 1;\n  }" if (parenthesized_expression "(DAT_002a6378 != 0)" ( (binary_expression "DAT_002a6378 != 0" identifier != number_literal) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "bfd_elf_set_dt_needed_name(puVar2,uVar3);" (call_expression "bfd_elf_set_dt_needed_name(puVar2,uVar3)" identifier (argument_list "(puVar2,uVar3)" ( identifier , identifier ))) ;) (if_statement "if (*param_1 != 0) {\n    uVar5 = bfd_elf_get_dyn_lib_class();\n    uVar3 = 0xe;\n    if ((uVar5 & 4) != 0) goto LAB_00148aef;\n  }" if (parenthesized_expression "(*param_1 != 0)" ( (binary_expression "*param_1 != 0" (pointer_expression "*param_1" * identifier) != number_literal) )) (compound_statement "{\n    uVar5 = bfd_elf_get_dyn_lib_class();\n    uVar3 = 0xe;\n    if ((uVar5 & 4) != 0) goto LAB_00148aef;\n  }" { (expression_statement "uVar5 = bfd_elf_get_dyn_lib_class();" (assignment_expression "uVar5 = bfd_elf_get_dyn_lib_class()" identifier = (call_expression "bfd_elf_get_dyn_lib_class()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar3 = 0xe;" (assignment_expression "uVar3 = 0xe" identifier = number_literal) ;) (if_statement "if ((uVar5 & 4) != 0) goto LAB_00148aef;" if (parenthesized_expression "((uVar5 & 4) != 0)" ( (binary_expression "(uVar5 & 4) != 0" (parenthesized_expression "(uVar5 & 4)" ( (binary_expression "uVar5 & 4" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00148aef;" goto statement_identifier ;)) })) (expression_statement "uVar3 = 2;" (assignment_expression "uVar3 = 2" identifier = number_literal) ;) (labeled_statement "LAB_00148aef:\n  bfd_elf_set_dyn_lib_class(puVar2,uVar3);" statement_identifier : (expression_statement "bfd_elf_set_dyn_lib_class(puVar2,uVar3);" (call_expression "bfd_elf_set_dyn_lib_class(puVar2,uVar3)" identifier (argument_list "(puVar2,uVar3)" ( identifier , identifier ))) ;)) (expression_statement "iVar1 = (**(code **)(puVar2[1] + 0x2c0))(puVar2,&DAT_002a67c0);" (assignment_expression "iVar1 = (**(code **)(puVar2[1] + 0x2c0))(puVar2,&DAT_002a67c0)" identifier = (call_expression "(**(code **)(puVar2[1] + 0x2c0))(puVar2,&DAT_002a67c0)" (parenthesized_expression "(**(code **)(puVar2[1] + 0x2c0))" ( (pointer_expression "**(code **)(puVar2[1] + 0x2c0)" * (pointer_expression "*(code **)(puVar2[1] + 0x2c0)" * (cast_expression "(code **)(puVar2[1] + 0x2c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2[1] + 0x2c0)" ( (binary_expression "puVar2[1] + 0x2c0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(puVar2,&DAT_002a67c0)" ( identifier , (pointer_expression "&DAT_002a67c0" & identifier) )))) ;) (if_statement "if (iVar1 == 0) {\n    uVar3 = dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5);\n    FUN_001283c0(uVar3,puVar2);\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar3 = dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5);\n    FUN_001283c0(uVar3,puVar2);\n  }" { (expression_statement "uVar3 = dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5);" (assignment_expression "uVar3 = dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5)" identifier = (call_expression "dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5)" identifier (argument_list "(0,"%F%P: %pB: error adding symbols: %E\n",5)" ( number_literal , (string_literal ""%F%P: %pB: error adding symbols: %E\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_001283c0(uVar3,puVar2);" (call_expression "FUN_001283c0(uVar3,puVar2)" identifier (argument_list "(uVar3,puVar2)" ( identifier , identifier ))) ;) })) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "/* DWARF original prototype: bfd_boolean gldelf64ppc_try_needed(dt_needed * needed, int force,\n   dt_needed * needed) */\n\nbfd_boolean gldelf64ppc_try_needed(dt_needed *needed,int force,dt_needed *needed_1)\n\n{\n  int iVar1;\n  undefined8 *puVar2;\n  undefined8 uVar3;\n  ulong uVar4;\n  char *pcVar5;\n  long lVar6;\n  undefined4 in_register_00000034;\n  byte *pbVar7;\n  undefined8 uVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  bfd_link_needed_list *needs;\n  \n  uVar8 = CONCAT44(in_register_00000034,force);\n  bVar12 = 0;\n  puVar2 = (undefined8 *)bfd_openr(uVar8,(link_info.output_bfd)->xvec->name);\n  if (puVar2 == (undefined8 *)0x0) {\n    if (verbose != 0) {\n      pcVar5 = (char *)dcgettext(0,"attempt to open %s failed\n",5);\n      info_msg(pcVar5,uVar8);\n      return 0;\n    }\n    return 0;\n  }\n  *(uint *)((long)puVar2 + 0x44) = *(uint *)((long)puVar2 + 0x44) | 0x100000;\n  iVar1 = bfd_check_format(puVar2,1);\n  if (iVar1 == 0) {\n    bfd_close(puVar2);\n    return 0;\n  }\n  if (((*(byte *)((long)puVar2 + 0x45) & 8) == 0) ||\n     ((bfd_target *)puVar2[1] != (link_info.output_bfd)->xvec)) {\n    bfd_close(puVar2);\n    return 0;\n  }\n  if ((int)needed_1 == 0) {\n    iVar1 = bfd_elf_get_bfd_needed_list(puVar2,&needs);\n    if (iVar1 == 0) {\n      pcVar5 = (char *)dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);\n      einfo(pcVar5,puVar2);\n    }\n    if (needs != (bfd_link_needed_list *)0x0) {\n      global_vercheck_needed = needs;\n      global_vercheck_failed = 0;\n      real_func = gldelf64ppc_vercheck;\n      lang_for_each_input_file(ppc_for_each_input_file_wrapper);\n      if (global_vercheck_failed == 0) {\n        for (; bVar11 = needs == (bfd_link_needed_list *)0x0, !bVar11; needs = needs->next) {\n          bVar10 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)needs->name;\n          pbVar9 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar10 = *pbVar7 < *pbVar9;\n            bVar11 = *pbVar7 == *pbVar9;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n          } while (bVar11);\n          if ((!bVar10 && !bVar11) == bVar10) goto LAB_00148998;\n        }\n      }\n      bfd_close(puVar2);\n      return 0;\n    }\n  }\nLAB_00148998:\n  iVar1 = bfd_stat(puVar2,&global_stat);\n  if (iVar1 != 0) {\n    pcVar5 = (char *)dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5);\n    einfo(pcVar5,puVar2);\n  }\n  uVar3 = lbasename(*puVar2);\n  if (verbose != 0) {\n    pcVar5 = (char *)dcgettext(0,"found %s at %s\n",5);\n    info_msg(pcVar5,uVar3,uVar8);\n  }\n  global_found = (lang_input_statement_type *)0x0;\n  real_func = gldelf64ppc_stat_needed;\n  lang_for_each_input_file(ppc_for_each_input_file_wrapper);\n  if (global_found != (lang_input_statement_type *)0x0) {\n    return 1;\n  }\n  bfd_elf_set_dt_needed_name(puVar2,uVar3);\n  if (needed->by != (bfd *)0x0) {\n    uVar4 = bfd_elf_get_dyn_lib_class();\n    uVar8 = 0xe;\n    if ((uVar4 & 4) != 0) goto LAB_00148aef;\n  }\n  uVar8 = 2;\nLAB_00148aef:\n  bfd_elf_set_dyn_lib_class(puVar2,uVar8);\n  iVar1 = (**(code **)(puVar2[1] + 0x2c0))(puVar2,&link_info);\n  if (iVar1 == 0) {\n    pcVar5 = (char *)dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5);\n    einfo(pcVar5,puVar2);\n  }\n  return 1;\n}\n\n" comment (function_definition "bfd_boolean gldelf64ppc_try_needed(dt_needed *needed,int force,dt_needed *needed_1)\n\n{\n  int iVar1;\n  undefined8 *puVar2;\n  undefined8 uVar3;\n  ulong uVar4;\n  char *pcVar5;\n  long lVar6;\n  undefined4 in_register_00000034;\n  byte *pbVar7;\n  undefined8 uVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  bfd_link_needed_list *needs;\n  \n  uVar8 = CONCAT44(in_register_00000034,force);\n  bVar12 = 0;\n  puVar2 = (undefined8 *)bfd_openr(uVar8,(link_info.output_bfd)->xvec->name);\n  if (puVar2 == (undefined8 *)0x0) {\n    if (verbose != 0) {\n      pcVar5 = (char *)dcgettext(0,"attempt to open %s failed\n",5);\n      info_msg(pcVar5,uVar8);\n      return 0;\n    }\n    return 0;\n  }\n  *(uint *)((long)puVar2 + 0x44) = *(uint *)((long)puVar2 + 0x44) | 0x100000;\n  iVar1 = bfd_check_format(puVar2,1);\n  if (iVar1 == 0) {\n    bfd_close(puVar2);\n    return 0;\n  }\n  if (((*(byte *)((long)puVar2 + 0x45) & 8) == 0) ||\n     ((bfd_target *)puVar2[1] != (link_info.output_bfd)->xvec)) {\n    bfd_close(puVar2);\n    return 0;\n  }\n  if ((int)needed_1 == 0) {\n    iVar1 = bfd_elf_get_bfd_needed_list(puVar2,&needs);\n    if (iVar1 == 0) {\n      pcVar5 = (char *)dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);\n      einfo(pcVar5,puVar2);\n    }\n    if (needs != (bfd_link_needed_list *)0x0) {\n      global_vercheck_needed = needs;\n      global_vercheck_failed = 0;\n      real_func = gldelf64ppc_vercheck;\n      lang_for_each_input_file(ppc_for_each_input_file_wrapper);\n      if (global_vercheck_failed == 0) {\n        for (; bVar11 = needs == (bfd_link_needed_list *)0x0, !bVar11; needs = needs->next) {\n          bVar10 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)needs->name;\n          pbVar9 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar10 = *pbVar7 < *pbVar9;\n            bVar11 = *pbVar7 == *pbVar9;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n          } while (bVar11);\n          if ((!bVar10 && !bVar11) == bVar10) goto LAB_00148998;\n        }\n      }\n      bfd_close(puVar2);\n      return 0;\n    }\n  }\nLAB_00148998:\n  iVar1 = bfd_stat(puVar2,&global_stat);\n  if (iVar1 != 0) {\n    pcVar5 = (char *)dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5);\n    einfo(pcVar5,puVar2);\n  }\n  uVar3 = lbasename(*puVar2);\n  if (verbose != 0) {\n    pcVar5 = (char *)dcgettext(0,"found %s at %s\n",5);\n    info_msg(pcVar5,uVar3,uVar8);\n  }\n  global_found = (lang_input_statement_type *)0x0;\n  real_func = gldelf64ppc_stat_needed;\n  lang_for_each_input_file(ppc_for_each_input_file_wrapper);\n  if (global_found != (lang_input_statement_type *)0x0) {\n    return 1;\n  }\n  bfd_elf_set_dt_needed_name(puVar2,uVar3);\n  if (needed->by != (bfd *)0x0) {\n    uVar4 = bfd_elf_get_dyn_lib_class();\n    uVar8 = 0xe;\n    if ((uVar4 & 4) != 0) goto LAB_00148aef;\n  }\n  uVar8 = 2;\nLAB_00148aef:\n  bfd_elf_set_dyn_lib_class(puVar2,uVar8);\n  iVar1 = (**(code **)(puVar2[1] + 0x2c0))(puVar2,&link_info);\n  if (iVar1 == 0) {\n    pcVar5 = (char *)dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5);\n    einfo(pcVar5,puVar2);\n  }\n  return 1;\n}" type_identifier (function_declarator "gldelf64ppc_try_needed(dt_needed *needed,int force,dt_needed *needed_1)" identifier (parameter_list "(dt_needed *needed,int force,dt_needed *needed_1)" ( (parameter_declaration "dt_needed *needed" type_identifier (pointer_declarator "*needed" * identifier)) , (parameter_declaration "int force" primitive_type identifier) , (parameter_declaration "dt_needed *needed_1" type_identifier (pointer_declarator "*needed_1" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  undefined8 *puVar2;\n  undefined8 uVar3;\n  ulong uVar4;\n  char *pcVar5;\n  long lVar6;\n  undefined4 in_register_00000034;\n  byte *pbVar7;\n  undefined8 uVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  bfd_link_needed_list *needs;\n  \n  uVar8 = CONCAT44(in_register_00000034,force);\n  bVar12 = 0;\n  puVar2 = (undefined8 *)bfd_openr(uVar8,(link_info.output_bfd)->xvec->name);\n  if (puVar2 == (undefined8 *)0x0) {\n    if (verbose != 0) {\n      pcVar5 = (char *)dcgettext(0,"attempt to open %s failed\n",5);\n      info_msg(pcVar5,uVar8);\n      return 0;\n    }\n    return 0;\n  }\n  *(uint *)((long)puVar2 + 0x44) = *(uint *)((long)puVar2 + 0x44) | 0x100000;\n  iVar1 = bfd_check_format(puVar2,1);\n  if (iVar1 == 0) {\n    bfd_close(puVar2);\n    return 0;\n  }\n  if (((*(byte *)((long)puVar2 + 0x45) & 8) == 0) ||\n     ((bfd_target *)puVar2[1] != (link_info.output_bfd)->xvec)) {\n    bfd_close(puVar2);\n    return 0;\n  }\n  if ((int)needed_1 == 0) {\n    iVar1 = bfd_elf_get_bfd_needed_list(puVar2,&needs);\n    if (iVar1 == 0) {\n      pcVar5 = (char *)dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);\n      einfo(pcVar5,puVar2);\n    }\n    if (needs != (bfd_link_needed_list *)0x0) {\n      global_vercheck_needed = needs;\n      global_vercheck_failed = 0;\n      real_func = gldelf64ppc_vercheck;\n      lang_for_each_input_file(ppc_for_each_input_file_wrapper);\n      if (global_vercheck_failed == 0) {\n        for (; bVar11 = needs == (bfd_link_needed_list *)0x0, !bVar11; needs = needs->next) {\n          bVar10 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)needs->name;\n          pbVar9 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar10 = *pbVar7 < *pbVar9;\n            bVar11 = *pbVar7 == *pbVar9;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n          } while (bVar11);\n          if ((!bVar10 && !bVar11) == bVar10) goto LAB_00148998;\n        }\n      }\n      bfd_close(puVar2);\n      return 0;\n    }\n  }\nLAB_00148998:\n  iVar1 = bfd_stat(puVar2,&global_stat);\n  if (iVar1 != 0) {\n    pcVar5 = (char *)dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5);\n    einfo(pcVar5,puVar2);\n  }\n  uVar3 = lbasename(*puVar2);\n  if (verbose != 0) {\n    pcVar5 = (char *)dcgettext(0,"found %s at %s\n",5);\n    info_msg(pcVar5,uVar3,uVar8);\n  }\n  global_found = (lang_input_statement_type *)0x0;\n  real_func = gldelf64ppc_stat_needed;\n  lang_for_each_input_file(ppc_for_each_input_file_wrapper);\n  if (global_found != (lang_input_statement_type *)0x0) {\n    return 1;\n  }\n  bfd_elf_set_dt_needed_name(puVar2,uVar3);\n  if (needed->by != (bfd *)0x0) {\n    uVar4 = bfd_elf_get_dyn_lib_class();\n    uVar8 = 0xe;\n    if ((uVar4 & 4) != 0) goto LAB_00148aef;\n  }\n  uVar8 = 2;\nLAB_00148aef:\n  bfd_elf_set_dyn_lib_class(puVar2,uVar8);\n  iVar1 = (**(code **)(puVar2[1] + 0x2c0))(puVar2,&link_info);\n  if (iVar1 == 0) {\n    pcVar5 = (char *)dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5);\n    einfo(pcVar5,puVar2);\n  }\n  return 1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined4 in_register_00000034;" type_identifier identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "undefined8 uVar8;" type_identifier identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "byte bVar12;" type_identifier identifier ;) (declaration "bfd_link_needed_list *needs;" type_identifier (pointer_declarator "*needs" * identifier) ;) (expression_statement "uVar8 = CONCAT44(in_register_00000034,force);" (assignment_expression "uVar8 = CONCAT44(in_register_00000034,force)" identifier = (call_expression "CONCAT44(in_register_00000034,force)" identifier (argument_list "(in_register_00000034,force)" ( identifier , identifier )))) ;) (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" identifier = number_literal) ;) (expression_statement "puVar2 = (undefined8 *)bfd_openr(uVar8,(link_info.output_bfd)->xvec->name);" (assignment_expression "puVar2 = (undefined8 *)bfd_openr(uVar8,(link_info.output_bfd)->xvec->name)" identifier = (cast_expression "(undefined8 *)bfd_openr(uVar8,(link_info.output_bfd)->xvec->name)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_openr(uVar8,(link_info.output_bfd)->xvec->name)" identifier (argument_list "(uVar8,(link_info.output_bfd)->xvec->name)" ( identifier , (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) ))))) ;) (if_statement "if (puVar2 == (undefined8 *)0x0) {\n    if (verbose != 0) {\n      pcVar5 = (char *)dcgettext(0,"attempt to open %s failed\n",5);\n      info_msg(pcVar5,uVar8);\n      return 0;\n    }\n    return 0;\n  }" if (parenthesized_expression "(puVar2 == (undefined8 *)0x0)" ( (binary_expression "puVar2 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (verbose != 0) {\n      pcVar5 = (char *)dcgettext(0,"attempt to open %s failed\n",5);\n      info_msg(pcVar5,uVar8);\n      return 0;\n    }\n    return 0;\n  }" { (if_statement "if (verbose != 0) {\n      pcVar5 = (char *)dcgettext(0,"attempt to open %s failed\n",5);\n      info_msg(pcVar5,uVar8);\n      return 0;\n    }" if (parenthesized_expression "(verbose != 0)" ( (binary_expression "verbose != 0" identifier != number_literal) )) (compound_statement "{\n      pcVar5 = (char *)dcgettext(0,"attempt to open %s failed\n",5);\n      info_msg(pcVar5,uVar8);\n      return 0;\n    }" { (expression_statement "pcVar5 = (char *)dcgettext(0,"attempt to open %s failed\n",5);" (assignment_expression "pcVar5 = (char *)dcgettext(0,"attempt to open %s failed\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"attempt to open %s failed\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"attempt to open %s failed\n",5)" identifier (argument_list "(0,"attempt to open %s failed\n",5)" ( number_literal , (string_literal ""attempt to open %s failed\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "info_msg(pcVar5,uVar8);" (call_expression "info_msg(pcVar5,uVar8)" identifier (argument_list "(pcVar5,uVar8)" ( identifier , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (return_statement "return 0;" return number_literal ;) })) (expression_statement "*(uint *)((long)puVar2 + 0x44) = *(uint *)((long)puVar2 + 0x44) | 0x100000;" (assignment_expression "*(uint *)((long)puVar2 + 0x44) = *(uint *)((long)puVar2 + 0x44) | 0x100000" (pointer_expression "*(uint *)((long)puVar2 + 0x44)" * (cast_expression "(uint *)((long)puVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar2 + 0x44)" ( (binary_expression "(long)puVar2 + 0x44" (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(uint *)((long)puVar2 + 0x44) | 0x100000" (pointer_expression "*(uint *)((long)puVar2 + 0x44)" * (cast_expression "(uint *)((long)puVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar2 + 0x44)" ( (binary_expression "(long)puVar2 + 0x44" (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) | number_literal)) ;) (expression_statement "iVar1 = bfd_check_format(puVar2,1);" (assignment_expression "iVar1 = bfd_check_format(puVar2,1)" identifier = (call_expression "bfd_check_format(puVar2,1)" identifier (argument_list "(puVar2,1)" ( identifier , number_literal )))) ;) (if_statement "if (iVar1 == 0) {\n    bfd_close(puVar2);\n    return 0;\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    bfd_close(puVar2);\n    return 0;\n  }" { (expression_statement "bfd_close(puVar2);" (call_expression "bfd_close(puVar2)" identifier (argument_list "(puVar2)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (((*(byte *)((long)puVar2 + 0x45) & 8) == 0) ||\n     ((bfd_target *)puVar2[1] != (link_info.output_bfd)->xvec)) {\n    bfd_close(puVar2);\n    return 0;\n  }" if (parenthesized_expression "(((*(byte *)((long)puVar2 + 0x45) & 8) == 0) ||\n     ((bfd_target *)puVar2[1] != (link_info.output_bfd)->xvec))" ( (binary_expression "((*(byte *)((long)puVar2 + 0x45) & 8) == 0) ||\n     ((bfd_target *)puVar2[1] != (link_info.output_bfd)->xvec)" (parenthesized_expression "((*(byte *)((long)puVar2 + 0x45) & 8) == 0)" ( (binary_expression "(*(byte *)((long)puVar2 + 0x45) & 8) == 0" (parenthesized_expression "(*(byte *)((long)puVar2 + 0x45) & 8)" ( (binary_expression "*(byte *)((long)puVar2 + 0x45) & 8" (pointer_expression "*(byte *)((long)puVar2 + 0x45)" * (cast_expression "(byte *)((long)puVar2 + 0x45)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar2 + 0x45)" ( (binary_expression "(long)puVar2 + 0x45" (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "((bfd_target *)puVar2[1] != (link_info.output_bfd)->xvec)" ( (binary_expression "(bfd_target *)puVar2[1] != (link_info.output_bfd)->xvec" (cast_expression "(bfd_target *)puVar2[1]" ( (type_descriptor "bfd_target *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[1]" identifier [ number_literal ])) != (field_expression "(link_info.output_bfd)->xvec" (parenthesized_expression "(link_info.output_bfd)" ( (field_expression "link_info.output_bfd" identifier . field_identifier) )) -> field_identifier)) ))) )) (compound_statement "{\n    bfd_close(puVar2);\n    return 0;\n  }" { (expression_statement "bfd_close(puVar2);" (call_expression "bfd_close(puVar2)" identifier (argument_list "(puVar2)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((int)needed_1 == 0) {\n    iVar1 = bfd_elf_get_bfd_needed_list(puVar2,&needs);\n    if (iVar1 == 0) {\n      pcVar5 = (char *)dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);\n      einfo(pcVar5,puVar2);\n    }\n    if (needs != (bfd_link_needed_list *)0x0) {\n      global_vercheck_needed = needs;\n      global_vercheck_failed = 0;\n      real_func = gldelf64ppc_vercheck;\n      lang_for_each_input_file(ppc_for_each_input_file_wrapper);\n      if (global_vercheck_failed == 0) {\n        for (; bVar11 = needs == (bfd_link_needed_list *)0x0, !bVar11; needs = needs->next) {\n          bVar10 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)needs->name;\n          pbVar9 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar10 = *pbVar7 < *pbVar9;\n            bVar11 = *pbVar7 == *pbVar9;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n          } while (bVar11);\n          if ((!bVar10 && !bVar11) == bVar10) goto LAB_00148998;\n        }\n      }\n      bfd_close(puVar2);\n      return 0;\n    }\n  }" if (parenthesized_expression "((int)needed_1 == 0)" ( (binary_expression "(int)needed_1 == 0" (cast_expression "(int)needed_1" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal) )) (compound_statement "{\n    iVar1 = bfd_elf_get_bfd_needed_list(puVar2,&needs);\n    if (iVar1 == 0) {\n      pcVar5 = (char *)dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);\n      einfo(pcVar5,puVar2);\n    }\n    if (needs != (bfd_link_needed_list *)0x0) {\n      global_vercheck_needed = needs;\n      global_vercheck_failed = 0;\n      real_func = gldelf64ppc_vercheck;\n      lang_for_each_input_file(ppc_for_each_input_file_wrapper);\n      if (global_vercheck_failed == 0) {\n        for (; bVar11 = needs == (bfd_link_needed_list *)0x0, !bVar11; needs = needs->next) {\n          bVar10 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)needs->name;\n          pbVar9 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar10 = *pbVar7 < *pbVar9;\n            bVar11 = *pbVar7 == *pbVar9;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n          } while (bVar11);\n          if ((!bVar10 && !bVar11) == bVar10) goto LAB_00148998;\n        }\n      }\n      bfd_close(puVar2);\n      return 0;\n    }\n  }" { (expression_statement "iVar1 = bfd_elf_get_bfd_needed_list(puVar2,&needs);" (assignment_expression "iVar1 = bfd_elf_get_bfd_needed_list(puVar2,&needs)" identifier = (call_expression "bfd_elf_get_bfd_needed_list(puVar2,&needs)" identifier (argument_list "(puVar2,&needs)" ( identifier , (pointer_expression "&needs" & identifier) )))) ;) (if_statement "if (iVar1 == 0) {\n      pcVar5 = (char *)dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);\n      einfo(pcVar5,puVar2);\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      pcVar5 = (char *)dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);\n      einfo(pcVar5,puVar2);\n    }" { (expression_statement "pcVar5 = (char *)dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);" (assignment_expression "pcVar5 = (char *)dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5)" identifier (argument_list "(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5)" ( number_literal , (string_literal ""%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "einfo(pcVar5,puVar2);" (call_expression "einfo(pcVar5,puVar2)" identifier (argument_list "(pcVar5,puVar2)" ( identifier , identifier ))) ;) })) (if_statement "if (needs != (bfd_link_needed_list *)0x0) {\n      global_vercheck_needed = needs;\n      global_vercheck_failed = 0;\n      real_func = gldelf64ppc_vercheck;\n      lang_for_each_input_file(ppc_for_each_input_file_wrapper);\n      if (global_vercheck_failed == 0) {\n        for (; bVar11 = needs == (bfd_link_needed_list *)0x0, !bVar11; needs = needs->next) {\n          bVar10 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)needs->name;\n          pbVar9 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar10 = *pbVar7 < *pbVar9;\n            bVar11 = *pbVar7 == *pbVar9;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n          } while (bVar11);\n          if ((!bVar10 && !bVar11) == bVar10) goto LAB_00148998;\n        }\n      }\n      bfd_close(puVar2);\n      return 0;\n    }" if (parenthesized_expression "(needs != (bfd_link_needed_list *)0x0)" ( (binary_expression "needs != (bfd_link_needed_list *)0x0" identifier != (cast_expression "(bfd_link_needed_list *)0x0" ( (type_descriptor "bfd_link_needed_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      global_vercheck_needed = needs;\n      global_vercheck_failed = 0;\n      real_func = gldelf64ppc_vercheck;\n      lang_for_each_input_file(ppc_for_each_input_file_wrapper);\n      if (global_vercheck_failed == 0) {\n        for (; bVar11 = needs == (bfd_link_needed_list *)0x0, !bVar11; needs = needs->next) {\n          bVar10 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)needs->name;\n          pbVar9 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar10 = *pbVar7 < *pbVar9;\n            bVar11 = *pbVar7 == *pbVar9;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n          } while (bVar11);\n          if ((!bVar10 && !bVar11) == bVar10) goto LAB_00148998;\n        }\n      }\n      bfd_close(puVar2);\n      return 0;\n    }" { (expression_statement "global_vercheck_needed = needs;" (assignment_expression "global_vercheck_needed = needs" identifier = identifier) ;) (expression_statement "global_vercheck_failed = 0;" (assignment_expression "global_vercheck_failed = 0" identifier = number_literal) ;) (expression_statement "real_func = gldelf64ppc_vercheck;" (assignment_expression "real_func = gldelf64ppc_vercheck" identifier = identifier) ;) (expression_statement "lang_for_each_input_file(ppc_for_each_input_file_wrapper);" (call_expression "lang_for_each_input_file(ppc_for_each_input_file_wrapper)" identifier (argument_list "(ppc_for_each_input_file_wrapper)" ( identifier ))) ;) (if_statement "if (global_vercheck_failed == 0) {\n        for (; bVar11 = needs == (bfd_link_needed_list *)0x0, !bVar11; needs = needs->next) {\n          bVar10 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)needs->name;\n          pbVar9 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar10 = *pbVar7 < *pbVar9;\n            bVar11 = *pbVar7 == *pbVar9;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n          } while (bVar11);\n          if ((!bVar10 && !bVar11) == bVar10) goto LAB_00148998;\n        }\n      }" if (parenthesized_expression "(global_vercheck_failed == 0)" ( (binary_expression "global_vercheck_failed == 0" identifier == number_literal) )) (compound_statement "{\n        for (; bVar11 = needs == (bfd_link_needed_list *)0x0, !bVar11; needs = needs->next) {\n          bVar10 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)needs->name;\n          pbVar9 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar10 = *pbVar7 < *pbVar9;\n            bVar11 = *pbVar7 == *pbVar9;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n          } while (bVar11);\n          if ((!bVar10 && !bVar11) == bVar10) goto LAB_00148998;\n        }\n      }" { (for_statement "for (; bVar11 = needs == (bfd_link_needed_list *)0x0, !bVar11; needs = needs->next) {\n          bVar10 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)needs->name;\n          pbVar9 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar10 = *pbVar7 < *pbVar9;\n            bVar11 = *pbVar7 == *pbVar9;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n          } while (bVar11);\n          if ((!bVar10 && !bVar11) == bVar10) goto LAB_00148998;\n        }" for ( ; (comma_expression "bVar11 = needs == (bfd_link_needed_list *)0x0, !bVar11" (assignment_expression "bVar11 = needs == (bfd_link_needed_list *)0x0" identifier = (binary_expression "needs == (bfd_link_needed_list *)0x0" identifier == (cast_expression "(bfd_link_needed_list *)0x0" ( (type_descriptor "bfd_link_needed_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) , (unary_expression "!bVar11" ! identifier)) ; (assignment_expression "needs = needs->next" identifier = (field_expression "needs->next" identifier -> field_identifier)) ) (compound_statement "{\n          bVar10 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)needs->name;\n          pbVar9 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar10 = *pbVar7 < *pbVar9;\n            bVar11 = *pbVar7 == *pbVar9;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n          } while (bVar11);\n          if ((!bVar10 && !bVar11) == bVar10) goto LAB_00148998;\n        }" { (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "lVar6 = 7;" (assignment_expression "lVar6 = 7" identifier = number_literal) ;) (expression_statement "pbVar7 = (byte *)needs->name;" (assignment_expression "pbVar7 = (byte *)needs->name" identifier = (cast_expression "(byte *)needs->name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "needs->name" identifier -> field_identifier))) ;) (expression_statement "pbVar9 = (byte *)"libc.so";" (assignment_expression "pbVar9 = (byte *)"libc.so"" identifier = (cast_expression "(byte *)"libc.so"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""libc.so"" " string_content "))) ;) (do_statement "do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar10 = *pbVar7 < *pbVar9;\n            bVar11 = *pbVar7 == *pbVar9;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n          } while (bVar11);" do (compound_statement "{\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar10 = *pbVar7 < *pbVar9;\n            bVar11 = *pbVar7 == *pbVar9;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n          }" { (if_statement "if (lVar6 == 0) break;" if (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar6 = lVar6 + -1;" (assignment_expression "lVar6 = lVar6 + -1" identifier = (binary_expression "lVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar7 < *pbVar9;" (assignment_expression "bVar10 = *pbVar7 < *pbVar9" identifier = (binary_expression "*pbVar7 < *pbVar9" (pointer_expression "*pbVar7" * identifier) < (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "bVar11 = *pbVar7 == *pbVar9;" (assignment_expression "bVar11 = *pbVar7 == *pbVar9" identifier = (binary_expression "*pbVar7 == *pbVar9" (pointer_expression "*pbVar7" * identifier) == (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar7 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar9 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (if_statement "if ((!bVar10 && !bVar11) == bVar10) goto LAB_00148998;" if (parenthesized_expression "((!bVar10 && !bVar11) == bVar10)" ( (binary_expression "(!bVar10 && !bVar11) == bVar10" (parenthesized_expression "(!bVar10 && !bVar11)" ( (binary_expression "!bVar10 && !bVar11" (unary_expression "!bVar10" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) == identifier) )) (goto_statement "goto LAB_00148998;" goto statement_identifier ;)) })) })) (expression_statement "bfd_close(puVar2);" (call_expression "bfd_close(puVar2)" identifier (argument_list "(puVar2)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) })) (labeled_statement "LAB_00148998:\n  iVar1 = bfd_stat(puVar2,&global_stat);" statement_identifier : (expression_statement "iVar1 = bfd_stat(puVar2,&global_stat);" (assignment_expression "iVar1 = bfd_stat(puVar2,&global_stat)" identifier = (call_expression "bfd_stat(puVar2,&global_stat)" identifier (argument_list "(puVar2,&global_stat)" ( identifier , (pointer_expression "&global_stat" & identifier) )))) ;)) (if_statement "if (iVar1 != 0) {\n    pcVar5 = (char *)dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5);\n    einfo(pcVar5,puVar2);\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    pcVar5 = (char *)dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5);\n    einfo(pcVar5,puVar2);\n  }" { (expression_statement "pcVar5 = (char *)dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5);" (assignment_expression "pcVar5 = (char *)dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5)" identifier (argument_list "(0,"%F%P: %pB: bfd_stat failed: %E\n",5)" ( number_literal , (string_literal ""%F%P: %pB: bfd_stat failed: %E\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "einfo(pcVar5,puVar2);" (call_expression "einfo(pcVar5,puVar2)" identifier (argument_list "(pcVar5,puVar2)" ( identifier , identifier ))) ;) })) (expression_statement "uVar3 = lbasename(*puVar2);" (assignment_expression "uVar3 = lbasename(*puVar2)" identifier = (call_expression "lbasename(*puVar2)" identifier (argument_list "(*puVar2)" ( (pointer_expression "*puVar2" * identifier) )))) ;) (if_statement "if (verbose != 0) {\n    pcVar5 = (char *)dcgettext(0,"found %s at %s\n",5);\n    info_msg(pcVar5,uVar3,uVar8);\n  }" if (parenthesized_expression "(verbose != 0)" ( (binary_expression "verbose != 0" identifier != number_literal) )) (compound_statement "{\n    pcVar5 = (char *)dcgettext(0,"found %s at %s\n",5);\n    info_msg(pcVar5,uVar3,uVar8);\n  }" { (expression_statement "pcVar5 = (char *)dcgettext(0,"found %s at %s\n",5);" (assignment_expression "pcVar5 = (char *)dcgettext(0,"found %s at %s\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"found %s at %s\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"found %s at %s\n",5)" identifier (argument_list "(0,"found %s at %s\n",5)" ( number_literal , (string_literal ""found %s at %s\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "info_msg(pcVar5,uVar3,uVar8);" (call_expression "info_msg(pcVar5,uVar3,uVar8)" identifier (argument_list "(pcVar5,uVar3,uVar8)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "global_found = (lang_input_statement_type *)0x0;" (assignment_expression "global_found = (lang_input_statement_type *)0x0" identifier = (cast_expression "(lang_input_statement_type *)0x0" ( (type_descriptor "lang_input_statement_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "real_func = gldelf64ppc_stat_needed;" (assignment_expression "real_func = gldelf64ppc_stat_needed" identifier = identifier) ;) (expression_statement "lang_for_each_input_file(ppc_for_each_input_file_wrapper);" (call_expression "lang_for_each_input_file(ppc_for_each_input_file_wrapper)" identifier (argument_list "(ppc_for_each_input_file_wrapper)" ( identifier ))) ;) (if_statement "if (global_found != (lang_input_statement_type *)0x0) {\n    return 1;\n  }" if (parenthesized_expression "(global_found != (lang_input_statement_type *)0x0)" ( (binary_expression "global_found != (lang_input_statement_type *)0x0" identifier != (cast_expression "(lang_input_statement_type *)0x0" ( (type_descriptor "lang_input_statement_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "bfd_elf_set_dt_needed_name(puVar2,uVar3);" (call_expression "bfd_elf_set_dt_needed_name(puVar2,uVar3)" identifier (argument_list "(puVar2,uVar3)" ( identifier , identifier ))) ;) (if_statement "if (needed->by != (bfd *)0x0) {\n    uVar4 = bfd_elf_get_dyn_lib_class();\n    uVar8 = 0xe;\n    if ((uVar4 & 4) != 0) goto LAB_00148aef;\n  }" if (parenthesized_expression "(needed->by != (bfd *)0x0)" ( (binary_expression "needed->by != (bfd *)0x0" (field_expression "needed->by" identifier -> field_identifier) != (cast_expression "(bfd *)0x0" ( (type_descriptor "bfd *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar4 = bfd_elf_get_dyn_lib_class();\n    uVar8 = 0xe;\n    if ((uVar4 & 4) != 0) goto LAB_00148aef;\n  }" { (expression_statement "uVar4 = bfd_elf_get_dyn_lib_class();" (assignment_expression "uVar4 = bfd_elf_get_dyn_lib_class()" identifier = (call_expression "bfd_elf_get_dyn_lib_class()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar8 = 0xe;" (assignment_expression "uVar8 = 0xe" identifier = number_literal) ;) (if_statement "if ((uVar4 & 4) != 0) goto LAB_00148aef;" if (parenthesized_expression "((uVar4 & 4) != 0)" ( (binary_expression "(uVar4 & 4) != 0" (parenthesized_expression "(uVar4 & 4)" ( (binary_expression "uVar4 & 4" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00148aef;" goto statement_identifier ;)) })) (expression_statement "uVar8 = 2;" (assignment_expression "uVar8 = 2" identifier = number_literal) ;) (labeled_statement "LAB_00148aef:\n  bfd_elf_set_dyn_lib_class(puVar2,uVar8);" statement_identifier : (expression_statement "bfd_elf_set_dyn_lib_class(puVar2,uVar8);" (call_expression "bfd_elf_set_dyn_lib_class(puVar2,uVar8)" identifier (argument_list "(puVar2,uVar8)" ( identifier , identifier ))) ;)) (expression_statement "iVar1 = (**(code **)(puVar2[1] + 0x2c0))(puVar2,&link_info);" (assignment_expression "iVar1 = (**(code **)(puVar2[1] + 0x2c0))(puVar2,&link_info)" identifier = (call_expression "(**(code **)(puVar2[1] + 0x2c0))(puVar2,&link_info)" (parenthesized_expression "(**(code **)(puVar2[1] + 0x2c0))" ( (pointer_expression "**(code **)(puVar2[1] + 0x2c0)" * (pointer_expression "*(code **)(puVar2[1] + 0x2c0)" * (cast_expression "(code **)(puVar2[1] + 0x2c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2[1] + 0x2c0)" ( (binary_expression "puVar2[1] + 0x2c0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(puVar2,&link_info)" ( identifier , (pointer_expression "&link_info" & identifier) )))) ;) (if_statement "if (iVar1 == 0) {\n    pcVar5 = (char *)dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5);\n    einfo(pcVar5,puVar2);\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    pcVar5 = (char *)dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5);\n    einfo(pcVar5,puVar2);\n  }" { (expression_statement "pcVar5 = (char *)dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5);" (assignment_expression "pcVar5 = (char *)dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5)" identifier (argument_list "(0,"%F%P: %pB: error adding symbols: %E\n",5)" ( number_literal , (string_literal ""%F%P: %pB: error adding symbols: %E\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "einfo(pcVar5,puVar2);" (call_expression "einfo(pcVar5,puVar2)" identifier (argument_list "(pcVar5,puVar2)" ( identifier , identifier ))) ;) })) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "undefined4 FUN_00148880(long *param_1,undefined8 param_2,int param_3)\n\n{\n  int iVar1;\n  undefined8 *puVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  ulong uVar5;\n  long lVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  bool bVar9;\n  bool bVar10;\n  byte bVar11;\n  long *local_30;\n  \n  bVar11 = 0;\n  puVar2 = (undefined8 *)bfd_openr(param_2,**(undefined8 **)(DAT_002a6810 + 8));\n  if (puVar2 == (undefined8 *)0x0) {\n    if (DAT_002a69d8 != 0) {\n      uVar3 = dcgettext(0,"attempt to open %s failed\n",5);\n      FUN_00128320(uVar3,param_2);\n      return 0;\n    }\n    return 0;\n  }\n  *(uint *)((long)puVar2 + 0x44) = *(uint *)((long)puVar2 + 0x44) | 0x100000;\n  iVar1 = bfd_check_format(puVar2,1);\n  if (iVar1 == 0) {\n    bfd_close(puVar2);\n    return 0;\n  }\n  if (((*(byte *)((long)puVar2 + 0x45) & 8) == 0) || (puVar2[1] != *(long *)(DAT_002a6810 + 8))) {\n    bfd_close(puVar2);\n    return 0;\n  }\n  if (param_3 == 0) {\n    iVar1 = bfd_elf_get_bfd_needed_list(puVar2,&local_30);\n    if (iVar1 == 0) {\n      uVar3 = dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);\n      FUN_001283c0(uVar3,puVar2);\n    }\n    if (local_30 != (long *)0x0) {\n      DAT_002a6370 = local_30;\n      DAT_002a6368 = 0;\n      _DAT_002a6418 = FUN_00149970;\n      FUN_0011bdc0(FUN_00144b50);\n      if (DAT_002a6368 == 0) {\n        for (; bVar10 = local_30 == (long *)0x0, !bVar10; local_30 = (long *)*local_30) {\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }\n      }\n      bfd_close(puVar2);\n      return 0;\n    }\n  }\nLAB_00148998:\n  iVar1 = bfd_stat(puVar2,&DAT_002a6380);\n  if (iVar1 != 0) {\n    uVar3 = dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5);\n    FUN_001283c0(uVar3,puVar2);\n  }\n  uVar3 = lbasename(*puVar2);\n  if (DAT_002a69d8 != 0) {\n    uVar4 = dcgettext(0,"found %s at %s\n",5);\n    FUN_00128320(uVar4,uVar3,param_2);\n  }\n  DAT_002a6378 = 0;\n  _DAT_002a6418 = FUN_001470e0;\n  FUN_0011bdc0(FUN_00144b50);\n  if (DAT_002a6378 != 0) {\n    return 1;\n  }\n  bfd_elf_set_dt_needed_name(puVar2,uVar3);\n  if (*param_1 != 0) {\n    uVar5 = bfd_elf_get_dyn_lib_class();\n    uVar3 = 0xe;\n    if ((uVar5 & 4) != 0) goto LAB_00148aef;\n  }\n  uVar3 = 2;\nLAB_00148aef:\n  bfd_elf_set_dyn_lib_class(puVar2,uVar3);\n  iVar1 = (**(code **)(puVar2[1] + 0x2c0))(puVar2,&DAT_002a67c0);\n  if (iVar1 == 0) {\n    uVar3 = dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5);\n    FUN_001283c0(uVar3,puVar2);\n  }\n  return 1;\n}\n\n" (function_definition "undefined4 FUN_00148880(long *param_1,undefined8 param_2,int param_3)\n\n{\n  int iVar1;\n  undefined8 *puVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  ulong uVar5;\n  long lVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  bool bVar9;\n  bool bVar10;\n  byte bVar11;\n  long *local_30;\n  \n  bVar11 = 0;\n  puVar2 = (undefined8 *)bfd_openr(param_2,**(undefined8 **)(DAT_002a6810 + 8));\n  if (puVar2 == (undefined8 *)0x0) {\n    if (DAT_002a69d8 != 0) {\n      uVar3 = dcgettext(0,"attempt to open %s failed\n",5);\n      FUN_00128320(uVar3,param_2);\n      return 0;\n    }\n    return 0;\n  }\n  *(uint *)((long)puVar2 + 0x44) = *(uint *)((long)puVar2 + 0x44) | 0x100000;\n  iVar1 = bfd_check_format(puVar2,1);\n  if (iVar1 == 0) {\n    bfd_close(puVar2);\n    return 0;\n  }\n  if (((*(byte *)((long)puVar2 + 0x45) & 8) == 0) || (puVar2[1] != *(long *)(DAT_002a6810 + 8))) {\n    bfd_close(puVar2);\n    return 0;\n  }\n  if (param_3 == 0) {\n    iVar1 = bfd_elf_get_bfd_needed_list(puVar2,&local_30);\n    if (iVar1 == 0) {\n      uVar3 = dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);\n      FUN_001283c0(uVar3,puVar2);\n    }\n    if (local_30 != (long *)0x0) {\n      DAT_002a6370 = local_30;\n      DAT_002a6368 = 0;\n      _DAT_002a6418 = FUN_00149970;\n      FUN_0011bdc0(FUN_00144b50);\n      if (DAT_002a6368 == 0) {\n        for (; bVar10 = local_30 == (long *)0x0, !bVar10; local_30 = (long *)*local_30) {\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }\n      }\n      bfd_close(puVar2);\n      return 0;\n    }\n  }\nLAB_00148998:\n  iVar1 = bfd_stat(puVar2,&DAT_002a6380);\n  if (iVar1 != 0) {\n    uVar3 = dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5);\n    FUN_001283c0(uVar3,puVar2);\n  }\n  uVar3 = lbasename(*puVar2);\n  if (DAT_002a69d8 != 0) {\n    uVar4 = dcgettext(0,"found %s at %s\n",5);\n    FUN_00128320(uVar4,uVar3,param_2);\n  }\n  DAT_002a6378 = 0;\n  _DAT_002a6418 = FUN_001470e0;\n  FUN_0011bdc0(FUN_00144b50);\n  if (DAT_002a6378 != 0) {\n    return 1;\n  }\n  bfd_elf_set_dt_needed_name(puVar2,uVar3);\n  if (*param_1 != 0) {\n    uVar5 = bfd_elf_get_dyn_lib_class();\n    uVar3 = 0xe;\n    if ((uVar5 & 4) != 0) goto LAB_00148aef;\n  }\n  uVar3 = 2;\nLAB_00148aef:\n  bfd_elf_set_dyn_lib_class(puVar2,uVar3);\n  iVar1 = (**(code **)(puVar2[1] + 0x2c0))(puVar2,&DAT_002a67c0);\n  if (iVar1 == 0) {\n    uVar3 = dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5);\n    FUN_001283c0(uVar3,puVar2);\n  }\n  return 1;\n}" type_identifier (function_declarator "FUN_00148880(long *param_1,undefined8 param_2,int param_3)" identifier (parameter_list "(long *param_1,undefined8 param_2,int param_3)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined8 *puVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  ulong uVar5;\n  long lVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  bool bVar9;\n  bool bVar10;\n  byte bVar11;\n  long *local_30;\n  \n  bVar11 = 0;\n  puVar2 = (undefined8 *)bfd_openr(param_2,**(undefined8 **)(DAT_002a6810 + 8));\n  if (puVar2 == (undefined8 *)0x0) {\n    if (DAT_002a69d8 != 0) {\n      uVar3 = dcgettext(0,"attempt to open %s failed\n",5);\n      FUN_00128320(uVar3,param_2);\n      return 0;\n    }\n    return 0;\n  }\n  *(uint *)((long)puVar2 + 0x44) = *(uint *)((long)puVar2 + 0x44) | 0x100000;\n  iVar1 = bfd_check_format(puVar2,1);\n  if (iVar1 == 0) {\n    bfd_close(puVar2);\n    return 0;\n  }\n  if (((*(byte *)((long)puVar2 + 0x45) & 8) == 0) || (puVar2[1] != *(long *)(DAT_002a6810 + 8))) {\n    bfd_close(puVar2);\n    return 0;\n  }\n  if (param_3 == 0) {\n    iVar1 = bfd_elf_get_bfd_needed_list(puVar2,&local_30);\n    if (iVar1 == 0) {\n      uVar3 = dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);\n      FUN_001283c0(uVar3,puVar2);\n    }\n    if (local_30 != (long *)0x0) {\n      DAT_002a6370 = local_30;\n      DAT_002a6368 = 0;\n      _DAT_002a6418 = FUN_00149970;\n      FUN_0011bdc0(FUN_00144b50);\n      if (DAT_002a6368 == 0) {\n        for (; bVar10 = local_30 == (long *)0x0, !bVar10; local_30 = (long *)*local_30) {\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }\n      }\n      bfd_close(puVar2);\n      return 0;\n    }\n  }\nLAB_00148998:\n  iVar1 = bfd_stat(puVar2,&DAT_002a6380);\n  if (iVar1 != 0) {\n    uVar3 = dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5);\n    FUN_001283c0(uVar3,puVar2);\n  }\n  uVar3 = lbasename(*puVar2);\n  if (DAT_002a69d8 != 0) {\n    uVar4 = dcgettext(0,"found %s at %s\n",5);\n    FUN_00128320(uVar4,uVar3,param_2);\n  }\n  DAT_002a6378 = 0;\n  _DAT_002a6418 = FUN_001470e0;\n  FUN_0011bdc0(FUN_00144b50);\n  if (DAT_002a6378 != 0) {\n    return 1;\n  }\n  bfd_elf_set_dt_needed_name(puVar2,uVar3);\n  if (*param_1 != 0) {\n    uVar5 = bfd_elf_get_dyn_lib_class();\n    uVar3 = 0xe;\n    if ((uVar5 & 4) != 0) goto LAB_00148aef;\n  }\n  uVar3 = 2;\nLAB_00148aef:\n  bfd_elf_set_dyn_lib_class(puVar2,uVar3);\n  iVar1 = (**(code **)(puVar2[1] + 0x2c0))(puVar2,&DAT_002a67c0);\n  if (iVar1 == 0) {\n    uVar3 = dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5);\n    FUN_001283c0(uVar3,puVar2);\n  }\n  return 1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "byte bVar11;" type_identifier identifier ;) (declaration "long *local_30;" (sized_type_specifier "long" long) (pointer_declarator "*local_30" * identifier) ;) (expression_statement "bVar11 = 0;" (assignment_expression "bVar11 = 0" identifier = number_literal) ;) (expression_statement "puVar2 = (undefined8 *)bfd_openr(param_2,**(undefined8 **)(DAT_002a6810 + 8));" (assignment_expression "puVar2 = (undefined8 *)bfd_openr(param_2,**(undefined8 **)(DAT_002a6810 + 8))" identifier = (cast_expression "(undefined8 *)bfd_openr(param_2,**(undefined8 **)(DAT_002a6810 + 8))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_openr(param_2,**(undefined8 **)(DAT_002a6810 + 8))" identifier (argument_list "(param_2,**(undefined8 **)(DAT_002a6810 + 8))" ( identifier , (pointer_expression "**(undefined8 **)(DAT_002a6810 + 8)" * (pointer_expression "*(undefined8 **)(DAT_002a6810 + 8)" * (cast_expression "(undefined8 **)(DAT_002a6810 + 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(DAT_002a6810 + 8)" ( (binary_expression "DAT_002a6810 + 8" identifier + number_literal) ))))) ))))) ;) (if_statement "if (puVar2 == (undefined8 *)0x0) {\n    if (DAT_002a69d8 != 0) {\n      uVar3 = dcgettext(0,"attempt to open %s failed\n",5);\n      FUN_00128320(uVar3,param_2);\n      return 0;\n    }\n    return 0;\n  }" if (parenthesized_expression "(puVar2 == (undefined8 *)0x0)" ( (binary_expression "puVar2 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (DAT_002a69d8 != 0) {\n      uVar3 = dcgettext(0,"attempt to open %s failed\n",5);\n      FUN_00128320(uVar3,param_2);\n      return 0;\n    }\n    return 0;\n  }" { (if_statement "if (DAT_002a69d8 != 0) {\n      uVar3 = dcgettext(0,"attempt to open %s failed\n",5);\n      FUN_00128320(uVar3,param_2);\n      return 0;\n    }" if (parenthesized_expression "(DAT_002a69d8 != 0)" ( (binary_expression "DAT_002a69d8 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar3 = dcgettext(0,"attempt to open %s failed\n",5);\n      FUN_00128320(uVar3,param_2);\n      return 0;\n    }" { (expression_statement "uVar3 = dcgettext(0,"attempt to open %s failed\n",5);" (assignment_expression "uVar3 = dcgettext(0,"attempt to open %s failed\n",5)" identifier = (call_expression "dcgettext(0,"attempt to open %s failed\n",5)" identifier (argument_list "(0,"attempt to open %s failed\n",5)" ( number_literal , (string_literal ""attempt to open %s failed\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00128320(uVar3,param_2);" (call_expression "FUN_00128320(uVar3,param_2)" identifier (argument_list "(uVar3,param_2)" ( identifier , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (return_statement "return 0;" return number_literal ;) })) (expression_statement "*(uint *)((long)puVar2 + 0x44) = *(uint *)((long)puVar2 + 0x44) | 0x100000;" (assignment_expression "*(uint *)((long)puVar2 + 0x44) = *(uint *)((long)puVar2 + 0x44) | 0x100000" (pointer_expression "*(uint *)((long)puVar2 + 0x44)" * (cast_expression "(uint *)((long)puVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar2 + 0x44)" ( (binary_expression "(long)puVar2 + 0x44" (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(uint *)((long)puVar2 + 0x44) | 0x100000" (pointer_expression "*(uint *)((long)puVar2 + 0x44)" * (cast_expression "(uint *)((long)puVar2 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar2 + 0x44)" ( (binary_expression "(long)puVar2 + 0x44" (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) | number_literal)) ;) (expression_statement "iVar1 = bfd_check_format(puVar2,1);" (assignment_expression "iVar1 = bfd_check_format(puVar2,1)" identifier = (call_expression "bfd_check_format(puVar2,1)" identifier (argument_list "(puVar2,1)" ( identifier , number_literal )))) ;) (if_statement "if (iVar1 == 0) {\n    bfd_close(puVar2);\n    return 0;\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    bfd_close(puVar2);\n    return 0;\n  }" { (expression_statement "bfd_close(puVar2);" (call_expression "bfd_close(puVar2)" identifier (argument_list "(puVar2)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (((*(byte *)((long)puVar2 + 0x45) & 8) == 0) || (puVar2[1] != *(long *)(DAT_002a6810 + 8))) {\n    bfd_close(puVar2);\n    return 0;\n  }" if (parenthesized_expression "(((*(byte *)((long)puVar2 + 0x45) & 8) == 0) || (puVar2[1] != *(long *)(DAT_002a6810 + 8)))" ( (binary_expression "((*(byte *)((long)puVar2 + 0x45) & 8) == 0) || (puVar2[1] != *(long *)(DAT_002a6810 + 8))" (parenthesized_expression "((*(byte *)((long)puVar2 + 0x45) & 8) == 0)" ( (binary_expression "(*(byte *)((long)puVar2 + 0x45) & 8) == 0" (parenthesized_expression "(*(byte *)((long)puVar2 + 0x45) & 8)" ( (binary_expression "*(byte *)((long)puVar2 + 0x45) & 8" (pointer_expression "*(byte *)((long)puVar2 + 0x45)" * (cast_expression "(byte *)((long)puVar2 + 0x45)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar2 + 0x45)" ( (binary_expression "(long)puVar2 + 0x45" (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "(puVar2[1] != *(long *)(DAT_002a6810 + 8))" ( (binary_expression "puVar2[1] != *(long *)(DAT_002a6810 + 8)" (subscript_expression "puVar2[1]" identifier [ number_literal ]) != (pointer_expression "*(long *)(DAT_002a6810 + 8)" * (cast_expression "(long *)(DAT_002a6810 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002a6810 + 8)" ( (binary_expression "DAT_002a6810 + 8" identifier + number_literal) ))))) ))) )) (compound_statement "{\n    bfd_close(puVar2);\n    return 0;\n  }" { (expression_statement "bfd_close(puVar2);" (call_expression "bfd_close(puVar2)" identifier (argument_list "(puVar2)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (param_3 == 0) {\n    iVar1 = bfd_elf_get_bfd_needed_list(puVar2,&local_30);\n    if (iVar1 == 0) {\n      uVar3 = dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);\n      FUN_001283c0(uVar3,puVar2);\n    }\n    if (local_30 != (long *)0x0) {\n      DAT_002a6370 = local_30;\n      DAT_002a6368 = 0;\n      _DAT_002a6418 = FUN_00149970;\n      FUN_0011bdc0(FUN_00144b50);\n      if (DAT_002a6368 == 0) {\n        for (; bVar10 = local_30 == (long *)0x0, !bVar10; local_30 = (long *)*local_30) {\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }\n      }\n      bfd_close(puVar2);\n      return 0;\n    }\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar1 = bfd_elf_get_bfd_needed_list(puVar2,&local_30);\n    if (iVar1 == 0) {\n      uVar3 = dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);\n      FUN_001283c0(uVar3,puVar2);\n    }\n    if (local_30 != (long *)0x0) {\n      DAT_002a6370 = local_30;\n      DAT_002a6368 = 0;\n      _DAT_002a6418 = FUN_00149970;\n      FUN_0011bdc0(FUN_00144b50);\n      if (DAT_002a6368 == 0) {\n        for (; bVar10 = local_30 == (long *)0x0, !bVar10; local_30 = (long *)*local_30) {\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }\n      }\n      bfd_close(puVar2);\n      return 0;\n    }\n  }" { (expression_statement "iVar1 = bfd_elf_get_bfd_needed_list(puVar2,&local_30);" (assignment_expression "iVar1 = bfd_elf_get_bfd_needed_list(puVar2,&local_30)" identifier = (call_expression "bfd_elf_get_bfd_needed_list(puVar2,&local_30)" identifier (argument_list "(puVar2,&local_30)" ( identifier , (pointer_expression "&local_30" & identifier) )))) ;) (if_statement "if (iVar1 == 0) {\n      uVar3 = dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);\n      FUN_001283c0(uVar3,puVar2);\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar3 = dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);\n      FUN_001283c0(uVar3,puVar2);\n    }" { (expression_statement "uVar3 = dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);" (assignment_expression "uVar3 = dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5)" identifier = (call_expression "dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5)" identifier (argument_list "(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5)" ( number_literal , (string_literal ""%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_001283c0(uVar3,puVar2);" (call_expression "FUN_001283c0(uVar3,puVar2)" identifier (argument_list "(uVar3,puVar2)" ( identifier , identifier ))) ;) })) (if_statement "if (local_30 != (long *)0x0) {\n      DAT_002a6370 = local_30;\n      DAT_002a6368 = 0;\n      _DAT_002a6418 = FUN_00149970;\n      FUN_0011bdc0(FUN_00144b50);\n      if (DAT_002a6368 == 0) {\n        for (; bVar10 = local_30 == (long *)0x0, !bVar10; local_30 = (long *)*local_30) {\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }\n      }\n      bfd_close(puVar2);\n      return 0;\n    }" if (parenthesized_expression "(local_30 != (long *)0x0)" ( (binary_expression "local_30 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      DAT_002a6370 = local_30;\n      DAT_002a6368 = 0;\n      _DAT_002a6418 = FUN_00149970;\n      FUN_0011bdc0(FUN_00144b50);\n      if (DAT_002a6368 == 0) {\n        for (; bVar10 = local_30 == (long *)0x0, !bVar10; local_30 = (long *)*local_30) {\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }\n      }\n      bfd_close(puVar2);\n      return 0;\n    }" { (expression_statement "DAT_002a6370 = local_30;" (assignment_expression "DAT_002a6370 = local_30" identifier = identifier) ;) (expression_statement "DAT_002a6368 = 0;" (assignment_expression "DAT_002a6368 = 0" identifier = number_literal) ;) (expression_statement "_DAT_002a6418 = FUN_00149970;" (assignment_expression "_DAT_002a6418 = FUN_00149970" identifier = identifier) ;) (expression_statement "FUN_0011bdc0(FUN_00144b50);" (call_expression "FUN_0011bdc0(FUN_00144b50)" identifier (argument_list "(FUN_00144b50)" ( identifier ))) ;) (if_statement "if (DAT_002a6368 == 0) {\n        for (; bVar10 = local_30 == (long *)0x0, !bVar10; local_30 = (long *)*local_30) {\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }\n      }" if (parenthesized_expression "(DAT_002a6368 == 0)" ( (binary_expression "DAT_002a6368 == 0" identifier == number_literal) )) (compound_statement "{\n        for (; bVar10 = local_30 == (long *)0x0, !bVar10; local_30 = (long *)*local_30) {\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }\n      }" { (for_statement "for (; bVar10 = local_30 == (long *)0x0, !bVar10; local_30 = (long *)*local_30) {\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }" for ( ; (comma_expression "bVar10 = local_30 == (long *)0x0, !bVar10" (assignment_expression "bVar10 = local_30 == (long *)0x0" identifier = (binary_expression "local_30 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal))) , (unary_expression "!bVar10" ! identifier)) ; (assignment_expression "local_30 = (long *)*local_30" identifier = (cast_expression "(long *)*local_30" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_30" * identifier))) ) (compound_statement "{\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }" { (expression_statement "bVar9 = false;" (assignment_expression "bVar9 = false" identifier = false) ;) (expression_statement "lVar6 = 7;" (assignment_expression "lVar6 = 7" identifier = number_literal) ;) (expression_statement "pbVar7 = (byte *)local_30[2];" (assignment_expression "pbVar7 = (byte *)local_30[2]" identifier = (cast_expression "(byte *)local_30[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_30[2]" identifier [ number_literal ]))) ;) (expression_statement "pbVar8 = (byte *)"libc.so";" (assignment_expression "pbVar8 = (byte *)"libc.so"" identifier = (cast_expression "(byte *)"libc.so"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""libc.so"" " string_content "))) ;) (do_statement "do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);" do (compound_statement "{\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          }" { (if_statement "if (lVar6 == 0) break;" if (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar6 = lVar6 + -1;" (assignment_expression "lVar6 = lVar6 + -1" identifier = (binary_expression "lVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar9 = *pbVar7 < *pbVar8;" (assignment_expression "bVar9 = *pbVar7 < *pbVar8" identifier = (binary_expression "*pbVar7 < *pbVar8" (pointer_expression "*pbVar7" * identifier) < (pointer_expression "*pbVar8" * identifier))) ;) (expression_statement "bVar10 = *pbVar7 == *pbVar8;" (assignment_expression "bVar10 = *pbVar7 == *pbVar8" identifier = (binary_expression "*pbVar7 == *pbVar8" (pointer_expression "*pbVar7" * identifier) == (pointer_expression "*pbVar8" * identifier))) ;) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1" identifier = (binary_expression "pbVar7 + (ulong)bVar11 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar11 * -2" identifier + (binary_expression "(ulong)bVar11 * -2" (cast_expression "(ulong)bVar11" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1" identifier = (binary_expression "pbVar8 + (ulong)bVar11 * -2 + 1" (binary_expression "pbVar8 + (ulong)bVar11 * -2" identifier + (binary_expression "(ulong)bVar11 * -2" (cast_expression "(ulong)bVar11" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar10)" ( identifier )) ;) (if_statement "if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;" if (parenthesized_expression "((!bVar9 && !bVar10) == bVar9)" ( (binary_expression "(!bVar9 && !bVar10) == bVar9" (parenthesized_expression "(!bVar9 && !bVar10)" ( (binary_expression "!bVar9 && !bVar10" (unary_expression "!bVar9" ! identifier) && (unary_expression "!bVar10" ! identifier)) )) == identifier) )) (goto_statement "goto LAB_00148998;" goto statement_identifier ;)) })) })) (expression_statement "bfd_close(puVar2);" (call_expression "bfd_close(puVar2)" identifier (argument_list "(puVar2)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) })) (labeled_statement "LAB_00148998:\n  iVar1 = bfd_stat(puVar2,&DAT_002a6380);" statement_identifier : (expression_statement "iVar1 = bfd_stat(puVar2,&DAT_002a6380);" (assignment_expression "iVar1 = bfd_stat(puVar2,&DAT_002a6380)" identifier = (call_expression "bfd_stat(puVar2,&DAT_002a6380)" identifier (argument_list "(puVar2,&DAT_002a6380)" ( identifier , (pointer_expression "&DAT_002a6380" & identifier) )))) ;)) (if_statement "if (iVar1 != 0) {\n    uVar3 = dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5);\n    FUN_001283c0(uVar3,puVar2);\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar3 = dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5);\n    FUN_001283c0(uVar3,puVar2);\n  }" { (expression_statement "uVar3 = dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5);" (assignment_expression "uVar3 = dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5)" identifier = (call_expression "dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5)" identifier (argument_list "(0,"%F%P: %pB: bfd_stat failed: %E\n",5)" ( number_literal , (string_literal ""%F%P: %pB: bfd_stat failed: %E\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_001283c0(uVar3,puVar2);" (call_expression "FUN_001283c0(uVar3,puVar2)" identifier (argument_list "(uVar3,puVar2)" ( identifier , identifier ))) ;) })) (expression_statement "uVar3 = lbasename(*puVar2);" (assignment_expression "uVar3 = lbasename(*puVar2)" identifier = (call_expression "lbasename(*puVar2)" identifier (argument_list "(*puVar2)" ( (pointer_expression "*puVar2" * identifier) )))) ;) (if_statement "if (DAT_002a69d8 != 0) {\n    uVar4 = dcgettext(0,"found %s at %s\n",5);\n    FUN_00128320(uVar4,uVar3,param_2);\n  }" if (parenthesized_expression "(DAT_002a69d8 != 0)" ( (binary_expression "DAT_002a69d8 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar4 = dcgettext(0,"found %s at %s\n",5);\n    FUN_00128320(uVar4,uVar3,param_2);\n  }" { (expression_statement "uVar4 = dcgettext(0,"found %s at %s\n",5);" (assignment_expression "uVar4 = dcgettext(0,"found %s at %s\n",5)" identifier = (call_expression "dcgettext(0,"found %s at %s\n",5)" identifier (argument_list "(0,"found %s at %s\n",5)" ( number_literal , (string_literal ""found %s at %s\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00128320(uVar4,uVar3,param_2);" (call_expression "FUN_00128320(uVar4,uVar3,param_2)" identifier (argument_list "(uVar4,uVar3,param_2)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "DAT_002a6378 = 0;" (assignment_expression "DAT_002a6378 = 0" identifier = number_literal) ;) (expression_statement "_DAT_002a6418 = FUN_001470e0;" (assignment_expression "_DAT_002a6418 = FUN_001470e0" identifier = identifier) ;) (expression_statement "FUN_0011bdc0(FUN_00144b50);" (call_expression "FUN_0011bdc0(FUN_00144b50)" identifier (argument_list "(FUN_00144b50)" ( identifier ))) ;) (if_statement "if (DAT_002a6378 != 0) {\n    return 1;\n  }" if (parenthesized_expression "(DAT_002a6378 != 0)" ( (binary_expression "DAT_002a6378 != 0" identifier != number_literal) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "bfd_elf_set_dt_needed_name(puVar2,uVar3);" (call_expression "bfd_elf_set_dt_needed_name(puVar2,uVar3)" identifier (argument_list "(puVar2,uVar3)" ( identifier , identifier ))) ;) (if_statement "if (*param_1 != 0) {\n    uVar5 = bfd_elf_get_dyn_lib_class();\n    uVar3 = 0xe;\n    if ((uVar5 & 4) != 0) goto LAB_00148aef;\n  }" if (parenthesized_expression "(*param_1 != 0)" ( (binary_expression "*param_1 != 0" (pointer_expression "*param_1" * identifier) != number_literal) )) (compound_statement "{\n    uVar5 = bfd_elf_get_dyn_lib_class();\n    uVar3 = 0xe;\n    if ((uVar5 & 4) != 0) goto LAB_00148aef;\n  }" { (expression_statement "uVar5 = bfd_elf_get_dyn_lib_class();" (assignment_expression "uVar5 = bfd_elf_get_dyn_lib_class()" identifier = (call_expression "bfd_elf_get_dyn_lib_class()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar3 = 0xe;" (assignment_expression "uVar3 = 0xe" identifier = number_literal) ;) (if_statement "if ((uVar5 & 4) != 0) goto LAB_00148aef;" if (parenthesized_expression "((uVar5 & 4) != 0)" ( (binary_expression "(uVar5 & 4) != 0" (parenthesized_expression "(uVar5 & 4)" ( (binary_expression "uVar5 & 4" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00148aef;" goto statement_identifier ;)) })) (expression_statement "uVar3 = 2;" (assignment_expression "uVar3 = 2" identifier = number_literal) ;) (labeled_statement "LAB_00148aef:\n  bfd_elf_set_dyn_lib_class(puVar2,uVar3);" statement_identifier : (expression_statement "bfd_elf_set_dyn_lib_class(puVar2,uVar3);" (call_expression "bfd_elf_set_dyn_lib_class(puVar2,uVar3)" identifier (argument_list "(puVar2,uVar3)" ( identifier , identifier ))) ;)) (expression_statement "iVar1 = (**(code **)(puVar2[1] + 0x2c0))(puVar2,&DAT_002a67c0);" (assignment_expression "iVar1 = (**(code **)(puVar2[1] + 0x2c0))(puVar2,&DAT_002a67c0)" identifier = (call_expression "(**(code **)(puVar2[1] + 0x2c0))(puVar2,&DAT_002a67c0)" (parenthesized_expression "(**(code **)(puVar2[1] + 0x2c0))" ( (pointer_expression "**(code **)(puVar2[1] + 0x2c0)" * (pointer_expression "*(code **)(puVar2[1] + 0x2c0)" * (cast_expression "(code **)(puVar2[1] + 0x2c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2[1] + 0x2c0)" ( (binary_expression "puVar2[1] + 0x2c0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(puVar2,&DAT_002a67c0)" ( identifier , (pointer_expression "&DAT_002a67c0" & identifier) )))) ;) (if_statement "if (iVar1 == 0) {\n    uVar3 = dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5);\n    FUN_001283c0(uVar3,puVar2);\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar3 = dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5);\n    FUN_001283c0(uVar3,puVar2);\n  }" { (expression_statement "uVar3 = dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5);" (assignment_expression "uVar3 = dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5)" identifier = (call_expression "dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5)" identifier (argument_list "(0,"%F%P: %pB: error adding symbols: %E\n",5)" ( number_literal , (string_literal ""%F%P: %pB: error adding symbols: %E\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_001283c0(uVar3,puVar2);" (call_expression "FUN_001283c0(uVar3,puVar2)" identifier (argument_list "(uVar3,puVar2)" ( identifier , identifier ))) ;) })) (return_statement "return 1;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != 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 , IDENT ))) ;) (return_statement return LIT ;) })) (return_statement return LIT ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) | LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) & LIT) )) == LIT) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == 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 , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (for_statement for ( ; (comma_expression (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT))) , (unary_expression ! IDENT)) ; (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )) (goto_statement goto statement_identifier ;)) })) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return LIT ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != 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 , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != 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 , IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) )) (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == 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 , IDENT ))) ;) })) (return_statement return LIT ;) })))
(function_definition "undefined4 FUN_00148880(long *param_1,undefined8 param_2,int param_3)\n\n{\n  int iVar1;\n  undefined8 *puVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  ulong uVar5;\n  long lVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  bool bVar9;\n  bool bVar10;\n  byte bVar11;\n  long *local_30;\n  \n  bVar11 = 0;\n  puVar2 = (undefined8 *)bfd_openr(param_2,**(undefined8 **)(DAT_002a6810 + 8));\n  if (puVar2 == (undefined8 *)0x0) {\n    if (DAT_002a69d8 != 0) {\n      uVar3 = dcgettext(0,"attempt to open %s failed\n",5);\n      FUN_00128320(uVar3,param_2);\n      return 0;\n    }\n    return 0;\n  }\n  *(uint *)((long)puVar2 + 0x44) = *(uint *)((long)puVar2 + 0x44) | 0x100000;\n  iVar1 = bfd_check_format(puVar2,1);\n  if (iVar1 == 0) {\n    bfd_close(puVar2);\n    return 0;\n  }\n  if (((*(byte *)((long)puVar2 + 0x45) & 8) == 0) || (puVar2[1] != *(long *)(DAT_002a6810 + 8))) {\n    bfd_close(puVar2);\n    return 0;\n  }\n  if (param_3 == 0) {\n    iVar1 = bfd_elf_get_bfd_needed_list(puVar2,&local_30);\n    if (iVar1 == 0) {\n      uVar3 = dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);\n      FUN_001283c0(uVar3,puVar2);\n    }\n    if (local_30 != (long *)0x0) {\n      DAT_002a6370 = local_30;\n      DAT_002a6368 = 0;\n      _DAT_002a6418 = FUN_00149970;\n      FUN_0011bdc0(FUN_00144b50);\n      if (DAT_002a6368 == 0) {\n        for (; bVar10 = local_30 == (long *)0x0, !bVar10; local_30 = (long *)*local_30) {\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }\n      }\n      bfd_close(puVar2);\n      return 0;\n    }\n  }\nLAB_00148998:\n  iVar1 = bfd_stat(puVar2,&DAT_002a6380);\n  if (iVar1 != 0) {\n    uVar3 = dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5);\n    FUN_001283c0(uVar3,puVar2);\n  }\n  uVar3 = lbasename(*puVar2);\n  if (DAT_002a69d8 != 0) {\n    uVar4 = dcgettext(0,"found %s at %s\n",5);\n    FUN_00128320(uVar4,uVar3,param_2);\n  }\n  DAT_002a6378 = 0;\n  _DAT_002a6418 = FUN_001470e0;\n  FUN_0011bdc0(FUN_00144b50);\n  if (DAT_002a6378 != 0) {\n    return 1;\n  }\n  bfd_elf_set_dt_needed_name(puVar2,uVar3);\n  if (*param_1 != 0) {\n    uVar5 = bfd_elf_get_dyn_lib_class();\n    uVar3 = 0xe;\n    if ((uVar5 & 4) != 0) goto LAB_00148aef;\n  }\n  uVar3 = 2;\nLAB_00148aef:\n  bfd_elf_set_dyn_lib_class(puVar2,uVar3);\n  iVar1 = (**(code **)(puVar2[1] + 0x2c0))(puVar2,&DAT_002a67c0);\n  if (iVar1 == 0) {\n    uVar3 = dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5);\n    FUN_001283c0(uVar3,puVar2);\n  }\n  return 1;\n}" (type_identifier "undefined4") (function_declarator "FUN_00148880(long *param_1,undefined8 param_2,int param_3)" (identifier "FUN_00148880") (parameter_list "(long *param_1,undefined8 param_2,int param_3)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  int iVar1;\n  undefined8 *puVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  ulong uVar5;\n  long lVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  bool bVar9;\n  bool bVar10;\n  byte bVar11;\n  long *local_30;\n  \n  bVar11 = 0;\n  puVar2 = (undefined8 *)bfd_openr(param_2,**(undefined8 **)(DAT_002a6810 + 8));\n  if (puVar2 == (undefined8 *)0x0) {\n    if (DAT_002a69d8 != 0) {\n      uVar3 = dcgettext(0,"attempt to open %s failed\n",5);\n      FUN_00128320(uVar3,param_2);\n      return 0;\n    }\n    return 0;\n  }\n  *(uint *)((long)puVar2 + 0x44) = *(uint *)((long)puVar2 + 0x44) | 0x100000;\n  iVar1 = bfd_check_format(puVar2,1);\n  if (iVar1 == 0) {\n    bfd_close(puVar2);\n    return 0;\n  }\n  if (((*(byte *)((long)puVar2 + 0x45) & 8) == 0) || (puVar2[1] != *(long *)(DAT_002a6810 + 8))) {\n    bfd_close(puVar2);\n    return 0;\n  }\n  if (param_3 == 0) {\n    iVar1 = bfd_elf_get_bfd_needed_list(puVar2,&local_30);\n    if (iVar1 == 0) {\n      uVar3 = dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);\n      FUN_001283c0(uVar3,puVar2);\n    }\n    if (local_30 != (long *)0x0) {\n      DAT_002a6370 = local_30;\n      DAT_002a6368 = 0;\n      _DAT_002a6418 = FUN_00149970;\n      FUN_0011bdc0(FUN_00144b50);\n      if (DAT_002a6368 == 0) {\n        for (; bVar10 = local_30 == (long *)0x0, !bVar10; local_30 = (long *)*local_30) {\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }\n      }\n      bfd_close(puVar2);\n      return 0;\n    }\n  }\nLAB_00148998:\n  iVar1 = bfd_stat(puVar2,&DAT_002a6380);\n  if (iVar1 != 0) {\n    uVar3 = dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5);\n    FUN_001283c0(uVar3,puVar2);\n  }\n  uVar3 = lbasename(*puVar2);\n  if (DAT_002a69d8 != 0) {\n    uVar4 = dcgettext(0,"found %s at %s\n",5);\n    FUN_00128320(uVar4,uVar3,param_2);\n  }\n  DAT_002a6378 = 0;\n  _DAT_002a6418 = FUN_001470e0;\n  FUN_0011bdc0(FUN_00144b50);\n  if (DAT_002a6378 != 0) {\n    return 1;\n  }\n  bfd_elf_set_dt_needed_name(puVar2,uVar3);\n  if (*param_1 != 0) {\n    uVar5 = bfd_elf_get_dyn_lib_class();\n    uVar3 = 0xe;\n    if ((uVar5 & 4) != 0) goto LAB_00148aef;\n  }\n  uVar3 = 2;\nLAB_00148aef:\n  bfd_elf_set_dyn_lib_class(puVar2,uVar3);\n  iVar1 = (**(code **)(puVar2[1] + 0x2c0))(puVar2,&DAT_002a67c0);\n  if (iVar1 == 0) {\n    uVar3 = dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5);\n    FUN_001283c0(uVar3,puVar2);\n  }\n  return 1;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "undefined8 *puVar2;" (type_identifier "undefined8") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined8 uVar3;" (type_identifier "undefined8") (identifier "uVar3") (; ";")) (declaration "undefined8 uVar4;" (type_identifier "undefined8") (identifier "uVar4") (; ";")) (declaration "ulong uVar5;" (type_identifier "ulong") (identifier "uVar5") (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "byte *pbVar7;" (type_identifier "byte") (pointer_declarator "*pbVar7" (* "*") (identifier "pbVar7")) (; ";")) (declaration "byte *pbVar8;" (type_identifier "byte") (pointer_declarator "*pbVar8" (* "*") (identifier "pbVar8")) (; ";")) (declaration "bool bVar9;" (primitive_type "bool") (identifier "bVar9") (; ";")) (declaration "bool bVar10;" (primitive_type "bool") (identifier "bVar10") (; ";")) (declaration "byte bVar11;" (type_identifier "byte") (identifier "bVar11") (; ";")) (declaration "long *local_30;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*local_30" (* "*") (identifier "local_30")) (; ";")) (expression_statement "bVar11 = 0;" (assignment_expression "bVar11 = 0" (identifier "bVar11") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2 = (undefined8 *)bfd_openr(param_2,**(undefined8 **)(DAT_002a6810 + 8));" (assignment_expression "puVar2 = (undefined8 *)bfd_openr(param_2,**(undefined8 **)(DAT_002a6810 + 8))" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)bfd_openr(param_2,**(undefined8 **)(DAT_002a6810 + 8))" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "bfd_openr(param_2,**(undefined8 **)(DAT_002a6810 + 8))" (identifier "bfd_openr") (argument_list "(param_2,**(undefined8 **)(DAT_002a6810 + 8))" (( "(") (identifier "param_2") (, ",") (pointer_expression "**(undefined8 **)(DAT_002a6810 + 8)" (* "*") (pointer_expression "*(undefined8 **)(DAT_002a6810 + 8)" (* "*") (cast_expression "(undefined8 **)(DAT_002a6810 + 8)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(DAT_002a6810 + 8)" (( "(") (binary_expression "DAT_002a6810 + 8" (identifier "DAT_002a6810") (+ "+") (number_literal "8")) () ")"))))) () ")"))))) (; ";")) (if_statement "if (puVar2 == (undefined8 *)0x0) {\n    if (DAT_002a69d8 != 0) {\n      uVar3 = dcgettext(0,"attempt to open %s failed\n",5);\n      FUN_00128320(uVar3,param_2);\n      return 0;\n    }\n    return 0;\n  }" (if "if") (parenthesized_expression "(puVar2 == (undefined8 *)0x0)" (( "(") (binary_expression "puVar2 == (undefined8 *)0x0" (identifier "puVar2") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    if (DAT_002a69d8 != 0) {\n      uVar3 = dcgettext(0,"attempt to open %s failed\n",5);\n      FUN_00128320(uVar3,param_2);\n      return 0;\n    }\n    return 0;\n  }" ({ "{") (if_statement "if (DAT_002a69d8 != 0) {\n      uVar3 = dcgettext(0,"attempt to open %s failed\n",5);\n      FUN_00128320(uVar3,param_2);\n      return 0;\n    }" (if "if") (parenthesized_expression "(DAT_002a69d8 != 0)" (( "(") (binary_expression "DAT_002a69d8 != 0" (identifier "DAT_002a69d8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar3 = dcgettext(0,"attempt to open %s failed\n",5);\n      FUN_00128320(uVar3,param_2);\n      return 0;\n    }" ({ "{") (expression_statement "uVar3 = dcgettext(0,"attempt to open %s failed\n",5);" (assignment_expression "uVar3 = dcgettext(0,"attempt to open %s failed\n",5)" (identifier "uVar3") (= "=") (call_expression "dcgettext(0,"attempt to open %s failed\n",5)" (identifier "dcgettext") (argument_list "(0,"attempt to open %s failed\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""attempt to open %s failed\n"" (" """) (string_content "attempt to open %s failed") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00128320(uVar3,param_2);" (call_expression "FUN_00128320(uVar3,param_2)" (identifier "FUN_00128320") (argument_list "(uVar3,param_2)" (( "(") (identifier "uVar3") (, ",") (identifier "param_2") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "*(uint *)((long)puVar2 + 0x44) = *(uint *)((long)puVar2 + 0x44) | 0x100000;" (assignment_expression "*(uint *)((long)puVar2 + 0x44) = *(uint *)((long)puVar2 + 0x44) | 0x100000" (pointer_expression "*(uint *)((long)puVar2 + 0x44)" (* "*") (cast_expression "(uint *)((long)puVar2 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar2 + 0x44)" (( "(") (binary_expression "(long)puVar2 + 0x44" (cast_expression "(long)puVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar2")) (+ "+") (number_literal "0x44")) () ")")))) (= "=") (binary_expression "*(uint *)((long)puVar2 + 0x44) | 0x100000" (pointer_expression "*(uint *)((long)puVar2 + 0x44)" (* "*") (cast_expression "(uint *)((long)puVar2 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar2 + 0x44)" (( "(") (binary_expression "(long)puVar2 + 0x44" (cast_expression "(long)puVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar2")) (+ "+") (number_literal "0x44")) () ")")))) (| "|") (number_literal "0x100000"))) (; ";")) (expression_statement "iVar1 = bfd_check_format(puVar2,1);" (assignment_expression "iVar1 = bfd_check_format(puVar2,1)" (identifier "iVar1") (= "=") (call_expression "bfd_check_format(puVar2,1)" (identifier "bfd_check_format") (argument_list "(puVar2,1)" (( "(") (identifier "puVar2") (, ",") (number_literal "1") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n    bfd_close(puVar2);\n    return 0;\n  }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    bfd_close(puVar2);\n    return 0;\n  }" ({ "{") (expression_statement "bfd_close(puVar2);" (call_expression "bfd_close(puVar2)" (identifier "bfd_close") (argument_list "(puVar2)" (( "(") (identifier "puVar2") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (((*(byte *)((long)puVar2 + 0x45) & 8) == 0) || (puVar2[1] != *(long *)(DAT_002a6810 + 8))) {\n    bfd_close(puVar2);\n    return 0;\n  }" (if "if") (parenthesized_expression "(((*(byte *)((long)puVar2 + 0x45) & 8) == 0) || (puVar2[1] != *(long *)(DAT_002a6810 + 8)))" (( "(") (binary_expression "((*(byte *)((long)puVar2 + 0x45) & 8) == 0) || (puVar2[1] != *(long *)(DAT_002a6810 + 8))" (parenthesized_expression "((*(byte *)((long)puVar2 + 0x45) & 8) == 0)" (( "(") (binary_expression "(*(byte *)((long)puVar2 + 0x45) & 8) == 0" (parenthesized_expression "(*(byte *)((long)puVar2 + 0x45) & 8)" (( "(") (binary_expression "*(byte *)((long)puVar2 + 0x45) & 8" (pointer_expression "*(byte *)((long)puVar2 + 0x45)" (* "*") (cast_expression "(byte *)((long)puVar2 + 0x45)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar2 + 0x45)" (( "(") (binary_expression "(long)puVar2 + 0x45" (cast_expression "(long)puVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar2")) (+ "+") (number_literal "0x45")) () ")")))) (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(puVar2[1] != *(long *)(DAT_002a6810 + 8))" (( "(") (binary_expression "puVar2[1] != *(long *)(DAT_002a6810 + 8)" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (!= "!=") (pointer_expression "*(long *)(DAT_002a6810 + 8)" (* "*") (cast_expression "(long *)(DAT_002a6810 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002a6810 + 8)" (( "(") (binary_expression "DAT_002a6810 + 8" (identifier "DAT_002a6810") (+ "+") (number_literal "8")) () ")"))))) () ")"))) () ")")) (compound_statement "{\n    bfd_close(puVar2);\n    return 0;\n  }" ({ "{") (expression_statement "bfd_close(puVar2);" (call_expression "bfd_close(puVar2)" (identifier "bfd_close") (argument_list "(puVar2)" (( "(") (identifier "puVar2") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (param_3 == 0) {\n    iVar1 = bfd_elf_get_bfd_needed_list(puVar2,&local_30);\n    if (iVar1 == 0) {\n      uVar3 = dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);\n      FUN_001283c0(uVar3,puVar2);\n    }\n    if (local_30 != (long *)0x0) {\n      DAT_002a6370 = local_30;\n      DAT_002a6368 = 0;\n      _DAT_002a6418 = FUN_00149970;\n      FUN_0011bdc0(FUN_00144b50);\n      if (DAT_002a6368 == 0) {\n        for (; bVar10 = local_30 == (long *)0x0, !bVar10; local_30 = (long *)*local_30) {\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }\n      }\n      bfd_close(puVar2);\n      return 0;\n    }\n  }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar1 = bfd_elf_get_bfd_needed_list(puVar2,&local_30);\n    if (iVar1 == 0) {\n      uVar3 = dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);\n      FUN_001283c0(uVar3,puVar2);\n    }\n    if (local_30 != (long *)0x0) {\n      DAT_002a6370 = local_30;\n      DAT_002a6368 = 0;\n      _DAT_002a6418 = FUN_00149970;\n      FUN_0011bdc0(FUN_00144b50);\n      if (DAT_002a6368 == 0) {\n        for (; bVar10 = local_30 == (long *)0x0, !bVar10; local_30 = (long *)*local_30) {\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }\n      }\n      bfd_close(puVar2);\n      return 0;\n    }\n  }" ({ "{") (expression_statement "iVar1 = bfd_elf_get_bfd_needed_list(puVar2,&local_30);" (assignment_expression "iVar1 = bfd_elf_get_bfd_needed_list(puVar2,&local_30)" (identifier "iVar1") (= "=") (call_expression "bfd_elf_get_bfd_needed_list(puVar2,&local_30)" (identifier "bfd_elf_get_bfd_needed_list") (argument_list "(puVar2,&local_30)" (( "(") (identifier "puVar2") (, ",") (pointer_expression "&local_30" (& "&") (identifier "local_30")) () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n      uVar3 = dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);\n      FUN_001283c0(uVar3,puVar2);\n    }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar3 = dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);\n      FUN_001283c0(uVar3,puVar2);\n    }" ({ "{") (expression_statement "uVar3 = dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);" (assignment_expression "uVar3 = dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5)" (identifier "uVar3") (= "=") (call_expression "dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5)" (identifier "dcgettext") (argument_list "(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n"" (" """) (string_content "%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_001283c0(uVar3,puVar2);" (call_expression "FUN_001283c0(uVar3,puVar2)" (identifier "FUN_001283c0") (argument_list "(uVar3,puVar2)" (( "(") (identifier "uVar3") (, ",") (identifier "puVar2") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_30 != (long *)0x0) {\n      DAT_002a6370 = local_30;\n      DAT_002a6368 = 0;\n      _DAT_002a6418 = FUN_00149970;\n      FUN_0011bdc0(FUN_00144b50);\n      if (DAT_002a6368 == 0) {\n        for (; bVar10 = local_30 == (long *)0x0, !bVar10; local_30 = (long *)*local_30) {\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }\n      }\n      bfd_close(puVar2);\n      return 0;\n    }" (if "if") (parenthesized_expression "(local_30 != (long *)0x0)" (( "(") (binary_expression "local_30 != (long *)0x0" (identifier "local_30") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      DAT_002a6370 = local_30;\n      DAT_002a6368 = 0;\n      _DAT_002a6418 = FUN_00149970;\n      FUN_0011bdc0(FUN_00144b50);\n      if (DAT_002a6368 == 0) {\n        for (; bVar10 = local_30 == (long *)0x0, !bVar10; local_30 = (long *)*local_30) {\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }\n      }\n      bfd_close(puVar2);\n      return 0;\n    }" ({ "{") (expression_statement "DAT_002a6370 = local_30;" (assignment_expression "DAT_002a6370 = local_30" (identifier "DAT_002a6370") (= "=") (identifier "local_30")) (; ";")) (expression_statement "DAT_002a6368 = 0;" (assignment_expression "DAT_002a6368 = 0" (identifier "DAT_002a6368") (= "=") (number_literal "0")) (; ";")) (expression_statement "_DAT_002a6418 = FUN_00149970;" (assignment_expression "_DAT_002a6418 = FUN_00149970" (identifier "_DAT_002a6418") (= "=") (identifier "FUN_00149970")) (; ";")) (expression_statement "FUN_0011bdc0(FUN_00144b50);" (call_expression "FUN_0011bdc0(FUN_00144b50)" (identifier "FUN_0011bdc0") (argument_list "(FUN_00144b50)" (( "(") (identifier "FUN_00144b50") () ")"))) (; ";")) (if_statement "if (DAT_002a6368 == 0) {\n        for (; bVar10 = local_30 == (long *)0x0, !bVar10; local_30 = (long *)*local_30) {\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }\n      }" (if "if") (parenthesized_expression "(DAT_002a6368 == 0)" (( "(") (binary_expression "DAT_002a6368 == 0" (identifier "DAT_002a6368") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        for (; bVar10 = local_30 == (long *)0x0, !bVar10; local_30 = (long *)*local_30) {\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }\n      }" ({ "{") (for_statement "for (; bVar10 = local_30 == (long *)0x0, !bVar10; local_30 = (long *)*local_30) {\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }" (for "for") (( "(") (; ";") (comma_expression "bVar10 = local_30 == (long *)0x0, !bVar10" (assignment_expression "bVar10 = local_30 == (long *)0x0" (identifier "bVar10") (= "=") (binary_expression "local_30 == (long *)0x0" (identifier "local_30") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (, ",") (unary_expression "!bVar10" (! "!") (identifier "bVar10"))) (; ";") (assignment_expression "local_30 = (long *)*local_30" (identifier "local_30") (= "=") (cast_expression "(long *)*local_30" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_30" (* "*") (identifier "local_30")))) () ")") (compound_statement "{\n          bVar9 = false;\n          lVar6 = 7;\n          pbVar7 = (byte *)local_30[2];\n          pbVar8 = (byte *)"libc.so";\n          do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);\n          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;\n        }" ({ "{") (expression_statement "bVar9 = false;" (assignment_expression "bVar9 = false" (identifier "bVar9") (= "=") (false "false")) (; ";")) (expression_statement "lVar6 = 7;" (assignment_expression "lVar6 = 7" (identifier "lVar6") (= "=") (number_literal "7")) (; ";")) (expression_statement "pbVar7 = (byte *)local_30[2];" (assignment_expression "pbVar7 = (byte *)local_30[2]" (identifier "pbVar7") (= "=") (cast_expression "(byte *)local_30[2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_30[2]" (identifier "local_30") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "pbVar8 = (byte *)"libc.so";" (assignment_expression "pbVar8 = (byte *)"libc.so"" (identifier "pbVar8") (= "=") (cast_expression "(byte *)"libc.so"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal ""libc.so"" (" """) (string_content "libc.so") (" """)))) (; ";")) (do_statement "do {\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          } while (bVar10);" (do "do") (compound_statement "{\n            if (lVar6 == 0) break;\n            lVar6 = lVar6 + -1;\n            bVar9 = *pbVar7 < *pbVar8;\n            bVar10 = *pbVar7 == *pbVar8;\n            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;\n          }" ({ "{") (if_statement "if (lVar6 == 0) break;" (if "if") (parenthesized_expression "(lVar6 == 0)" (( "(") (binary_expression "lVar6 == 0" (identifier "lVar6") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar6 = lVar6 + -1;" (assignment_expression "lVar6 = lVar6 + -1" (identifier "lVar6") (= "=") (binary_expression "lVar6 + -1" (identifier "lVar6") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar9 = *pbVar7 < *pbVar8;" (assignment_expression "bVar9 = *pbVar7 < *pbVar8" (identifier "bVar9") (= "=") (binary_expression "*pbVar7 < *pbVar8" (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")) (< "<") (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8")))) (; ";")) (expression_statement "bVar10 = *pbVar7 == *pbVar8;" (assignment_expression "bVar10 = *pbVar7 == *pbVar8" (identifier "bVar10") (= "=") (binary_expression "*pbVar7 == *pbVar8" (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")) (== "==") (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8")))) (; ";")) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + (ulong)bVar11 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar11 * -2" (identifier "pbVar7") (+ "+") (binary_expression "(ulong)bVar11 * -2" (cast_expression "(ulong)bVar11" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar11")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1" (identifier "pbVar8") (= "=") (binary_expression "pbVar8 + (ulong)bVar11 * -2 + 1" (binary_expression "pbVar8 + (ulong)bVar11 * -2" (identifier "pbVar8") (+ "+") (binary_expression "(ulong)bVar11 * -2" (cast_expression "(ulong)bVar11" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar11")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar10)" (( "(") (identifier "bVar10") () ")")) (; ";")) (if_statement "if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;" (if "if") (parenthesized_expression "((!bVar9 && !bVar10) == bVar9)" (( "(") (binary_expression "(!bVar9 && !bVar10) == bVar9" (parenthesized_expression "(!bVar9 && !bVar10)" (( "(") (binary_expression "!bVar9 && !bVar10" (unary_expression "!bVar9" (! "!") (identifier "bVar9")) (&& "&&") (unary_expression "!bVar10" (! "!") (identifier "bVar10"))) () ")")) (== "==") (identifier "bVar9")) () ")")) (goto_statement "goto LAB_00148998;" (goto "goto") (statement_identifier "LAB_00148998") (; ";"))) (} "}"))) (} "}"))) (expression_statement "bfd_close(puVar2);" (call_expression "bfd_close(puVar2)" (identifier "bfd_close") (argument_list "(puVar2)" (( "(") (identifier "puVar2") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_00148998:\n  iVar1 = bfd_stat(puVar2,&DAT_002a6380);" (statement_identifier "LAB_00148998") (: ":") (expression_statement "iVar1 = bfd_stat(puVar2,&DAT_002a6380);" (assignment_expression "iVar1 = bfd_stat(puVar2,&DAT_002a6380)" (identifier "iVar1") (= "=") (call_expression "bfd_stat(puVar2,&DAT_002a6380)" (identifier "bfd_stat") (argument_list "(puVar2,&DAT_002a6380)" (( "(") (identifier "puVar2") (, ",") (pointer_expression "&DAT_002a6380" (& "&") (identifier "DAT_002a6380")) () ")")))) (; ";"))) (if_statement "if (iVar1 != 0) {\n    uVar3 = dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5);\n    FUN_001283c0(uVar3,puVar2);\n  }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar3 = dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5);\n    FUN_001283c0(uVar3,puVar2);\n  }" ({ "{") (expression_statement "uVar3 = dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5);" (assignment_expression "uVar3 = dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5)" (identifier "uVar3") (= "=") (call_expression "dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5)" (identifier "dcgettext") (argument_list "(0,"%F%P: %pB: bfd_stat failed: %E\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%F%P: %pB: bfd_stat failed: %E\n"" (" """) (string_content "%F%P: %pB: bfd_stat failed: %E") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_001283c0(uVar3,puVar2);" (call_expression "FUN_001283c0(uVar3,puVar2)" (identifier "FUN_001283c0") (argument_list "(uVar3,puVar2)" (( "(") (identifier "uVar3") (, ",") (identifier "puVar2") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar3 = lbasename(*puVar2);" (assignment_expression "uVar3 = lbasename(*puVar2)" (identifier "uVar3") (= "=") (call_expression "lbasename(*puVar2)" (identifier "lbasename") (argument_list "(*puVar2)" (( "(") (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) () ")")))) (; ";")) (if_statement "if (DAT_002a69d8 != 0) {\n    uVar4 = dcgettext(0,"found %s at %s\n",5);\n    FUN_00128320(uVar4,uVar3,param_2);\n  }" (if "if") (parenthesized_expression "(DAT_002a69d8 != 0)" (( "(") (binary_expression "DAT_002a69d8 != 0" (identifier "DAT_002a69d8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar4 = dcgettext(0,"found %s at %s\n",5);\n    FUN_00128320(uVar4,uVar3,param_2);\n  }" ({ "{") (expression_statement "uVar4 = dcgettext(0,"found %s at %s\n",5);" (assignment_expression "uVar4 = dcgettext(0,"found %s at %s\n",5)" (identifier "uVar4") (= "=") (call_expression "dcgettext(0,"found %s at %s\n",5)" (identifier "dcgettext") (argument_list "(0,"found %s at %s\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""found %s at %s\n"" (" """) (string_content "found %s at %s") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00128320(uVar4,uVar3,param_2);" (call_expression "FUN_00128320(uVar4,uVar3,param_2)" (identifier "FUN_00128320") (argument_list "(uVar4,uVar3,param_2)" (( "(") (identifier "uVar4") (, ",") (identifier "uVar3") (, ",") (identifier "param_2") () ")"))) (; ";")) (} "}"))) (expression_statement "DAT_002a6378 = 0;" (assignment_expression "DAT_002a6378 = 0" (identifier "DAT_002a6378") (= "=") (number_literal "0")) (; ";")) (expression_statement "_DAT_002a6418 = FUN_001470e0;" (assignment_expression "_DAT_002a6418 = FUN_001470e0" (identifier "_DAT_002a6418") (= "=") (identifier "FUN_001470e0")) (; ";")) (expression_statement "FUN_0011bdc0(FUN_00144b50);" (call_expression "FUN_0011bdc0(FUN_00144b50)" (identifier "FUN_0011bdc0") (argument_list "(FUN_00144b50)" (( "(") (identifier "FUN_00144b50") () ")"))) (; ";")) (if_statement "if (DAT_002a6378 != 0) {\n    return 1;\n  }" (if "if") (parenthesized_expression "(DAT_002a6378 != 0)" (( "(") (binary_expression "DAT_002a6378 != 0" (identifier "DAT_002a6378") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    return 1;\n  }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "bfd_elf_set_dt_needed_name(puVar2,uVar3);" (call_expression "bfd_elf_set_dt_needed_name(puVar2,uVar3)" (identifier "bfd_elf_set_dt_needed_name") (argument_list "(puVar2,uVar3)" (( "(") (identifier "puVar2") (, ",") (identifier "uVar3") () ")"))) (; ";")) (if_statement "if (*param_1 != 0) {\n    uVar5 = bfd_elf_get_dyn_lib_class();\n    uVar3 = 0xe;\n    if ((uVar5 & 4) != 0) goto LAB_00148aef;\n  }" (if "if") (parenthesized_expression "(*param_1 != 0)" (( "(") (binary_expression "*param_1 != 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar5 = bfd_elf_get_dyn_lib_class();\n    uVar3 = 0xe;\n    if ((uVar5 & 4) != 0) goto LAB_00148aef;\n  }" ({ "{") (expression_statement "uVar5 = bfd_elf_get_dyn_lib_class();" (assignment_expression "uVar5 = bfd_elf_get_dyn_lib_class()" (identifier "uVar5") (= "=") (call_expression "bfd_elf_get_dyn_lib_class()" (identifier "bfd_elf_get_dyn_lib_class") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar3 = 0xe;" (assignment_expression "uVar3 = 0xe" (identifier "uVar3") (= "=") (number_literal "0xe")) (; ";")) (if_statement "if ((uVar5 & 4) != 0) goto LAB_00148aef;" (if "if") (parenthesized_expression "((uVar5 & 4) != 0)" (( "(") (binary_expression "(uVar5 & 4) != 0" (parenthesized_expression "(uVar5 & 4)" (( "(") (binary_expression "uVar5 & 4" (identifier "uVar5") (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00148aef;" (goto "goto") (statement_identifier "LAB_00148aef") (; ";"))) (} "}"))) (expression_statement "uVar3 = 2;" (assignment_expression "uVar3 = 2" (identifier "uVar3") (= "=") (number_literal "2")) (; ";")) (labeled_statement "LAB_00148aef:\n  bfd_elf_set_dyn_lib_class(puVar2,uVar3);" (statement_identifier "LAB_00148aef") (: ":") (expression_statement "bfd_elf_set_dyn_lib_class(puVar2,uVar3);" (call_expression "bfd_elf_set_dyn_lib_class(puVar2,uVar3)" (identifier "bfd_elf_set_dyn_lib_class") (argument_list "(puVar2,uVar3)" (( "(") (identifier "puVar2") (, ",") (identifier "uVar3") () ")"))) (; ";"))) (expression_statement "iVar1 = (**(code **)(puVar2[1] + 0x2c0))(puVar2,&DAT_002a67c0);" (assignment_expression "iVar1 = (**(code **)(puVar2[1] + 0x2c0))(puVar2,&DAT_002a67c0)" (identifier "iVar1") (= "=") (call_expression "(**(code **)(puVar2[1] + 0x2c0))(puVar2,&DAT_002a67c0)" (parenthesized_expression "(**(code **)(puVar2[1] + 0x2c0))" (( "(") (pointer_expression "**(code **)(puVar2[1] + 0x2c0)" (* "*") (pointer_expression "*(code **)(puVar2[1] + 0x2c0)" (* "*") (cast_expression "(code **)(puVar2[1] + 0x2c0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar2[1] + 0x2c0)" (( "(") (binary_expression "puVar2[1] + 0x2c0" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x2c0")) () ")"))))) () ")")) (argument_list "(puVar2,&DAT_002a67c0)" (( "(") (identifier "puVar2") (, ",") (pointer_expression "&DAT_002a67c0" (& "&") (identifier "DAT_002a67c0")) () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n    uVar3 = dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5);\n    FUN_001283c0(uVar3,puVar2);\n  }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar3 = dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5);\n    FUN_001283c0(uVar3,puVar2);\n  }" ({ "{") (expression_statement "uVar3 = dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5);" (assignment_expression "uVar3 = dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5)" (identifier "uVar3") (= "=") (call_expression "dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5)" (identifier "dcgettext") (argument_list "(0,"%F%P: %pB: error adding symbols: %E\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%F%P: %pB: error adding symbols: %E\n"" (" """) (string_content "%F%P: %pB: error adding symbols: %E") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_001283c0(uVar3,puVar2);" (call_expression "FUN_001283c0(uVar3,puVar2)" (identifier "FUN_001283c0") (argument_list "(uVar3,puVar2)" (( "(") (identifier "uVar3") (, ",") (identifier "puVar2") () ")"))) (; ";")) (} "}"))) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}")))

/* DWARF original prototype: bfd_boolean gldelf64ppc_try_needed(dt_needed * needed, int force,
   dt_needed * needed) */

type_1 function_1(type_2 *needed,int force,type_2 *needed_1)

{
  int var_8;
  type_3 *var_3;
  type_3 uVar3;
  type_4 var_24;
  char *pcVar5;
  long var_15;
  type_5 in_register_00000034;
  type_6 *var_16;
  type_3 uVar8;
  type_6 *var_17;
  bool var_18;
  bool bVar11;
  type_6 bVar12;
  type_7 *var_12;
  
  uVar8 = var_1(in_register_00000034,force);
  bVar12 = 0;
  var_3 = (type_3 *)var_2(uVar8,(link_info.output_bfd)->xvec->name);
  if (var_3 == (type_3 *)0x0) {
    if (var_4 != 0) {
      pcVar5 = (char *)var_5(0,"attempt to open %s failed\n",5);
      var_6(pcVar5,uVar8);
      return 0;
    }
    return 0;
  }
  *(type_8 *)((long)var_3 + 0x44) = *(type_8 *)((long)var_3 + 0x44) | 0x100000;
  var_8 = var_7(var_3,1);
  if (var_8 == 0) {
    var_9(var_3);
    return 0;
  }
  if (((*(type_6 *)((long)var_3 + 0x45) & 8) == 0) ||
     ((type_9 *)var_3[1] != (link_info.output_bfd)->xvec)) {
    var_9(var_3);
    return 0;
  }
  if ((int)needed_1 == 0) {
    var_8 = var_10(var_3,&var_12);
    if (var_8 == 0) {
      pcVar5 = (char *)var_5(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);
      var_11(pcVar5,var_3);
    }
    if (var_12 != (type_7 *)0x0) {
      global_vercheck_needed = var_12;
      var_14 = 0;
      real_func = gldelf64ppc_vercheck;
      var_13(ppc_for_each_input_file_wrapper);
      if (var_14 == 0) {
        for (; bVar11 = var_12 == (type_7 *)0x0, !bVar11; var_12 = var_12->next) {
          var_18 = false;
          var_15 = 7;
          var_16 = (type_6 *)var_12->name;
          var_17 = (type_6 *)"libc.so";
          do {
            if (var_15 == 0) break;
            var_15 = var_15 + -1;
            var_18 = *var_16 < *var_17;
            bVar11 = *var_16 == *var_17;
            var_16 = var_16 + (type_4)bVar12 * -2 + 1;
            var_17 = var_17 + (type_4)bVar12 * -2 + 1;
          } while (bVar11);
          if ((!var_18 && !bVar11) == var_18) goto LAB_00148998;
        }
      }
      var_9(var_3);
      return 0;
    }
  }
LAB_00148998:
  var_8 = var_19(var_3,&global_stat);
  if (var_8 != 0) {
    pcVar5 = (char *)var_5(0,"%F%P: %pB: bfd_stat failed: %E\n",5);
    var_11(pcVar5,var_3);
  }
  uVar3 = var_20(*var_3);
  if (var_4 != 0) {
    pcVar5 = (char *)var_5(0,"found %s at %s\n",5);
    var_6(pcVar5,uVar3,uVar8);
  }
  var_21 = (type_10 *)0x0;
  real_func = gldelf64ppc_stat_needed;
  var_13(ppc_for_each_input_file_wrapper);
  if (var_21 != (type_10 *)0x0) {
    return 1;
  }
  var_22(var_3,uVar3);
  if (needed->by != (type_11 *)0x0) {
    var_24 = var_23();
    uVar8 = 0xe;
    if ((var_24 & 4) != 0) goto LAB_00148aef;
  }
  uVar8 = 2;
LAB_00148aef:
  var_25(var_3,uVar8);
  var_8 = (**(type_12 **)(var_3[1] + 0x2c0))(var_3,&link_info);
  if (var_8 == 0) {
    pcVar5 = (char *)var_5(0,"%F%P: %pB: error adding symbols: %E\n",5);
    var_11(pcVar5,var_3);
  }
  return 1;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (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))))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (return_statement (number_literal)))) (return_statement (number_literal)))) (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (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 (identifier)))) (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (for_statement condition: (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (unary_expression argument: (identifier))) update: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (string_literal (string_content))))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) condition: (parenthesized_expression (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (unary_expression argument: (identifier)))) right: (identifier))) consequence: (goto_statement label: (statement_identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (return_statement (number_literal)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (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: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))) (return_statement (number_literal)))))

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined4 MASKED(long *param_1,undefined8 param_2,int param_3)

{
  int iVar1;
  undefined8 *puVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  ulong uVar5;
  long lVar6;
  byte *pbVar7;
  byte *pbVar8;
  bool bVar9;
  bool bVar10;
  byte bVar11;
  long *local_30;
  
  bVar11 = 0;
  puVar2 = (undefined8 *)bfd_openr(param_2,**(undefined8 **)(DAT_002a6810 + 8));
  if (puVar2 == (undefined8 *)0x0) {
    if (DAT_002a69d8 != 0) {
      uVar3 = dcgettext(0,"attempt to open %s failed\n",5);
      FUN_00128320(uVar3,param_2);
      return 0;
    }
    return 0;
  }
  *(uint *)((long)puVar2 + 0x44) = *(uint *)((long)puVar2 + 0x44) | 0x100000;
  iVar1 = bfd_check_format(puVar2,1);
  if (iVar1 == 0) {
    bfd_close(puVar2);
    return 0;
  }
  if (((*(byte *)((long)puVar2 + 0x45) & 8) == 0) || (puVar2[1] != *(long *)(DAT_002a6810 + 8))) {
    bfd_close(puVar2);
    return 0;
  }
  if (param_3 == 0) {
    iVar1 = bfd_elf_get_bfd_needed_list(puVar2,&local_30);
    if (iVar1 == 0) {
      uVar3 = dcgettext(0,"%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n",5);
      FUN_001283c0(uVar3,puVar2);
    }
    if (local_30 != (long *)0x0) {
      DAT_002a6370 = local_30;
      DAT_002a6368 = 0;
      _DAT_002a6418 = FUN_00149970;
      FUN_0011bdc0(FUN_00144b50);
      if (DAT_002a6368 == 0) {
        for (; bVar10 = local_30 == (long *)0x0, !bVar10; local_30 = (long *)*local_30) {
          bVar9 = false;
          lVar6 = 7;
          pbVar7 = (byte *)local_30[2];
          pbVar8 = (byte *)"libc.so";
          do {
            if (lVar6 == 0) break;
            lVar6 = lVar6 + -1;
            bVar9 = *pbVar7 < *pbVar8;
            bVar10 = *pbVar7 == *pbVar8;
            pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;
            pbVar8 = pbVar8 + (ulong)bVar11 * -2 + 1;
          } while (bVar10);
          if ((!bVar9 && !bVar10) == bVar9) goto LAB_00148998;
        }
      }
      bfd_close(puVar2);
      return 0;
    }
  }
LAB_00148998:
  iVar1 = bfd_stat(puVar2,&DAT_002a6380);
  if (iVar1 != 0) {
    uVar3 = dcgettext(0,"%F%P: %pB: bfd_stat failed: %E\n",5);
    FUN_001283c0(uVar3,puVar2);
  }
  uVar3 = lbasename(*puVar2);
  if (DAT_002a69d8 != 0) {
    uVar4 = dcgettext(0,"found %s at %s\n",5);
    FUN_00128320(uVar4,uVar3,param_2);
  }
  DAT_002a6378 = 0;
  _DAT_002a6418 = FUN_001470e0;
  FUN_0011bdc0(FUN_00144b50);
  if (DAT_002a6378 != 0) {
    return 1;
  }
  bfd_elf_set_dt_needed_name(puVar2,uVar3);
  if (*param_1 != 0) {
    uVar5 = bfd_elf_get_dyn_lib_class();
    uVar3 = 0xe;
    if ((uVar5 & 4) != 0) goto LAB_00148aef;
  }
  uVar3 = 2;
LAB_00148aef:
  bfd_elf_set_dyn_lib_class(puVar2,uVar3);
  iVar1 = (**(code **)(puVar2[1] + 0x2c0))(puVar2,&DAT_002a67c0);
  if (iVar1 == 0) {
    uVar3 = dcgettext(0,"%F%P: %pB: error adding symbols: %E\n",5);
    FUN_001283c0(uVar3,puVar2);
  }
  return 1;
}

