
bfd_target * plugin_object_p(bfd *ibfd)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  bfd_boolean bVar4;
  ld_plugin_status lVar5;
  uint uVar6;
  undefined8 uVar7;
  bfd *pbVar8;
  long lVar9;
  undefined8 *puVar10;
  char *pcVar11;
  char *fmt;
  bfd_target *pbVar12;
  plugin *ppVar13;
  int claimed;
  ld_plugin_input_file file;
  
  if ((ibfd->field_0x46 & 0x20) != 0) {
    return (bfd_target *)0x0;
  }
  if ((ibfd->field_0x48 & 0x30) != 0) {
    if ((ibfd->field_0x48 & 0x30) != 0x10) {
      return (bfd_target *)0x0;
    }
    return ibfd->plugin_dummy_bfd->xvec;
  }
  pcVar11 = ibfd->filename;
  bfd_use_reserved_id = 1;
  iVar1 = bfd_plugin_target_p(ibfd->xvec);
  pbVar8 = ibfd;
  if (iVar1 != 0) {
    pbVar8 = link_info.output_bfd;
  }
  uVar7 = concat(pcVar11," (symbol from plugin)",0);
  pbVar8 = (bfd *)bfd_create(uVar7,pbVar8);
  if (pbVar8 != (bfd *)0x0) {
    *(uint *)&pbVar8->field_0x44 = *(uint *)&pbVar8->field_0x44 | 0x220000;
    iVar2 = bfd_make_writable(pbVar8);
    if (iVar2 != 0) {
      if (iVar1 == 0) {
        uVar7 = bfd_get_arch_info(ibfd);
        bfd_set_arch_info(pbVar8,uVar7);
        uVar3 = bfd_get_gp_size(ibfd);
        bfd_set_gp_size(pbVar8,uVar3);
        bVar4 = (*pbVar8->xvec->_bfd_copy_private_bfd_data)(ibfd,pbVar8);
        if (bVar4 == 0) goto LAB_00128480;
      }
      lVar9 = bfd_make_section_anyway_with_flags(pbVar8,".text",0x20811b);
      if (lVar9 != 0) goto LAB_00128305;
    }
  }
LAB_00128480:
  pbVar8 = (bfd *)0x0;
  pcVar11 = (char *)dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);
  einfo(pcVar11);
LAB_00128305:
  puVar10 = (undefined8 *)bfd_alloc(pbVar8,0x40);
  if (puVar10 == (undefined8 *)0x0) {
    uVar6 = bfd_get_error();
    pcVar11 = (char *)dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);
    einfo(pcVar11,(ulong)uVar6);
  }
  iVar1 = bfd_plugin_open_input(ibfd,&file);
  if (iVar1 == 0) {
    pbVar12 = (bfd_target *)0x0;
  }
  else {
    pcVar11 = ibfd->filename;
    if (file.name == pcVar11) {
      file.name = plugin_strdup(pbVar8,pcVar11);
      pcVar11 = ibfd->filename;
    }
    *puVar10 = pbVar8;
    *(int *)(puVar10 + 5) = file.fd;
    puVar10[1] = 0;
    puVar10[6] = file.offset;
    puVar10[2] = 0;
    puVar10[3] = 0;
    *(undefined4 *)((long)puVar10 + 0x2c) = 0;
    puVar10[7] = file.filesize;
    file.handle = puVar10;
    pcVar11 = plugin_strdup(pbVar8,pcVar11);
    ppVar13 = plugins_list;
    claimed = 0;
    puVar10[4] = pcVar11;
    if (ppVar13 != (plugin_t *)0x0) {
      do {
        if (ppVar13->claim_file_handler != (ld_plugin_claim_file_handler)0x0) {
          called_plugin = ppVar13;
          lVar5 = (*ppVar13->claim_file_handler)(&file,&claimed);
          called_plugin = (plugin_t *)0x0;
          if (lVar5 != LDPS_OK) {
            error_plugin = ppVar13->name;
          }
        }
        ppVar13 = ppVar13->next;
      } while ((ppVar13 != (plugin *)0x0) && (claimed == 0));
    }
    pcVar11 = error_plugin;
    if (error_plugin != (char *)0x0) {
      fmt = (char *)dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);
      einfo(fmt,pcVar11);
    }
    if ((*(int *)(puVar10 + 5) != -1) && (iVar1 = bfd_plugin_target_p(ibfd->xvec), iVar1 == 0)) {
      close(*(int *)(puVar10 + 5));
      *(undefined4 *)(puVar10 + 5) = 0xffffffff;
    }
    if (claimed == 0) {
      if (*(int *)((long)puVar10 + 0x2c) != 0) {
        munmap((void *)(puVar10[1] - (long)puVar10[3] % plugin_pagesize),
               puVar10[2] + (long)puVar10[3] % plugin_pagesize);
      }
      ibfd->field_0x48 = ibfd->field_0x48 & 0xcf | 0x20;
      bfd_close_all_done(pbVar8);
      return (bfd_target *)0x0;
    }
    ibfd->plugin_dummy_bfd = pbVar8;
    ibfd->field_0x48 = ibfd->field_0x48 & 0xcf | 0x10;
    bfd_make_readable(pbVar8);
    pbVar12 = pbVar8->xvec;
  }
  return pbVar12;
}



undefined8 FUN_00128200(long *param_1)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  undefined8 uVar4;
  long lVar5;
  long lVar6;
  long *plVar7;
  long *plVar8;
  int local_6c;
  long local_68;
  undefined4 local_60;
  long local_58;
  long local_50;
  long *local_48;
  
  if ((*(byte *)((long)param_1 + 0x46) & 0x20) != 0) {
    return 0;
  }
  if ((*(byte *)(param_1 + 9) & 0x30) != 0) {
    if ((*(byte *)(param_1 + 9) & 0x30) != 0x10) {
      return 0;
    }
    return *(undefined8 *)(param_1[10] + 8);
  }
  lVar5 = *param_1;
  bfd_use_reserved_id = 1;
  iVar1 = bfd_plugin_target_p(param_1[1]);
  plVar7 = param_1;
  if (iVar1 != 0) {
    plVar7 = DAT_001aadb0;
  }
  uVar4 = concat(lVar5," (symbol from plugin)",0);
  lVar5 = bfd_create(uVar4,plVar7);
  if (lVar5 != 0) {
    *(uint *)(lVar5 + 0x44) = *(uint *)(lVar5 + 0x44) | 0x220000;
    iVar2 = bfd_make_writable(lVar5);
    if (iVar2 != 0) {
      if (iVar1 == 0) {
        uVar4 = bfd_get_arch_info(param_1);
        bfd_set_arch_info(lVar5,uVar4);
        uVar3 = bfd_get_gp_size(param_1);
        bfd_set_gp_size(lVar5,uVar3);
        iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5);
        if (iVar1 == 0) goto LAB_00128480;
      }
      lVar6 = bfd_make_section_anyway_with_flags(lVar5,".text",0x20811b);
      if (lVar6 != 0) goto LAB_00128305;
    }
  }
LAB_00128480:
  lVar5 = 0;
  uVar4 = dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);
  FUN_00125230(uVar4);
LAB_00128305:
  plVar7 = (long *)bfd_alloc(lVar5,0x40);
  if (plVar7 == (long *)0x0) {
    uVar3 = bfd_get_error();
    uVar4 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);
    FUN_00125230(uVar4,uVar3);
  }
  iVar1 = bfd_plugin_open_input(param_1,&local_68);
  if (iVar1 == 0) {
    uVar4 = 0;
  }
  else {
    lVar6 = *param_1;
    if (local_68 == lVar6) {
      local_68 = FUN_00127300(lVar5);
      lVar6 = *param_1;
    }
    *plVar7 = lVar5;
    *(undefined4 *)(plVar7 + 5) = local_60;
    plVar7[1] = 0;
    plVar7[6] = local_58;
    plVar7[2] = 0;
    plVar7[3] = 0;
    *(undefined4 *)((long)plVar7 + 0x2c) = 0;
    plVar7[7] = local_50;
    local_48 = plVar7;
    lVar6 = FUN_00127300(lVar5,lVar6);
    plVar8 = DAT_001aa948;
    local_6c = 0;
    plVar7[4] = lVar6;
    if (plVar8 != (long *)0x0) {
      do {
        if ((code *)plVar8[5] != (code *)0x0) {
          DAT_001aa930 = plVar8;
          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);
          DAT_001aa930 = (long *)0x0;
          if (iVar1 != 0) {
            DAT_001aa928 = plVar8[1];
          }
        }
        plVar8 = (long *)*plVar8;
      } while ((plVar8 != (long *)0x0) && (local_6c == 0));
    }
    lVar6 = DAT_001aa928;
    if (DAT_001aa928 != 0) {
      uVar4 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);
      FUN_00125230(uVar4,lVar6);
    }
    if (((int)plVar7[5] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {
      close((int)plVar7[5]);
      *(undefined4 *)(plVar7 + 5) = 0xffffffff;
    }
    if (local_6c == 0) {
      if (*(int *)((long)plVar7 + 0x2c) != 0) {
        munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);
      }
      *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x20;
      bfd_close_all_done(lVar5);
      return 0;
    }
    param_1[10] = lVar5;
    *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x10;
    bfd_make_readable(lVar5);
    uVar4 = *(undefined8 *)(lVar5 + 8);
  }
  return uVar4;
}


TEST byte ptr [RDI + 0x46],0x20
JNZ 0x001284a8
MOVZX EDX,byte ptr [RDI + 0x48]
AND EDX,0x30
JZ 0x00128230
XOR EAX,EAX
CMP DL,0x10
JNZ 0x00128228
MOV RAX,qword ptr [RDI + 0x50]
MOV RAX,qword ptr [RAX + 0x8]
RET
RET
PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
MOV RBP,RDI
PUSH RBX
MOV R12,RBP
SUB RSP,0x48
MOV R13,qword ptr [RDI]
MOV RDI,qword ptr [RDI + 0x8]
MOV dword ptr [0x001aa140],0x1
CALL 0x001099b0
MOV RDI,R13
LEA RSI,[0x146336]
TEST EAX,EAX
MOV EBX,EAX
CMOVNZ R12,qword ptr [0x001aadb0]
XOR EDX,EDX
XOR EAX,EAX
CALL 0x00109430
MOV RSI,R12
MOV RDI,RAX
CALL 0x00109560
MOV R13,RAX
TEST RAX,RAX
JZ 0x00128480
OR dword ptr [RAX + 0x44],0x220000
MOV RDI,RAX
CALL 0x00109110
TEST EAX,EAX
JZ 0x00128480
TEST EBX,EBX
JNZ 0x001282e8
MOV RDI,RBP
CALL 0x001095e0
MOV RDI,R13
MOV RSI,RAX
CALL 0x00109bd0
MOV RDI,RBP
CALL 0x001094d0
MOV RDI,R13
MOV ESI,EAX
CALL 0x00109890
MOV RAX,qword ptr [R13 + 0x8]
MOV RSI,R13
MOV RDI,RBP
CALL qword ptr [RAX + 0x138]
TEST EAX,EAX
JZ 0x00128480
MOV EDX,0x20811b
LEA RSI,[0x172777]
MOV RDI,R13
CALL 0x00109230
TEST RAX,RAX
JZ 0x00128480
MOV ESI,0x40
MOV RDI,R13
CALL 0x001092f0
MOV R12,RAX
TEST RAX,RAX
JZ 0x001284e8
LEA R14,[RSP + 0x10]
MOV RDI,RBP
MOV RSI,R14
CALL 0x00109c10
TEST EAX,EAX
JZ 0x00128518
MOV RSI,qword ptr [RBP]
CMP qword ptr [RSP + 0x10],RSI
JZ 0x00128520
MOV EAX,dword ptr [RSP + 0x18]
MOV qword ptr [RSP + 0x30],R12
MOV RDI,R13
LEA R15,[RSP + 0xc]
MOV qword ptr [R12],R13
MOV dword ptr [R12 + 0x28],EAX
MOV RAX,qword ptr [RSP + 0x20]
MOV qword ptr [R12 + 0x8],0x0
MOV qword ptr [R12 + 0x30],RAX
MOV RAX,qword ptr [RSP + 0x28]
MOV qword ptr [R12 + 0x10],0x0
MOV qword ptr [R12 + 0x18],0x0
MOV dword ptr [R12 + 0x2c],0x0
MOV qword ptr [R12 + 0x38],RAX
CALL 0x00127300
MOV RBX,qword ptr [0x001aa948]
MOV dword ptr [RSP + 0xc],0x0
MOV qword ptr [R12 + 0x20],RAX
TEST RBX,RBX
JNZ 0x001283c8
JMP 0x00128402
MOV ECX,dword ptr [RSP + 0xc]
TEST ECX,ECX
JNZ 0x00128402
MOV RAX,qword ptr [RBX + 0x28]
TEST RAX,RAX
JZ 0x001283fa
MOV qword ptr [0x001aa930],RBX
MOV RSI,R15
MOV RDI,R14
CALL RAX
MOV qword ptr [0x001aa930],0x0
TEST EAX,EAX
JZ 0x001283fa
MOV RAX,qword ptr [RBX + 0x8]
MOV qword ptr [0x001aa928],RAX
MOV RBX,qword ptr [RBX]
TEST RBX,RBX
JNZ 0x001283c0
MOV RBX,qword ptr [0x001aa928]
TEST RBX,RBX
JZ 0x0012842e
LEA RSI,[0x146270]
XOR EDI,EDI
MOV EDX,0x5
CALL 0x001092e0
MOV RSI,RBX
MOV RDI,RAX
XOR EAX,EAX
CALL 0x00125230
CMP dword ptr [R12 + 0x28],-0x1
JZ 0x00128447
MOV RDI,qword ptr [RBP + 0x8]
CALL 0x001099b0
TEST EAX,EAX
JZ 0x00128540
MOV EDX,dword ptr [RSP + 0xc]
TEST EDX,EDX
JZ 0x001284b0
MOVZX EAX,byte ptr [RBP + 0x48]
MOV qword ptr [RBP + 0x50],R13
MOV RDI,R13
AND EAX,0xffffffcf
OR EAX,0x10
MOV byte ptr [RBP + 0x48],AL
CALL 0x00109160
MOV RAX,qword ptr [R13 + 0x8]
ADD RSP,0x48
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV EDX,0x5
LEA RSI,[0x146208]
XOR EDI,EDI
XOR R13D,R13D
CALL 0x001092e0
MOV RDI,RAX
XOR EAX,EAX
CALL 0x00125230
JMP 0x00128305
XOR EAX,EAX
RET
MOV EAX,dword ptr [R12 + 0x2c]
TEST EAX,EAX
JNZ 0x00128560
MOVZX EAX,byte ptr [RBP + 0x48]
MOV RDI,R13
AND EAX,0xffffffcf
OR EAX,0x20
MOV byte ptr [RBP + 0x48],AL
CALL 0x00109720
ADD RSP,0x48
XOR EAX,EAX
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
CALL 0x00109470
XOR EDI,EDI
MOV EDX,0x5
LEA RSI,[0x146238]
MOV EBX,EAX
CALL 0x001092e0
MOV ESI,EBX
MOV RDI,RAX
XOR EAX,EAX
CALL 0x00125230
JMP 0x0012831e
XOR EAX,EAX
JMP 0x0012846c
MOV RDI,R13
CALL 0x00127300
MOV RSI,qword ptr [RBP]
MOV qword ptr [RSP + 0x10],RAX
JMP 0x00128345
MOV EDI,dword ptr [R12 + 0x28]
CALL 0x001094b0
MOV dword ptr [R12 + 0x28],0xffffffff
JMP 0x00128447
MOV RAX,qword ptr [R12 + 0x18]
MOV RDI,qword ptr [R12 + 0x8]
MOV RSI,qword ptr [R12 + 0x10]
CQO
IDIV qword ptr [0x001aa888]
ADD RSI,RDX
SUB RDI,RDX
CALL 0x001098a0
JMP 0x001284bd
(translation_unit "undefined8 FUN_00128200(long *param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined8 uVar4;\n  long lVar5;\n  long lVar6;\n  long *plVar7;\n  long *plVar8;\n  int local_6c;\n  long local_68;\n  undefined4 local_60;\n  long local_58;\n  long local_50;\n  long *local_48;\n  \n  if ((*(byte *)((long)param_1 + 0x46) & 0x20) != 0) {\n    return 0;\n  }\n  if ((*(byte *)(param_1 + 9) & 0x30) != 0) {\n    if ((*(byte *)(param_1 + 9) & 0x30) != 0x10) {\n      return 0;\n    }\n    return *(undefined8 *)(param_1[10] + 8);\n  }\n  lVar5 = *param_1;\n  bfd_use_reserved_id = 1;\n  iVar1 = bfd_plugin_target_p(param_1[1]);\n  plVar7 = param_1;\n  if (iVar1 != 0) {\n    plVar7 = DAT_001aadb0;\n  }\n  uVar4 = concat(lVar5," (symbol from plugin)",0);\n  lVar5 = bfd_create(uVar4,plVar7);\n  if (lVar5 != 0) {\n    *(uint *)(lVar5 + 0x44) = *(uint *)(lVar5 + 0x44) | 0x220000;\n    iVar2 = bfd_make_writable(lVar5);\n    if (iVar2 != 0) {\n      if (iVar1 == 0) {\n        uVar4 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(lVar5,uVar4);\n        uVar3 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(lVar5,uVar3);\n        iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5);\n        if (iVar1 == 0) goto LAB_00128480;\n      }\n      lVar6 = bfd_make_section_anyway_with_flags(lVar5,".text",0x20811b);\n      if (lVar6 != 0) goto LAB_00128305;\n    }\n  }\nLAB_00128480:\n  lVar5 = 0;\n  uVar4 = dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);\n  FUN_00125230(uVar4);\nLAB_00128305:\n  plVar7 = (long *)bfd_alloc(lVar5,0x40);\n  if (plVar7 == (long *)0x0) {\n    uVar3 = bfd_get_error();\n    uVar4 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    FUN_00125230(uVar4,uVar3);\n  }\n  iVar1 = bfd_plugin_open_input(param_1,&local_68);\n  if (iVar1 == 0) {\n    uVar4 = 0;\n  }\n  else {\n    lVar6 = *param_1;\n    if (local_68 == lVar6) {\n      local_68 = FUN_00127300(lVar5);\n      lVar6 = *param_1;\n    }\n    *plVar7 = lVar5;\n    *(undefined4 *)(plVar7 + 5) = local_60;\n    plVar7[1] = 0;\n    plVar7[6] = local_58;\n    plVar7[2] = 0;\n    plVar7[3] = 0;\n    *(undefined4 *)((long)plVar7 + 0x2c) = 0;\n    plVar7[7] = local_50;\n    local_48 = plVar7;\n    lVar6 = FUN_00127300(lVar5,lVar6);\n    plVar8 = DAT_001aa948;\n    local_6c = 0;\n    plVar7[4] = lVar6;\n    if (plVar8 != (long *)0x0) {\n      do {\n        if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }\n        plVar8 = (long *)*plVar8;\n      } while ((plVar8 != (long *)0x0) && (local_6c == 0));\n    }\n    lVar6 = DAT_001aa928;\n    if (DAT_001aa928 != 0) {\n      uVar4 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n      FUN_00125230(uVar4,lVar6);\n    }\n    if (((int)plVar7[5] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {\n      close((int)plVar7[5]);\n      *(undefined4 *)(plVar7 + 5) = 0xffffffff;\n    }\n    if (local_6c == 0) {\n      if (*(int *)((long)plVar7 + 0x2c) != 0) {\n        munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);\n      }\n      *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x20;\n      bfd_close_all_done(lVar5);\n      return 0;\n    }\n    param_1[10] = lVar5;\n    *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x10;\n    bfd_make_readable(lVar5);\n    uVar4 = *(undefined8 *)(lVar5 + 8);\n  }\n  return uVar4;\n}\n\n" (function_definition "undefined8 FUN_00128200(long *param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined8 uVar4;\n  long lVar5;\n  long lVar6;\n  long *plVar7;\n  long *plVar8;\n  int local_6c;\n  long local_68;\n  undefined4 local_60;\n  long local_58;\n  long local_50;\n  long *local_48;\n  \n  if ((*(byte *)((long)param_1 + 0x46) & 0x20) != 0) {\n    return 0;\n  }\n  if ((*(byte *)(param_1 + 9) & 0x30) != 0) {\n    if ((*(byte *)(param_1 + 9) & 0x30) != 0x10) {\n      return 0;\n    }\n    return *(undefined8 *)(param_1[10] + 8);\n  }\n  lVar5 = *param_1;\n  bfd_use_reserved_id = 1;\n  iVar1 = bfd_plugin_target_p(param_1[1]);\n  plVar7 = param_1;\n  if (iVar1 != 0) {\n    plVar7 = DAT_001aadb0;\n  }\n  uVar4 = concat(lVar5," (symbol from plugin)",0);\n  lVar5 = bfd_create(uVar4,plVar7);\n  if (lVar5 != 0) {\n    *(uint *)(lVar5 + 0x44) = *(uint *)(lVar5 + 0x44) | 0x220000;\n    iVar2 = bfd_make_writable(lVar5);\n    if (iVar2 != 0) {\n      if (iVar1 == 0) {\n        uVar4 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(lVar5,uVar4);\n        uVar3 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(lVar5,uVar3);\n        iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5);\n        if (iVar1 == 0) goto LAB_00128480;\n      }\n      lVar6 = bfd_make_section_anyway_with_flags(lVar5,".text",0x20811b);\n      if (lVar6 != 0) goto LAB_00128305;\n    }\n  }\nLAB_00128480:\n  lVar5 = 0;\n  uVar4 = dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);\n  FUN_00125230(uVar4);\nLAB_00128305:\n  plVar7 = (long *)bfd_alloc(lVar5,0x40);\n  if (plVar7 == (long *)0x0) {\n    uVar3 = bfd_get_error();\n    uVar4 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    FUN_00125230(uVar4,uVar3);\n  }\n  iVar1 = bfd_plugin_open_input(param_1,&local_68);\n  if (iVar1 == 0) {\n    uVar4 = 0;\n  }\n  else {\n    lVar6 = *param_1;\n    if (local_68 == lVar6) {\n      local_68 = FUN_00127300(lVar5);\n      lVar6 = *param_1;\n    }\n    *plVar7 = lVar5;\n    *(undefined4 *)(plVar7 + 5) = local_60;\n    plVar7[1] = 0;\n    plVar7[6] = local_58;\n    plVar7[2] = 0;\n    plVar7[3] = 0;\n    *(undefined4 *)((long)plVar7 + 0x2c) = 0;\n    plVar7[7] = local_50;\n    local_48 = plVar7;\n    lVar6 = FUN_00127300(lVar5,lVar6);\n    plVar8 = DAT_001aa948;\n    local_6c = 0;\n    plVar7[4] = lVar6;\n    if (plVar8 != (long *)0x0) {\n      do {\n        if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }\n        plVar8 = (long *)*plVar8;\n      } while ((plVar8 != (long *)0x0) && (local_6c == 0));\n    }\n    lVar6 = DAT_001aa928;\n    if (DAT_001aa928 != 0) {\n      uVar4 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n      FUN_00125230(uVar4,lVar6);\n    }\n    if (((int)plVar7[5] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {\n      close((int)plVar7[5]);\n      *(undefined4 *)(plVar7 + 5) = 0xffffffff;\n    }\n    if (local_6c == 0) {\n      if (*(int *)((long)plVar7 + 0x2c) != 0) {\n        munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);\n      }\n      *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x20;\n      bfd_close_all_done(lVar5);\n      return 0;\n    }\n    param_1[10] = lVar5;\n    *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x10;\n    bfd_make_readable(lVar5);\n    uVar4 = *(undefined8 *)(lVar5 + 8);\n  }\n  return uVar4;\n}" type_identifier (function_declarator "FUN_00128200(long *param_1)" identifier (parameter_list "(long *param_1)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined8 uVar4;\n  long lVar5;\n  long lVar6;\n  long *plVar7;\n  long *plVar8;\n  int local_6c;\n  long local_68;\n  undefined4 local_60;\n  long local_58;\n  long local_50;\n  long *local_48;\n  \n  if ((*(byte *)((long)param_1 + 0x46) & 0x20) != 0) {\n    return 0;\n  }\n  if ((*(byte *)(param_1 + 9) & 0x30) != 0) {\n    if ((*(byte *)(param_1 + 9) & 0x30) != 0x10) {\n      return 0;\n    }\n    return *(undefined8 *)(param_1[10] + 8);\n  }\n  lVar5 = *param_1;\n  bfd_use_reserved_id = 1;\n  iVar1 = bfd_plugin_target_p(param_1[1]);\n  plVar7 = param_1;\n  if (iVar1 != 0) {\n    plVar7 = DAT_001aadb0;\n  }\n  uVar4 = concat(lVar5," (symbol from plugin)",0);\n  lVar5 = bfd_create(uVar4,plVar7);\n  if (lVar5 != 0) {\n    *(uint *)(lVar5 + 0x44) = *(uint *)(lVar5 + 0x44) | 0x220000;\n    iVar2 = bfd_make_writable(lVar5);\n    if (iVar2 != 0) {\n      if (iVar1 == 0) {\n        uVar4 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(lVar5,uVar4);\n        uVar3 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(lVar5,uVar3);\n        iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5);\n        if (iVar1 == 0) goto LAB_00128480;\n      }\n      lVar6 = bfd_make_section_anyway_with_flags(lVar5,".text",0x20811b);\n      if (lVar6 != 0) goto LAB_00128305;\n    }\n  }\nLAB_00128480:\n  lVar5 = 0;\n  uVar4 = dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);\n  FUN_00125230(uVar4);\nLAB_00128305:\n  plVar7 = (long *)bfd_alloc(lVar5,0x40);\n  if (plVar7 == (long *)0x0) {\n    uVar3 = bfd_get_error();\n    uVar4 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    FUN_00125230(uVar4,uVar3);\n  }\n  iVar1 = bfd_plugin_open_input(param_1,&local_68);\n  if (iVar1 == 0) {\n    uVar4 = 0;\n  }\n  else {\n    lVar6 = *param_1;\n    if (local_68 == lVar6) {\n      local_68 = FUN_00127300(lVar5);\n      lVar6 = *param_1;\n    }\n    *plVar7 = lVar5;\n    *(undefined4 *)(plVar7 + 5) = local_60;\n    plVar7[1] = 0;\n    plVar7[6] = local_58;\n    plVar7[2] = 0;\n    plVar7[3] = 0;\n    *(undefined4 *)((long)plVar7 + 0x2c) = 0;\n    plVar7[7] = local_50;\n    local_48 = plVar7;\n    lVar6 = FUN_00127300(lVar5,lVar6);\n    plVar8 = DAT_001aa948;\n    local_6c = 0;\n    plVar7[4] = lVar6;\n    if (plVar8 != (long *)0x0) {\n      do {\n        if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }\n        plVar8 = (long *)*plVar8;\n      } while ((plVar8 != (long *)0x0) && (local_6c == 0));\n    }\n    lVar6 = DAT_001aa928;\n    if (DAT_001aa928 != 0) {\n      uVar4 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n      FUN_00125230(uVar4,lVar6);\n    }\n    if (((int)plVar7[5] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {\n      close((int)plVar7[5]);\n      *(undefined4 *)(plVar7 + 5) = 0xffffffff;\n    }\n    if (local_6c == 0) {\n      if (*(int *)((long)plVar7 + 0x2c) != 0) {\n        munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);\n      }\n      *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x20;\n      bfd_close_all_done(lVar5);\n      return 0;\n    }\n    param_1[10] = lVar5;\n    *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x10;\n    bfd_make_readable(lVar5);\n    uVar4 = *(undefined8 *)(lVar5 + 8);\n  }\n  return uVar4;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar7;" (sized_type_specifier "long" long) (pointer_declarator "*plVar7" * identifier) ;) (declaration "long *plVar8;" (sized_type_specifier "long" long) (pointer_declarator "*plVar8" * identifier) ;) (declaration "int local_6c;" primitive_type identifier ;) (declaration "long local_68;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined4 local_60;" type_identifier identifier ;) (declaration "long local_58;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_50;" (sized_type_specifier "long" long) identifier ;) (declaration "long *local_48;" (sized_type_specifier "long" long) (pointer_declarator "*local_48" * identifier) ;) (if_statement "if ((*(byte *)((long)param_1 + 0x46) & 0x20) != 0) {\n    return 0;\n  }" if (parenthesized_expression "((*(byte *)((long)param_1 + 0x46) & 0x20) != 0)" ( (binary_expression "(*(byte *)((long)param_1 + 0x46) & 0x20) != 0" (parenthesized_expression "(*(byte *)((long)param_1 + 0x46) & 0x20)" ( (binary_expression "*(byte *)((long)param_1 + 0x46) & 0x20" (pointer_expression "*(byte *)((long)param_1 + 0x46)" * (cast_expression "(byte *)((long)param_1 + 0x46)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x46)" ( (binary_expression "(long)param_1 + 0x46" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((*(byte *)(param_1 + 9) & 0x30) != 0) {\n    if ((*(byte *)(param_1 + 9) & 0x30) != 0x10) {\n      return 0;\n    }\n    return *(undefined8 *)(param_1[10] + 8);\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 9) & 0x30) != 0)" ( (binary_expression "(*(byte *)(param_1 + 9) & 0x30) != 0" (parenthesized_expression "(*(byte *)(param_1 + 9) & 0x30)" ( (binary_expression "*(byte *)(param_1 + 9) & 0x30" (pointer_expression "*(byte *)(param_1 + 9)" * (cast_expression "(byte *)(param_1 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    if ((*(byte *)(param_1 + 9) & 0x30) != 0x10) {\n      return 0;\n    }\n    return *(undefined8 *)(param_1[10] + 8);\n  }" { (if_statement "if ((*(byte *)(param_1 + 9) & 0x30) != 0x10) {\n      return 0;\n    }" if (parenthesized_expression "((*(byte *)(param_1 + 9) & 0x30) != 0x10)" ( (binary_expression "(*(byte *)(param_1 + 9) & 0x30) != 0x10" (parenthesized_expression "(*(byte *)(param_1 + 9) & 0x30)" ( (binary_expression "*(byte *)(param_1 + 9) & 0x30" (pointer_expression "*(byte *)(param_1 + 9)" * (cast_expression "(byte *)(param_1 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (return_statement "return *(undefined8 *)(param_1[10] + 8);" return (pointer_expression "*(undefined8 *)(param_1[10] + 8)" * (cast_expression "(undefined8 *)(param_1[10] + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[10] + 8)" ( (binary_expression "param_1[10] + 8" (subscript_expression "param_1[10]" identifier [ number_literal ]) + number_literal) )))) ;) })) (expression_statement "lVar5 = *param_1;" (assignment_expression "lVar5 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "bfd_use_reserved_id = 1;" (assignment_expression "bfd_use_reserved_id = 1" identifier = number_literal) ;) (expression_statement "iVar1 = bfd_plugin_target_p(param_1[1]);" (assignment_expression "iVar1 = bfd_plugin_target_p(param_1[1])" identifier = (call_expression "bfd_plugin_target_p(param_1[1])" identifier (argument_list "(param_1[1])" ( (subscript_expression "param_1[1]" identifier [ number_literal ]) )))) ;) (expression_statement "plVar7 = param_1;" (assignment_expression "plVar7 = param_1" identifier = identifier) ;) (if_statement "if (iVar1 != 0) {\n    plVar7 = DAT_001aadb0;\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    plVar7 = DAT_001aadb0;\n  }" { (expression_statement "plVar7 = DAT_001aadb0;" (assignment_expression "plVar7 = DAT_001aadb0" identifier = identifier) ;) })) (expression_statement "uVar4 = concat(lVar5," (symbol from plugin)",0);" (assignment_expression "uVar4 = concat(lVar5," (symbol from plugin)",0)" identifier = (call_expression "concat(lVar5," (symbol from plugin)",0)" identifier (argument_list "(lVar5," (symbol from plugin)",0)" ( identifier , (string_literal "" (symbol from plugin)"" " string_content ") , number_literal )))) ;) (expression_statement "lVar5 = bfd_create(uVar4,plVar7);" (assignment_expression "lVar5 = bfd_create(uVar4,plVar7)" identifier = (call_expression "bfd_create(uVar4,plVar7)" identifier (argument_list "(uVar4,plVar7)" ( identifier , identifier )))) ;) (if_statement "if (lVar5 != 0) {\n    *(uint *)(lVar5 + 0x44) = *(uint *)(lVar5 + 0x44) | 0x220000;\n    iVar2 = bfd_make_writable(lVar5);\n    if (iVar2 != 0) {\n      if (iVar1 == 0) {\n        uVar4 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(lVar5,uVar4);\n        uVar3 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(lVar5,uVar3);\n        iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5);\n        if (iVar1 == 0) goto LAB_00128480;\n      }\n      lVar6 = bfd_make_section_anyway_with_flags(lVar5,".text",0x20811b);\n      if (lVar6 != 0) goto LAB_00128305;\n    }\n  }" if (parenthesized_expression "(lVar5 != 0)" ( (binary_expression "lVar5 != 0" identifier != number_literal) )) (compound_statement "{\n    *(uint *)(lVar5 + 0x44) = *(uint *)(lVar5 + 0x44) | 0x220000;\n    iVar2 = bfd_make_writable(lVar5);\n    if (iVar2 != 0) {\n      if (iVar1 == 0) {\n        uVar4 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(lVar5,uVar4);\n        uVar3 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(lVar5,uVar3);\n        iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5);\n        if (iVar1 == 0) goto LAB_00128480;\n      }\n      lVar6 = bfd_make_section_anyway_with_flags(lVar5,".text",0x20811b);\n      if (lVar6 != 0) goto LAB_00128305;\n    }\n  }" { (expression_statement "*(uint *)(lVar5 + 0x44) = *(uint *)(lVar5 + 0x44) | 0x220000;" (assignment_expression "*(uint *)(lVar5 + 0x44) = *(uint *)(lVar5 + 0x44) | 0x220000" (pointer_expression "*(uint *)(lVar5 + 0x44)" * (cast_expression "(uint *)(lVar5 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x44)" ( (binary_expression "lVar5 + 0x44" identifier + number_literal) )))) = (binary_expression "*(uint *)(lVar5 + 0x44) | 0x220000" (pointer_expression "*(uint *)(lVar5 + 0x44)" * (cast_expression "(uint *)(lVar5 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x44)" ( (binary_expression "lVar5 + 0x44" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "iVar2 = bfd_make_writable(lVar5);" (assignment_expression "iVar2 = bfd_make_writable(lVar5)" identifier = (call_expression "bfd_make_writable(lVar5)" identifier (argument_list "(lVar5)" ( identifier )))) ;) (if_statement "if (iVar2 != 0) {\n      if (iVar1 == 0) {\n        uVar4 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(lVar5,uVar4);\n        uVar3 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(lVar5,uVar3);\n        iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5);\n        if (iVar1 == 0) goto LAB_00128480;\n      }\n      lVar6 = bfd_make_section_anyway_with_flags(lVar5,".text",0x20811b);\n      if (lVar6 != 0) goto LAB_00128305;\n    }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      if (iVar1 == 0) {\n        uVar4 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(lVar5,uVar4);\n        uVar3 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(lVar5,uVar3);\n        iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5);\n        if (iVar1 == 0) goto LAB_00128480;\n      }\n      lVar6 = bfd_make_section_anyway_with_flags(lVar5,".text",0x20811b);\n      if (lVar6 != 0) goto LAB_00128305;\n    }" { (if_statement "if (iVar1 == 0) {\n        uVar4 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(lVar5,uVar4);\n        uVar3 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(lVar5,uVar3);\n        iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5);\n        if (iVar1 == 0) goto LAB_00128480;\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar4 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(lVar5,uVar4);\n        uVar3 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(lVar5,uVar3);\n        iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5);\n        if (iVar1 == 0) goto LAB_00128480;\n      }" { (expression_statement "uVar4 = bfd_get_arch_info(param_1);" (assignment_expression "uVar4 = bfd_get_arch_info(param_1)" identifier = (call_expression "bfd_get_arch_info(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "bfd_set_arch_info(lVar5,uVar4);" (call_expression "bfd_set_arch_info(lVar5,uVar4)" identifier (argument_list "(lVar5,uVar4)" ( identifier , identifier ))) ;) (expression_statement "uVar3 = bfd_get_gp_size(param_1);" (assignment_expression "uVar3 = bfd_get_gp_size(param_1)" identifier = (call_expression "bfd_get_gp_size(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "bfd_set_gp_size(lVar5,uVar3);" (call_expression "bfd_set_gp_size(lVar5,uVar3)" identifier (argument_list "(lVar5,uVar3)" ( identifier , identifier ))) ;) (expression_statement "iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5);" (assignment_expression "iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5)" identifier = (call_expression "(**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5)" (parenthesized_expression "(**(code **)(*(long *)(lVar5 + 8) + 0x138))" ( (pointer_expression "**(code **)(*(long *)(lVar5 + 8) + 0x138)" * (pointer_expression "*(code **)(*(long *)(lVar5 + 8) + 0x138)" * (cast_expression "(code **)(*(long *)(lVar5 + 8) + 0x138)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(lVar5 + 8) + 0x138)" ( (binary_expression "*(long *)(lVar5 + 8) + 0x138" (pointer_expression "*(long *)(lVar5 + 8)" * (cast_expression "(long *)(lVar5 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 8)" ( (binary_expression "lVar5 + 8" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(param_1,lVar5)" ( identifier , identifier )))) ;) (if_statement "if (iVar1 == 0) goto LAB_00128480;" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00128480;" goto statement_identifier ;)) })) (expression_statement "lVar6 = bfd_make_section_anyway_with_flags(lVar5,".text",0x20811b);" (assignment_expression "lVar6 = bfd_make_section_anyway_with_flags(lVar5,".text",0x20811b)" identifier = (call_expression "bfd_make_section_anyway_with_flags(lVar5,".text",0x20811b)" identifier (argument_list "(lVar5,".text",0x20811b)" ( identifier , (string_literal "".text"" " string_content ") , number_literal )))) ;) (if_statement "if (lVar6 != 0) goto LAB_00128305;" if (parenthesized_expression "(lVar6 != 0)" ( (binary_expression "lVar6 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00128305;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_00128480:\n  lVar5 = 0;" statement_identifier : (expression_statement "lVar5 = 0;" (assignment_expression "lVar5 = 0" identifier = number_literal) ;)) (expression_statement "uVar4 = dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);" (assignment_expression "uVar4 = dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5)" identifier = (call_expression "dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5)" identifier (argument_list "(0,"%F%P: could not create dummy IR bfd: %E\n",5)" ( number_literal , (string_literal ""%F%P: could not create dummy IR bfd: %E\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00125230(uVar4);" (call_expression "FUN_00125230(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) (labeled_statement "LAB_00128305:\n  plVar7 = (long *)bfd_alloc(lVar5,0x40);" statement_identifier : (expression_statement "plVar7 = (long *)bfd_alloc(lVar5,0x40);" (assignment_expression "plVar7 = (long *)bfd_alloc(lVar5,0x40)" identifier = (cast_expression "(long *)bfd_alloc(lVar5,0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_alloc(lVar5,0x40)" identifier (argument_list "(lVar5,0x40)" ( identifier , number_literal ))))) ;)) (if_statement "if (plVar7 == (long *)0x0) {\n    uVar3 = bfd_get_error();\n    uVar4 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    FUN_00125230(uVar4,uVar3);\n  }" if (parenthesized_expression "(plVar7 == (long *)0x0)" ( (binary_expression "plVar7 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar3 = bfd_get_error();\n    uVar4 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    FUN_00125230(uVar4,uVar3);\n  }" { (expression_statement "uVar3 = bfd_get_error();" (assignment_expression "uVar3 = bfd_get_error()" identifier = (call_expression "bfd_get_error()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar4 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);" (assignment_expression "uVar4 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5)" identifier = (call_expression "dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5)" identifier (argument_list "(0,"%F%P: plugin failed to allocate memory for input: %s\n",5)" ( number_literal , (string_literal ""%F%P: plugin failed to allocate memory for input: %s\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00125230(uVar4,uVar3);" (call_expression "FUN_00125230(uVar4,uVar3)" identifier (argument_list "(uVar4,uVar3)" ( identifier , identifier ))) ;) })) (expression_statement "iVar1 = bfd_plugin_open_input(param_1,&local_68);" (assignment_expression "iVar1 = bfd_plugin_open_input(param_1,&local_68)" identifier = (call_expression "bfd_plugin_open_input(param_1,&local_68)" identifier (argument_list "(param_1,&local_68)" ( identifier , (pointer_expression "&local_68" & identifier) )))) ;) (if_statement "if (iVar1 == 0) {\n    uVar4 = 0;\n  }\n  else {\n    lVar6 = *param_1;\n    if (local_68 == lVar6) {\n      local_68 = FUN_00127300(lVar5);\n      lVar6 = *param_1;\n    }\n    *plVar7 = lVar5;\n    *(undefined4 *)(plVar7 + 5) = local_60;\n    plVar7[1] = 0;\n    plVar7[6] = local_58;\n    plVar7[2] = 0;\n    plVar7[3] = 0;\n    *(undefined4 *)((long)plVar7 + 0x2c) = 0;\n    plVar7[7] = local_50;\n    local_48 = plVar7;\n    lVar6 = FUN_00127300(lVar5,lVar6);\n    plVar8 = DAT_001aa948;\n    local_6c = 0;\n    plVar7[4] = lVar6;\n    if (plVar8 != (long *)0x0) {\n      do {\n        if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }\n        plVar8 = (long *)*plVar8;\n      } while ((plVar8 != (long *)0x0) && (local_6c == 0));\n    }\n    lVar6 = DAT_001aa928;\n    if (DAT_001aa928 != 0) {\n      uVar4 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n      FUN_00125230(uVar4,lVar6);\n    }\n    if (((int)plVar7[5] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {\n      close((int)plVar7[5]);\n      *(undefined4 *)(plVar7 + 5) = 0xffffffff;\n    }\n    if (local_6c == 0) {\n      if (*(int *)((long)plVar7 + 0x2c) != 0) {\n        munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);\n      }\n      *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x20;\n      bfd_close_all_done(lVar5);\n      return 0;\n    }\n    param_1[10] = lVar5;\n    *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x10;\n    bfd_make_readable(lVar5);\n    uVar4 = *(undefined8 *)(lVar5 + 8);\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar4 = 0;\n  }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    lVar6 = *param_1;\n    if (local_68 == lVar6) {\n      local_68 = FUN_00127300(lVar5);\n      lVar6 = *param_1;\n    }\n    *plVar7 = lVar5;\n    *(undefined4 *)(plVar7 + 5) = local_60;\n    plVar7[1] = 0;\n    plVar7[6] = local_58;\n    plVar7[2] = 0;\n    plVar7[3] = 0;\n    *(undefined4 *)((long)plVar7 + 0x2c) = 0;\n    plVar7[7] = local_50;\n    local_48 = plVar7;\n    lVar6 = FUN_00127300(lVar5,lVar6);\n    plVar8 = DAT_001aa948;\n    local_6c = 0;\n    plVar7[4] = lVar6;\n    if (plVar8 != (long *)0x0) {\n      do {\n        if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }\n        plVar8 = (long *)*plVar8;\n      } while ((plVar8 != (long *)0x0) && (local_6c == 0));\n    }\n    lVar6 = DAT_001aa928;\n    if (DAT_001aa928 != 0) {\n      uVar4 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n      FUN_00125230(uVar4,lVar6);\n    }\n    if (((int)plVar7[5] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {\n      close((int)plVar7[5]);\n      *(undefined4 *)(plVar7 + 5) = 0xffffffff;\n    }\n    if (local_6c == 0) {\n      if (*(int *)((long)plVar7 + 0x2c) != 0) {\n        munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);\n      }\n      *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x20;\n      bfd_close_all_done(lVar5);\n      return 0;\n    }\n    param_1[10] = lVar5;\n    *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x10;\n    bfd_make_readable(lVar5);\n    uVar4 = *(undefined8 *)(lVar5 + 8);\n  }" else (compound_statement "{\n    lVar6 = *param_1;\n    if (local_68 == lVar6) {\n      local_68 = FUN_00127300(lVar5);\n      lVar6 = *param_1;\n    }\n    *plVar7 = lVar5;\n    *(undefined4 *)(plVar7 + 5) = local_60;\n    plVar7[1] = 0;\n    plVar7[6] = local_58;\n    plVar7[2] = 0;\n    plVar7[3] = 0;\n    *(undefined4 *)((long)plVar7 + 0x2c) = 0;\n    plVar7[7] = local_50;\n    local_48 = plVar7;\n    lVar6 = FUN_00127300(lVar5,lVar6);\n    plVar8 = DAT_001aa948;\n    local_6c = 0;\n    plVar7[4] = lVar6;\n    if (plVar8 != (long *)0x0) {\n      do {\n        if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }\n        plVar8 = (long *)*plVar8;\n      } while ((plVar8 != (long *)0x0) && (local_6c == 0));\n    }\n    lVar6 = DAT_001aa928;\n    if (DAT_001aa928 != 0) {\n      uVar4 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n      FUN_00125230(uVar4,lVar6);\n    }\n    if (((int)plVar7[5] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {\n      close((int)plVar7[5]);\n      *(undefined4 *)(plVar7 + 5) = 0xffffffff;\n    }\n    if (local_6c == 0) {\n      if (*(int *)((long)plVar7 + 0x2c) != 0) {\n        munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);\n      }\n      *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x20;\n      bfd_close_all_done(lVar5);\n      return 0;\n    }\n    param_1[10] = lVar5;\n    *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x10;\n    bfd_make_readable(lVar5);\n    uVar4 = *(undefined8 *)(lVar5 + 8);\n  }" { (expression_statement "lVar6 = *param_1;" (assignment_expression "lVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (local_68 == lVar6) {\n      local_68 = FUN_00127300(lVar5);\n      lVar6 = *param_1;\n    }" if (parenthesized_expression "(local_68 == lVar6)" ( (binary_expression "local_68 == lVar6" identifier == identifier) )) (compound_statement "{\n      local_68 = FUN_00127300(lVar5);\n      lVar6 = *param_1;\n    }" { (expression_statement "local_68 = FUN_00127300(lVar5);" (assignment_expression "local_68 = FUN_00127300(lVar5)" identifier = (call_expression "FUN_00127300(lVar5)" identifier (argument_list "(lVar5)" ( identifier )))) ;) (expression_statement "lVar6 = *param_1;" (assignment_expression "lVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) })) (expression_statement "*plVar7 = lVar5;" (assignment_expression "*plVar7 = lVar5" (pointer_expression "*plVar7" * identifier) = identifier) ;) (expression_statement "*(undefined4 *)(plVar7 + 5) = local_60;" (assignment_expression "*(undefined4 *)(plVar7 + 5) = local_60" (pointer_expression "*(undefined4 *)(plVar7 + 5)" * (cast_expression "(undefined4 *)(plVar7 + 5)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar7 + 5)" ( (binary_expression "plVar7 + 5" identifier + number_literal) )))) = identifier) ;) (expression_statement "plVar7[1] = 0;" (assignment_expression "plVar7[1] = 0" (subscript_expression "plVar7[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "plVar7[6] = local_58;" (assignment_expression "plVar7[6] = local_58" (subscript_expression "plVar7[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar7[2] = 0;" (assignment_expression "plVar7[2] = 0" (subscript_expression "plVar7[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "plVar7[3] = 0;" (assignment_expression "plVar7[3] = 0" (subscript_expression "plVar7[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)((long)plVar7 + 0x2c) = 0;" (assignment_expression "*(undefined4 *)((long)plVar7 + 0x2c) = 0" (pointer_expression "*(undefined4 *)((long)plVar7 + 0x2c)" * (cast_expression "(undefined4 *)((long)plVar7 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar7 + 0x2c)" ( (binary_expression "(long)plVar7 + 0x2c" (cast_expression "(long)plVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "plVar7[7] = local_50;" (assignment_expression "plVar7[7] = local_50" (subscript_expression "plVar7[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_48 = plVar7;" (assignment_expression "local_48 = plVar7" identifier = identifier) ;) (expression_statement "lVar6 = FUN_00127300(lVar5,lVar6);" (assignment_expression "lVar6 = FUN_00127300(lVar5,lVar6)" identifier = (call_expression "FUN_00127300(lVar5,lVar6)" identifier (argument_list "(lVar5,lVar6)" ( identifier , identifier )))) ;) (expression_statement "plVar8 = DAT_001aa948;" (assignment_expression "plVar8 = DAT_001aa948" identifier = identifier) ;) (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" identifier = number_literal) ;) (expression_statement "plVar7[4] = lVar6;" (assignment_expression "plVar7[4] = lVar6" (subscript_expression "plVar7[4]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (plVar8 != (long *)0x0) {\n      do {\n        if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }\n        plVar8 = (long *)*plVar8;\n      } while ((plVar8 != (long *)0x0) && (local_6c == 0));\n    }" if (parenthesized_expression "(plVar8 != (long *)0x0)" ( (binary_expression "plVar8 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      do {\n        if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }\n        plVar8 = (long *)*plVar8;\n      } while ((plVar8 != (long *)0x0) && (local_6c == 0));\n    }" { (do_statement "do {\n        if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }\n        plVar8 = (long *)*plVar8;\n      } while ((plVar8 != (long *)0x0) && (local_6c == 0));" do (compound_statement "{\n        if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }\n        plVar8 = (long *)*plVar8;\n      }" { (if_statement "if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }" if (parenthesized_expression "((code *)plVar8[5] != (code *)0x0)" ( (binary_expression "(code *)plVar8[5] != (code *)0x0" (cast_expression "(code *)plVar8[5]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar8[5]" identifier [ number_literal ])) != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }" { (expression_statement "DAT_001aa930 = plVar8;" (assignment_expression "DAT_001aa930 = plVar8" identifier = identifier) ;) (expression_statement "iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);" (assignment_expression "iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c)" identifier = (call_expression "(*(code *)plVar8[5])(&local_68,&local_6c)" (parenthesized_expression "(*(code *)plVar8[5])" ( (pointer_expression "*(code *)plVar8[5]" * (cast_expression "(code *)plVar8[5]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar8[5]" identifier [ number_literal ]))) )) (argument_list "(&local_68,&local_6c)" ( (pointer_expression "&local_68" & identifier) , (pointer_expression "&local_6c" & identifier) )))) ;) (expression_statement "DAT_001aa930 = (long *)0x0;" (assignment_expression "DAT_001aa930 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n            DAT_001aa928 = plVar8[1];\n          }" { (expression_statement "DAT_001aa928 = plVar8[1];" (assignment_expression "DAT_001aa928 = plVar8[1]" identifier = (subscript_expression "plVar8[1]" identifier [ number_literal ])) ;) })) })) (expression_statement "plVar8 = (long *)*plVar8;" (assignment_expression "plVar8 = (long *)*plVar8" identifier = (cast_expression "(long *)*plVar8" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar8" * identifier))) ;) }) while (parenthesized_expression "((plVar8 != (long *)0x0) && (local_6c == 0))" ( (binary_expression "(plVar8 != (long *)0x0) && (local_6c == 0)" (parenthesized_expression "(plVar8 != (long *)0x0)" ( (binary_expression "plVar8 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) ))) )) ;) })) (expression_statement "lVar6 = DAT_001aa928;" (assignment_expression "lVar6 = DAT_001aa928" identifier = identifier) ;) (if_statement "if (DAT_001aa928 != 0) {\n      uVar4 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n      FUN_00125230(uVar4,lVar6);\n    }" if (parenthesized_expression "(DAT_001aa928 != 0)" ( (binary_expression "DAT_001aa928 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar4 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n      FUN_00125230(uVar4,lVar6);\n    }" { (expression_statement "uVar4 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);" (assignment_expression "uVar4 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5)" identifier = (call_expression "dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5)" identifier (argument_list "(0,"%F%P: %s: plugin reported error claiming file\n",5)" ( number_literal , (string_literal ""%F%P: %s: plugin reported error claiming file\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00125230(uVar4,lVar6);" (call_expression "FUN_00125230(uVar4,lVar6)" identifier (argument_list "(uVar4,lVar6)" ( identifier , identifier ))) ;) })) (if_statement "if (((int)plVar7[5] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {\n      close((int)plVar7[5]);\n      *(undefined4 *)(plVar7 + 5) = 0xffffffff;\n    }" if (parenthesized_expression "(((int)plVar7[5] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0))" ( (binary_expression "((int)plVar7[5] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)" (parenthesized_expression "((int)plVar7[5] != -1)" ( (binary_expression "(int)plVar7[5] != -1" (cast_expression "(int)plVar7[5]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar7[5]" identifier [ number_literal ])) != number_literal) )) && (parenthesized_expression "(iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)" ( (comma_expression "iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0" (assignment_expression "iVar1 = bfd_plugin_target_p(param_1[1])" identifier = (call_expression "bfd_plugin_target_p(param_1[1])" identifier (argument_list "(param_1[1])" ( (subscript_expression "param_1[1]" identifier [ number_literal ]) )))) , (binary_expression "iVar1 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      close((int)plVar7[5]);\n      *(undefined4 *)(plVar7 + 5) = 0xffffffff;\n    }" { (expression_statement "close((int)plVar7[5]);" (call_expression "close((int)plVar7[5])" identifier (argument_list "((int)plVar7[5])" ( (cast_expression "(int)plVar7[5]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar7[5]" identifier [ number_literal ])) ))) ;) (expression_statement "*(undefined4 *)(plVar7 + 5) = 0xffffffff;" (assignment_expression "*(undefined4 *)(plVar7 + 5) = 0xffffffff" (pointer_expression "*(undefined4 *)(plVar7 + 5)" * (cast_expression "(undefined4 *)(plVar7 + 5)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar7 + 5)" ( (binary_expression "plVar7 + 5" identifier + number_literal) )))) = number_literal) ;) })) (if_statement "if (local_6c == 0) {\n      if (*(int *)((long)plVar7 + 0x2c) != 0) {\n        munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);\n      }\n      *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x20;\n      bfd_close_all_done(lVar5);\n      return 0;\n    }" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (compound_statement "{\n      if (*(int *)((long)plVar7 + 0x2c) != 0) {\n        munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);\n      }\n      *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x20;\n      bfd_close_all_done(lVar5);\n      return 0;\n    }" { (if_statement "if (*(int *)((long)plVar7 + 0x2c) != 0) {\n        munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);\n      }" if (parenthesized_expression "(*(int *)((long)plVar7 + 0x2c) != 0)" ( (binary_expression "*(int *)((long)plVar7 + 0x2c) != 0" (pointer_expression "*(int *)((long)plVar7 + 0x2c)" * (cast_expression "(int *)((long)plVar7 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar7 + 0x2c)" ( (binary_expression "(long)plVar7 + 0x2c" (cast_expression "(long)plVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n        munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);\n      }" { (expression_statement "munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);" (call_expression "munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888)" identifier (argument_list "((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888)" ( (cast_expression "(void *)(plVar7[1] - plVar7[3] % DAT_001aa888)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar7[1] - plVar7[3] % DAT_001aa888)" ( (binary_expression "plVar7[1] - plVar7[3] % DAT_001aa888" (subscript_expression "plVar7[1]" identifier [ number_literal ]) - (binary_expression "plVar7[3] % DAT_001aa888" (subscript_expression "plVar7[3]" identifier [ number_literal ]) % identifier)) ))) , (binary_expression "plVar7[2] + plVar7[3] % DAT_001aa888" (subscript_expression "plVar7[2]" identifier [ number_literal ]) + (binary_expression "plVar7[3] % DAT_001aa888" (subscript_expression "plVar7[3]" identifier [ number_literal ]) % identifier)) ))) ;) })) (expression_statement "*(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x20;" (assignment_expression "*(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x20" (pointer_expression "*(byte *)(param_1 + 9)" * (cast_expression "(byte *)(param_1 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 9) & 0xcf | 0x20" (binary_expression "*(byte *)(param_1 + 9) & 0xcf" (pointer_expression "*(byte *)(param_1 + 9)" * (cast_expression "(byte *)(param_1 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "bfd_close_all_done(lVar5);" (call_expression "bfd_close_all_done(lVar5)" identifier (argument_list "(lVar5)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "param_1[10] = lVar5;" (assignment_expression "param_1[10] = lVar5" (subscript_expression "param_1[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x10;" (assignment_expression "*(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x10" (pointer_expression "*(byte *)(param_1 + 9)" * (cast_expression "(byte *)(param_1 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 9) & 0xcf | 0x10" (binary_expression "*(byte *)(param_1 + 9) & 0xcf" (pointer_expression "*(byte *)(param_1 + 9)" * (cast_expression "(byte *)(param_1 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "bfd_make_readable(lVar5);" (call_expression "bfd_make_readable(lVar5)" identifier (argument_list "(lVar5)" ( identifier ))) ;) (expression_statement "uVar4 = *(undefined8 *)(lVar5 + 8);" (assignment_expression "uVar4 = *(undefined8 *)(lVar5 + 8)" identifier = (pointer_expression "*(undefined8 *)(lVar5 + 8)" * (cast_expression "(undefined8 *)(lVar5 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 8)" ( (binary_expression "lVar5 + 8" identifier + number_literal) ))))) ;) }))) (return_statement "return uVar4;" return identifier ;) })))
(translation_unit "bfd_target * plugin_object_p(bfd *ibfd)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  bfd_boolean bVar4;\n  ld_plugin_status lVar5;\n  uint uVar6;\n  undefined8 uVar7;\n  bfd *pbVar8;\n  long lVar9;\n  undefined8 *puVar10;\n  char *pcVar11;\n  char *fmt;\n  bfd_target *pbVar12;\n  plugin *ppVar13;\n  int claimed;\n  ld_plugin_input_file file;\n  \n  if ((ibfd->field_0x46 & 0x20) != 0) {\n    return (bfd_target *)0x0;\n  }\n  if ((ibfd->field_0x48 & 0x30) != 0) {\n    if ((ibfd->field_0x48 & 0x30) != 0x10) {\n      return (bfd_target *)0x0;\n    }\n    return ibfd->plugin_dummy_bfd->xvec;\n  }\n  pcVar11 = ibfd->filename;\n  bfd_use_reserved_id = 1;\n  iVar1 = bfd_plugin_target_p(ibfd->xvec);\n  pbVar8 = ibfd;\n  if (iVar1 != 0) {\n    pbVar8 = link_info.output_bfd;\n  }\n  uVar7 = concat(pcVar11," (symbol from plugin)",0);\n  pbVar8 = (bfd *)bfd_create(uVar7,pbVar8);\n  if (pbVar8 != (bfd *)0x0) {\n    *(uint *)&pbVar8->field_0x44 = *(uint *)&pbVar8->field_0x44 | 0x220000;\n    iVar2 = bfd_make_writable(pbVar8);\n    if (iVar2 != 0) {\n      if (iVar1 == 0) {\n        uVar7 = bfd_get_arch_info(ibfd);\n        bfd_set_arch_info(pbVar8,uVar7);\n        uVar3 = bfd_get_gp_size(ibfd);\n        bfd_set_gp_size(pbVar8,uVar3);\n        bVar4 = (*pbVar8->xvec->_bfd_copy_private_bfd_data)(ibfd,pbVar8);\n        if (bVar4 == 0) goto LAB_00128480;\n      }\n      lVar9 = bfd_make_section_anyway_with_flags(pbVar8,".text",0x20811b);\n      if (lVar9 != 0) goto LAB_00128305;\n    }\n  }\nLAB_00128480:\n  pbVar8 = (bfd *)0x0;\n  pcVar11 = (char *)dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);\n  einfo(pcVar11);\nLAB_00128305:\n  puVar10 = (undefined8 *)bfd_alloc(pbVar8,0x40);\n  if (puVar10 == (undefined8 *)0x0) {\n    uVar6 = bfd_get_error();\n    pcVar11 = (char *)dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    einfo(pcVar11,(ulong)uVar6);\n  }\n  iVar1 = bfd_plugin_open_input(ibfd,&file);\n  if (iVar1 == 0) {\n    pbVar12 = (bfd_target *)0x0;\n  }\n  else {\n    pcVar11 = ibfd->filename;\n    if (file.name == pcVar11) {\n      file.name = plugin_strdup(pbVar8,pcVar11);\n      pcVar11 = ibfd->filename;\n    }\n    *puVar10 = pbVar8;\n    *(int *)(puVar10 + 5) = file.fd;\n    puVar10[1] = 0;\n    puVar10[6] = file.offset;\n    puVar10[2] = 0;\n    puVar10[3] = 0;\n    *(undefined4 *)((long)puVar10 + 0x2c) = 0;\n    puVar10[7] = file.filesize;\n    file.handle = puVar10;\n    pcVar11 = plugin_strdup(pbVar8,pcVar11);\n    ppVar13 = plugins_list;\n    claimed = 0;\n    puVar10[4] = pcVar11;\n    if (ppVar13 != (plugin_t *)0x0) {\n      do {\n        if (ppVar13->claim_file_handler != (ld_plugin_claim_file_handler)0x0) {\n          called_plugin = ppVar13;\n          lVar5 = (*ppVar13->claim_file_handler)(&file,&claimed);\n          called_plugin = (plugin_t *)0x0;\n          if (lVar5 != LDPS_OK) {\n            error_plugin = ppVar13->name;\n          }\n        }\n        ppVar13 = ppVar13->next;\n      } while ((ppVar13 != (plugin *)0x0) && (claimed == 0));\n    }\n    pcVar11 = error_plugin;\n    if (error_plugin != (char *)0x0) {\n      fmt = (char *)dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n      einfo(fmt,pcVar11);\n    }\n    if ((*(int *)(puVar10 + 5) != -1) && (iVar1 = bfd_plugin_target_p(ibfd->xvec), iVar1 == 0)) {\n      close(*(int *)(puVar10 + 5));\n      *(undefined4 *)(puVar10 + 5) = 0xffffffff;\n    }\n    if (claimed == 0) {\n      if (*(int *)((long)puVar10 + 0x2c) != 0) {\n        munmap((void *)(puVar10[1] - (long)puVar10[3] % plugin_pagesize),\n               puVar10[2] + (long)puVar10[3] % plugin_pagesize);\n      }\n      ibfd->field_0x48 = ibfd->field_0x48 & 0xcf | 0x20;\n      bfd_close_all_done(pbVar8);\n      return (bfd_target *)0x0;\n    }\n    ibfd->plugin_dummy_bfd = pbVar8;\n    ibfd->field_0x48 = ibfd->field_0x48 & 0xcf | 0x10;\n    bfd_make_readable(pbVar8);\n    pbVar12 = pbVar8->xvec;\n  }\n  return pbVar12;\n}\n\n" (function_definition "bfd_target * plugin_object_p(bfd *ibfd)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  bfd_boolean bVar4;\n  ld_plugin_status lVar5;\n  uint uVar6;\n  undefined8 uVar7;\n  bfd *pbVar8;\n  long lVar9;\n  undefined8 *puVar10;\n  char *pcVar11;\n  char *fmt;\n  bfd_target *pbVar12;\n  plugin *ppVar13;\n  int claimed;\n  ld_plugin_input_file file;\n  \n  if ((ibfd->field_0x46 & 0x20) != 0) {\n    return (bfd_target *)0x0;\n  }\n  if ((ibfd->field_0x48 & 0x30) != 0) {\n    if ((ibfd->field_0x48 & 0x30) != 0x10) {\n      return (bfd_target *)0x0;\n    }\n    return ibfd->plugin_dummy_bfd->xvec;\n  }\n  pcVar11 = ibfd->filename;\n  bfd_use_reserved_id = 1;\n  iVar1 = bfd_plugin_target_p(ibfd->xvec);\n  pbVar8 = ibfd;\n  if (iVar1 != 0) {\n    pbVar8 = link_info.output_bfd;\n  }\n  uVar7 = concat(pcVar11," (symbol from plugin)",0);\n  pbVar8 = (bfd *)bfd_create(uVar7,pbVar8);\n  if (pbVar8 != (bfd *)0x0) {\n    *(uint *)&pbVar8->field_0x44 = *(uint *)&pbVar8->field_0x44 | 0x220000;\n    iVar2 = bfd_make_writable(pbVar8);\n    if (iVar2 != 0) {\n      if (iVar1 == 0) {\n        uVar7 = bfd_get_arch_info(ibfd);\n        bfd_set_arch_info(pbVar8,uVar7);\n        uVar3 = bfd_get_gp_size(ibfd);\n        bfd_set_gp_size(pbVar8,uVar3);\n        bVar4 = (*pbVar8->xvec->_bfd_copy_private_bfd_data)(ibfd,pbVar8);\n        if (bVar4 == 0) goto LAB_00128480;\n      }\n      lVar9 = bfd_make_section_anyway_with_flags(pbVar8,".text",0x20811b);\n      if (lVar9 != 0) goto LAB_00128305;\n    }\n  }\nLAB_00128480:\n  pbVar8 = (bfd *)0x0;\n  pcVar11 = (char *)dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);\n  einfo(pcVar11);\nLAB_00128305:\n  puVar10 = (undefined8 *)bfd_alloc(pbVar8,0x40);\n  if (puVar10 == (undefined8 *)0x0) {\n    uVar6 = bfd_get_error();\n    pcVar11 = (char *)dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    einfo(pcVar11,(ulong)uVar6);\n  }\n  iVar1 = bfd_plugin_open_input(ibfd,&file);\n  if (iVar1 == 0) {\n    pbVar12 = (bfd_target *)0x0;\n  }\n  else {\n    pcVar11 = ibfd->filename;\n    if (file.name == pcVar11) {\n      file.name = plugin_strdup(pbVar8,pcVar11);\n      pcVar11 = ibfd->filename;\n    }\n    *puVar10 = pbVar8;\n    *(int *)(puVar10 + 5) = file.fd;\n    puVar10[1] = 0;\n    puVar10[6] = file.offset;\n    puVar10[2] = 0;\n    puVar10[3] = 0;\n    *(undefined4 *)((long)puVar10 + 0x2c) = 0;\n    puVar10[7] = file.filesize;\n    file.handle = puVar10;\n    pcVar11 = plugin_strdup(pbVar8,pcVar11);\n    ppVar13 = plugins_list;\n    claimed = 0;\n    puVar10[4] = pcVar11;\n    if (ppVar13 != (plugin_t *)0x0) {\n      do {\n        if (ppVar13->claim_file_handler != (ld_plugin_claim_file_handler)0x0) {\n          called_plugin = ppVar13;\n          lVar5 = (*ppVar13->claim_file_handler)(&file,&claimed);\n          called_plugin = (plugin_t *)0x0;\n          if (lVar5 != LDPS_OK) {\n            error_plugin = ppVar13->name;\n          }\n        }\n        ppVar13 = ppVar13->next;\n      } while ((ppVar13 != (plugin *)0x0) && (claimed == 0));\n    }\n    pcVar11 = error_plugin;\n    if (error_plugin != (char *)0x0) {\n      fmt = (char *)dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n      einfo(fmt,pcVar11);\n    }\n    if ((*(int *)(puVar10 + 5) != -1) && (iVar1 = bfd_plugin_target_p(ibfd->xvec), iVar1 == 0)) {\n      close(*(int *)(puVar10 + 5));\n      *(undefined4 *)(puVar10 + 5) = 0xffffffff;\n    }\n    if (claimed == 0) {\n      if (*(int *)((long)puVar10 + 0x2c) != 0) {\n        munmap((void *)(puVar10[1] - (long)puVar10[3] % plugin_pagesize),\n               puVar10[2] + (long)puVar10[3] % plugin_pagesize);\n      }\n      ibfd->field_0x48 = ibfd->field_0x48 & 0xcf | 0x20;\n      bfd_close_all_done(pbVar8);\n      return (bfd_target *)0x0;\n    }\n    ibfd->plugin_dummy_bfd = pbVar8;\n    ibfd->field_0x48 = ibfd->field_0x48 & 0xcf | 0x10;\n    bfd_make_readable(pbVar8);\n    pbVar12 = pbVar8->xvec;\n  }\n  return pbVar12;\n}" type_identifier (pointer_declarator "* plugin_object_p(bfd *ibfd)" * (function_declarator "plugin_object_p(bfd *ibfd)" identifier (parameter_list "(bfd *ibfd)" ( (parameter_declaration "bfd *ibfd" type_identifier (pointer_declarator "*ibfd" * identifier)) )))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  bfd_boolean bVar4;\n  ld_plugin_status lVar5;\n  uint uVar6;\n  undefined8 uVar7;\n  bfd *pbVar8;\n  long lVar9;\n  undefined8 *puVar10;\n  char *pcVar11;\n  char *fmt;\n  bfd_target *pbVar12;\n  plugin *ppVar13;\n  int claimed;\n  ld_plugin_input_file file;\n  \n  if ((ibfd->field_0x46 & 0x20) != 0) {\n    return (bfd_target *)0x0;\n  }\n  if ((ibfd->field_0x48 & 0x30) != 0) {\n    if ((ibfd->field_0x48 & 0x30) != 0x10) {\n      return (bfd_target *)0x0;\n    }\n    return ibfd->plugin_dummy_bfd->xvec;\n  }\n  pcVar11 = ibfd->filename;\n  bfd_use_reserved_id = 1;\n  iVar1 = bfd_plugin_target_p(ibfd->xvec);\n  pbVar8 = ibfd;\n  if (iVar1 != 0) {\n    pbVar8 = link_info.output_bfd;\n  }\n  uVar7 = concat(pcVar11," (symbol from plugin)",0);\n  pbVar8 = (bfd *)bfd_create(uVar7,pbVar8);\n  if (pbVar8 != (bfd *)0x0) {\n    *(uint *)&pbVar8->field_0x44 = *(uint *)&pbVar8->field_0x44 | 0x220000;\n    iVar2 = bfd_make_writable(pbVar8);\n    if (iVar2 != 0) {\n      if (iVar1 == 0) {\n        uVar7 = bfd_get_arch_info(ibfd);\n        bfd_set_arch_info(pbVar8,uVar7);\n        uVar3 = bfd_get_gp_size(ibfd);\n        bfd_set_gp_size(pbVar8,uVar3);\n        bVar4 = (*pbVar8->xvec->_bfd_copy_private_bfd_data)(ibfd,pbVar8);\n        if (bVar4 == 0) goto LAB_00128480;\n      }\n      lVar9 = bfd_make_section_anyway_with_flags(pbVar8,".text",0x20811b);\n      if (lVar9 != 0) goto LAB_00128305;\n    }\n  }\nLAB_00128480:\n  pbVar8 = (bfd *)0x0;\n  pcVar11 = (char *)dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);\n  einfo(pcVar11);\nLAB_00128305:\n  puVar10 = (undefined8 *)bfd_alloc(pbVar8,0x40);\n  if (puVar10 == (undefined8 *)0x0) {\n    uVar6 = bfd_get_error();\n    pcVar11 = (char *)dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    einfo(pcVar11,(ulong)uVar6);\n  }\n  iVar1 = bfd_plugin_open_input(ibfd,&file);\n  if (iVar1 == 0) {\n    pbVar12 = (bfd_target *)0x0;\n  }\n  else {\n    pcVar11 = ibfd->filename;\n    if (file.name == pcVar11) {\n      file.name = plugin_strdup(pbVar8,pcVar11);\n      pcVar11 = ibfd->filename;\n    }\n    *puVar10 = pbVar8;\n    *(int *)(puVar10 + 5) = file.fd;\n    puVar10[1] = 0;\n    puVar10[6] = file.offset;\n    puVar10[2] = 0;\n    puVar10[3] = 0;\n    *(undefined4 *)((long)puVar10 + 0x2c) = 0;\n    puVar10[7] = file.filesize;\n    file.handle = puVar10;\n    pcVar11 = plugin_strdup(pbVar8,pcVar11);\n    ppVar13 = plugins_list;\n    claimed = 0;\n    puVar10[4] = pcVar11;\n    if (ppVar13 != (plugin_t *)0x0) {\n      do {\n        if (ppVar13->claim_file_handler != (ld_plugin_claim_file_handler)0x0) {\n          called_plugin = ppVar13;\n          lVar5 = (*ppVar13->claim_file_handler)(&file,&claimed);\n          called_plugin = (plugin_t *)0x0;\n          if (lVar5 != LDPS_OK) {\n            error_plugin = ppVar13->name;\n          }\n        }\n        ppVar13 = ppVar13->next;\n      } while ((ppVar13 != (plugin *)0x0) && (claimed == 0));\n    }\n    pcVar11 = error_plugin;\n    if (error_plugin != (char *)0x0) {\n      fmt = (char *)dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n      einfo(fmt,pcVar11);\n    }\n    if ((*(int *)(puVar10 + 5) != -1) && (iVar1 = bfd_plugin_target_p(ibfd->xvec), iVar1 == 0)) {\n      close(*(int *)(puVar10 + 5));\n      *(undefined4 *)(puVar10 + 5) = 0xffffffff;\n    }\n    if (claimed == 0) {\n      if (*(int *)((long)puVar10 + 0x2c) != 0) {\n        munmap((void *)(puVar10[1] - (long)puVar10[3] % plugin_pagesize),\n               puVar10[2] + (long)puVar10[3] % plugin_pagesize);\n      }\n      ibfd->field_0x48 = ibfd->field_0x48 & 0xcf | 0x20;\n      bfd_close_all_done(pbVar8);\n      return (bfd_target *)0x0;\n    }\n    ibfd->plugin_dummy_bfd = pbVar8;\n    ibfd->field_0x48 = ibfd->field_0x48 & 0xcf | 0x10;\n    bfd_make_readable(pbVar8);\n    pbVar12 = pbVar8->xvec;\n  }\n  return pbVar12;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "bfd_boolean bVar4;" type_identifier identifier ;) (declaration "ld_plugin_status lVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "bfd *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "char *pcVar11;" primitive_type (pointer_declarator "*pcVar11" * identifier) ;) (declaration "char *fmt;" primitive_type (pointer_declarator "*fmt" * identifier) ;) (declaration "bfd_target *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "plugin *ppVar13;" type_identifier (pointer_declarator "*ppVar13" * identifier) ;) (declaration "int claimed;" primitive_type identifier ;) (declaration "ld_plugin_input_file file;" type_identifier identifier ;) (if_statement "if ((ibfd->field_0x46 & 0x20) != 0) {\n    return (bfd_target *)0x0;\n  }" if (parenthesized_expression "((ibfd->field_0x46 & 0x20) != 0)" ( (binary_expression "(ibfd->field_0x46 & 0x20) != 0" (parenthesized_expression "(ibfd->field_0x46 & 0x20)" ( (binary_expression "ibfd->field_0x46 & 0x20" (field_expression "ibfd->field_0x46" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    return (bfd_target *)0x0;\n  }" { (return_statement "return (bfd_target *)0x0;" return (cast_expression "(bfd_target *)0x0" ( (type_descriptor "bfd_target *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if ((ibfd->field_0x48 & 0x30) != 0) {\n    if ((ibfd->field_0x48 & 0x30) != 0x10) {\n      return (bfd_target *)0x0;\n    }\n    return ibfd->plugin_dummy_bfd->xvec;\n  }" if (parenthesized_expression "((ibfd->field_0x48 & 0x30) != 0)" ( (binary_expression "(ibfd->field_0x48 & 0x30) != 0" (parenthesized_expression "(ibfd->field_0x48 & 0x30)" ( (binary_expression "ibfd->field_0x48 & 0x30" (field_expression "ibfd->field_0x48" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    if ((ibfd->field_0x48 & 0x30) != 0x10) {\n      return (bfd_target *)0x0;\n    }\n    return ibfd->plugin_dummy_bfd->xvec;\n  }" { (if_statement "if ((ibfd->field_0x48 & 0x30) != 0x10) {\n      return (bfd_target *)0x0;\n    }" if (parenthesized_expression "((ibfd->field_0x48 & 0x30) != 0x10)" ( (binary_expression "(ibfd->field_0x48 & 0x30) != 0x10" (parenthesized_expression "(ibfd->field_0x48 & 0x30)" ( (binary_expression "ibfd->field_0x48 & 0x30" (field_expression "ibfd->field_0x48" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      return (bfd_target *)0x0;\n    }" { (return_statement "return (bfd_target *)0x0;" return (cast_expression "(bfd_target *)0x0" ( (type_descriptor "bfd_target *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (return_statement "return ibfd->plugin_dummy_bfd->xvec;" return (field_expression "ibfd->plugin_dummy_bfd->xvec" (field_expression "ibfd->plugin_dummy_bfd" identifier -> field_identifier) -> field_identifier) ;) })) (expression_statement "pcVar11 = ibfd->filename;" (assignment_expression "pcVar11 = ibfd->filename" identifier = (field_expression "ibfd->filename" identifier -> field_identifier)) ;) (expression_statement "bfd_use_reserved_id = 1;" (assignment_expression "bfd_use_reserved_id = 1" identifier = number_literal) ;) (expression_statement "iVar1 = bfd_plugin_target_p(ibfd->xvec);" (assignment_expression "iVar1 = bfd_plugin_target_p(ibfd->xvec)" identifier = (call_expression "bfd_plugin_target_p(ibfd->xvec)" identifier (argument_list "(ibfd->xvec)" ( (field_expression "ibfd->xvec" identifier -> field_identifier) )))) ;) (expression_statement "pbVar8 = ibfd;" (assignment_expression "pbVar8 = ibfd" identifier = identifier) ;) (if_statement "if (iVar1 != 0) {\n    pbVar8 = link_info.output_bfd;\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    pbVar8 = link_info.output_bfd;\n  }" { (expression_statement "pbVar8 = link_info.output_bfd;" (assignment_expression "pbVar8 = link_info.output_bfd" identifier = (field_expression "link_info.output_bfd" identifier . field_identifier)) ;) })) (expression_statement "uVar7 = concat(pcVar11," (symbol from plugin)",0);" (assignment_expression "uVar7 = concat(pcVar11," (symbol from plugin)",0)" identifier = (call_expression "concat(pcVar11," (symbol from plugin)",0)" identifier (argument_list "(pcVar11," (symbol from plugin)",0)" ( identifier , (string_literal "" (symbol from plugin)"" " string_content ") , number_literal )))) ;) (expression_statement "pbVar8 = (bfd *)bfd_create(uVar7,pbVar8);" (assignment_expression "pbVar8 = (bfd *)bfd_create(uVar7,pbVar8)" identifier = (cast_expression "(bfd *)bfd_create(uVar7,pbVar8)" ( (type_descriptor "bfd *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_create(uVar7,pbVar8)" identifier (argument_list "(uVar7,pbVar8)" ( identifier , identifier ))))) ;) (if_statement "if (pbVar8 != (bfd *)0x0) {\n    *(uint *)&pbVar8->field_0x44 = *(uint *)&pbVar8->field_0x44 | 0x220000;\n    iVar2 = bfd_make_writable(pbVar8);\n    if (iVar2 != 0) {\n      if (iVar1 == 0) {\n        uVar7 = bfd_get_arch_info(ibfd);\n        bfd_set_arch_info(pbVar8,uVar7);\n        uVar3 = bfd_get_gp_size(ibfd);\n        bfd_set_gp_size(pbVar8,uVar3);\n        bVar4 = (*pbVar8->xvec->_bfd_copy_private_bfd_data)(ibfd,pbVar8);\n        if (bVar4 == 0) goto LAB_00128480;\n      }\n      lVar9 = bfd_make_section_anyway_with_flags(pbVar8,".text",0x20811b);\n      if (lVar9 != 0) goto LAB_00128305;\n    }\n  }" if (parenthesized_expression "(pbVar8 != (bfd *)0x0)" ( (binary_expression "pbVar8 != (bfd *)0x0" identifier != (cast_expression "(bfd *)0x0" ( (type_descriptor "bfd *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(uint *)&pbVar8->field_0x44 = *(uint *)&pbVar8->field_0x44 | 0x220000;\n    iVar2 = bfd_make_writable(pbVar8);\n    if (iVar2 != 0) {\n      if (iVar1 == 0) {\n        uVar7 = bfd_get_arch_info(ibfd);\n        bfd_set_arch_info(pbVar8,uVar7);\n        uVar3 = bfd_get_gp_size(ibfd);\n        bfd_set_gp_size(pbVar8,uVar3);\n        bVar4 = (*pbVar8->xvec->_bfd_copy_private_bfd_data)(ibfd,pbVar8);\n        if (bVar4 == 0) goto LAB_00128480;\n      }\n      lVar9 = bfd_make_section_anyway_with_flags(pbVar8,".text",0x20811b);\n      if (lVar9 != 0) goto LAB_00128305;\n    }\n  }" { (expression_statement "*(uint *)&pbVar8->field_0x44 = *(uint *)&pbVar8->field_0x44 | 0x220000;" (assignment_expression "*(uint *)&pbVar8->field_0x44 = *(uint *)&pbVar8->field_0x44 | 0x220000" (pointer_expression "*(uint *)&pbVar8->field_0x44" * (cast_expression "(uint *)&pbVar8->field_0x44" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pbVar8->field_0x44" & (field_expression "pbVar8->field_0x44" identifier -> field_identifier)))) = (binary_expression "*(uint *)&pbVar8->field_0x44 | 0x220000" (pointer_expression "*(uint *)&pbVar8->field_0x44" * (cast_expression "(uint *)&pbVar8->field_0x44" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pbVar8->field_0x44" & (field_expression "pbVar8->field_0x44" identifier -> field_identifier)))) | number_literal)) ;) (expression_statement "iVar2 = bfd_make_writable(pbVar8);" (assignment_expression "iVar2 = bfd_make_writable(pbVar8)" identifier = (call_expression "bfd_make_writable(pbVar8)" identifier (argument_list "(pbVar8)" ( identifier )))) ;) (if_statement "if (iVar2 != 0) {\n      if (iVar1 == 0) {\n        uVar7 = bfd_get_arch_info(ibfd);\n        bfd_set_arch_info(pbVar8,uVar7);\n        uVar3 = bfd_get_gp_size(ibfd);\n        bfd_set_gp_size(pbVar8,uVar3);\n        bVar4 = (*pbVar8->xvec->_bfd_copy_private_bfd_data)(ibfd,pbVar8);\n        if (bVar4 == 0) goto LAB_00128480;\n      }\n      lVar9 = bfd_make_section_anyway_with_flags(pbVar8,".text",0x20811b);\n      if (lVar9 != 0) goto LAB_00128305;\n    }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      if (iVar1 == 0) {\n        uVar7 = bfd_get_arch_info(ibfd);\n        bfd_set_arch_info(pbVar8,uVar7);\n        uVar3 = bfd_get_gp_size(ibfd);\n        bfd_set_gp_size(pbVar8,uVar3);\n        bVar4 = (*pbVar8->xvec->_bfd_copy_private_bfd_data)(ibfd,pbVar8);\n        if (bVar4 == 0) goto LAB_00128480;\n      }\n      lVar9 = bfd_make_section_anyway_with_flags(pbVar8,".text",0x20811b);\n      if (lVar9 != 0) goto LAB_00128305;\n    }" { (if_statement "if (iVar1 == 0) {\n        uVar7 = bfd_get_arch_info(ibfd);\n        bfd_set_arch_info(pbVar8,uVar7);\n        uVar3 = bfd_get_gp_size(ibfd);\n        bfd_set_gp_size(pbVar8,uVar3);\n        bVar4 = (*pbVar8->xvec->_bfd_copy_private_bfd_data)(ibfd,pbVar8);\n        if (bVar4 == 0) goto LAB_00128480;\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar7 = bfd_get_arch_info(ibfd);\n        bfd_set_arch_info(pbVar8,uVar7);\n        uVar3 = bfd_get_gp_size(ibfd);\n        bfd_set_gp_size(pbVar8,uVar3);\n        bVar4 = (*pbVar8->xvec->_bfd_copy_private_bfd_data)(ibfd,pbVar8);\n        if (bVar4 == 0) goto LAB_00128480;\n      }" { (expression_statement "uVar7 = bfd_get_arch_info(ibfd);" (assignment_expression "uVar7 = bfd_get_arch_info(ibfd)" identifier = (call_expression "bfd_get_arch_info(ibfd)" identifier (argument_list "(ibfd)" ( identifier )))) ;) (expression_statement "bfd_set_arch_info(pbVar8,uVar7);" (call_expression "bfd_set_arch_info(pbVar8,uVar7)" identifier (argument_list "(pbVar8,uVar7)" ( identifier , identifier ))) ;) (expression_statement "uVar3 = bfd_get_gp_size(ibfd);" (assignment_expression "uVar3 = bfd_get_gp_size(ibfd)" identifier = (call_expression "bfd_get_gp_size(ibfd)" identifier (argument_list "(ibfd)" ( identifier )))) ;) (expression_statement "bfd_set_gp_size(pbVar8,uVar3);" (call_expression "bfd_set_gp_size(pbVar8,uVar3)" identifier (argument_list "(pbVar8,uVar3)" ( identifier , identifier ))) ;) (expression_statement "bVar4 = (*pbVar8->xvec->_bfd_copy_private_bfd_data)(ibfd,pbVar8);" (assignment_expression "bVar4 = (*pbVar8->xvec->_bfd_copy_private_bfd_data)(ibfd,pbVar8)" identifier = (call_expression "(*pbVar8->xvec->_bfd_copy_private_bfd_data)(ibfd,pbVar8)" (parenthesized_expression "(*pbVar8->xvec->_bfd_copy_private_bfd_data)" ( (pointer_expression "*pbVar8->xvec->_bfd_copy_private_bfd_data" * (field_expression "pbVar8->xvec->_bfd_copy_private_bfd_data" (field_expression "pbVar8->xvec" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(ibfd,pbVar8)" ( identifier , identifier )))) ;) (if_statement "if (bVar4 == 0) goto LAB_00128480;" if (parenthesized_expression "(bVar4 == 0)" ( (binary_expression "bVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00128480;" goto statement_identifier ;)) })) (expression_statement "lVar9 = bfd_make_section_anyway_with_flags(pbVar8,".text",0x20811b);" (assignment_expression "lVar9 = bfd_make_section_anyway_with_flags(pbVar8,".text",0x20811b)" identifier = (call_expression "bfd_make_section_anyway_with_flags(pbVar8,".text",0x20811b)" identifier (argument_list "(pbVar8,".text",0x20811b)" ( identifier , (string_literal "".text"" " string_content ") , number_literal )))) ;) (if_statement "if (lVar9 != 0) goto LAB_00128305;" if (parenthesized_expression "(lVar9 != 0)" ( (binary_expression "lVar9 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00128305;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_00128480:\n  pbVar8 = (bfd *)0x0;" statement_identifier : (expression_statement "pbVar8 = (bfd *)0x0;" (assignment_expression "pbVar8 = (bfd *)0x0" identifier = (cast_expression "(bfd *)0x0" ( (type_descriptor "bfd *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "pcVar11 = (char *)dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);" (assignment_expression "pcVar11 = (char *)dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5)" identifier (argument_list "(0,"%F%P: could not create dummy IR bfd: %E\n",5)" ( number_literal , (string_literal ""%F%P: could not create dummy IR bfd: %E\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "einfo(pcVar11);" (call_expression "einfo(pcVar11)" identifier (argument_list "(pcVar11)" ( identifier ))) ;) (labeled_statement "LAB_00128305:\n  puVar10 = (undefined8 *)bfd_alloc(pbVar8,0x40);" statement_identifier : (expression_statement "puVar10 = (undefined8 *)bfd_alloc(pbVar8,0x40);" (assignment_expression "puVar10 = (undefined8 *)bfd_alloc(pbVar8,0x40)" identifier = (cast_expression "(undefined8 *)bfd_alloc(pbVar8,0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_alloc(pbVar8,0x40)" identifier (argument_list "(pbVar8,0x40)" ( identifier , number_literal ))))) ;)) (if_statement "if (puVar10 == (undefined8 *)0x0) {\n    uVar6 = bfd_get_error();\n    pcVar11 = (char *)dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    einfo(pcVar11,(ulong)uVar6);\n  }" if (parenthesized_expression "(puVar10 == (undefined8 *)0x0)" ( (binary_expression "puVar10 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar6 = bfd_get_error();\n    pcVar11 = (char *)dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    einfo(pcVar11,(ulong)uVar6);\n  }" { (expression_statement "uVar6 = bfd_get_error();" (assignment_expression "uVar6 = bfd_get_error()" identifier = (call_expression "bfd_get_error()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar11 = (char *)dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);" (assignment_expression "pcVar11 = (char *)dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5)" identifier (argument_list "(0,"%F%P: plugin failed to allocate memory for input: %s\n",5)" ( number_literal , (string_literal ""%F%P: plugin failed to allocate memory for input: %s\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "einfo(pcVar11,(ulong)uVar6);" (call_expression "einfo(pcVar11,(ulong)uVar6)" identifier (argument_list "(pcVar11,(ulong)uVar6)" ( identifier , (cast_expression "(ulong)uVar6" ( (type_descriptor "ulong" type_identifier) ) identifier) ))) ;) })) (expression_statement "iVar1 = bfd_plugin_open_input(ibfd,&file);" (assignment_expression "iVar1 = bfd_plugin_open_input(ibfd,&file)" identifier = (call_expression "bfd_plugin_open_input(ibfd,&file)" identifier (argument_list "(ibfd,&file)" ( identifier , (pointer_expression "&file" & identifier) )))) ;) (if_statement "if (iVar1 == 0) {\n    pbVar12 = (bfd_target *)0x0;\n  }\n  else {\n    pcVar11 = ibfd->filename;\n    if (file.name == pcVar11) {\n      file.name = plugin_strdup(pbVar8,pcVar11);\n      pcVar11 = ibfd->filename;\n    }\n    *puVar10 = pbVar8;\n    *(int *)(puVar10 + 5) = file.fd;\n    puVar10[1] = 0;\n    puVar10[6] = file.offset;\n    puVar10[2] = 0;\n    puVar10[3] = 0;\n    *(undefined4 *)((long)puVar10 + 0x2c) = 0;\n    puVar10[7] = file.filesize;\n    file.handle = puVar10;\n    pcVar11 = plugin_strdup(pbVar8,pcVar11);\n    ppVar13 = plugins_list;\n    claimed = 0;\n    puVar10[4] = pcVar11;\n    if (ppVar13 != (plugin_t *)0x0) {\n      do {\n        if (ppVar13->claim_file_handler != (ld_plugin_claim_file_handler)0x0) {\n          called_plugin = ppVar13;\n          lVar5 = (*ppVar13->claim_file_handler)(&file,&claimed);\n          called_plugin = (plugin_t *)0x0;\n          if (lVar5 != LDPS_OK) {\n            error_plugin = ppVar13->name;\n          }\n        }\n        ppVar13 = ppVar13->next;\n      } while ((ppVar13 != (plugin *)0x0) && (claimed == 0));\n    }\n    pcVar11 = error_plugin;\n    if (error_plugin != (char *)0x0) {\n      fmt = (char *)dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n      einfo(fmt,pcVar11);\n    }\n    if ((*(int *)(puVar10 + 5) != -1) && (iVar1 = bfd_plugin_target_p(ibfd->xvec), iVar1 == 0)) {\n      close(*(int *)(puVar10 + 5));\n      *(undefined4 *)(puVar10 + 5) = 0xffffffff;\n    }\n    if (claimed == 0) {\n      if (*(int *)((long)puVar10 + 0x2c) != 0) {\n        munmap((void *)(puVar10[1] - (long)puVar10[3] % plugin_pagesize),\n               puVar10[2] + (long)puVar10[3] % plugin_pagesize);\n      }\n      ibfd->field_0x48 = ibfd->field_0x48 & 0xcf | 0x20;\n      bfd_close_all_done(pbVar8);\n      return (bfd_target *)0x0;\n    }\n    ibfd->plugin_dummy_bfd = pbVar8;\n    ibfd->field_0x48 = ibfd->field_0x48 & 0xcf | 0x10;\n    bfd_make_readable(pbVar8);\n    pbVar12 = pbVar8->xvec;\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    pbVar12 = (bfd_target *)0x0;\n  }" { (expression_statement "pbVar12 = (bfd_target *)0x0;" (assignment_expression "pbVar12 = (bfd_target *)0x0" identifier = (cast_expression "(bfd_target *)0x0" ( (type_descriptor "bfd_target *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    pcVar11 = ibfd->filename;\n    if (file.name == pcVar11) {\n      file.name = plugin_strdup(pbVar8,pcVar11);\n      pcVar11 = ibfd->filename;\n    }\n    *puVar10 = pbVar8;\n    *(int *)(puVar10 + 5) = file.fd;\n    puVar10[1] = 0;\n    puVar10[6] = file.offset;\n    puVar10[2] = 0;\n    puVar10[3] = 0;\n    *(undefined4 *)((long)puVar10 + 0x2c) = 0;\n    puVar10[7] = file.filesize;\n    file.handle = puVar10;\n    pcVar11 = plugin_strdup(pbVar8,pcVar11);\n    ppVar13 = plugins_list;\n    claimed = 0;\n    puVar10[4] = pcVar11;\n    if (ppVar13 != (plugin_t *)0x0) {\n      do {\n        if (ppVar13->claim_file_handler != (ld_plugin_claim_file_handler)0x0) {\n          called_plugin = ppVar13;\n          lVar5 = (*ppVar13->claim_file_handler)(&file,&claimed);\n          called_plugin = (plugin_t *)0x0;\n          if (lVar5 != LDPS_OK) {\n            error_plugin = ppVar13->name;\n          }\n        }\n        ppVar13 = ppVar13->next;\n      } while ((ppVar13 != (plugin *)0x0) && (claimed == 0));\n    }\n    pcVar11 = error_plugin;\n    if (error_plugin != (char *)0x0) {\n      fmt = (char *)dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n      einfo(fmt,pcVar11);\n    }\n    if ((*(int *)(puVar10 + 5) != -1) && (iVar1 = bfd_plugin_target_p(ibfd->xvec), iVar1 == 0)) {\n      close(*(int *)(puVar10 + 5));\n      *(undefined4 *)(puVar10 + 5) = 0xffffffff;\n    }\n    if (claimed == 0) {\n      if (*(int *)((long)puVar10 + 0x2c) != 0) {\n        munmap((void *)(puVar10[1] - (long)puVar10[3] % plugin_pagesize),\n               puVar10[2] + (long)puVar10[3] % plugin_pagesize);\n      }\n      ibfd->field_0x48 = ibfd->field_0x48 & 0xcf | 0x20;\n      bfd_close_all_done(pbVar8);\n      return (bfd_target *)0x0;\n    }\n    ibfd->plugin_dummy_bfd = pbVar8;\n    ibfd->field_0x48 = ibfd->field_0x48 & 0xcf | 0x10;\n    bfd_make_readable(pbVar8);\n    pbVar12 = pbVar8->xvec;\n  }" else (compound_statement "{\n    pcVar11 = ibfd->filename;\n    if (file.name == pcVar11) {\n      file.name = plugin_strdup(pbVar8,pcVar11);\n      pcVar11 = ibfd->filename;\n    }\n    *puVar10 = pbVar8;\n    *(int *)(puVar10 + 5) = file.fd;\n    puVar10[1] = 0;\n    puVar10[6] = file.offset;\n    puVar10[2] = 0;\n    puVar10[3] = 0;\n    *(undefined4 *)((long)puVar10 + 0x2c) = 0;\n    puVar10[7] = file.filesize;\n    file.handle = puVar10;\n    pcVar11 = plugin_strdup(pbVar8,pcVar11);\n    ppVar13 = plugins_list;\n    claimed = 0;\n    puVar10[4] = pcVar11;\n    if (ppVar13 != (plugin_t *)0x0) {\n      do {\n        if (ppVar13->claim_file_handler != (ld_plugin_claim_file_handler)0x0) {\n          called_plugin = ppVar13;\n          lVar5 = (*ppVar13->claim_file_handler)(&file,&claimed);\n          called_plugin = (plugin_t *)0x0;\n          if (lVar5 != LDPS_OK) {\n            error_plugin = ppVar13->name;\n          }\n        }\n        ppVar13 = ppVar13->next;\n      } while ((ppVar13 != (plugin *)0x0) && (claimed == 0));\n    }\n    pcVar11 = error_plugin;\n    if (error_plugin != (char *)0x0) {\n      fmt = (char *)dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n      einfo(fmt,pcVar11);\n    }\n    if ((*(int *)(puVar10 + 5) != -1) && (iVar1 = bfd_plugin_target_p(ibfd->xvec), iVar1 == 0)) {\n      close(*(int *)(puVar10 + 5));\n      *(undefined4 *)(puVar10 + 5) = 0xffffffff;\n    }\n    if (claimed == 0) {\n      if (*(int *)((long)puVar10 + 0x2c) != 0) {\n        munmap((void *)(puVar10[1] - (long)puVar10[3] % plugin_pagesize),\n               puVar10[2] + (long)puVar10[3] % plugin_pagesize);\n      }\n      ibfd->field_0x48 = ibfd->field_0x48 & 0xcf | 0x20;\n      bfd_close_all_done(pbVar8);\n      return (bfd_target *)0x0;\n    }\n    ibfd->plugin_dummy_bfd = pbVar8;\n    ibfd->field_0x48 = ibfd->field_0x48 & 0xcf | 0x10;\n    bfd_make_readable(pbVar8);\n    pbVar12 = pbVar8->xvec;\n  }" { (expression_statement "pcVar11 = ibfd->filename;" (assignment_expression "pcVar11 = ibfd->filename" identifier = (field_expression "ibfd->filename" identifier -> field_identifier)) ;) (if_statement "if (file.name == pcVar11) {\n      file.name = plugin_strdup(pbVar8,pcVar11);\n      pcVar11 = ibfd->filename;\n    }" if (parenthesized_expression "(file.name == pcVar11)" ( (binary_expression "file.name == pcVar11" (field_expression "file.name" identifier . field_identifier) == identifier) )) (compound_statement "{\n      file.name = plugin_strdup(pbVar8,pcVar11);\n      pcVar11 = ibfd->filename;\n    }" { (expression_statement "file.name = plugin_strdup(pbVar8,pcVar11);" (assignment_expression "file.name = plugin_strdup(pbVar8,pcVar11)" (field_expression "file.name" identifier . field_identifier) = (call_expression "plugin_strdup(pbVar8,pcVar11)" identifier (argument_list "(pbVar8,pcVar11)" ( identifier , identifier )))) ;) (expression_statement "pcVar11 = ibfd->filename;" (assignment_expression "pcVar11 = ibfd->filename" identifier = (field_expression "ibfd->filename" identifier -> field_identifier)) ;) })) (expression_statement "*puVar10 = pbVar8;" (assignment_expression "*puVar10 = pbVar8" (pointer_expression "*puVar10" * identifier) = identifier) ;) (expression_statement "*(int *)(puVar10 + 5) = file.fd;" (assignment_expression "*(int *)(puVar10 + 5) = file.fd" (pointer_expression "*(int *)(puVar10 + 5)" * (cast_expression "(int *)(puVar10 + 5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 5)" ( (binary_expression "puVar10 + 5" identifier + number_literal) )))) = (field_expression "file.fd" identifier . field_identifier)) ;) (expression_statement "puVar10[1] = 0;" (assignment_expression "puVar10[1] = 0" (subscript_expression "puVar10[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar10[6] = file.offset;" (assignment_expression "puVar10[6] = file.offset" (subscript_expression "puVar10[6]" identifier [ number_literal ]) = (field_expression "file.offset" identifier . field_identifier)) ;) (expression_statement "puVar10[2] = 0;" (assignment_expression "puVar10[2] = 0" (subscript_expression "puVar10[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar10[3] = 0;" (assignment_expression "puVar10[3] = 0" (subscript_expression "puVar10[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)((long)puVar10 + 0x2c) = 0;" (assignment_expression "*(undefined4 *)((long)puVar10 + 0x2c) = 0" (pointer_expression "*(undefined4 *)((long)puVar10 + 0x2c)" * (cast_expression "(undefined4 *)((long)puVar10 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar10 + 0x2c)" ( (binary_expression "(long)puVar10 + 0x2c" (cast_expression "(long)puVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "puVar10[7] = file.filesize;" (assignment_expression "puVar10[7] = file.filesize" (subscript_expression "puVar10[7]" identifier [ number_literal ]) = (field_expression "file.filesize" identifier . field_identifier)) ;) (expression_statement "file.handle = puVar10;" (assignment_expression "file.handle = puVar10" (field_expression "file.handle" identifier . field_identifier) = identifier) ;) (expression_statement "pcVar11 = plugin_strdup(pbVar8,pcVar11);" (assignment_expression "pcVar11 = plugin_strdup(pbVar8,pcVar11)" identifier = (call_expression "plugin_strdup(pbVar8,pcVar11)" identifier (argument_list "(pbVar8,pcVar11)" ( identifier , identifier )))) ;) (expression_statement "ppVar13 = plugins_list;" (assignment_expression "ppVar13 = plugins_list" identifier = identifier) ;) (expression_statement "claimed = 0;" (assignment_expression "claimed = 0" identifier = number_literal) ;) (expression_statement "puVar10[4] = pcVar11;" (assignment_expression "puVar10[4] = pcVar11" (subscript_expression "puVar10[4]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (ppVar13 != (plugin_t *)0x0) {\n      do {\n        if (ppVar13->claim_file_handler != (ld_plugin_claim_file_handler)0x0) {\n          called_plugin = ppVar13;\n          lVar5 = (*ppVar13->claim_file_handler)(&file,&claimed);\n          called_plugin = (plugin_t *)0x0;\n          if (lVar5 != LDPS_OK) {\n            error_plugin = ppVar13->name;\n          }\n        }\n        ppVar13 = ppVar13->next;\n      } while ((ppVar13 != (plugin *)0x0) && (claimed == 0));\n    }" if (parenthesized_expression "(ppVar13 != (plugin_t *)0x0)" ( (binary_expression "ppVar13 != (plugin_t *)0x0" identifier != (cast_expression "(plugin_t *)0x0" ( (type_descriptor "plugin_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      do {\n        if (ppVar13->claim_file_handler != (ld_plugin_claim_file_handler)0x0) {\n          called_plugin = ppVar13;\n          lVar5 = (*ppVar13->claim_file_handler)(&file,&claimed);\n          called_plugin = (plugin_t *)0x0;\n          if (lVar5 != LDPS_OK) {\n            error_plugin = ppVar13->name;\n          }\n        }\n        ppVar13 = ppVar13->next;\n      } while ((ppVar13 != (plugin *)0x0) && (claimed == 0));\n    }" { (do_statement "do {\n        if (ppVar13->claim_file_handler != (ld_plugin_claim_file_handler)0x0) {\n          called_plugin = ppVar13;\n          lVar5 = (*ppVar13->claim_file_handler)(&file,&claimed);\n          called_plugin = (plugin_t *)0x0;\n          if (lVar5 != LDPS_OK) {\n            error_plugin = ppVar13->name;\n          }\n        }\n        ppVar13 = ppVar13->next;\n      } while ((ppVar13 != (plugin *)0x0) && (claimed == 0));" do (compound_statement "{\n        if (ppVar13->claim_file_handler != (ld_plugin_claim_file_handler)0x0) {\n          called_plugin = ppVar13;\n          lVar5 = (*ppVar13->claim_file_handler)(&file,&claimed);\n          called_plugin = (plugin_t *)0x0;\n          if (lVar5 != LDPS_OK) {\n            error_plugin = ppVar13->name;\n          }\n        }\n        ppVar13 = ppVar13->next;\n      }" { (if_statement "if (ppVar13->claim_file_handler != (ld_plugin_claim_file_handler)0x0) {\n          called_plugin = ppVar13;\n          lVar5 = (*ppVar13->claim_file_handler)(&file,&claimed);\n          called_plugin = (plugin_t *)0x0;\n          if (lVar5 != LDPS_OK) {\n            error_plugin = ppVar13->name;\n          }\n        }" if (parenthesized_expression "(ppVar13->claim_file_handler != (ld_plugin_claim_file_handler)0x0)" ( (binary_expression "ppVar13->claim_file_handler != (ld_plugin_claim_file_handler)0x0" (field_expression "ppVar13->claim_file_handler" identifier -> field_identifier) != (cast_expression "(ld_plugin_claim_file_handler)0x0" ( (type_descriptor "ld_plugin_claim_file_handler" type_identifier) ) number_literal)) )) (compound_statement "{\n          called_plugin = ppVar13;\n          lVar5 = (*ppVar13->claim_file_handler)(&file,&claimed);\n          called_plugin = (plugin_t *)0x0;\n          if (lVar5 != LDPS_OK) {\n            error_plugin = ppVar13->name;\n          }\n        }" { (expression_statement "called_plugin = ppVar13;" (assignment_expression "called_plugin = ppVar13" identifier = identifier) ;) (expression_statement "lVar5 = (*ppVar13->claim_file_handler)(&file,&claimed);" (assignment_expression "lVar5 = (*ppVar13->claim_file_handler)(&file,&claimed)" identifier = (call_expression "(*ppVar13->claim_file_handler)(&file,&claimed)" (parenthesized_expression "(*ppVar13->claim_file_handler)" ( (pointer_expression "*ppVar13->claim_file_handler" * (field_expression "ppVar13->claim_file_handler" identifier -> field_identifier)) )) (argument_list "(&file,&claimed)" ( (pointer_expression "&file" & identifier) , (pointer_expression "&claimed" & identifier) )))) ;) (expression_statement "called_plugin = (plugin_t *)0x0;" (assignment_expression "called_plugin = (plugin_t *)0x0" identifier = (cast_expression "(plugin_t *)0x0" ( (type_descriptor "plugin_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (lVar5 != LDPS_OK) {\n            error_plugin = ppVar13->name;\n          }" if (parenthesized_expression "(lVar5 != LDPS_OK)" ( (binary_expression "lVar5 != LDPS_OK" identifier != identifier) )) (compound_statement "{\n            error_plugin = ppVar13->name;\n          }" { (expression_statement "error_plugin = ppVar13->name;" (assignment_expression "error_plugin = ppVar13->name" identifier = (field_expression "ppVar13->name" identifier -> field_identifier)) ;) })) })) (expression_statement "ppVar13 = ppVar13->next;" (assignment_expression "ppVar13 = ppVar13->next" identifier = (field_expression "ppVar13->next" identifier -> field_identifier)) ;) }) while (parenthesized_expression "((ppVar13 != (plugin *)0x0) && (claimed == 0))" ( (binary_expression "(ppVar13 != (plugin *)0x0) && (claimed == 0)" (parenthesized_expression "(ppVar13 != (plugin *)0x0)" ( (binary_expression "ppVar13 != (plugin *)0x0" identifier != (cast_expression "(plugin *)0x0" ( (type_descriptor "plugin *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(claimed == 0)" ( (binary_expression "claimed == 0" identifier == number_literal) ))) )) ;) })) (expression_statement "pcVar11 = error_plugin;" (assignment_expression "pcVar11 = error_plugin" identifier = identifier) ;) (if_statement "if (error_plugin != (char *)0x0) {\n      fmt = (char *)dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n      einfo(fmt,pcVar11);\n    }" if (parenthesized_expression "(error_plugin != (char *)0x0)" ( (binary_expression "error_plugin != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      fmt = (char *)dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n      einfo(fmt,pcVar11);\n    }" { (expression_statement "fmt = (char *)dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);" (assignment_expression "fmt = (char *)dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5)" identifier (argument_list "(0,"%F%P: %s: plugin reported error claiming file\n",5)" ( number_literal , (string_literal ""%F%P: %s: plugin reported error claiming file\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "einfo(fmt,pcVar11);" (call_expression "einfo(fmt,pcVar11)" identifier (argument_list "(fmt,pcVar11)" ( identifier , identifier ))) ;) })) (if_statement "if ((*(int *)(puVar10 + 5) != -1) && (iVar1 = bfd_plugin_target_p(ibfd->xvec), iVar1 == 0)) {\n      close(*(int *)(puVar10 + 5));\n      *(undefined4 *)(puVar10 + 5) = 0xffffffff;\n    }" if (parenthesized_expression "((*(int *)(puVar10 + 5) != -1) && (iVar1 = bfd_plugin_target_p(ibfd->xvec), iVar1 == 0))" ( (binary_expression "(*(int *)(puVar10 + 5) != -1) && (iVar1 = bfd_plugin_target_p(ibfd->xvec), iVar1 == 0)" (parenthesized_expression "(*(int *)(puVar10 + 5) != -1)" ( (binary_expression "*(int *)(puVar10 + 5) != -1" (pointer_expression "*(int *)(puVar10 + 5)" * (cast_expression "(int *)(puVar10 + 5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 5)" ( (binary_expression "puVar10 + 5" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(iVar1 = bfd_plugin_target_p(ibfd->xvec), iVar1 == 0)" ( (comma_expression "iVar1 = bfd_plugin_target_p(ibfd->xvec), iVar1 == 0" (assignment_expression "iVar1 = bfd_plugin_target_p(ibfd->xvec)" identifier = (call_expression "bfd_plugin_target_p(ibfd->xvec)" identifier (argument_list "(ibfd->xvec)" ( (field_expression "ibfd->xvec" identifier -> field_identifier) )))) , (binary_expression "iVar1 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      close(*(int *)(puVar10 + 5));\n      *(undefined4 *)(puVar10 + 5) = 0xffffffff;\n    }" { (expression_statement "close(*(int *)(puVar10 + 5));" (call_expression "close(*(int *)(puVar10 + 5))" identifier (argument_list "(*(int *)(puVar10 + 5))" ( (pointer_expression "*(int *)(puVar10 + 5)" * (cast_expression "(int *)(puVar10 + 5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 5)" ( (binary_expression "puVar10 + 5" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(puVar10 + 5) = 0xffffffff;" (assignment_expression "*(undefined4 *)(puVar10 + 5) = 0xffffffff" (pointer_expression "*(undefined4 *)(puVar10 + 5)" * (cast_expression "(undefined4 *)(puVar10 + 5)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 5)" ( (binary_expression "puVar10 + 5" identifier + number_literal) )))) = number_literal) ;) })) (if_statement "if (claimed == 0) {\n      if (*(int *)((long)puVar10 + 0x2c) != 0) {\n        munmap((void *)(puVar10[1] - (long)puVar10[3] % plugin_pagesize),\n               puVar10[2] + (long)puVar10[3] % plugin_pagesize);\n      }\n      ibfd->field_0x48 = ibfd->field_0x48 & 0xcf | 0x20;\n      bfd_close_all_done(pbVar8);\n      return (bfd_target *)0x0;\n    }" if (parenthesized_expression "(claimed == 0)" ( (binary_expression "claimed == 0" identifier == number_literal) )) (compound_statement "{\n      if (*(int *)((long)puVar10 + 0x2c) != 0) {\n        munmap((void *)(puVar10[1] - (long)puVar10[3] % plugin_pagesize),\n               puVar10[2] + (long)puVar10[3] % plugin_pagesize);\n      }\n      ibfd->field_0x48 = ibfd->field_0x48 & 0xcf | 0x20;\n      bfd_close_all_done(pbVar8);\n      return (bfd_target *)0x0;\n    }" { (if_statement "if (*(int *)((long)puVar10 + 0x2c) != 0) {\n        munmap((void *)(puVar10[1] - (long)puVar10[3] % plugin_pagesize),\n               puVar10[2] + (long)puVar10[3] % plugin_pagesize);\n      }" if (parenthesized_expression "(*(int *)((long)puVar10 + 0x2c) != 0)" ( (binary_expression "*(int *)((long)puVar10 + 0x2c) != 0" (pointer_expression "*(int *)((long)puVar10 + 0x2c)" * (cast_expression "(int *)((long)puVar10 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar10 + 0x2c)" ( (binary_expression "(long)puVar10 + 0x2c" (cast_expression "(long)puVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n        munmap((void *)(puVar10[1] - (long)puVar10[3] % plugin_pagesize),\n               puVar10[2] + (long)puVar10[3] % plugin_pagesize);\n      }" { (expression_statement "munmap((void *)(puVar10[1] - (long)puVar10[3] % plugin_pagesize),\n               puVar10[2] + (long)puVar10[3] % plugin_pagesize);" (call_expression "munmap((void *)(puVar10[1] - (long)puVar10[3] % plugin_pagesize),\n               puVar10[2] + (long)puVar10[3] % plugin_pagesize)" identifier (argument_list "((void *)(puVar10[1] - (long)puVar10[3] % plugin_pagesize),\n               puVar10[2] + (long)puVar10[3] % plugin_pagesize)" ( (cast_expression "(void *)(puVar10[1] - (long)puVar10[3] % plugin_pagesize)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10[1] - (long)puVar10[3] % plugin_pagesize)" ( (binary_expression "puVar10[1] - (long)puVar10[3] % plugin_pagesize" (subscript_expression "puVar10[1]" identifier [ number_literal ]) - (binary_expression "(long)puVar10[3] % plugin_pagesize" (cast_expression "(long)puVar10[3]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (subscript_expression "puVar10[3]" identifier [ number_literal ])) % identifier)) ))) , (binary_expression "puVar10[2] + (long)puVar10[3] % plugin_pagesize" (subscript_expression "puVar10[2]" identifier [ number_literal ]) + (binary_expression "(long)puVar10[3] % plugin_pagesize" (cast_expression "(long)puVar10[3]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (subscript_expression "puVar10[3]" identifier [ number_literal ])) % identifier)) ))) ;) })) (expression_statement "ibfd->field_0x48 = ibfd->field_0x48 & 0xcf | 0x20;" (assignment_expression "ibfd->field_0x48 = ibfd->field_0x48 & 0xcf | 0x20" (field_expression "ibfd->field_0x48" identifier -> field_identifier) = (binary_expression "ibfd->field_0x48 & 0xcf | 0x20" (binary_expression "ibfd->field_0x48 & 0xcf" (field_expression "ibfd->field_0x48" identifier -> field_identifier) & number_literal) | number_literal)) ;) (expression_statement "bfd_close_all_done(pbVar8);" (call_expression "bfd_close_all_done(pbVar8)" identifier (argument_list "(pbVar8)" ( identifier ))) ;) (return_statement "return (bfd_target *)0x0;" return (cast_expression "(bfd_target *)0x0" ( (type_descriptor "bfd_target *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "ibfd->plugin_dummy_bfd = pbVar8;" (assignment_expression "ibfd->plugin_dummy_bfd = pbVar8" (field_expression "ibfd->plugin_dummy_bfd" identifier -> field_identifier) = identifier) ;) (expression_statement "ibfd->field_0x48 = ibfd->field_0x48 & 0xcf | 0x10;" (assignment_expression "ibfd->field_0x48 = ibfd->field_0x48 & 0xcf | 0x10" (field_expression "ibfd->field_0x48" identifier -> field_identifier) = (binary_expression "ibfd->field_0x48 & 0xcf | 0x10" (binary_expression "ibfd->field_0x48 & 0xcf" (field_expression "ibfd->field_0x48" identifier -> field_identifier) & number_literal) | number_literal)) ;) (expression_statement "bfd_make_readable(pbVar8);" (call_expression "bfd_make_readable(pbVar8)" identifier (argument_list "(pbVar8)" ( identifier ))) ;) (expression_statement "pbVar12 = pbVar8->xvec;" (assignment_expression "pbVar12 = pbVar8->xvec" identifier = (field_expression "pbVar8->xvec" identifier -> field_identifier)) ;) }))) (return_statement "return pbVar12;" return identifier ;) })))
(translation_unit "undefined8 FUN_00128200(long *param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined8 uVar4;\n  long lVar5;\n  long lVar6;\n  long *plVar7;\n  long *plVar8;\n  int local_6c;\n  long local_68;\n  undefined4 local_60;\n  long local_58;\n  long local_50;\n  long *local_48;\n  \n  if ((*(byte *)((long)param_1 + 0x46) & 0x20) != 0) {\n    return 0;\n  }\n  if ((*(byte *)(param_1 + 9) & 0x30) != 0) {\n    if ((*(byte *)(param_1 + 9) & 0x30) != 0x10) {\n      return 0;\n    }\n    return *(undefined8 *)(param_1[10] + 8);\n  }\n  lVar5 = *param_1;\n  bfd_use_reserved_id = 1;\n  iVar1 = bfd_plugin_target_p(param_1[1]);\n  plVar7 = param_1;\n  if (iVar1 != 0) {\n    plVar7 = DAT_001aadb0;\n  }\n  uVar4 = concat(lVar5," (symbol from plugin)",0);\n  lVar5 = bfd_create(uVar4,plVar7);\n  if (lVar5 != 0) {\n    *(uint *)(lVar5 + 0x44) = *(uint *)(lVar5 + 0x44) | 0x220000;\n    iVar2 = bfd_make_writable(lVar5);\n    if (iVar2 != 0) {\n      if (iVar1 == 0) {\n        uVar4 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(lVar5,uVar4);\n        uVar3 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(lVar5,uVar3);\n        iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5);\n        if (iVar1 == 0) goto LAB_00128480;\n      }\n      lVar6 = bfd_make_section_anyway_with_flags(lVar5,".text",0x20811b);\n      if (lVar6 != 0) goto LAB_00128305;\n    }\n  }\nLAB_00128480:\n  lVar5 = 0;\n  uVar4 = dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);\n  FUN_00125230(uVar4);\nLAB_00128305:\n  plVar7 = (long *)bfd_alloc(lVar5,0x40);\n  if (plVar7 == (long *)0x0) {\n    uVar3 = bfd_get_error();\n    uVar4 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    FUN_00125230(uVar4,uVar3);\n  }\n  iVar1 = bfd_plugin_open_input(param_1,&local_68);\n  if (iVar1 == 0) {\n    uVar4 = 0;\n  }\n  else {\n    lVar6 = *param_1;\n    if (local_68 == lVar6) {\n      local_68 = FUN_00127300(lVar5);\n      lVar6 = *param_1;\n    }\n    *plVar7 = lVar5;\n    *(undefined4 *)(plVar7 + 5) = local_60;\n    plVar7[1] = 0;\n    plVar7[6] = local_58;\n    plVar7[2] = 0;\n    plVar7[3] = 0;\n    *(undefined4 *)((long)plVar7 + 0x2c) = 0;\n    plVar7[7] = local_50;\n    local_48 = plVar7;\n    lVar6 = FUN_00127300(lVar5,lVar6);\n    plVar8 = DAT_001aa948;\n    local_6c = 0;\n    plVar7[4] = lVar6;\n    if (plVar8 != (long *)0x0) {\n      do {\n        if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }\n        plVar8 = (long *)*plVar8;\n      } while ((plVar8 != (long *)0x0) && (local_6c == 0));\n    }\n    lVar6 = DAT_001aa928;\n    if (DAT_001aa928 != 0) {\n      uVar4 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n      FUN_00125230(uVar4,lVar6);\n    }\n    if (((int)plVar7[5] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {\n      close((int)plVar7[5]);\n      *(undefined4 *)(plVar7 + 5) = 0xffffffff;\n    }\n    if (local_6c == 0) {\n      if (*(int *)((long)plVar7 + 0x2c) != 0) {\n        munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);\n      }\n      *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x20;\n      bfd_close_all_done(lVar5);\n      return 0;\n    }\n    param_1[10] = lVar5;\n    *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x10;\n    bfd_make_readable(lVar5);\n    uVar4 = *(undefined8 *)(lVar5 + 8);\n  }\n  return uVar4;\n}\n\n" (function_definition "undefined8 FUN_00128200(long *param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined8 uVar4;\n  long lVar5;\n  long lVar6;\n  long *plVar7;\n  long *plVar8;\n  int local_6c;\n  long local_68;\n  undefined4 local_60;\n  long local_58;\n  long local_50;\n  long *local_48;\n  \n  if ((*(byte *)((long)param_1 + 0x46) & 0x20) != 0) {\n    return 0;\n  }\n  if ((*(byte *)(param_1 + 9) & 0x30) != 0) {\n    if ((*(byte *)(param_1 + 9) & 0x30) != 0x10) {\n      return 0;\n    }\n    return *(undefined8 *)(param_1[10] + 8);\n  }\n  lVar5 = *param_1;\n  bfd_use_reserved_id = 1;\n  iVar1 = bfd_plugin_target_p(param_1[1]);\n  plVar7 = param_1;\n  if (iVar1 != 0) {\n    plVar7 = DAT_001aadb0;\n  }\n  uVar4 = concat(lVar5," (symbol from plugin)",0);\n  lVar5 = bfd_create(uVar4,plVar7);\n  if (lVar5 != 0) {\n    *(uint *)(lVar5 + 0x44) = *(uint *)(lVar5 + 0x44) | 0x220000;\n    iVar2 = bfd_make_writable(lVar5);\n    if (iVar2 != 0) {\n      if (iVar1 == 0) {\n        uVar4 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(lVar5,uVar4);\n        uVar3 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(lVar5,uVar3);\n        iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5);\n        if (iVar1 == 0) goto LAB_00128480;\n      }\n      lVar6 = bfd_make_section_anyway_with_flags(lVar5,".text",0x20811b);\n      if (lVar6 != 0) goto LAB_00128305;\n    }\n  }\nLAB_00128480:\n  lVar5 = 0;\n  uVar4 = dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);\n  FUN_00125230(uVar4);\nLAB_00128305:\n  plVar7 = (long *)bfd_alloc(lVar5,0x40);\n  if (plVar7 == (long *)0x0) {\n    uVar3 = bfd_get_error();\n    uVar4 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    FUN_00125230(uVar4,uVar3);\n  }\n  iVar1 = bfd_plugin_open_input(param_1,&local_68);\n  if (iVar1 == 0) {\n    uVar4 = 0;\n  }\n  else {\n    lVar6 = *param_1;\n    if (local_68 == lVar6) {\n      local_68 = FUN_00127300(lVar5);\n      lVar6 = *param_1;\n    }\n    *plVar7 = lVar5;\n    *(undefined4 *)(plVar7 + 5) = local_60;\n    plVar7[1] = 0;\n    plVar7[6] = local_58;\n    plVar7[2] = 0;\n    plVar7[3] = 0;\n    *(undefined4 *)((long)plVar7 + 0x2c) = 0;\n    plVar7[7] = local_50;\n    local_48 = plVar7;\n    lVar6 = FUN_00127300(lVar5,lVar6);\n    plVar8 = DAT_001aa948;\n    local_6c = 0;\n    plVar7[4] = lVar6;\n    if (plVar8 != (long *)0x0) {\n      do {\n        if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }\n        plVar8 = (long *)*plVar8;\n      } while ((plVar8 != (long *)0x0) && (local_6c == 0));\n    }\n    lVar6 = DAT_001aa928;\n    if (DAT_001aa928 != 0) {\n      uVar4 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n      FUN_00125230(uVar4,lVar6);\n    }\n    if (((int)plVar7[5] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {\n      close((int)plVar7[5]);\n      *(undefined4 *)(plVar7 + 5) = 0xffffffff;\n    }\n    if (local_6c == 0) {\n      if (*(int *)((long)plVar7 + 0x2c) != 0) {\n        munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);\n      }\n      *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x20;\n      bfd_close_all_done(lVar5);\n      return 0;\n    }\n    param_1[10] = lVar5;\n    *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x10;\n    bfd_make_readable(lVar5);\n    uVar4 = *(undefined8 *)(lVar5 + 8);\n  }\n  return uVar4;\n}" type_identifier (function_declarator "FUN_00128200(long *param_1)" identifier (parameter_list "(long *param_1)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined8 uVar4;\n  long lVar5;\n  long lVar6;\n  long *plVar7;\n  long *plVar8;\n  int local_6c;\n  long local_68;\n  undefined4 local_60;\n  long local_58;\n  long local_50;\n  long *local_48;\n  \n  if ((*(byte *)((long)param_1 + 0x46) & 0x20) != 0) {\n    return 0;\n  }\n  if ((*(byte *)(param_1 + 9) & 0x30) != 0) {\n    if ((*(byte *)(param_1 + 9) & 0x30) != 0x10) {\n      return 0;\n    }\n    return *(undefined8 *)(param_1[10] + 8);\n  }\n  lVar5 = *param_1;\n  bfd_use_reserved_id = 1;\n  iVar1 = bfd_plugin_target_p(param_1[1]);\n  plVar7 = param_1;\n  if (iVar1 != 0) {\n    plVar7 = DAT_001aadb0;\n  }\n  uVar4 = concat(lVar5," (symbol from plugin)",0);\n  lVar5 = bfd_create(uVar4,plVar7);\n  if (lVar5 != 0) {\n    *(uint *)(lVar5 + 0x44) = *(uint *)(lVar5 + 0x44) | 0x220000;\n    iVar2 = bfd_make_writable(lVar5);\n    if (iVar2 != 0) {\n      if (iVar1 == 0) {\n        uVar4 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(lVar5,uVar4);\n        uVar3 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(lVar5,uVar3);\n        iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5);\n        if (iVar1 == 0) goto LAB_00128480;\n      }\n      lVar6 = bfd_make_section_anyway_with_flags(lVar5,".text",0x20811b);\n      if (lVar6 != 0) goto LAB_00128305;\n    }\n  }\nLAB_00128480:\n  lVar5 = 0;\n  uVar4 = dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);\n  FUN_00125230(uVar4);\nLAB_00128305:\n  plVar7 = (long *)bfd_alloc(lVar5,0x40);\n  if (plVar7 == (long *)0x0) {\n    uVar3 = bfd_get_error();\n    uVar4 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    FUN_00125230(uVar4,uVar3);\n  }\n  iVar1 = bfd_plugin_open_input(param_1,&local_68);\n  if (iVar1 == 0) {\n    uVar4 = 0;\n  }\n  else {\n    lVar6 = *param_1;\n    if (local_68 == lVar6) {\n      local_68 = FUN_00127300(lVar5);\n      lVar6 = *param_1;\n    }\n    *plVar7 = lVar5;\n    *(undefined4 *)(plVar7 + 5) = local_60;\n    plVar7[1] = 0;\n    plVar7[6] = local_58;\n    plVar7[2] = 0;\n    plVar7[3] = 0;\n    *(undefined4 *)((long)plVar7 + 0x2c) = 0;\n    plVar7[7] = local_50;\n    local_48 = plVar7;\n    lVar6 = FUN_00127300(lVar5,lVar6);\n    plVar8 = DAT_001aa948;\n    local_6c = 0;\n    plVar7[4] = lVar6;\n    if (plVar8 != (long *)0x0) {\n      do {\n        if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }\n        plVar8 = (long *)*plVar8;\n      } while ((plVar8 != (long *)0x0) && (local_6c == 0));\n    }\n    lVar6 = DAT_001aa928;\n    if (DAT_001aa928 != 0) {\n      uVar4 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n      FUN_00125230(uVar4,lVar6);\n    }\n    if (((int)plVar7[5] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {\n      close((int)plVar7[5]);\n      *(undefined4 *)(plVar7 + 5) = 0xffffffff;\n    }\n    if (local_6c == 0) {\n      if (*(int *)((long)plVar7 + 0x2c) != 0) {\n        munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);\n      }\n      *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x20;\n      bfd_close_all_done(lVar5);\n      return 0;\n    }\n    param_1[10] = lVar5;\n    *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x10;\n    bfd_make_readable(lVar5);\n    uVar4 = *(undefined8 *)(lVar5 + 8);\n  }\n  return uVar4;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar7;" (sized_type_specifier "long" long) (pointer_declarator "*plVar7" * identifier) ;) (declaration "long *plVar8;" (sized_type_specifier "long" long) (pointer_declarator "*plVar8" * identifier) ;) (declaration "int local_6c;" primitive_type identifier ;) (declaration "long local_68;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined4 local_60;" type_identifier identifier ;) (declaration "long local_58;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_50;" (sized_type_specifier "long" long) identifier ;) (declaration "long *local_48;" (sized_type_specifier "long" long) (pointer_declarator "*local_48" * identifier) ;) (if_statement "if ((*(byte *)((long)param_1 + 0x46) & 0x20) != 0) {\n    return 0;\n  }" if (parenthesized_expression "((*(byte *)((long)param_1 + 0x46) & 0x20) != 0)" ( (binary_expression "(*(byte *)((long)param_1 + 0x46) & 0x20) != 0" (parenthesized_expression "(*(byte *)((long)param_1 + 0x46) & 0x20)" ( (binary_expression "*(byte *)((long)param_1 + 0x46) & 0x20" (pointer_expression "*(byte *)((long)param_1 + 0x46)" * (cast_expression "(byte *)((long)param_1 + 0x46)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x46)" ( (binary_expression "(long)param_1 + 0x46" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((*(byte *)(param_1 + 9) & 0x30) != 0) {\n    if ((*(byte *)(param_1 + 9) & 0x30) != 0x10) {\n      return 0;\n    }\n    return *(undefined8 *)(param_1[10] + 8);\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 9) & 0x30) != 0)" ( (binary_expression "(*(byte *)(param_1 + 9) & 0x30) != 0" (parenthesized_expression "(*(byte *)(param_1 + 9) & 0x30)" ( (binary_expression "*(byte *)(param_1 + 9) & 0x30" (pointer_expression "*(byte *)(param_1 + 9)" * (cast_expression "(byte *)(param_1 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    if ((*(byte *)(param_1 + 9) & 0x30) != 0x10) {\n      return 0;\n    }\n    return *(undefined8 *)(param_1[10] + 8);\n  }" { (if_statement "if ((*(byte *)(param_1 + 9) & 0x30) != 0x10) {\n      return 0;\n    }" if (parenthesized_expression "((*(byte *)(param_1 + 9) & 0x30) != 0x10)" ( (binary_expression "(*(byte *)(param_1 + 9) & 0x30) != 0x10" (parenthesized_expression "(*(byte *)(param_1 + 9) & 0x30)" ( (binary_expression "*(byte *)(param_1 + 9) & 0x30" (pointer_expression "*(byte *)(param_1 + 9)" * (cast_expression "(byte *)(param_1 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (return_statement "return *(undefined8 *)(param_1[10] + 8);" return (pointer_expression "*(undefined8 *)(param_1[10] + 8)" * (cast_expression "(undefined8 *)(param_1[10] + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[10] + 8)" ( (binary_expression "param_1[10] + 8" (subscript_expression "param_1[10]" identifier [ number_literal ]) + number_literal) )))) ;) })) (expression_statement "lVar5 = *param_1;" (assignment_expression "lVar5 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "bfd_use_reserved_id = 1;" (assignment_expression "bfd_use_reserved_id = 1" identifier = number_literal) ;) (expression_statement "iVar1 = bfd_plugin_target_p(param_1[1]);" (assignment_expression "iVar1 = bfd_plugin_target_p(param_1[1])" identifier = (call_expression "bfd_plugin_target_p(param_1[1])" identifier (argument_list "(param_1[1])" ( (subscript_expression "param_1[1]" identifier [ number_literal ]) )))) ;) (expression_statement "plVar7 = param_1;" (assignment_expression "plVar7 = param_1" identifier = identifier) ;) (if_statement "if (iVar1 != 0) {\n    plVar7 = DAT_001aadb0;\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    plVar7 = DAT_001aadb0;\n  }" { (expression_statement "plVar7 = DAT_001aadb0;" (assignment_expression "plVar7 = DAT_001aadb0" identifier = identifier) ;) })) (expression_statement "uVar4 = concat(lVar5," (symbol from plugin)",0);" (assignment_expression "uVar4 = concat(lVar5," (symbol from plugin)",0)" identifier = (call_expression "concat(lVar5," (symbol from plugin)",0)" identifier (argument_list "(lVar5," (symbol from plugin)",0)" ( identifier , (string_literal "" (symbol from plugin)"" " string_content ") , number_literal )))) ;) (expression_statement "lVar5 = bfd_create(uVar4,plVar7);" (assignment_expression "lVar5 = bfd_create(uVar4,plVar7)" identifier = (call_expression "bfd_create(uVar4,plVar7)" identifier (argument_list "(uVar4,plVar7)" ( identifier , identifier )))) ;) (if_statement "if (lVar5 != 0) {\n    *(uint *)(lVar5 + 0x44) = *(uint *)(lVar5 + 0x44) | 0x220000;\n    iVar2 = bfd_make_writable(lVar5);\n    if (iVar2 != 0) {\n      if (iVar1 == 0) {\n        uVar4 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(lVar5,uVar4);\n        uVar3 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(lVar5,uVar3);\n        iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5);\n        if (iVar1 == 0) goto LAB_00128480;\n      }\n      lVar6 = bfd_make_section_anyway_with_flags(lVar5,".text",0x20811b);\n      if (lVar6 != 0) goto LAB_00128305;\n    }\n  }" if (parenthesized_expression "(lVar5 != 0)" ( (binary_expression "lVar5 != 0" identifier != number_literal) )) (compound_statement "{\n    *(uint *)(lVar5 + 0x44) = *(uint *)(lVar5 + 0x44) | 0x220000;\n    iVar2 = bfd_make_writable(lVar5);\n    if (iVar2 != 0) {\n      if (iVar1 == 0) {\n        uVar4 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(lVar5,uVar4);\n        uVar3 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(lVar5,uVar3);\n        iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5);\n        if (iVar1 == 0) goto LAB_00128480;\n      }\n      lVar6 = bfd_make_section_anyway_with_flags(lVar5,".text",0x20811b);\n      if (lVar6 != 0) goto LAB_00128305;\n    }\n  }" { (expression_statement "*(uint *)(lVar5 + 0x44) = *(uint *)(lVar5 + 0x44) | 0x220000;" (assignment_expression "*(uint *)(lVar5 + 0x44) = *(uint *)(lVar5 + 0x44) | 0x220000" (pointer_expression "*(uint *)(lVar5 + 0x44)" * (cast_expression "(uint *)(lVar5 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x44)" ( (binary_expression "lVar5 + 0x44" identifier + number_literal) )))) = (binary_expression "*(uint *)(lVar5 + 0x44) | 0x220000" (pointer_expression "*(uint *)(lVar5 + 0x44)" * (cast_expression "(uint *)(lVar5 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x44)" ( (binary_expression "lVar5 + 0x44" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "iVar2 = bfd_make_writable(lVar5);" (assignment_expression "iVar2 = bfd_make_writable(lVar5)" identifier = (call_expression "bfd_make_writable(lVar5)" identifier (argument_list "(lVar5)" ( identifier )))) ;) (if_statement "if (iVar2 != 0) {\n      if (iVar1 == 0) {\n        uVar4 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(lVar5,uVar4);\n        uVar3 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(lVar5,uVar3);\n        iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5);\n        if (iVar1 == 0) goto LAB_00128480;\n      }\n      lVar6 = bfd_make_section_anyway_with_flags(lVar5,".text",0x20811b);\n      if (lVar6 != 0) goto LAB_00128305;\n    }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      if (iVar1 == 0) {\n        uVar4 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(lVar5,uVar4);\n        uVar3 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(lVar5,uVar3);\n        iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5);\n        if (iVar1 == 0) goto LAB_00128480;\n      }\n      lVar6 = bfd_make_section_anyway_with_flags(lVar5,".text",0x20811b);\n      if (lVar6 != 0) goto LAB_00128305;\n    }" { (if_statement "if (iVar1 == 0) {\n        uVar4 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(lVar5,uVar4);\n        uVar3 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(lVar5,uVar3);\n        iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5);\n        if (iVar1 == 0) goto LAB_00128480;\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar4 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(lVar5,uVar4);\n        uVar3 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(lVar5,uVar3);\n        iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5);\n        if (iVar1 == 0) goto LAB_00128480;\n      }" { (expression_statement "uVar4 = bfd_get_arch_info(param_1);" (assignment_expression "uVar4 = bfd_get_arch_info(param_1)" identifier = (call_expression "bfd_get_arch_info(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "bfd_set_arch_info(lVar5,uVar4);" (call_expression "bfd_set_arch_info(lVar5,uVar4)" identifier (argument_list "(lVar5,uVar4)" ( identifier , identifier ))) ;) (expression_statement "uVar3 = bfd_get_gp_size(param_1);" (assignment_expression "uVar3 = bfd_get_gp_size(param_1)" identifier = (call_expression "bfd_get_gp_size(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "bfd_set_gp_size(lVar5,uVar3);" (call_expression "bfd_set_gp_size(lVar5,uVar3)" identifier (argument_list "(lVar5,uVar3)" ( identifier , identifier ))) ;) (expression_statement "iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5);" (assignment_expression "iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5)" identifier = (call_expression "(**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5)" (parenthesized_expression "(**(code **)(*(long *)(lVar5 + 8) + 0x138))" ( (pointer_expression "**(code **)(*(long *)(lVar5 + 8) + 0x138)" * (pointer_expression "*(code **)(*(long *)(lVar5 + 8) + 0x138)" * (cast_expression "(code **)(*(long *)(lVar5 + 8) + 0x138)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(lVar5 + 8) + 0x138)" ( (binary_expression "*(long *)(lVar5 + 8) + 0x138" (pointer_expression "*(long *)(lVar5 + 8)" * (cast_expression "(long *)(lVar5 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 8)" ( (binary_expression "lVar5 + 8" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(param_1,lVar5)" ( identifier , identifier )))) ;) (if_statement "if (iVar1 == 0) goto LAB_00128480;" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00128480;" goto statement_identifier ;)) })) (expression_statement "lVar6 = bfd_make_section_anyway_with_flags(lVar5,".text",0x20811b);" (assignment_expression "lVar6 = bfd_make_section_anyway_with_flags(lVar5,".text",0x20811b)" identifier = (call_expression "bfd_make_section_anyway_with_flags(lVar5,".text",0x20811b)" identifier (argument_list "(lVar5,".text",0x20811b)" ( identifier , (string_literal "".text"" " string_content ") , number_literal )))) ;) (if_statement "if (lVar6 != 0) goto LAB_00128305;" if (parenthesized_expression "(lVar6 != 0)" ( (binary_expression "lVar6 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00128305;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_00128480:\n  lVar5 = 0;" statement_identifier : (expression_statement "lVar5 = 0;" (assignment_expression "lVar5 = 0" identifier = number_literal) ;)) (expression_statement "uVar4 = dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);" (assignment_expression "uVar4 = dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5)" identifier = (call_expression "dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5)" identifier (argument_list "(0,"%F%P: could not create dummy IR bfd: %E\n",5)" ( number_literal , (string_literal ""%F%P: could not create dummy IR bfd: %E\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00125230(uVar4);" (call_expression "FUN_00125230(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) (labeled_statement "LAB_00128305:\n  plVar7 = (long *)bfd_alloc(lVar5,0x40);" statement_identifier : (expression_statement "plVar7 = (long *)bfd_alloc(lVar5,0x40);" (assignment_expression "plVar7 = (long *)bfd_alloc(lVar5,0x40)" identifier = (cast_expression "(long *)bfd_alloc(lVar5,0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_alloc(lVar5,0x40)" identifier (argument_list "(lVar5,0x40)" ( identifier , number_literal ))))) ;)) (if_statement "if (plVar7 == (long *)0x0) {\n    uVar3 = bfd_get_error();\n    uVar4 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    FUN_00125230(uVar4,uVar3);\n  }" if (parenthesized_expression "(plVar7 == (long *)0x0)" ( (binary_expression "plVar7 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar3 = bfd_get_error();\n    uVar4 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    FUN_00125230(uVar4,uVar3);\n  }" { (expression_statement "uVar3 = bfd_get_error();" (assignment_expression "uVar3 = bfd_get_error()" identifier = (call_expression "bfd_get_error()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar4 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);" (assignment_expression "uVar4 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5)" identifier = (call_expression "dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5)" identifier (argument_list "(0,"%F%P: plugin failed to allocate memory for input: %s\n",5)" ( number_literal , (string_literal ""%F%P: plugin failed to allocate memory for input: %s\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00125230(uVar4,uVar3);" (call_expression "FUN_00125230(uVar4,uVar3)" identifier (argument_list "(uVar4,uVar3)" ( identifier , identifier ))) ;) })) (expression_statement "iVar1 = bfd_plugin_open_input(param_1,&local_68);" (assignment_expression "iVar1 = bfd_plugin_open_input(param_1,&local_68)" identifier = (call_expression "bfd_plugin_open_input(param_1,&local_68)" identifier (argument_list "(param_1,&local_68)" ( identifier , (pointer_expression "&local_68" & identifier) )))) ;) (if_statement "if (iVar1 == 0) {\n    uVar4 = 0;\n  }\n  else {\n    lVar6 = *param_1;\n    if (local_68 == lVar6) {\n      local_68 = FUN_00127300(lVar5);\n      lVar6 = *param_1;\n    }\n    *plVar7 = lVar5;\n    *(undefined4 *)(plVar7 + 5) = local_60;\n    plVar7[1] = 0;\n    plVar7[6] = local_58;\n    plVar7[2] = 0;\n    plVar7[3] = 0;\n    *(undefined4 *)((long)plVar7 + 0x2c) = 0;\n    plVar7[7] = local_50;\n    local_48 = plVar7;\n    lVar6 = FUN_00127300(lVar5,lVar6);\n    plVar8 = DAT_001aa948;\n    local_6c = 0;\n    plVar7[4] = lVar6;\n    if (plVar8 != (long *)0x0) {\n      do {\n        if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }\n        plVar8 = (long *)*plVar8;\n      } while ((plVar8 != (long *)0x0) && (local_6c == 0));\n    }\n    lVar6 = DAT_001aa928;\n    if (DAT_001aa928 != 0) {\n      uVar4 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n      FUN_00125230(uVar4,lVar6);\n    }\n    if (((int)plVar7[5] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {\n      close((int)plVar7[5]);\n      *(undefined4 *)(plVar7 + 5) = 0xffffffff;\n    }\n    if (local_6c == 0) {\n      if (*(int *)((long)plVar7 + 0x2c) != 0) {\n        munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);\n      }\n      *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x20;\n      bfd_close_all_done(lVar5);\n      return 0;\n    }\n    param_1[10] = lVar5;\n    *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x10;\n    bfd_make_readable(lVar5);\n    uVar4 = *(undefined8 *)(lVar5 + 8);\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar4 = 0;\n  }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    lVar6 = *param_1;\n    if (local_68 == lVar6) {\n      local_68 = FUN_00127300(lVar5);\n      lVar6 = *param_1;\n    }\n    *plVar7 = lVar5;\n    *(undefined4 *)(plVar7 + 5) = local_60;\n    plVar7[1] = 0;\n    plVar7[6] = local_58;\n    plVar7[2] = 0;\n    plVar7[3] = 0;\n    *(undefined4 *)((long)plVar7 + 0x2c) = 0;\n    plVar7[7] = local_50;\n    local_48 = plVar7;\n    lVar6 = FUN_00127300(lVar5,lVar6);\n    plVar8 = DAT_001aa948;\n    local_6c = 0;\n    plVar7[4] = lVar6;\n    if (plVar8 != (long *)0x0) {\n      do {\n        if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }\n        plVar8 = (long *)*plVar8;\n      } while ((plVar8 != (long *)0x0) && (local_6c == 0));\n    }\n    lVar6 = DAT_001aa928;\n    if (DAT_001aa928 != 0) {\n      uVar4 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n      FUN_00125230(uVar4,lVar6);\n    }\n    if (((int)plVar7[5] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {\n      close((int)plVar7[5]);\n      *(undefined4 *)(plVar7 + 5) = 0xffffffff;\n    }\n    if (local_6c == 0) {\n      if (*(int *)((long)plVar7 + 0x2c) != 0) {\n        munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);\n      }\n      *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x20;\n      bfd_close_all_done(lVar5);\n      return 0;\n    }\n    param_1[10] = lVar5;\n    *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x10;\n    bfd_make_readable(lVar5);\n    uVar4 = *(undefined8 *)(lVar5 + 8);\n  }" else (compound_statement "{\n    lVar6 = *param_1;\n    if (local_68 == lVar6) {\n      local_68 = FUN_00127300(lVar5);\n      lVar6 = *param_1;\n    }\n    *plVar7 = lVar5;\n    *(undefined4 *)(plVar7 + 5) = local_60;\n    plVar7[1] = 0;\n    plVar7[6] = local_58;\n    plVar7[2] = 0;\n    plVar7[3] = 0;\n    *(undefined4 *)((long)plVar7 + 0x2c) = 0;\n    plVar7[7] = local_50;\n    local_48 = plVar7;\n    lVar6 = FUN_00127300(lVar5,lVar6);\n    plVar8 = DAT_001aa948;\n    local_6c = 0;\n    plVar7[4] = lVar6;\n    if (plVar8 != (long *)0x0) {\n      do {\n        if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }\n        plVar8 = (long *)*plVar8;\n      } while ((plVar8 != (long *)0x0) && (local_6c == 0));\n    }\n    lVar6 = DAT_001aa928;\n    if (DAT_001aa928 != 0) {\n      uVar4 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n      FUN_00125230(uVar4,lVar6);\n    }\n    if (((int)plVar7[5] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {\n      close((int)plVar7[5]);\n      *(undefined4 *)(plVar7 + 5) = 0xffffffff;\n    }\n    if (local_6c == 0) {\n      if (*(int *)((long)plVar7 + 0x2c) != 0) {\n        munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);\n      }\n      *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x20;\n      bfd_close_all_done(lVar5);\n      return 0;\n    }\n    param_1[10] = lVar5;\n    *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x10;\n    bfd_make_readable(lVar5);\n    uVar4 = *(undefined8 *)(lVar5 + 8);\n  }" { (expression_statement "lVar6 = *param_1;" (assignment_expression "lVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (local_68 == lVar6) {\n      local_68 = FUN_00127300(lVar5);\n      lVar6 = *param_1;\n    }" if (parenthesized_expression "(local_68 == lVar6)" ( (binary_expression "local_68 == lVar6" identifier == identifier) )) (compound_statement "{\n      local_68 = FUN_00127300(lVar5);\n      lVar6 = *param_1;\n    }" { (expression_statement "local_68 = FUN_00127300(lVar5);" (assignment_expression "local_68 = FUN_00127300(lVar5)" identifier = (call_expression "FUN_00127300(lVar5)" identifier (argument_list "(lVar5)" ( identifier )))) ;) (expression_statement "lVar6 = *param_1;" (assignment_expression "lVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) })) (expression_statement "*plVar7 = lVar5;" (assignment_expression "*plVar7 = lVar5" (pointer_expression "*plVar7" * identifier) = identifier) ;) (expression_statement "*(undefined4 *)(plVar7 + 5) = local_60;" (assignment_expression "*(undefined4 *)(plVar7 + 5) = local_60" (pointer_expression "*(undefined4 *)(plVar7 + 5)" * (cast_expression "(undefined4 *)(plVar7 + 5)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar7 + 5)" ( (binary_expression "plVar7 + 5" identifier + number_literal) )))) = identifier) ;) (expression_statement "plVar7[1] = 0;" (assignment_expression "plVar7[1] = 0" (subscript_expression "plVar7[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "plVar7[6] = local_58;" (assignment_expression "plVar7[6] = local_58" (subscript_expression "plVar7[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar7[2] = 0;" (assignment_expression "plVar7[2] = 0" (subscript_expression "plVar7[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "plVar7[3] = 0;" (assignment_expression "plVar7[3] = 0" (subscript_expression "plVar7[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)((long)plVar7 + 0x2c) = 0;" (assignment_expression "*(undefined4 *)((long)plVar7 + 0x2c) = 0" (pointer_expression "*(undefined4 *)((long)plVar7 + 0x2c)" * (cast_expression "(undefined4 *)((long)plVar7 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar7 + 0x2c)" ( (binary_expression "(long)plVar7 + 0x2c" (cast_expression "(long)plVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "plVar7[7] = local_50;" (assignment_expression "plVar7[7] = local_50" (subscript_expression "plVar7[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_48 = plVar7;" (assignment_expression "local_48 = plVar7" identifier = identifier) ;) (expression_statement "lVar6 = FUN_00127300(lVar5,lVar6);" (assignment_expression "lVar6 = FUN_00127300(lVar5,lVar6)" identifier = (call_expression "FUN_00127300(lVar5,lVar6)" identifier (argument_list "(lVar5,lVar6)" ( identifier , identifier )))) ;) (expression_statement "plVar8 = DAT_001aa948;" (assignment_expression "plVar8 = DAT_001aa948" identifier = identifier) ;) (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" identifier = number_literal) ;) (expression_statement "plVar7[4] = lVar6;" (assignment_expression "plVar7[4] = lVar6" (subscript_expression "plVar7[4]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (plVar8 != (long *)0x0) {\n      do {\n        if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }\n        plVar8 = (long *)*plVar8;\n      } while ((plVar8 != (long *)0x0) && (local_6c == 0));\n    }" if (parenthesized_expression "(plVar8 != (long *)0x0)" ( (binary_expression "plVar8 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      do {\n        if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }\n        plVar8 = (long *)*plVar8;\n      } while ((plVar8 != (long *)0x0) && (local_6c == 0));\n    }" { (do_statement "do {\n        if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }\n        plVar8 = (long *)*plVar8;\n      } while ((plVar8 != (long *)0x0) && (local_6c == 0));" do (compound_statement "{\n        if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }\n        plVar8 = (long *)*plVar8;\n      }" { (if_statement "if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }" if (parenthesized_expression "((code *)plVar8[5] != (code *)0x0)" ( (binary_expression "(code *)plVar8[5] != (code *)0x0" (cast_expression "(code *)plVar8[5]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar8[5]" identifier [ number_literal ])) != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }" { (expression_statement "DAT_001aa930 = plVar8;" (assignment_expression "DAT_001aa930 = plVar8" identifier = identifier) ;) (expression_statement "iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);" (assignment_expression "iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c)" identifier = (call_expression "(*(code *)plVar8[5])(&local_68,&local_6c)" (parenthesized_expression "(*(code *)plVar8[5])" ( (pointer_expression "*(code *)plVar8[5]" * (cast_expression "(code *)plVar8[5]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar8[5]" identifier [ number_literal ]))) )) (argument_list "(&local_68,&local_6c)" ( (pointer_expression "&local_68" & identifier) , (pointer_expression "&local_6c" & identifier) )))) ;) (expression_statement "DAT_001aa930 = (long *)0x0;" (assignment_expression "DAT_001aa930 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n            DAT_001aa928 = plVar8[1];\n          }" { (expression_statement "DAT_001aa928 = plVar8[1];" (assignment_expression "DAT_001aa928 = plVar8[1]" identifier = (subscript_expression "plVar8[1]" identifier [ number_literal ])) ;) })) })) (expression_statement "plVar8 = (long *)*plVar8;" (assignment_expression "plVar8 = (long *)*plVar8" identifier = (cast_expression "(long *)*plVar8" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar8" * identifier))) ;) }) while (parenthesized_expression "((plVar8 != (long *)0x0) && (local_6c == 0))" ( (binary_expression "(plVar8 != (long *)0x0) && (local_6c == 0)" (parenthesized_expression "(plVar8 != (long *)0x0)" ( (binary_expression "plVar8 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) ))) )) ;) })) (expression_statement "lVar6 = DAT_001aa928;" (assignment_expression "lVar6 = DAT_001aa928" identifier = identifier) ;) (if_statement "if (DAT_001aa928 != 0) {\n      uVar4 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n      FUN_00125230(uVar4,lVar6);\n    }" if (parenthesized_expression "(DAT_001aa928 != 0)" ( (binary_expression "DAT_001aa928 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar4 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n      FUN_00125230(uVar4,lVar6);\n    }" { (expression_statement "uVar4 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);" (assignment_expression "uVar4 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5)" identifier = (call_expression "dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5)" identifier (argument_list "(0,"%F%P: %s: plugin reported error claiming file\n",5)" ( number_literal , (string_literal ""%F%P: %s: plugin reported error claiming file\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00125230(uVar4,lVar6);" (call_expression "FUN_00125230(uVar4,lVar6)" identifier (argument_list "(uVar4,lVar6)" ( identifier , identifier ))) ;) })) (if_statement "if (((int)plVar7[5] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {\n      close((int)plVar7[5]);\n      *(undefined4 *)(plVar7 + 5) = 0xffffffff;\n    }" if (parenthesized_expression "(((int)plVar7[5] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0))" ( (binary_expression "((int)plVar7[5] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)" (parenthesized_expression "((int)plVar7[5] != -1)" ( (binary_expression "(int)plVar7[5] != -1" (cast_expression "(int)plVar7[5]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar7[5]" identifier [ number_literal ])) != number_literal) )) && (parenthesized_expression "(iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)" ( (comma_expression "iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0" (assignment_expression "iVar1 = bfd_plugin_target_p(param_1[1])" identifier = (call_expression "bfd_plugin_target_p(param_1[1])" identifier (argument_list "(param_1[1])" ( (subscript_expression "param_1[1]" identifier [ number_literal ]) )))) , (binary_expression "iVar1 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      close((int)plVar7[5]);\n      *(undefined4 *)(plVar7 + 5) = 0xffffffff;\n    }" { (expression_statement "close((int)plVar7[5]);" (call_expression "close((int)plVar7[5])" identifier (argument_list "((int)plVar7[5])" ( (cast_expression "(int)plVar7[5]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar7[5]" identifier [ number_literal ])) ))) ;) (expression_statement "*(undefined4 *)(plVar7 + 5) = 0xffffffff;" (assignment_expression "*(undefined4 *)(plVar7 + 5) = 0xffffffff" (pointer_expression "*(undefined4 *)(plVar7 + 5)" * (cast_expression "(undefined4 *)(plVar7 + 5)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar7 + 5)" ( (binary_expression "plVar7 + 5" identifier + number_literal) )))) = number_literal) ;) })) (if_statement "if (local_6c == 0) {\n      if (*(int *)((long)plVar7 + 0x2c) != 0) {\n        munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);\n      }\n      *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x20;\n      bfd_close_all_done(lVar5);\n      return 0;\n    }" if (parenthesized_expression "(local_6c == 0)" ( (binary_expression "local_6c == 0" identifier == number_literal) )) (compound_statement "{\n      if (*(int *)((long)plVar7 + 0x2c) != 0) {\n        munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);\n      }\n      *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x20;\n      bfd_close_all_done(lVar5);\n      return 0;\n    }" { (if_statement "if (*(int *)((long)plVar7 + 0x2c) != 0) {\n        munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);\n      }" if (parenthesized_expression "(*(int *)((long)plVar7 + 0x2c) != 0)" ( (binary_expression "*(int *)((long)plVar7 + 0x2c) != 0" (pointer_expression "*(int *)((long)plVar7 + 0x2c)" * (cast_expression "(int *)((long)plVar7 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar7 + 0x2c)" ( (binary_expression "(long)plVar7 + 0x2c" (cast_expression "(long)plVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n        munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);\n      }" { (expression_statement "munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);" (call_expression "munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888)" identifier (argument_list "((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888)" ( (cast_expression "(void *)(plVar7[1] - plVar7[3] % DAT_001aa888)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar7[1] - plVar7[3] % DAT_001aa888)" ( (binary_expression "plVar7[1] - plVar7[3] % DAT_001aa888" (subscript_expression "plVar7[1]" identifier [ number_literal ]) - (binary_expression "plVar7[3] % DAT_001aa888" (subscript_expression "plVar7[3]" identifier [ number_literal ]) % identifier)) ))) , (binary_expression "plVar7[2] + plVar7[3] % DAT_001aa888" (subscript_expression "plVar7[2]" identifier [ number_literal ]) + (binary_expression "plVar7[3] % DAT_001aa888" (subscript_expression "plVar7[3]" identifier [ number_literal ]) % identifier)) ))) ;) })) (expression_statement "*(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x20;" (assignment_expression "*(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x20" (pointer_expression "*(byte *)(param_1 + 9)" * (cast_expression "(byte *)(param_1 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 9) & 0xcf | 0x20" (binary_expression "*(byte *)(param_1 + 9) & 0xcf" (pointer_expression "*(byte *)(param_1 + 9)" * (cast_expression "(byte *)(param_1 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "bfd_close_all_done(lVar5);" (call_expression "bfd_close_all_done(lVar5)" identifier (argument_list "(lVar5)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "param_1[10] = lVar5;" (assignment_expression "param_1[10] = lVar5" (subscript_expression "param_1[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x10;" (assignment_expression "*(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x10" (pointer_expression "*(byte *)(param_1 + 9)" * (cast_expression "(byte *)(param_1 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 9) & 0xcf | 0x10" (binary_expression "*(byte *)(param_1 + 9) & 0xcf" (pointer_expression "*(byte *)(param_1 + 9)" * (cast_expression "(byte *)(param_1 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "bfd_make_readable(lVar5);" (call_expression "bfd_make_readable(lVar5)" identifier (argument_list "(lVar5)" ( identifier ))) ;) (expression_statement "uVar4 = *(undefined8 *)(lVar5 + 8);" (assignment_expression "uVar4 = *(undefined8 *)(lVar5 + 8)" identifier = (pointer_expression "*(undefined8 *)(lVar5 + 8)" * (cast_expression "(undefined8 *)(lVar5 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 8)" ( (binary_expression "lVar5 + 8" identifier + number_literal) ))))) ;) }))) (return_statement "return uVar4;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (return_statement return LIT ;) })) (return_statement return (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (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 ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , LIT ))))) ;)) (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 = (call_expression IDENT (argument_list ( )))) ;) (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 ( IDENT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (argument_list ( (pointer_expression & IDENT) , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) ;) })) (expression_statement (assignment_expression IDENT = 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 (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (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) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) - (binary_expression (subscript_expression IDENT [ LIT ]) % IDENT)) ))) , (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression (subscript_expression IDENT [ LIT ]) % IDENT)) ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return LIT ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "undefined8 FUN_00128200(long *param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined8 uVar4;\n  long lVar5;\n  long lVar6;\n  long *plVar7;\n  long *plVar8;\n  int local_6c;\n  long local_68;\n  undefined4 local_60;\n  long local_58;\n  long local_50;\n  long *local_48;\n  \n  if ((*(byte *)((long)param_1 + 0x46) & 0x20) != 0) {\n    return 0;\n  }\n  if ((*(byte *)(param_1 + 9) & 0x30) != 0) {\n    if ((*(byte *)(param_1 + 9) & 0x30) != 0x10) {\n      return 0;\n    }\n    return *(undefined8 *)(param_1[10] + 8);\n  }\n  lVar5 = *param_1;\n  bfd_use_reserved_id = 1;\n  iVar1 = bfd_plugin_target_p(param_1[1]);\n  plVar7 = param_1;\n  if (iVar1 != 0) {\n    plVar7 = DAT_001aadb0;\n  }\n  uVar4 = concat(lVar5," (symbol from plugin)",0);\n  lVar5 = bfd_create(uVar4,plVar7);\n  if (lVar5 != 0) {\n    *(uint *)(lVar5 + 0x44) = *(uint *)(lVar5 + 0x44) | 0x220000;\n    iVar2 = bfd_make_writable(lVar5);\n    if (iVar2 != 0) {\n      if (iVar1 == 0) {\n        uVar4 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(lVar5,uVar4);\n        uVar3 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(lVar5,uVar3);\n        iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5);\n        if (iVar1 == 0) goto LAB_00128480;\n      }\n      lVar6 = bfd_make_section_anyway_with_flags(lVar5,".text",0x20811b);\n      if (lVar6 != 0) goto LAB_00128305;\n    }\n  }\nLAB_00128480:\n  lVar5 = 0;\n  uVar4 = dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);\n  FUN_00125230(uVar4);\nLAB_00128305:\n  plVar7 = (long *)bfd_alloc(lVar5,0x40);\n  if (plVar7 == (long *)0x0) {\n    uVar3 = bfd_get_error();\n    uVar4 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    FUN_00125230(uVar4,uVar3);\n  }\n  iVar1 = bfd_plugin_open_input(param_1,&local_68);\n  if (iVar1 == 0) {\n    uVar4 = 0;\n  }\n  else {\n    lVar6 = *param_1;\n    if (local_68 == lVar6) {\n      local_68 = FUN_00127300(lVar5);\n      lVar6 = *param_1;\n    }\n    *plVar7 = lVar5;\n    *(undefined4 *)(plVar7 + 5) = local_60;\n    plVar7[1] = 0;\n    plVar7[6] = local_58;\n    plVar7[2] = 0;\n    plVar7[3] = 0;\n    *(undefined4 *)((long)plVar7 + 0x2c) = 0;\n    plVar7[7] = local_50;\n    local_48 = plVar7;\n    lVar6 = FUN_00127300(lVar5,lVar6);\n    plVar8 = DAT_001aa948;\n    local_6c = 0;\n    plVar7[4] = lVar6;\n    if (plVar8 != (long *)0x0) {\n      do {\n        if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }\n        plVar8 = (long *)*plVar8;\n      } while ((plVar8 != (long *)0x0) && (local_6c == 0));\n    }\n    lVar6 = DAT_001aa928;\n    if (DAT_001aa928 != 0) {\n      uVar4 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n      FUN_00125230(uVar4,lVar6);\n    }\n    if (((int)plVar7[5] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {\n      close((int)plVar7[5]);\n      *(undefined4 *)(plVar7 + 5) = 0xffffffff;\n    }\n    if (local_6c == 0) {\n      if (*(int *)((long)plVar7 + 0x2c) != 0) {\n        munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);\n      }\n      *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x20;\n      bfd_close_all_done(lVar5);\n      return 0;\n    }\n    param_1[10] = lVar5;\n    *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x10;\n    bfd_make_readable(lVar5);\n    uVar4 = *(undefined8 *)(lVar5 + 8);\n  }\n  return uVar4;\n}" (type_identifier "undefined8") (function_declarator "FUN_00128200(long *param_1)" (identifier "FUN_00128200") (parameter_list "(long *param_1)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined8 uVar4;\n  long lVar5;\n  long lVar6;\n  long *plVar7;\n  long *plVar8;\n  int local_6c;\n  long local_68;\n  undefined4 local_60;\n  long local_58;\n  long local_50;\n  long *local_48;\n  \n  if ((*(byte *)((long)param_1 + 0x46) & 0x20) != 0) {\n    return 0;\n  }\n  if ((*(byte *)(param_1 + 9) & 0x30) != 0) {\n    if ((*(byte *)(param_1 + 9) & 0x30) != 0x10) {\n      return 0;\n    }\n    return *(undefined8 *)(param_1[10] + 8);\n  }\n  lVar5 = *param_1;\n  bfd_use_reserved_id = 1;\n  iVar1 = bfd_plugin_target_p(param_1[1]);\n  plVar7 = param_1;\n  if (iVar1 != 0) {\n    plVar7 = DAT_001aadb0;\n  }\n  uVar4 = concat(lVar5," (symbol from plugin)",0);\n  lVar5 = bfd_create(uVar4,plVar7);\n  if (lVar5 != 0) {\n    *(uint *)(lVar5 + 0x44) = *(uint *)(lVar5 + 0x44) | 0x220000;\n    iVar2 = bfd_make_writable(lVar5);\n    if (iVar2 != 0) {\n      if (iVar1 == 0) {\n        uVar4 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(lVar5,uVar4);\n        uVar3 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(lVar5,uVar3);\n        iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5);\n        if (iVar1 == 0) goto LAB_00128480;\n      }\n      lVar6 = bfd_make_section_anyway_with_flags(lVar5,".text",0x20811b);\n      if (lVar6 != 0) goto LAB_00128305;\n    }\n  }\nLAB_00128480:\n  lVar5 = 0;\n  uVar4 = dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);\n  FUN_00125230(uVar4);\nLAB_00128305:\n  plVar7 = (long *)bfd_alloc(lVar5,0x40);\n  if (plVar7 == (long *)0x0) {\n    uVar3 = bfd_get_error();\n    uVar4 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    FUN_00125230(uVar4,uVar3);\n  }\n  iVar1 = bfd_plugin_open_input(param_1,&local_68);\n  if (iVar1 == 0) {\n    uVar4 = 0;\n  }\n  else {\n    lVar6 = *param_1;\n    if (local_68 == lVar6) {\n      local_68 = FUN_00127300(lVar5);\n      lVar6 = *param_1;\n    }\n    *plVar7 = lVar5;\n    *(undefined4 *)(plVar7 + 5) = local_60;\n    plVar7[1] = 0;\n    plVar7[6] = local_58;\n    plVar7[2] = 0;\n    plVar7[3] = 0;\n    *(undefined4 *)((long)plVar7 + 0x2c) = 0;\n    plVar7[7] = local_50;\n    local_48 = plVar7;\n    lVar6 = FUN_00127300(lVar5,lVar6);\n    plVar8 = DAT_001aa948;\n    local_6c = 0;\n    plVar7[4] = lVar6;\n    if (plVar8 != (long *)0x0) {\n      do {\n        if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }\n        plVar8 = (long *)*plVar8;\n      } while ((plVar8 != (long *)0x0) && (local_6c == 0));\n    }\n    lVar6 = DAT_001aa928;\n    if (DAT_001aa928 != 0) {\n      uVar4 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n      FUN_00125230(uVar4,lVar6);\n    }\n    if (((int)plVar7[5] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {\n      close((int)plVar7[5]);\n      *(undefined4 *)(plVar7 + 5) = 0xffffffff;\n    }\n    if (local_6c == 0) {\n      if (*(int *)((long)plVar7 + 0x2c) != 0) {\n        munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);\n      }\n      *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x20;\n      bfd_close_all_done(lVar5);\n      return 0;\n    }\n    param_1[10] = lVar5;\n    *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x10;\n    bfd_make_readable(lVar5);\n    uVar4 = *(undefined8 *)(lVar5 + 8);\n  }\n  return uVar4;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "undefined8 uVar4;" (type_identifier "undefined8") (identifier "uVar4") (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "long *plVar7;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar7" (* "*") (identifier "plVar7")) (; ";")) (declaration "long *plVar8;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar8" (* "*") (identifier "plVar8")) (; ";")) (declaration "int local_6c;" (primitive_type "int") (identifier "local_6c") (; ";")) (declaration "long local_68;" (sized_type_specifier "long" (long "long")) (identifier "local_68") (; ";")) (declaration "undefined4 local_60;" (type_identifier "undefined4") (identifier "local_60") (; ";")) (declaration "long local_58;" (sized_type_specifier "long" (long "long")) (identifier "local_58") (; ";")) (declaration "long local_50;" (sized_type_specifier "long" (long "long")) (identifier "local_50") (; ";")) (declaration "long *local_48;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*local_48" (* "*") (identifier "local_48")) (; ";")) (if_statement "if ((*(byte *)((long)param_1 + 0x46) & 0x20) != 0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "((*(byte *)((long)param_1 + 0x46) & 0x20) != 0)" (( "(") (binary_expression "(*(byte *)((long)param_1 + 0x46) & 0x20) != 0" (parenthesized_expression "(*(byte *)((long)param_1 + 0x46) & 0x20)" (( "(") (binary_expression "*(byte *)((long)param_1 + 0x46) & 0x20" (pointer_expression "*(byte *)((long)param_1 + 0x46)" (* "*") (cast_expression "(byte *)((long)param_1 + 0x46)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x46)" (( "(") (binary_expression "(long)param_1 + 0x46" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x46")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if ((*(byte *)(param_1 + 9) & 0x30) != 0) {\n    if ((*(byte *)(param_1 + 9) & 0x30) != 0x10) {\n      return 0;\n    }\n    return *(undefined8 *)(param_1[10] + 8);\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 9) & 0x30) != 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 9) & 0x30) != 0" (parenthesized_expression "(*(byte *)(param_1 + 9) & 0x30)" (( "(") (binary_expression "*(byte *)(param_1 + 9) & 0x30" (pointer_expression "*(byte *)(param_1 + 9)" (* "*") (cast_expression "(byte *)(param_1 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 9)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) () ")")))) (& "&") (number_literal "0x30")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if ((*(byte *)(param_1 + 9) & 0x30) != 0x10) {\n      return 0;\n    }\n    return *(undefined8 *)(param_1[10] + 8);\n  }" ({ "{") (if_statement "if ((*(byte *)(param_1 + 9) & 0x30) != 0x10) {\n      return 0;\n    }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 9) & 0x30) != 0x10)" (( "(") (binary_expression "(*(byte *)(param_1 + 9) & 0x30) != 0x10" (parenthesized_expression "(*(byte *)(param_1 + 9) & 0x30)" (( "(") (binary_expression "*(byte *)(param_1 + 9) & 0x30" (pointer_expression "*(byte *)(param_1 + 9)" (* "*") (cast_expression "(byte *)(param_1 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 9)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) () ")")))) (& "&") (number_literal "0x30")) () ")")) (!= "!=") (number_literal "0x10")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (return_statement "return *(undefined8 *)(param_1[10] + 8);" (return "return") (pointer_expression "*(undefined8 *)(param_1[10] + 8)" (* "*") (cast_expression "(undefined8 *)(param_1[10] + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[10] + 8)" (( "(") (binary_expression "param_1[10] + 8" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (+ "+") (number_literal "8")) () ")")))) (; ";")) (} "}"))) (expression_statement "lVar5 = *param_1;" (assignment_expression "lVar5 = *param_1" (identifier "lVar5") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "bfd_use_reserved_id = 1;" (assignment_expression "bfd_use_reserved_id = 1" (identifier "bfd_use_reserved_id") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar1 = bfd_plugin_target_p(param_1[1]);" (assignment_expression "iVar1 = bfd_plugin_target_p(param_1[1])" (identifier "iVar1") (= "=") (call_expression "bfd_plugin_target_p(param_1[1])" (identifier "bfd_plugin_target_p") (argument_list "(param_1[1])" (( "(") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) () ")")))) (; ";")) (expression_statement "plVar7 = param_1;" (assignment_expression "plVar7 = param_1" (identifier "plVar7") (= "=") (identifier "param_1")) (; ";")) (if_statement "if (iVar1 != 0) {\n    plVar7 = DAT_001aadb0;\n  }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    plVar7 = DAT_001aadb0;\n  }" ({ "{") (expression_statement "plVar7 = DAT_001aadb0;" (assignment_expression "plVar7 = DAT_001aadb0" (identifier "plVar7") (= "=") (identifier "DAT_001aadb0")) (; ";")) (} "}"))) (expression_statement "uVar4 = concat(lVar5," (symbol from plugin)",0);" (assignment_expression "uVar4 = concat(lVar5," (symbol from plugin)",0)" (identifier "uVar4") (= "=") (call_expression "concat(lVar5," (symbol from plugin)",0)" (identifier "concat") (argument_list "(lVar5," (symbol from plugin)",0)" (( "(") (identifier "lVar5") (, ",") (string_literal "" (symbol from plugin)"" (" """) (string_content " (symbol from plugin)") (" """)) (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "lVar5 = bfd_create(uVar4,plVar7);" (assignment_expression "lVar5 = bfd_create(uVar4,plVar7)" (identifier "lVar5") (= "=") (call_expression "bfd_create(uVar4,plVar7)" (identifier "bfd_create") (argument_list "(uVar4,plVar7)" (( "(") (identifier "uVar4") (, ",") (identifier "plVar7") () ")")))) (; ";")) (if_statement "if (lVar5 != 0) {\n    *(uint *)(lVar5 + 0x44) = *(uint *)(lVar5 + 0x44) | 0x220000;\n    iVar2 = bfd_make_writable(lVar5);\n    if (iVar2 != 0) {\n      if (iVar1 == 0) {\n        uVar4 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(lVar5,uVar4);\n        uVar3 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(lVar5,uVar3);\n        iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5);\n        if (iVar1 == 0) goto LAB_00128480;\n      }\n      lVar6 = bfd_make_section_anyway_with_flags(lVar5,".text",0x20811b);\n      if (lVar6 != 0) goto LAB_00128305;\n    }\n  }" (if "if") (parenthesized_expression "(lVar5 != 0)" (( "(") (binary_expression "lVar5 != 0" (identifier "lVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    *(uint *)(lVar5 + 0x44) = *(uint *)(lVar5 + 0x44) | 0x220000;\n    iVar2 = bfd_make_writable(lVar5);\n    if (iVar2 != 0) {\n      if (iVar1 == 0) {\n        uVar4 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(lVar5,uVar4);\n        uVar3 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(lVar5,uVar3);\n        iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5);\n        if (iVar1 == 0) goto LAB_00128480;\n      }\n      lVar6 = bfd_make_section_anyway_with_flags(lVar5,".text",0x20811b);\n      if (lVar6 != 0) goto LAB_00128305;\n    }\n  }" ({ "{") (expression_statement "*(uint *)(lVar5 + 0x44) = *(uint *)(lVar5 + 0x44) | 0x220000;" (assignment_expression "*(uint *)(lVar5 + 0x44) = *(uint *)(lVar5 + 0x44) | 0x220000" (pointer_expression "*(uint *)(lVar5 + 0x44)" (* "*") (cast_expression "(uint *)(lVar5 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x44)" (( "(") (binary_expression "lVar5 + 0x44" (identifier "lVar5") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (binary_expression "*(uint *)(lVar5 + 0x44) | 0x220000" (pointer_expression "*(uint *)(lVar5 + 0x44)" (* "*") (cast_expression "(uint *)(lVar5 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x44)" (( "(") (binary_expression "lVar5 + 0x44" (identifier "lVar5") (+ "+") (number_literal "0x44")) () ")")))) (| "|") (number_literal "0x220000"))) (; ";")) (expression_statement "iVar2 = bfd_make_writable(lVar5);" (assignment_expression "iVar2 = bfd_make_writable(lVar5)" (identifier "iVar2") (= "=") (call_expression "bfd_make_writable(lVar5)" (identifier "bfd_make_writable") (argument_list "(lVar5)" (( "(") (identifier "lVar5") () ")")))) (; ";")) (if_statement "if (iVar2 != 0) {\n      if (iVar1 == 0) {\n        uVar4 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(lVar5,uVar4);\n        uVar3 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(lVar5,uVar3);\n        iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5);\n        if (iVar1 == 0) goto LAB_00128480;\n      }\n      lVar6 = bfd_make_section_anyway_with_flags(lVar5,".text",0x20811b);\n      if (lVar6 != 0) goto LAB_00128305;\n    }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (iVar1 == 0) {\n        uVar4 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(lVar5,uVar4);\n        uVar3 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(lVar5,uVar3);\n        iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5);\n        if (iVar1 == 0) goto LAB_00128480;\n      }\n      lVar6 = bfd_make_section_anyway_with_flags(lVar5,".text",0x20811b);\n      if (lVar6 != 0) goto LAB_00128305;\n    }" ({ "{") (if_statement "if (iVar1 == 0) {\n        uVar4 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(lVar5,uVar4);\n        uVar3 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(lVar5,uVar3);\n        iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5);\n        if (iVar1 == 0) goto LAB_00128480;\n      }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar4 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(lVar5,uVar4);\n        uVar3 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(lVar5,uVar3);\n        iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5);\n        if (iVar1 == 0) goto LAB_00128480;\n      }" ({ "{") (expression_statement "uVar4 = bfd_get_arch_info(param_1);" (assignment_expression "uVar4 = bfd_get_arch_info(param_1)" (identifier "uVar4") (= "=") (call_expression "bfd_get_arch_info(param_1)" (identifier "bfd_get_arch_info") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "bfd_set_arch_info(lVar5,uVar4);" (call_expression "bfd_set_arch_info(lVar5,uVar4)" (identifier "bfd_set_arch_info") (argument_list "(lVar5,uVar4)" (( "(") (identifier "lVar5") (, ",") (identifier "uVar4") () ")"))) (; ";")) (expression_statement "uVar3 = bfd_get_gp_size(param_1);" (assignment_expression "uVar3 = bfd_get_gp_size(param_1)" (identifier "uVar3") (= "=") (call_expression "bfd_get_gp_size(param_1)" (identifier "bfd_get_gp_size") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "bfd_set_gp_size(lVar5,uVar3);" (call_expression "bfd_set_gp_size(lVar5,uVar3)" (identifier "bfd_set_gp_size") (argument_list "(lVar5,uVar3)" (( "(") (identifier "lVar5") (, ",") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5);" (assignment_expression "iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5)" (identifier "iVar1") (= "=") (call_expression "(**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5)" (parenthesized_expression "(**(code **)(*(long *)(lVar5 + 8) + 0x138))" (( "(") (pointer_expression "**(code **)(*(long *)(lVar5 + 8) + 0x138)" (* "*") (pointer_expression "*(code **)(*(long *)(lVar5 + 8) + 0x138)" (* "*") (cast_expression "(code **)(*(long *)(lVar5 + 8) + 0x138)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)(lVar5 + 8) + 0x138)" (( "(") (binary_expression "*(long *)(lVar5 + 8) + 0x138" (pointer_expression "*(long *)(lVar5 + 8)" (* "*") (cast_expression "(long *)(lVar5 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 8)" (( "(") (binary_expression "lVar5 + 8" (identifier "lVar5") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x138")) () ")"))))) () ")")) (argument_list "(param_1,lVar5)" (( "(") (identifier "param_1") (, ",") (identifier "lVar5") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) goto LAB_00128480;" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00128480;" (goto "goto") (statement_identifier "LAB_00128480") (; ";"))) (} "}"))) (expression_statement "lVar6 = bfd_make_section_anyway_with_flags(lVar5,".text",0x20811b);" (assignment_expression "lVar6 = bfd_make_section_anyway_with_flags(lVar5,".text",0x20811b)" (identifier "lVar6") (= "=") (call_expression "bfd_make_section_anyway_with_flags(lVar5,".text",0x20811b)" (identifier "bfd_make_section_anyway_with_flags") (argument_list "(lVar5,".text",0x20811b)" (( "(") (identifier "lVar5") (, ",") (string_literal "".text"" (" """) (string_content ".text") (" """)) (, ",") (number_literal "0x20811b") () ")")))) (; ";")) (if_statement "if (lVar6 != 0) goto LAB_00128305;" (if "if") (parenthesized_expression "(lVar6 != 0)" (( "(") (binary_expression "lVar6 != 0" (identifier "lVar6") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00128305;" (goto "goto") (statement_identifier "LAB_00128305") (; ";"))) (} "}"))) (} "}"))) (labeled_statement "LAB_00128480:\n  lVar5 = 0;" (statement_identifier "LAB_00128480") (: ":") (expression_statement "lVar5 = 0;" (assignment_expression "lVar5 = 0" (identifier "lVar5") (= "=") (number_literal "0")) (; ";"))) (expression_statement "uVar4 = dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);" (assignment_expression "uVar4 = dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5)" (identifier "uVar4") (= "=") (call_expression "dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5)" (identifier "dcgettext") (argument_list "(0,"%F%P: could not create dummy IR bfd: %E\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%F%P: could not create dummy IR bfd: %E\n"" (" """) (string_content "%F%P: could not create dummy IR bfd: %E") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00125230(uVar4);" (call_expression "FUN_00125230(uVar4)" (identifier "FUN_00125230") (argument_list "(uVar4)" (( "(") (identifier "uVar4") () ")"))) (; ";")) (labeled_statement "LAB_00128305:\n  plVar7 = (long *)bfd_alloc(lVar5,0x40);" (statement_identifier "LAB_00128305") (: ":") (expression_statement "plVar7 = (long *)bfd_alloc(lVar5,0x40);" (assignment_expression "plVar7 = (long *)bfd_alloc(lVar5,0x40)" (identifier "plVar7") (= "=") (cast_expression "(long *)bfd_alloc(lVar5,0x40)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "bfd_alloc(lVar5,0x40)" (identifier "bfd_alloc") (argument_list "(lVar5,0x40)" (( "(") (identifier "lVar5") (, ",") (number_literal "0x40") () ")"))))) (; ";"))) (if_statement "if (plVar7 == (long *)0x0) {\n    uVar3 = bfd_get_error();\n    uVar4 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    FUN_00125230(uVar4,uVar3);\n  }" (if "if") (parenthesized_expression "(plVar7 == (long *)0x0)" (( "(") (binary_expression "plVar7 == (long *)0x0" (identifier "plVar7") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    uVar3 = bfd_get_error();\n    uVar4 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    FUN_00125230(uVar4,uVar3);\n  }" ({ "{") (expression_statement "uVar3 = bfd_get_error();" (assignment_expression "uVar3 = bfd_get_error()" (identifier "uVar3") (= "=") (call_expression "bfd_get_error()" (identifier "bfd_get_error") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar4 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);" (assignment_expression "uVar4 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5)" (identifier "uVar4") (= "=") (call_expression "dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5)" (identifier "dcgettext") (argument_list "(0,"%F%P: plugin failed to allocate memory for input: %s\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%F%P: plugin failed to allocate memory for input: %s\n"" (" """) (string_content "%F%P: plugin failed to allocate memory for input: %s") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00125230(uVar4,uVar3);" (call_expression "FUN_00125230(uVar4,uVar3)" (identifier "FUN_00125230") (argument_list "(uVar4,uVar3)" (( "(") (identifier "uVar4") (, ",") (identifier "uVar3") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar1 = bfd_plugin_open_input(param_1,&local_68);" (assignment_expression "iVar1 = bfd_plugin_open_input(param_1,&local_68)" (identifier "iVar1") (= "=") (call_expression "bfd_plugin_open_input(param_1,&local_68)" (identifier "bfd_plugin_open_input") (argument_list "(param_1,&local_68)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&local_68" (& "&") (identifier "local_68")) () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n    uVar4 = 0;\n  }\n  else {\n    lVar6 = *param_1;\n    if (local_68 == lVar6) {\n      local_68 = FUN_00127300(lVar5);\n      lVar6 = *param_1;\n    }\n    *plVar7 = lVar5;\n    *(undefined4 *)(plVar7 + 5) = local_60;\n    plVar7[1] = 0;\n    plVar7[6] = local_58;\n    plVar7[2] = 0;\n    plVar7[3] = 0;\n    *(undefined4 *)((long)plVar7 + 0x2c) = 0;\n    plVar7[7] = local_50;\n    local_48 = plVar7;\n    lVar6 = FUN_00127300(lVar5,lVar6);\n    plVar8 = DAT_001aa948;\n    local_6c = 0;\n    plVar7[4] = lVar6;\n    if (plVar8 != (long *)0x0) {\n      do {\n        if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }\n        plVar8 = (long *)*plVar8;\n      } while ((plVar8 != (long *)0x0) && (local_6c == 0));\n    }\n    lVar6 = DAT_001aa928;\n    if (DAT_001aa928 != 0) {\n      uVar4 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n      FUN_00125230(uVar4,lVar6);\n    }\n    if (((int)plVar7[5] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {\n      close((int)plVar7[5]);\n      *(undefined4 *)(plVar7 + 5) = 0xffffffff;\n    }\n    if (local_6c == 0) {\n      if (*(int *)((long)plVar7 + 0x2c) != 0) {\n        munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);\n      }\n      *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x20;\n      bfd_close_all_done(lVar5);\n      return 0;\n    }\n    param_1[10] = lVar5;\n    *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x10;\n    bfd_make_readable(lVar5);\n    uVar4 = *(undefined8 *)(lVar5 + 8);\n  }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar4 = 0;\n  }" ({ "{") (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    lVar6 = *param_1;\n    if (local_68 == lVar6) {\n      local_68 = FUN_00127300(lVar5);\n      lVar6 = *param_1;\n    }\n    *plVar7 = lVar5;\n    *(undefined4 *)(plVar7 + 5) = local_60;\n    plVar7[1] = 0;\n    plVar7[6] = local_58;\n    plVar7[2] = 0;\n    plVar7[3] = 0;\n    *(undefined4 *)((long)plVar7 + 0x2c) = 0;\n    plVar7[7] = local_50;\n    local_48 = plVar7;\n    lVar6 = FUN_00127300(lVar5,lVar6);\n    plVar8 = DAT_001aa948;\n    local_6c = 0;\n    plVar7[4] = lVar6;\n    if (plVar8 != (long *)0x0) {\n      do {\n        if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }\n        plVar8 = (long *)*plVar8;\n      } while ((plVar8 != (long *)0x0) && (local_6c == 0));\n    }\n    lVar6 = DAT_001aa928;\n    if (DAT_001aa928 != 0) {\n      uVar4 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n      FUN_00125230(uVar4,lVar6);\n    }\n    if (((int)plVar7[5] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {\n      close((int)plVar7[5]);\n      *(undefined4 *)(plVar7 + 5) = 0xffffffff;\n    }\n    if (local_6c == 0) {\n      if (*(int *)((long)plVar7 + 0x2c) != 0) {\n        munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);\n      }\n      *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x20;\n      bfd_close_all_done(lVar5);\n      return 0;\n    }\n    param_1[10] = lVar5;\n    *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x10;\n    bfd_make_readable(lVar5);\n    uVar4 = *(undefined8 *)(lVar5 + 8);\n  }" (else "else") (compound_statement "{\n    lVar6 = *param_1;\n    if (local_68 == lVar6) {\n      local_68 = FUN_00127300(lVar5);\n      lVar6 = *param_1;\n    }\n    *plVar7 = lVar5;\n    *(undefined4 *)(plVar7 + 5) = local_60;\n    plVar7[1] = 0;\n    plVar7[6] = local_58;\n    plVar7[2] = 0;\n    plVar7[3] = 0;\n    *(undefined4 *)((long)plVar7 + 0x2c) = 0;\n    plVar7[7] = local_50;\n    local_48 = plVar7;\n    lVar6 = FUN_00127300(lVar5,lVar6);\n    plVar8 = DAT_001aa948;\n    local_6c = 0;\n    plVar7[4] = lVar6;\n    if (plVar8 != (long *)0x0) {\n      do {\n        if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }\n        plVar8 = (long *)*plVar8;\n      } while ((plVar8 != (long *)0x0) && (local_6c == 0));\n    }\n    lVar6 = DAT_001aa928;\n    if (DAT_001aa928 != 0) {\n      uVar4 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n      FUN_00125230(uVar4,lVar6);\n    }\n    if (((int)plVar7[5] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {\n      close((int)plVar7[5]);\n      *(undefined4 *)(plVar7 + 5) = 0xffffffff;\n    }\n    if (local_6c == 0) {\n      if (*(int *)((long)plVar7 + 0x2c) != 0) {\n        munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);\n      }\n      *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x20;\n      bfd_close_all_done(lVar5);\n      return 0;\n    }\n    param_1[10] = lVar5;\n    *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x10;\n    bfd_make_readable(lVar5);\n    uVar4 = *(undefined8 *)(lVar5 + 8);\n  }" ({ "{") (expression_statement "lVar6 = *param_1;" (assignment_expression "lVar6 = *param_1" (identifier "lVar6") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (local_68 == lVar6) {\n      local_68 = FUN_00127300(lVar5);\n      lVar6 = *param_1;\n    }" (if "if") (parenthesized_expression "(local_68 == lVar6)" (( "(") (binary_expression "local_68 == lVar6" (identifier "local_68") (== "==") (identifier "lVar6")) () ")")) (compound_statement "{\n      local_68 = FUN_00127300(lVar5);\n      lVar6 = *param_1;\n    }" ({ "{") (expression_statement "local_68 = FUN_00127300(lVar5);" (assignment_expression "local_68 = FUN_00127300(lVar5)" (identifier "local_68") (= "=") (call_expression "FUN_00127300(lVar5)" (identifier "FUN_00127300") (argument_list "(lVar5)" (( "(") (identifier "lVar5") () ")")))) (; ";")) (expression_statement "lVar6 = *param_1;" (assignment_expression "lVar6 = *param_1" (identifier "lVar6") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (} "}"))) (expression_statement "*plVar7 = lVar5;" (assignment_expression "*plVar7 = lVar5" (pointer_expression "*plVar7" (* "*") (identifier "plVar7")) (= "=") (identifier "lVar5")) (; ";")) (expression_statement "*(undefined4 *)(plVar7 + 5) = local_60;" (assignment_expression "*(undefined4 *)(plVar7 + 5) = local_60" (pointer_expression "*(undefined4 *)(plVar7 + 5)" (* "*") (cast_expression "(undefined4 *)(plVar7 + 5)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar7 + 5)" (( "(") (binary_expression "plVar7 + 5" (identifier "plVar7") (+ "+") (number_literal "5")) () ")")))) (= "=") (identifier "local_60")) (; ";")) (expression_statement "plVar7[1] = 0;" (assignment_expression "plVar7[1] = 0" (subscript_expression "plVar7[1]" (identifier "plVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "plVar7[6] = local_58;" (assignment_expression "plVar7[6] = local_58" (subscript_expression "plVar7[6]" (identifier "plVar7") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "local_58")) (; ";")) (expression_statement "plVar7[2] = 0;" (assignment_expression "plVar7[2] = 0" (subscript_expression "plVar7[2]" (identifier "plVar7") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "plVar7[3] = 0;" (assignment_expression "plVar7[3] = 0" (subscript_expression "plVar7[3]" (identifier "plVar7") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)((long)plVar7 + 0x2c) = 0;" (assignment_expression "*(undefined4 *)((long)plVar7 + 0x2c) = 0" (pointer_expression "*(undefined4 *)((long)plVar7 + 0x2c)" (* "*") (cast_expression "(undefined4 *)((long)plVar7 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar7 + 0x2c)" (( "(") (binary_expression "(long)plVar7 + 0x2c" (cast_expression "(long)plVar7" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar7")) (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "plVar7[7] = local_50;" (assignment_expression "plVar7[7] = local_50" (subscript_expression "plVar7[7]" (identifier "plVar7") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "local_50")) (; ";")) (expression_statement "local_48 = plVar7;" (assignment_expression "local_48 = plVar7" (identifier "local_48") (= "=") (identifier "plVar7")) (; ";")) (expression_statement "lVar6 = FUN_00127300(lVar5,lVar6);" (assignment_expression "lVar6 = FUN_00127300(lVar5,lVar6)" (identifier "lVar6") (= "=") (call_expression "FUN_00127300(lVar5,lVar6)" (identifier "FUN_00127300") (argument_list "(lVar5,lVar6)" (( "(") (identifier "lVar5") (, ",") (identifier "lVar6") () ")")))) (; ";")) (expression_statement "plVar8 = DAT_001aa948;" (assignment_expression "plVar8 = DAT_001aa948" (identifier "plVar8") (= "=") (identifier "DAT_001aa948")) (; ";")) (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" (identifier "local_6c") (= "=") (number_literal "0")) (; ";")) (expression_statement "plVar7[4] = lVar6;" (assignment_expression "plVar7[4] = lVar6" (subscript_expression "plVar7[4]" (identifier "plVar7") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "lVar6")) (; ";")) (if_statement "if (plVar8 != (long *)0x0) {\n      do {\n        if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }\n        plVar8 = (long *)*plVar8;\n      } while ((plVar8 != (long *)0x0) && (local_6c == 0));\n    }" (if "if") (parenthesized_expression "(plVar8 != (long *)0x0)" (( "(") (binary_expression "plVar8 != (long *)0x0" (identifier "plVar8") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      do {\n        if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }\n        plVar8 = (long *)*plVar8;\n      } while ((plVar8 != (long *)0x0) && (local_6c == 0));\n    }" ({ "{") (do_statement "do {\n        if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }\n        plVar8 = (long *)*plVar8;\n      } while ((plVar8 != (long *)0x0) && (local_6c == 0));" (do "do") (compound_statement "{\n        if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }\n        plVar8 = (long *)*plVar8;\n      }" ({ "{") (if_statement "if ((code *)plVar8[5] != (code *)0x0) {\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }" (if "if") (parenthesized_expression "((code *)plVar8[5] != (code *)0x0)" (( "(") (binary_expression "(code *)plVar8[5] != (code *)0x0" (cast_expression "(code *)plVar8[5]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar8[5]" (identifier "plVar8") ([ "[") (number_literal "5") (] "]"))) (!= "!=") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          DAT_001aa930 = plVar8;\n          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);\n          DAT_001aa930 = (long *)0x0;\n          if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }\n        }" ({ "{") (expression_statement "DAT_001aa930 = plVar8;" (assignment_expression "DAT_001aa930 = plVar8" (identifier "DAT_001aa930") (= "=") (identifier "plVar8")) (; ";")) (expression_statement "iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);" (assignment_expression "iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c)" (identifier "iVar1") (= "=") (call_expression "(*(code *)plVar8[5])(&local_68,&local_6c)" (parenthesized_expression "(*(code *)plVar8[5])" (( "(") (pointer_expression "*(code *)plVar8[5]" (* "*") (cast_expression "(code *)plVar8[5]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar8[5]" (identifier "plVar8") ([ "[") (number_literal "5") (] "]")))) () ")")) (argument_list "(&local_68,&local_6c)" (( "(") (pointer_expression "&local_68" (& "&") (identifier "local_68")) (, ",") (pointer_expression "&local_6c" (& "&") (identifier "local_6c")) () ")")))) (; ";")) (expression_statement "DAT_001aa930 = (long *)0x0;" (assignment_expression "DAT_001aa930 = (long *)0x0" (identifier "DAT_001aa930") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (iVar1 != 0) {\n            DAT_001aa928 = plVar8[1];\n          }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            DAT_001aa928 = plVar8[1];\n          }" ({ "{") (expression_statement "DAT_001aa928 = plVar8[1];" (assignment_expression "DAT_001aa928 = plVar8[1]" (identifier "DAT_001aa928") (= "=") (subscript_expression "plVar8[1]" (identifier "plVar8") ([ "[") (number_literal "1") (] "]"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "plVar8 = (long *)*plVar8;" (assignment_expression "plVar8 = (long *)*plVar8" (identifier "plVar8") (= "=") (cast_expression "(long *)*plVar8" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar8" (* "*") (identifier "plVar8")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((plVar8 != (long *)0x0) && (local_6c == 0))" (( "(") (binary_expression "(plVar8 != (long *)0x0) && (local_6c == 0)" (parenthesized_expression "(plVar8 != (long *)0x0)" (( "(") (binary_expression "plVar8 != (long *)0x0" (identifier "plVar8") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")"))) () ")")) (; ";")) (} "}"))) (expression_statement "lVar6 = DAT_001aa928;" (assignment_expression "lVar6 = DAT_001aa928" (identifier "lVar6") (= "=") (identifier "DAT_001aa928")) (; ";")) (if_statement "if (DAT_001aa928 != 0) {\n      uVar4 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n      FUN_00125230(uVar4,lVar6);\n    }" (if "if") (parenthesized_expression "(DAT_001aa928 != 0)" (( "(") (binary_expression "DAT_001aa928 != 0" (identifier "DAT_001aa928") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar4 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n      FUN_00125230(uVar4,lVar6);\n    }" ({ "{") (expression_statement "uVar4 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);" (assignment_expression "uVar4 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5)" (identifier "uVar4") (= "=") (call_expression "dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5)" (identifier "dcgettext") (argument_list "(0,"%F%P: %s: plugin reported error claiming file\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%F%P: %s: plugin reported error claiming file\n"" (" """) (string_content "%F%P: %s: plugin reported error claiming file") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00125230(uVar4,lVar6);" (call_expression "FUN_00125230(uVar4,lVar6)" (identifier "FUN_00125230") (argument_list "(uVar4,lVar6)" (( "(") (identifier "uVar4") (, ",") (identifier "lVar6") () ")"))) (; ";")) (} "}"))) (if_statement "if (((int)plVar7[5] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {\n      close((int)plVar7[5]);\n      *(undefined4 *)(plVar7 + 5) = 0xffffffff;\n    }" (if "if") (parenthesized_expression "(((int)plVar7[5] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0))" (( "(") (binary_expression "((int)plVar7[5] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)" (parenthesized_expression "((int)plVar7[5] != -1)" (( "(") (binary_expression "(int)plVar7[5] != -1" (cast_expression "(int)plVar7[5]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "plVar7[5]" (identifier "plVar7") ([ "[") (number_literal "5") (] "]"))) (!= "!=") (number_literal "-1")) () ")")) (&& "&&") (parenthesized_expression "(iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)" (( "(") (comma_expression "iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0" (assignment_expression "iVar1 = bfd_plugin_target_p(param_1[1])" (identifier "iVar1") (= "=") (call_expression "bfd_plugin_target_p(param_1[1])" (identifier "bfd_plugin_target_p") (argument_list "(param_1[1])" (( "(") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) () ")")))) (, ",") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      close((int)plVar7[5]);\n      *(undefined4 *)(plVar7 + 5) = 0xffffffff;\n    }" ({ "{") (expression_statement "close((int)plVar7[5]);" (call_expression "close((int)plVar7[5])" (identifier "close") (argument_list "((int)plVar7[5])" (( "(") (cast_expression "(int)plVar7[5]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "plVar7[5]" (identifier "plVar7") ([ "[") (number_literal "5") (] "]"))) () ")"))) (; ";")) (expression_statement "*(undefined4 *)(plVar7 + 5) = 0xffffffff;" (assignment_expression "*(undefined4 *)(plVar7 + 5) = 0xffffffff" (pointer_expression "*(undefined4 *)(plVar7 + 5)" (* "*") (cast_expression "(undefined4 *)(plVar7 + 5)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar7 + 5)" (( "(") (binary_expression "plVar7 + 5" (identifier "plVar7") (+ "+") (number_literal "5")) () ")")))) (= "=") (number_literal "0xffffffff")) (; ";")) (} "}"))) (if_statement "if (local_6c == 0) {\n      if (*(int *)((long)plVar7 + 0x2c) != 0) {\n        munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);\n      }\n      *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x20;\n      bfd_close_all_done(lVar5);\n      return 0;\n    }" (if "if") (parenthesized_expression "(local_6c == 0)" (( "(") (binary_expression "local_6c == 0" (identifier "local_6c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (*(int *)((long)plVar7 + 0x2c) != 0) {\n        munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);\n      }\n      *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x20;\n      bfd_close_all_done(lVar5);\n      return 0;\n    }" ({ "{") (if_statement "if (*(int *)((long)plVar7 + 0x2c) != 0) {\n        munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);\n      }" (if "if") (parenthesized_expression "(*(int *)((long)plVar7 + 0x2c) != 0)" (( "(") (binary_expression "*(int *)((long)plVar7 + 0x2c) != 0" (pointer_expression "*(int *)((long)plVar7 + 0x2c)" (* "*") (cast_expression "(int *)((long)plVar7 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar7 + 0x2c)" (( "(") (binary_expression "(long)plVar7 + 0x2c" (cast_expression "(long)plVar7" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar7")) (+ "+") (number_literal "0x2c")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);\n      }" ({ "{") (expression_statement "munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);" (call_expression "munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888)" (identifier "munmap") (argument_list "((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888)" (( "(") (cast_expression "(void *)(plVar7[1] - plVar7[3] % DAT_001aa888)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar7[1] - plVar7[3] % DAT_001aa888)" (( "(") (binary_expression "plVar7[1] - plVar7[3] % DAT_001aa888" (subscript_expression "plVar7[1]" (identifier "plVar7") ([ "[") (number_literal "1") (] "]")) (- "-") (binary_expression "plVar7[3] % DAT_001aa888" (subscript_expression "plVar7[3]" (identifier "plVar7") ([ "[") (number_literal "3") (] "]")) (% "%") (identifier "DAT_001aa888"))) () ")"))) (, ",") (binary_expression "plVar7[2] + plVar7[3] % DAT_001aa888" (subscript_expression "plVar7[2]" (identifier "plVar7") ([ "[") (number_literal "2") (] "]")) (+ "+") (binary_expression "plVar7[3] % DAT_001aa888" (subscript_expression "plVar7[3]" (identifier "plVar7") ([ "[") (number_literal "3") (] "]")) (% "%") (identifier "DAT_001aa888"))) () ")"))) (; ";")) (} "}"))) (expression_statement "*(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x20;" (assignment_expression "*(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x20" (pointer_expression "*(byte *)(param_1 + 9)" (* "*") (cast_expression "(byte *)(param_1 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 9)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) () ")")))) (= "=") (binary_expression "*(byte *)(param_1 + 9) & 0xcf | 0x20" (binary_expression "*(byte *)(param_1 + 9) & 0xcf" (pointer_expression "*(byte *)(param_1 + 9)" (* "*") (cast_expression "(byte *)(param_1 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 9)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) () ")")))) (& "&") (number_literal "0xcf")) (| "|") (number_literal "0x20"))) (; ";")) (expression_statement "bfd_close_all_done(lVar5);" (call_expression "bfd_close_all_done(lVar5)" (identifier "bfd_close_all_done") (argument_list "(lVar5)" (( "(") (identifier "lVar5") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "param_1[10] = lVar5;" (assignment_expression "param_1[10] = lVar5" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "lVar5")) (; ";")) (expression_statement "*(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x10;" (assignment_expression "*(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x10" (pointer_expression "*(byte *)(param_1 + 9)" (* "*") (cast_expression "(byte *)(param_1 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 9)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) () ")")))) (= "=") (binary_expression "*(byte *)(param_1 + 9) & 0xcf | 0x10" (binary_expression "*(byte *)(param_1 + 9) & 0xcf" (pointer_expression "*(byte *)(param_1 + 9)" (* "*") (cast_expression "(byte *)(param_1 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 9)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) () ")")))) (& "&") (number_literal "0xcf")) (| "|") (number_literal "0x10"))) (; ";")) (expression_statement "bfd_make_readable(lVar5);" (call_expression "bfd_make_readable(lVar5)" (identifier "bfd_make_readable") (argument_list "(lVar5)" (( "(") (identifier "lVar5") () ")"))) (; ";")) (expression_statement "uVar4 = *(undefined8 *)(lVar5 + 8);" (assignment_expression "uVar4 = *(undefined8 *)(lVar5 + 8)" (identifier "uVar4") (= "=") (pointer_expression "*(undefined8 *)(lVar5 + 8)" (* "*") (cast_expression "(undefined8 *)(lVar5 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 8)" (( "(") (binary_expression "lVar5 + 8" (identifier "lVar5") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}")))) (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}")))

type_1 * function_1(type_2 *ibfd)

{
  int var_2;
  int var_7;
  type_3 uVar3;
  type_4 var_12;
  type_5 var_24;
  type_6 uVar6;
  type_7 uVar7;
  type_2 *var_5;
  long var_14;
  type_7 *var_18;
  char *var_21;
  char *fmt;
  type_1 *pbVar12;
  type_8 *var_23;
  int var_26;
  type_9 file;
  
  if ((ibfd->field_0x46 & 0x20) != 0) {
    return (type_1 *)0x0;
  }
  if ((ibfd->field_0x48 & 0x30) != 0) {
    if ((ibfd->field_0x48 & 0x30) != 0x10) {
      return (type_1 *)0x0;
    }
    return ibfd->plugin_dummy_bfd->xvec;
  }
  var_21 = ibfd->filename;
  bfd_use_reserved_id = 1;
  var_2 = var_1(ibfd->xvec);
  var_5 = ibfd;
  if (var_2 != 0) {
    var_5 = link_info.output_bfd;
  }
  uVar7 = var_3(var_21," (symbol from plugin)",0);
  var_5 = (type_2 *)var_4(uVar7,var_5);
  if (var_5 != (type_2 *)0x0) {
    *(type_6 *)&var_5->field_0x44 = *(type_6 *)&var_5->field_0x44 | 0x220000;
    var_7 = var_6(var_5);
    if (var_7 != 0) {
      if (var_2 == 0) {
        uVar7 = var_8(ibfd);
        var_9(var_5,uVar7);
        uVar3 = var_10(ibfd);
        var_11(var_5,uVar3);
        var_12 = (*var_5->xvec->_bfd_copy_private_bfd_data)(ibfd,var_5);
        if (var_12 == 0) goto LAB_00128480;
      }
      var_14 = var_13(var_5,".text",0x20811b);
      if (var_14 != 0) goto LAB_00128305;
    }
  }
LAB_00128480:
  var_5 = (type_2 *)0x0;
  var_21 = (char *)var_15(0,"%F%P: could not create dummy IR bfd: %E\n",5);
  var_16(var_21);
LAB_00128305:
  var_18 = (type_7 *)var_17(var_5,0x40);
  if (var_18 == (type_7 *)0x0) {
    uVar6 = var_19();
    var_21 = (char *)var_15(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);
    var_16(var_21,(type_10)uVar6);
  }
  var_2 = var_20(ibfd,&file);
  if (var_2 == 0) {
    pbVar12 = (type_1 *)0x0;
  }
  else {
    var_21 = ibfd->filename;
    if (file.name == var_21) {
      file.name = var_22(var_5,var_21);
      var_21 = ibfd->filename;
    }
    *var_18 = var_5;
    *(int *)(var_18 + 5) = file.fd;
    var_18[1] = 0;
    var_18[6] = file.offset;
    var_18[2] = 0;
    var_18[3] = 0;
    *(type_3 *)((long)var_18 + 0x2c) = 0;
    var_18[7] = file.filesize;
    file.handle = var_18;
    var_21 = var_22(var_5,var_21);
    var_23 = plugins_list;
    var_26 = 0;
    var_18[4] = var_21;
    if (var_23 != (type_11 *)0x0) {
      do {
        if (var_23->claim_file_handler != (type_12)0x0) {
          called_plugin = var_23;
          var_24 = (*var_23->claim_file_handler)(&file,&var_26);
          called_plugin = (type_11 *)0x0;
          if (var_24 != var_25) {
            var_27 = var_23->name;
          }
        }
        var_23 = var_23->next;
      } while ((var_23 != (type_8 *)0x0) && (var_26 == 0));
    }
    var_21 = var_27;
    if (var_27 != (char *)0x0) {
      fmt = (char *)var_15(0,"%F%P: %s: plugin reported error claiming file\n",5);
      var_16(fmt,var_21);
    }
    if ((*(int *)(var_18 + 5) != -1) && (var_2 = var_1(ibfd->xvec), var_2 == 0)) {
      var_28(*(int *)(var_18 + 5));
      *(type_3 *)(var_18 + 5) = 0xffffffff;
    }
    if (var_26 == 0) {
      if (*(int *)((long)var_18 + 0x2c) != 0) {
        var_29((void *)(var_18[1] - (long)var_18[3] % var_30),
               var_18[2] + (long)var_18[3] % var_30);
      }
      ibfd->field_0x48 = ibfd->field_0x48 & 0xcf | 0x20;
      var_31(var_5);
      return (type_1 *)0x0;
    }
    ibfd->plugin_dummy_bfd = var_5;
    ibfd->field_0x48 = ibfd->field_0x48 & 0xcf | 0x10;
    var_32(var_5);
    pbVar12 = var_5->xvec;
  }
  return pbVar12;
}


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

undefined8 MASKED(long *param_1)

{
  int iVar1;
  int iVar2;
  undefined4 uVar3;
  undefined8 uVar4;
  long lVar5;
  long lVar6;
  long *plVar7;
  long *plVar8;
  int local_6c;
  long local_68;
  undefined4 local_60;
  long local_58;
  long local_50;
  long *local_48;
  
  if ((*(byte *)((long)param_1 + 0x46) & 0x20) != 0) {
    return 0;
  }
  if ((*(byte *)(param_1 + 9) & 0x30) != 0) {
    if ((*(byte *)(param_1 + 9) & 0x30) != 0x10) {
      return 0;
    }
    return *(undefined8 *)(param_1[10] + 8);
  }
  lVar5 = *param_1;
  bfd_use_reserved_id = 1;
  iVar1 = bfd_plugin_target_p(param_1[1]);
  plVar7 = param_1;
  if (iVar1 != 0) {
    plVar7 = DAT_001aadb0;
  }
  uVar4 = concat(lVar5," (symbol from plugin)",0);
  lVar5 = bfd_create(uVar4,plVar7);
  if (lVar5 != 0) {
    *(uint *)(lVar5 + 0x44) = *(uint *)(lVar5 + 0x44) | 0x220000;
    iVar2 = bfd_make_writable(lVar5);
    if (iVar2 != 0) {
      if (iVar1 == 0) {
        uVar4 = bfd_get_arch_info(param_1);
        bfd_set_arch_info(lVar5,uVar4);
        uVar3 = bfd_get_gp_size(param_1);
        bfd_set_gp_size(lVar5,uVar3);
        iVar1 = (**(code **)(*(long *)(lVar5 + 8) + 0x138))(param_1,lVar5);
        if (iVar1 == 0) goto LAB_00128480;
      }
      lVar6 = bfd_make_section_anyway_with_flags(lVar5,".text",0x20811b);
      if (lVar6 != 0) goto LAB_00128305;
    }
  }
LAB_00128480:
  lVar5 = 0;
  uVar4 = dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);
  FUN_00125230(uVar4);
LAB_00128305:
  plVar7 = (long *)bfd_alloc(lVar5,0x40);
  if (plVar7 == (long *)0x0) {
    uVar3 = bfd_get_error();
    uVar4 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);
    FUN_00125230(uVar4,uVar3);
  }
  iVar1 = bfd_plugin_open_input(param_1,&local_68);
  if (iVar1 == 0) {
    uVar4 = 0;
  }
  else {
    lVar6 = *param_1;
    if (local_68 == lVar6) {
      local_68 = FUN_00127300(lVar5);
      lVar6 = *param_1;
    }
    *plVar7 = lVar5;
    *(undefined4 *)(plVar7 + 5) = local_60;
    plVar7[1] = 0;
    plVar7[6] = local_58;
    plVar7[2] = 0;
    plVar7[3] = 0;
    *(undefined4 *)((long)plVar7 + 0x2c) = 0;
    plVar7[7] = local_50;
    local_48 = plVar7;
    lVar6 = FUN_00127300(lVar5,lVar6);
    plVar8 = DAT_001aa948;
    local_6c = 0;
    plVar7[4] = lVar6;
    if (plVar8 != (long *)0x0) {
      do {
        if ((code *)plVar8[5] != (code *)0x0) {
          DAT_001aa930 = plVar8;
          iVar1 = (*(code *)plVar8[5])(&local_68,&local_6c);
          DAT_001aa930 = (long *)0x0;
          if (iVar1 != 0) {
            DAT_001aa928 = plVar8[1];
          }
        }
        plVar8 = (long *)*plVar8;
      } while ((plVar8 != (long *)0x0) && (local_6c == 0));
    }
    lVar6 = DAT_001aa928;
    if (DAT_001aa928 != 0) {
      uVar4 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);
      FUN_00125230(uVar4,lVar6);
    }
    if (((int)plVar7[5] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {
      close((int)plVar7[5]);
      *(undefined4 *)(plVar7 + 5) = 0xffffffff;
    }
    if (local_6c == 0) {
      if (*(int *)((long)plVar7 + 0x2c) != 0) {
        munmap((void *)(plVar7[1] - plVar7[3] % DAT_001aa888),plVar7[2] + plVar7[3] % DAT_001aa888);
      }
      *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x20;
      bfd_close_all_done(lVar5);
      return 0;
    }
    param_1[10] = lVar5;
    *(byte *)(param_1 + 9) = *(byte *)(param_1 + 9) & 0xcf | 0x10;
    bfd_make_readable(lVar5);
    uVar4 = *(undefined8 *)(lVar5 + 8);
  }
  return uVar4;
}

