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

bfd_target * plugin_object_p(bfd *ibfd)

{
  byte bVar1;
  int iVar2;
  undefined4 uVar3;
  bfd *pbVar4;
  int iVar5;
  bfd_boolean bVar6;
  undefined4 *puVar7;
  char *pcVar8;
  ld_plugin_status lVar9;
  char *fmt;
  plugin *ppVar10;
  int claimed;
  ld_plugin_input_file file;
  
  if ((ibfd->field_0x2a & 0x20) != 0) {
    return (bfd_target *)0x0;
  }
  if ((ibfd->field_0x2c & 0x30) != 0) {
    if ((ibfd->field_0x2c & 0x30) != 0x10) {
      return (bfd_target *)0x0;
    }
    return ibfd->plugin_dummy_bfd->xvec;
  }
  pcVar8 = ibfd->filename;
  *(undefined4 *)PTR_bfd_use_reserved_id_000bafc8 = 1;
  iVar2 = bfd_plugin_target_p(ibfd->xvec);
  pbVar4 = ibfd;
  if (iVar2 != 0) {
    pbVar4 = link_info.output_bfd;
  }
  uVar3 = concat(pcVar8," (symbol from plugin)",0);
  pbVar4 = (bfd *)bfd_create(uVar3,pbVar4);
  if (pbVar4 != (bfd *)0x0) {
    *(uint *)&pbVar4->field_0x28 = *(uint *)&pbVar4->field_0x28 | 0x220000;
    iVar5 = bfd_make_writable(pbVar4);
    if (iVar5 != 0) {
      if (iVar2 == 0) {
        uVar3 = bfd_get_arch_info(ibfd);
        bfd_set_arch_info(pbVar4,uVar3);
        uVar3 = bfd_get_gp_size(ibfd);
        bfd_set_gp_size(pbVar4,uVar3);
        bVar6 = (*pbVar4->xvec->_bfd_copy_private_bfd_data)(ibfd,pbVar4);
        if (bVar6 == 0) goto LAB_00034a70;
      }
      iVar2 = bfd_make_section_anyway_with_flags(pbVar4,".text",0x20811b);
      if (iVar2 != 0) goto LAB_000348b2;
    }
  }
LAB_00034a70:
  pbVar4 = (bfd *)0x0;
  pcVar8 = (char *)dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);
  einfo(pcVar8);
LAB_000348b2:
  puVar7 = (undefined4 *)bfd_alloc(pbVar4,0x30);
  if (puVar7 == (undefined4 *)0x0) {
    uVar3 = bfd_get_error();
    pcVar8 = (char *)dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);
    einfo(pcVar8,uVar3);
  }
  iVar2 = bfd_plugin_open_input(ibfd,&file);
  if (iVar2 == 0) {
    return (bfd_target *)0x0;
  }
  pcVar8 = ibfd->filename;
  if (file.name == pcVar8) {
    file.name = plugin_strdup(pbVar4,pcVar8);
    pcVar8 = ibfd->filename;
  }
  puVar7[7] = 0;
  puVar7[6] = file.fd;
  puVar7[9] = file.offset._4_4_;
  puVar7[8] = (undefined4)file.offset;
  puVar7[0xb] = file.filesize._4_4_;
  puVar7[10] = (undefined4)file.filesize;
  *puVar7 = pbVar4;
  puVar7[1] = 0;
  puVar7[2] = 0;
  puVar7[3] = 0;
  puVar7[4] = 0;
  file.handle = puVar7;
  pcVar8 = plugin_strdup(pbVar4,pcVar8);
  ppVar10 = plugins_list;
  claimed = 0;
  puVar7[5] = pcVar8;
  if (ppVar10 != (plugin_t *)0x0) {
    do {
      if (ppVar10->claim_file_handler != (ld_plugin_claim_file_handler)0x0) {
        called_plugin = ppVar10;
        lVar9 = (*ppVar10->claim_file_handler)(&file,&claimed);
        called_plugin = (plugin_t *)0x0;
        if (lVar9 != LDPS_OK) {
          error_plugin = ppVar10->name;
        }
      }
      ppVar10 = ppVar10->next;
    } while ((ppVar10 != (plugin *)0x0) && (claimed == 0));
  }
  pcVar8 = error_plugin;
  if (error_plugin != (char *)0x0) {
    fmt = (char *)dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);
    einfo(fmt,pcVar8);
  }
  if ((puVar7[6] != -1) && (iVar2 = bfd_plugin_target_p(ibfd->xvec), iVar2 == 0)) {
    close(puVar7[6]);
    puVar7[6] = 0xffffffff;
  }
  bVar1 = ibfd->field_0x2c & 0xcf;
  if (claimed == 0) {
    ibfd->field_0x2c = bVar1 | 0x20;
    bfd_close_all_done(pbVar4);
    return (bfd_target *)0x0;
  }
  ibfd->plugin_dummy_bfd = pbVar4;
  ibfd->field_0x2c = bVar1 | 0x10;
  bfd_make_readable(pbVar4);
  return pbVar4->xvec;
}



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

undefined4 FUN_000347a0(int *param_1)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  int *piVar5;
  undefined4 uVar6;
  int *piVar7;
  int local_3c;
  int local_38;
  int local_34;
  int local_30;
  int local_2c;
  int local_28;
  int local_24;
  int *local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x347a9;
  if ((*(byte *)((int)param_1 + 0x2a) & 0x20) != 0) {
    return 0;
  }
  if ((*(byte *)(param_1 + 0xb) & 0x30) != 0) {
    if ((*(byte *)(param_1 + 0xb) & 0x30) != 0x10) {
      return 0;
    }
    return *(undefined4 *)(param_1[0xc] + 4);
  }
  iVar3 = *param_1;
  *(undefined4 *)PTR_bfd_use_reserved_id_000bafc8 = 1;
  iVar1 = bfd_plugin_target_p(param_1[1]);
  piVar5 = param_1;
  if (iVar1 != 0) {
    piVar5 = DAT_000bbe30;
  }
  uVar2 = concat(iVar3," (symbol from plugin)",0);
  iVar3 = bfd_create(uVar2,piVar5);
  if (iVar3 != 0) {
    *(uint *)(iVar3 + 0x28) = *(uint *)(iVar3 + 0x28) | 0x220000;
    iVar4 = bfd_make_writable(iVar3);
    if (iVar4 != 0) {
      if (iVar1 == 0) {
        uVar2 = bfd_get_arch_info(param_1);
        bfd_set_arch_info(iVar3,uVar2);
        uVar2 = bfd_get_gp_size(param_1);
        bfd_set_gp_size(iVar3,uVar2);
        iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3);
        if (iVar1 == 0) goto LAB_00034a70;
      }
      iVar1 = bfd_make_section_anyway_with_flags(iVar3,".text",0x20811b);
      if (iVar1 != 0) goto LAB_000348b2;
    }
  }
LAB_00034a70:
  iVar3 = 0;
  uVar2 = dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);
  FUN_00031730(uVar2);
LAB_000348b2:
  piVar5 = (int *)bfd_alloc(iVar3,0x30);
  if (piVar5 == (int *)0x0) {
    uVar2 = bfd_get_error();
    uVar6 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);
    FUN_00031730(uVar6,uVar2);
  }
  iVar1 = bfd_plugin_open_input(param_1,&local_38);
  if (iVar1 == 0) {
    return 0;
  }
  if (local_38 == *param_1) {
    local_38 = FUN_00033800();
  }
  piVar5[7] = 0;
  piVar5[6] = local_34;
  piVar5[9] = local_2c;
  piVar5[8] = local_30;
  piVar5[0xb] = local_24;
  piVar5[10] = local_28;
  *piVar5 = iVar3;
  piVar5[1] = 0;
  piVar5[2] = 0;
  piVar5[3] = 0;
  piVar5[4] = 0;
  local_20 = piVar5;
  iVar1 = FUN_00033800();
  piVar7 = DAT_000bbb74;
  local_3c = 0;
  piVar5[5] = iVar1;
  if (piVar7 != (int *)0x0) {
    do {
      if ((code *)piVar7[5] != (code *)0x0) {
        DAT_000bbb68 = piVar7;
        iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c);
        DAT_000bbb68 = (int *)0x0;
        if (iVar1 != 0) {
          DAT_000bbb64 = piVar7[1];
        }
      }
      piVar7 = (int *)*piVar7;
    } while ((piVar7 != (int *)0x0) && (local_3c == 0));
  }
  iVar1 = DAT_000bbb64;
  if (DAT_000bbb64 != 0) {
    uVar2 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);
    FUN_00031730(uVar2,iVar1);
  }
  if ((piVar5[6] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {
    close(piVar5[6]);
    piVar5[6] = -1;
  }
  if (local_3c == 0) {
    *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x20;
    bfd_close_all_done(iVar3);
    return 0;
  }
  param_1[0xc] = iVar3;
  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x10;
  bfd_make_readable(iVar3);
  return *(undefined4 *)(iVar3 + 4);
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00015a10
ADD EBX,0x86857
SUB ESP,0x3c
MOV ESI,dword ptr [ESP + 0x50]
TEST byte ptr [ESI + 0x2a],0x20
JNZ 0x00034a48
MOVZX EDX,byte ptr [ESI + 0x2c]
AND EDX,0x30
JZ 0x000347e0
XOR EAX,EAX
CMP DL,0x10
JNZ 0x000347d6
MOV EAX,dword ptr [ESI + 0x30]
MOV EAX,dword ptr [EAX + 0x4]
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDX,dword ptr [ESI]
MOV EAX,dword ptr [EBX + 0xffffffc8]
SUB ESP,0xc
MOV EDI,ESI
MOV dword ptr [ESP + 0x10],EDX
MOV dword ptr [EAX],0x1
PUSH dword ptr [ESI + 0x4]
CALL 0x00014950
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x4]
TEST EAX,EAX
MOV EBP,EAX
JNZ 0x00034a58
SUB ESP,0x4
LEA EAX,[EBX + 0xfff9711a]
PUSH 0x0
PUSH EAX
PUSH EDX
CALL 0x000143e0
POP ECX
POP EDX
PUSH EDI
PUSH EAX
CALL 0x00014500
ADD ESP,0x10
MOV EDI,EAX
TEST EAX,EAX
JZ 0x00034a70
SUB ESP,0xc
OR dword ptr [EAX + 0x28],0x220000
PUSH EAX
CALL 0x000140f0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00034a70
TEST EBP,EBP
JNZ 0x00034892
SUB ESP,0xc
PUSH ESI
CALL 0x00014570
POP EBP
POP EDX
PUSH EAX
PUSH EDI
CALL 0x00014be0
MOV dword ptr [ESP],ESI
CALL 0x000144a0
POP ECX
POP EBP
PUSH EAX
PUSH EDI
CALL 0x00014860
POP EAX
MOV EAX,dword ptr [EDI + 0x4]
POP EDX
PUSH EDI
PUSH ESI
CALL dword ptr [EAX + 0xa8]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00034a70
SUB ESP,0x4
LEA EAX,[EBX + 0xfffc34ff]
PUSH 0x20811b
PUSH EAX
PUSH EDI
CALL 0x00014200
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00034a70
SUB ESP,0x8
PUSH 0x30
PUSH EDI
CALL 0x000142b0
ADD ESP,0x10
MOV EBP,EAX
TEST EAX,EAX
JZ 0x00034ab8
SUB ESP,0x8
LEA EAX,[ESP + 0x1c]
MOV dword ptr [ESP + 0xc],EAX
PUSH EAX
PUSH ESI
CALL 0x00014c00
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00034a48
MOV ECX,dword ptr [ESI]
CMP dword ptr [ESP + 0x14],ECX
JZ 0x00034af0
MOV EAX,dword ptr [ESP + 0x18]
MOV EDX,dword ptr [ESP + 0x20]
MOV dword ptr [ESP + 0x2c],EBP
MOV dword ptr [EBP + 0x1c],0x0
MOV dword ptr [EBP + 0x18],EAX
MOV EAX,dword ptr [ESP + 0x1c]
MOV dword ptr [EBP + 0x24],EDX
MOV EDX,dword ptr [ESP + 0x28]
MOV dword ptr [EBP + 0x20],EAX
MOV EAX,dword ptr [ESP + 0x24]
MOV dword ptr [EBP + 0x2c],EDX
MOV EDX,ECX
MOV dword ptr [EBP + 0x28],EAX
MOV EAX,EDI
MOV dword ptr [EBP],EDI
MOV dword ptr [EBP + 0x4],0x0
MOV dword ptr [EBP + 0x8],0x0
MOV dword ptr [EBP + 0xc],0x0
MOV dword ptr [EBP + 0x10],0x0
CALL 0x00033800
MOV EDX,dword ptr [EBX + 0xb74]
MOV dword ptr [ESP + 0x10],0x0
MOV dword ptr [EBP + 0x14],EAX
LEA EAX,[ESP + 0x10]
TEST EDX,EDX
JZ 0x000349c8
MOV dword ptr [ESP + 0x8],EBP
MOV EBP,EAX
MOV dword ptr [ESP + 0xc],EDI
MOV EDI,dword ptr [ESP + 0x4]
MOV dword ptr [ESP + 0x50],ESI
MOV ESI,EDX
JMP 0x00034988
MOV ECX,dword ptr [ESP + 0x10]
TEST ECX,ECX
JNZ 0x000349bc
MOV EAX,dword ptr [ESI + 0x14]
TEST EAX,EAX
JZ 0x000349b6
SUB ESP,0x8
MOV dword ptr [EBX + 0xb68],ESI
PUSH EBP
PUSH EDI
CALL EAX
MOV dword ptr [EBX + 0xb68],0x0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000349b6
MOV EAX,dword ptr [ESI + 0x4]
MOV dword ptr [EBX + 0xb64],EAX
MOV ESI,dword ptr [ESI]
TEST ESI,ESI
JNZ 0x00034980
MOV EBP,dword ptr [ESP + 0x8]
MOV EDI,dword ptr [ESP + 0xc]
MOV ESI,dword ptr [ESP + 0x50]
MOV EDX,dword ptr [EBX + 0xb64]
TEST EDX,EDX
JZ 0x000349f9
MOV dword ptr [ESP + 0x4],EDX
LEA EAX,[EBX + 0xfff97058]
SUB ESP,0x4
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000142e0
POP ECX
POP EDX
MOV EDX,dword ptr [ESP + 0xc]
PUSH EDX
PUSH EAX
CALL 0x00031730
ADD ESP,0x10
CMP dword ptr [EBP + 0x18],-0x1
JZ 0x00034a15
SUB ESP,0xc
PUSH dword ptr [ESI + 0x4]
CALL 0x00014950
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00034b08
MOVZX EAX,byte ptr [ESI + 0x2c]
MOV EDX,dword ptr [ESP + 0x10]
AND EAX,0xffffffcf
TEST EDX,EDX
JZ 0x00034a98
SUB ESP,0xc
OR EAX,0x10
MOV dword ptr [ESI + 0x30],EDI
MOV byte ptr [ESI + 0x2c],AL
PUSH EDI
CALL 0x00014150
ADD ESP,0x10
MOV EAX,dword ptr [EDI + 0x4]
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
ADD ESP,0x3c
XOR EAX,EAX
POP EBX
POP ESI
POP EDI
POP EBP
RET
LEA EAX,[EBX + 0xe00]
MOV EDI,dword ptr [EAX + 0x30]
JMP 0x00034810
SUB ESP,0x4
LEA EAX,[EBX + 0xfff96ff4]
XOR EDI,EDI
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000142e0
MOV dword ptr [ESP],EAX
CALL 0x00031730
ADD ESP,0x10
JMP 0x000348b2
SUB ESP,0xc
OR EAX,0x20
MOV byte ptr [ESI + 0x2c],AL
PUSH EDI
CALL 0x000146d0
ADD ESP,0x10
XOR EAX,EAX
JMP 0x000347d6
CALL 0x00014430
SUB ESP,0x4
MOV dword ptr [ESP + 0x8],EAX
LEA EAX,[EBX + 0xfff97020]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000142e0
POP EDX
POP ECX
MOV EDX,dword ptr [ESP + 0xc]
PUSH EDX
PUSH EAX
CALL 0x00031730
ADD ESP,0x10
JMP 0x000348ca
MOV EDX,ECX
MOV EAX,EDI
CALL 0x00033800
MOV ECX,dword ptr [ESI]
MOV dword ptr [ESP + 0x14],EAX
JMP 0x000348f3
SUB ESP,0xc
PUSH dword ptr [EBP + 0x18]
CALL 0x00014bd0
MOV dword ptr [EBP + 0x18],0xffffffff
ADD ESP,0x10
JMP 0x00034a15
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 FUN_000347a0(int *param_1)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  int local_3c;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int *local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x347a9;\n  if ((*(byte *)((int)param_1 + 0x2a) & 0x20) != 0) {\n    return 0;\n  }\n  if ((*(byte *)(param_1 + 0xb) & 0x30) != 0) {\n    if ((*(byte *)(param_1 + 0xb) & 0x30) != 0x10) {\n      return 0;\n    }\n    return *(undefined4 *)(param_1[0xc] + 4);\n  }\n  iVar3 = *param_1;\n  *(undefined4 *)PTR_bfd_use_reserved_id_000bafc8 = 1;\n  iVar1 = bfd_plugin_target_p(param_1[1]);\n  piVar5 = param_1;\n  if (iVar1 != 0) {\n    piVar5 = DAT_000bbe30;\n  }\n  uVar2 = concat(iVar3," (symbol from plugin)",0);\n  iVar3 = bfd_create(uVar2,piVar5);\n  if (iVar3 != 0) {\n    *(uint *)(iVar3 + 0x28) = *(uint *)(iVar3 + 0x28) | 0x220000;\n    iVar4 = bfd_make_writable(iVar3);\n    if (iVar4 != 0) {\n      if (iVar1 == 0) {\n        uVar2 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(iVar3,uVar2);\n        uVar2 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(iVar3,uVar2);\n        iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3);\n        if (iVar1 == 0) goto LAB_00034a70;\n      }\n      iVar1 = bfd_make_section_anyway_with_flags(iVar3,".text",0x20811b);\n      if (iVar1 != 0) goto LAB_000348b2;\n    }\n  }\nLAB_00034a70:\n  iVar3 = 0;\n  uVar2 = dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);\n  FUN_00031730(uVar2);\nLAB_000348b2:\n  piVar5 = (int *)bfd_alloc(iVar3,0x30);\n  if (piVar5 == (int *)0x0) {\n    uVar2 = bfd_get_error();\n    uVar6 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    FUN_00031730(uVar6,uVar2);\n  }\n  iVar1 = bfd_plugin_open_input(param_1,&local_38);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  if (local_38 == *param_1) {\n    local_38 = FUN_00033800();\n  }\n  piVar5[7] = 0;\n  piVar5[6] = local_34;\n  piVar5[9] = local_2c;\n  piVar5[8] = local_30;\n  piVar5[0xb] = local_24;\n  piVar5[10] = local_28;\n  *piVar5 = iVar3;\n  piVar5[1] = 0;\n  piVar5[2] = 0;\n  piVar5[3] = 0;\n  piVar5[4] = 0;\n  local_20 = piVar5;\n  iVar1 = FUN_00033800();\n  piVar7 = DAT_000bbb74;\n  local_3c = 0;\n  piVar5[5] = iVar1;\n  if (piVar7 != (int *)0x0) {\n    do {\n      if ((code *)piVar7[5] != (code *)0x0) {\n        DAT_000bbb68 = piVar7;\n        iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c);\n        DAT_000bbb68 = (int *)0x0;\n        if (iVar1 != 0) {\n          DAT_000bbb64 = piVar7[1];\n        }\n      }\n      piVar7 = (int *)*piVar7;\n    } while ((piVar7 != (int *)0x0) && (local_3c == 0));\n  }\n  iVar1 = DAT_000bbb64;\n  if (DAT_000bbb64 != 0) {\n    uVar2 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n    FUN_00031730(uVar2,iVar1);\n  }\n  if ((piVar5[6] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {\n    close(piVar5[6]);\n    piVar5[6] = -1;\n  }\n  if (local_3c == 0) {\n    *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x20;\n    bfd_close_all_done(iVar3);\n    return 0;\n  }\n  param_1[0xc] = iVar3;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x10;\n  bfd_make_readable(iVar3);\n  return *(undefined4 *)(iVar3 + 4);\n}\n\n" comment (function_definition "undefined4 FUN_000347a0(int *param_1)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  int local_3c;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int *local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x347a9;\n  if ((*(byte *)((int)param_1 + 0x2a) & 0x20) != 0) {\n    return 0;\n  }\n  if ((*(byte *)(param_1 + 0xb) & 0x30) != 0) {\n    if ((*(byte *)(param_1 + 0xb) & 0x30) != 0x10) {\n      return 0;\n    }\n    return *(undefined4 *)(param_1[0xc] + 4);\n  }\n  iVar3 = *param_1;\n  *(undefined4 *)PTR_bfd_use_reserved_id_000bafc8 = 1;\n  iVar1 = bfd_plugin_target_p(param_1[1]);\n  piVar5 = param_1;\n  if (iVar1 != 0) {\n    piVar5 = DAT_000bbe30;\n  }\n  uVar2 = concat(iVar3," (symbol from plugin)",0);\n  iVar3 = bfd_create(uVar2,piVar5);\n  if (iVar3 != 0) {\n    *(uint *)(iVar3 + 0x28) = *(uint *)(iVar3 + 0x28) | 0x220000;\n    iVar4 = bfd_make_writable(iVar3);\n    if (iVar4 != 0) {\n      if (iVar1 == 0) {\n        uVar2 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(iVar3,uVar2);\n        uVar2 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(iVar3,uVar2);\n        iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3);\n        if (iVar1 == 0) goto LAB_00034a70;\n      }\n      iVar1 = bfd_make_section_anyway_with_flags(iVar3,".text",0x20811b);\n      if (iVar1 != 0) goto LAB_000348b2;\n    }\n  }\nLAB_00034a70:\n  iVar3 = 0;\n  uVar2 = dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);\n  FUN_00031730(uVar2);\nLAB_000348b2:\n  piVar5 = (int *)bfd_alloc(iVar3,0x30);\n  if (piVar5 == (int *)0x0) {\n    uVar2 = bfd_get_error();\n    uVar6 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    FUN_00031730(uVar6,uVar2);\n  }\n  iVar1 = bfd_plugin_open_input(param_1,&local_38);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  if (local_38 == *param_1) {\n    local_38 = FUN_00033800();\n  }\n  piVar5[7] = 0;\n  piVar5[6] = local_34;\n  piVar5[9] = local_2c;\n  piVar5[8] = local_30;\n  piVar5[0xb] = local_24;\n  piVar5[10] = local_28;\n  *piVar5 = iVar3;\n  piVar5[1] = 0;\n  piVar5[2] = 0;\n  piVar5[3] = 0;\n  piVar5[4] = 0;\n  local_20 = piVar5;\n  iVar1 = FUN_00033800();\n  piVar7 = DAT_000bbb74;\n  local_3c = 0;\n  piVar5[5] = iVar1;\n  if (piVar7 != (int *)0x0) {\n    do {\n      if ((code *)piVar7[5] != (code *)0x0) {\n        DAT_000bbb68 = piVar7;\n        iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c);\n        DAT_000bbb68 = (int *)0x0;\n        if (iVar1 != 0) {\n          DAT_000bbb64 = piVar7[1];\n        }\n      }\n      piVar7 = (int *)*piVar7;\n    } while ((piVar7 != (int *)0x0) && (local_3c == 0));\n  }\n  iVar1 = DAT_000bbb64;\n  if (DAT_000bbb64 != 0) {\n    uVar2 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n    FUN_00031730(uVar2,iVar1);\n  }\n  if ((piVar5[6] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {\n    close(piVar5[6]);\n    piVar5[6] = -1;\n  }\n  if (local_3c == 0) {\n    *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x20;\n    bfd_close_all_done(iVar3);\n    return 0;\n  }\n  param_1[0xc] = iVar3;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x10;\n  bfd_make_readable(iVar3);\n  return *(undefined4 *)(iVar3 + 4);\n}" type_identifier (function_declarator "FUN_000347a0(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  int local_3c;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int *local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x347a9;\n  if ((*(byte *)((int)param_1 + 0x2a) & 0x20) != 0) {\n    return 0;\n  }\n  if ((*(byte *)(param_1 + 0xb) & 0x30) != 0) {\n    if ((*(byte *)(param_1 + 0xb) & 0x30) != 0x10) {\n      return 0;\n    }\n    return *(undefined4 *)(param_1[0xc] + 4);\n  }\n  iVar3 = *param_1;\n  *(undefined4 *)PTR_bfd_use_reserved_id_000bafc8 = 1;\n  iVar1 = bfd_plugin_target_p(param_1[1]);\n  piVar5 = param_1;\n  if (iVar1 != 0) {\n    piVar5 = DAT_000bbe30;\n  }\n  uVar2 = concat(iVar3," (symbol from plugin)",0);\n  iVar3 = bfd_create(uVar2,piVar5);\n  if (iVar3 != 0) {\n    *(uint *)(iVar3 + 0x28) = *(uint *)(iVar3 + 0x28) | 0x220000;\n    iVar4 = bfd_make_writable(iVar3);\n    if (iVar4 != 0) {\n      if (iVar1 == 0) {\n        uVar2 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(iVar3,uVar2);\n        uVar2 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(iVar3,uVar2);\n        iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3);\n        if (iVar1 == 0) goto LAB_00034a70;\n      }\n      iVar1 = bfd_make_section_anyway_with_flags(iVar3,".text",0x20811b);\n      if (iVar1 != 0) goto LAB_000348b2;\n    }\n  }\nLAB_00034a70:\n  iVar3 = 0;\n  uVar2 = dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);\n  FUN_00031730(uVar2);\nLAB_000348b2:\n  piVar5 = (int *)bfd_alloc(iVar3,0x30);\n  if (piVar5 == (int *)0x0) {\n    uVar2 = bfd_get_error();\n    uVar6 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    FUN_00031730(uVar6,uVar2);\n  }\n  iVar1 = bfd_plugin_open_input(param_1,&local_38);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  if (local_38 == *param_1) {\n    local_38 = FUN_00033800();\n  }\n  piVar5[7] = 0;\n  piVar5[6] = local_34;\n  piVar5[9] = local_2c;\n  piVar5[8] = local_30;\n  piVar5[0xb] = local_24;\n  piVar5[10] = local_28;\n  *piVar5 = iVar3;\n  piVar5[1] = 0;\n  piVar5[2] = 0;\n  piVar5[3] = 0;\n  piVar5[4] = 0;\n  local_20 = piVar5;\n  iVar1 = FUN_00033800();\n  piVar7 = DAT_000bbb74;\n  local_3c = 0;\n  piVar5[5] = iVar1;\n  if (piVar7 != (int *)0x0) {\n    do {\n      if ((code *)piVar7[5] != (code *)0x0) {\n        DAT_000bbb68 = piVar7;\n        iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c);\n        DAT_000bbb68 = (int *)0x0;\n        if (iVar1 != 0) {\n          DAT_000bbb64 = piVar7[1];\n        }\n      }\n      piVar7 = (int *)*piVar7;\n    } while ((piVar7 != (int *)0x0) && (local_3c == 0));\n  }\n  iVar1 = DAT_000bbb64;\n  if (DAT_000bbb64 != 0) {\n    uVar2 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n    FUN_00031730(uVar2,iVar1);\n  }\n  if ((piVar5[6] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {\n    close(piVar5[6]);\n    piVar5[6] = -1;\n  }\n  if (local_3c == 0) {\n    *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x20;\n    bfd_close_all_done(iVar3);\n    return 0;\n  }\n  param_1[0xc] = iVar3;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x10;\n  bfd_make_readable(iVar3);\n  return *(undefined4 *)(iVar3 + 4);\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int *local_20;" primitive_type (pointer_declarator "*local_20" * identifier) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x347a9;" (assignment_expression "uStack_14 = 0x347a9" identifier = number_literal) ;) (if_statement "if ((*(byte *)((int)param_1 + 0x2a) & 0x20) != 0) {\n    return 0;\n  }" if (parenthesized_expression "((*(byte *)((int)param_1 + 0x2a) & 0x20) != 0)" ( (binary_expression "(*(byte *)((int)param_1 + 0x2a) & 0x20) != 0" (parenthesized_expression "(*(byte *)((int)param_1 + 0x2a) & 0x20)" ( (binary_expression "*(byte *)((int)param_1 + 0x2a) & 0x20" (pointer_expression "*(byte *)((int)param_1 + 0x2a)" * (cast_expression "(byte *)((int)param_1 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2a)" ( (binary_expression "(int)param_1 + 0x2a" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) 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 + 0xb) & 0x30) != 0) {\n    if ((*(byte *)(param_1 + 0xb) & 0x30) != 0x10) {\n      return 0;\n    }\n    return *(undefined4 *)(param_1[0xc] + 4);\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0xb) & 0x30) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0xb) & 0x30) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0xb) & 0x30)" ( (binary_expression "*(byte *)(param_1 + 0xb) & 0x30" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    if ((*(byte *)(param_1 + 0xb) & 0x30) != 0x10) {\n      return 0;\n    }\n    return *(undefined4 *)(param_1[0xc] + 4);\n  }" { (if_statement "if ((*(byte *)(param_1 + 0xb) & 0x30) != 0x10) {\n      return 0;\n    }" if (parenthesized_expression "((*(byte *)(param_1 + 0xb) & 0x30) != 0x10)" ( (binary_expression "(*(byte *)(param_1 + 0xb) & 0x30) != 0x10" (parenthesized_expression "(*(byte *)(param_1 + 0xb) & 0x30)" ( (binary_expression "*(byte *)(param_1 + 0xb) & 0x30" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (return_statement "return *(undefined4 *)(param_1[0xc] + 4);" return (pointer_expression "*(undefined4 *)(param_1[0xc] + 4)" * (cast_expression "(undefined4 *)(param_1[0xc] + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[0xc] + 4)" ( (binary_expression "param_1[0xc] + 4" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) + number_literal) )))) ;) })) (expression_statement "iVar3 = *param_1;" (assignment_expression "iVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*(undefined4 *)PTR_bfd_use_reserved_id_000bafc8 = 1;" (assignment_expression "*(undefined4 *)PTR_bfd_use_reserved_id_000bafc8 = 1" (pointer_expression "*(undefined4 *)PTR_bfd_use_reserved_id_000bafc8" * (cast_expression "(undefined4 *)PTR_bfd_use_reserved_id_000bafc8" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) 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 "piVar5 = param_1;" (assignment_expression "piVar5 = param_1" identifier = identifier) ;) (if_statement "if (iVar1 != 0) {\n    piVar5 = DAT_000bbe30;\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    piVar5 = DAT_000bbe30;\n  }" { (expression_statement "piVar5 = DAT_000bbe30;" (assignment_expression "piVar5 = DAT_000bbe30" identifier = identifier) ;) })) (expression_statement "uVar2 = concat(iVar3," (symbol from plugin)",0);" (assignment_expression "uVar2 = concat(iVar3," (symbol from plugin)",0)" identifier = (call_expression "concat(iVar3," (symbol from plugin)",0)" identifier (argument_list "(iVar3," (symbol from plugin)",0)" ( identifier , (string_literal "" (symbol from plugin)"" " string_content ") , number_literal )))) ;) (expression_statement "iVar3 = bfd_create(uVar2,piVar5);" (assignment_expression "iVar3 = bfd_create(uVar2,piVar5)" identifier = (call_expression "bfd_create(uVar2,piVar5)" identifier (argument_list "(uVar2,piVar5)" ( identifier , identifier )))) ;) (if_statement "if (iVar3 != 0) {\n    *(uint *)(iVar3 + 0x28) = *(uint *)(iVar3 + 0x28) | 0x220000;\n    iVar4 = bfd_make_writable(iVar3);\n    if (iVar4 != 0) {\n      if (iVar1 == 0) {\n        uVar2 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(iVar3,uVar2);\n        uVar2 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(iVar3,uVar2);\n        iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3);\n        if (iVar1 == 0) goto LAB_00034a70;\n      }\n      iVar1 = bfd_make_section_anyway_with_flags(iVar3,".text",0x20811b);\n      if (iVar1 != 0) goto LAB_000348b2;\n    }\n  }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    *(uint *)(iVar3 + 0x28) = *(uint *)(iVar3 + 0x28) | 0x220000;\n    iVar4 = bfd_make_writable(iVar3);\n    if (iVar4 != 0) {\n      if (iVar1 == 0) {\n        uVar2 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(iVar3,uVar2);\n        uVar2 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(iVar3,uVar2);\n        iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3);\n        if (iVar1 == 0) goto LAB_00034a70;\n      }\n      iVar1 = bfd_make_section_anyway_with_flags(iVar3,".text",0x20811b);\n      if (iVar1 != 0) goto LAB_000348b2;\n    }\n  }" { (expression_statement "*(uint *)(iVar3 + 0x28) = *(uint *)(iVar3 + 0x28) | 0x220000;" (assignment_expression "*(uint *)(iVar3 + 0x28) = *(uint *)(iVar3 + 0x28) | 0x220000" (pointer_expression "*(uint *)(iVar3 + 0x28)" * (cast_expression "(uint *)(iVar3 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x28)" ( (binary_expression "iVar3 + 0x28" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar3 + 0x28) | 0x220000" (pointer_expression "*(uint *)(iVar3 + 0x28)" * (cast_expression "(uint *)(iVar3 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x28)" ( (binary_expression "iVar3 + 0x28" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "iVar4 = bfd_make_writable(iVar3);" (assignment_expression "iVar4 = bfd_make_writable(iVar3)" identifier = (call_expression "bfd_make_writable(iVar3)" identifier (argument_list "(iVar3)" ( identifier )))) ;) (if_statement "if (iVar4 != 0) {\n      if (iVar1 == 0) {\n        uVar2 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(iVar3,uVar2);\n        uVar2 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(iVar3,uVar2);\n        iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3);\n        if (iVar1 == 0) goto LAB_00034a70;\n      }\n      iVar1 = bfd_make_section_anyway_with_flags(iVar3,".text",0x20811b);\n      if (iVar1 != 0) goto LAB_000348b2;\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      if (iVar1 == 0) {\n        uVar2 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(iVar3,uVar2);\n        uVar2 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(iVar3,uVar2);\n        iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3);\n        if (iVar1 == 0) goto LAB_00034a70;\n      }\n      iVar1 = bfd_make_section_anyway_with_flags(iVar3,".text",0x20811b);\n      if (iVar1 != 0) goto LAB_000348b2;\n    }" { (if_statement "if (iVar1 == 0) {\n        uVar2 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(iVar3,uVar2);\n        uVar2 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(iVar3,uVar2);\n        iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3);\n        if (iVar1 == 0) goto LAB_00034a70;\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar2 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(iVar3,uVar2);\n        uVar2 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(iVar3,uVar2);\n        iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3);\n        if (iVar1 == 0) goto LAB_00034a70;\n      }" { (expression_statement "uVar2 = bfd_get_arch_info(param_1);" (assignment_expression "uVar2 = 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(iVar3,uVar2);" (call_expression "bfd_set_arch_info(iVar3,uVar2)" identifier (argument_list "(iVar3,uVar2)" ( identifier , identifier ))) ;) (expression_statement "uVar2 = bfd_get_gp_size(param_1);" (assignment_expression "uVar2 = 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(iVar3,uVar2);" (call_expression "bfd_set_gp_size(iVar3,uVar2)" identifier (argument_list "(iVar3,uVar2)" ( identifier , identifier ))) ;) (expression_statement "iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3);" (assignment_expression "iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3)" identifier = (call_expression "(**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3)" (parenthesized_expression "(**(code **)(*(int *)(iVar3 + 4) + 0xa8))" ( (pointer_expression "**(code **)(*(int *)(iVar3 + 4) + 0xa8)" * (pointer_expression "*(code **)(*(int *)(iVar3 + 4) + 0xa8)" * (cast_expression "(code **)(*(int *)(iVar3 + 4) + 0xa8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar3 + 4) + 0xa8)" ( (binary_expression "*(int *)(iVar3 + 4) + 0xa8" (pointer_expression "*(int *)(iVar3 + 4)" * (cast_expression "(int *)(iVar3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 4)" ( (binary_expression "iVar3 + 4" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(param_1,iVar3)" ( identifier , identifier )))) ;) (if_statement "if (iVar1 == 0) goto LAB_00034a70;" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00034a70;" goto statement_identifier ;)) })) (expression_statement "iVar1 = bfd_make_section_anyway_with_flags(iVar3,".text",0x20811b);" (assignment_expression "iVar1 = bfd_make_section_anyway_with_flags(iVar3,".text",0x20811b)" identifier = (call_expression "bfd_make_section_anyway_with_flags(iVar3,".text",0x20811b)" identifier (argument_list "(iVar3,".text",0x20811b)" ( identifier , (string_literal "".text"" " string_content ") , number_literal )))) ;) (if_statement "if (iVar1 != 0) goto LAB_000348b2;" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000348b2;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_00034a70:\n  iVar3 = 0;" statement_identifier : (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;)) (expression_statement "uVar2 = dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);" (assignment_expression "uVar2 = 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_00031730(uVar2);" (call_expression "FUN_00031730(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (labeled_statement "LAB_000348b2:\n  piVar5 = (int *)bfd_alloc(iVar3,0x30);" statement_identifier : (expression_statement "piVar5 = (int *)bfd_alloc(iVar3,0x30);" (assignment_expression "piVar5 = (int *)bfd_alloc(iVar3,0x30)" identifier = (cast_expression "(int *)bfd_alloc(iVar3,0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_alloc(iVar3,0x30)" identifier (argument_list "(iVar3,0x30)" ( identifier , number_literal ))))) ;)) (if_statement "if (piVar5 == (int *)0x0) {\n    uVar2 = bfd_get_error();\n    uVar6 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    FUN_00031730(uVar6,uVar2);\n  }" if (parenthesized_expression "(piVar5 == (int *)0x0)" ( (binary_expression "piVar5 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar2 = bfd_get_error();\n    uVar6 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    FUN_00031730(uVar6,uVar2);\n  }" { (expression_statement "uVar2 = bfd_get_error();" (assignment_expression "uVar2 = bfd_get_error()" identifier = (call_expression "bfd_get_error()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar6 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);" (assignment_expression "uVar6 = 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_00031730(uVar6,uVar2);" (call_expression "FUN_00031730(uVar6,uVar2)" identifier (argument_list "(uVar6,uVar2)" ( identifier , identifier ))) ;) })) (expression_statement "iVar1 = bfd_plugin_open_input(param_1,&local_38);" (assignment_expression "iVar1 = bfd_plugin_open_input(param_1,&local_38)" identifier = (call_expression "bfd_plugin_open_input(param_1,&local_38)" identifier (argument_list "(param_1,&local_38)" ( identifier , (pointer_expression "&local_38" & identifier) )))) ;) (if_statement "if (iVar1 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (local_38 == *param_1) {\n    local_38 = FUN_00033800();\n  }" if (parenthesized_expression "(local_38 == *param_1)" ( (binary_expression "local_38 == *param_1" identifier == (pointer_expression "*param_1" * identifier)) )) (compound_statement "{\n    local_38 = FUN_00033800();\n  }" { (expression_statement "local_38 = FUN_00033800();" (assignment_expression "local_38 = FUN_00033800()" identifier = (call_expression "FUN_00033800()" identifier (argument_list "()" ( )))) ;) })) (expression_statement "piVar5[7] = 0;" (assignment_expression "piVar5[7] = 0" (subscript_expression "piVar5[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5[6] = local_34;" (assignment_expression "piVar5[6] = local_34" (subscript_expression "piVar5[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar5[9] = local_2c;" (assignment_expression "piVar5[9] = local_2c" (subscript_expression "piVar5[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar5[8] = local_30;" (assignment_expression "piVar5[8] = local_30" (subscript_expression "piVar5[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar5[0xb] = local_24;" (assignment_expression "piVar5[0xb] = local_24" (subscript_expression "piVar5[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar5[10] = local_28;" (assignment_expression "piVar5[10] = local_28" (subscript_expression "piVar5[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*piVar5 = iVar3;" (assignment_expression "*piVar5 = iVar3" (pointer_expression "*piVar5" * identifier) = identifier) ;) (expression_statement "piVar5[1] = 0;" (assignment_expression "piVar5[1] = 0" (subscript_expression "piVar5[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5[2] = 0;" (assignment_expression "piVar5[2] = 0" (subscript_expression "piVar5[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5[3] = 0;" (assignment_expression "piVar5[3] = 0" (subscript_expression "piVar5[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5[4] = 0;" (assignment_expression "piVar5[4] = 0" (subscript_expression "piVar5[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_20 = piVar5;" (assignment_expression "local_20 = piVar5" identifier = identifier) ;) (expression_statement "iVar1 = FUN_00033800();" (assignment_expression "iVar1 = FUN_00033800()" identifier = (call_expression "FUN_00033800()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar7 = DAT_000bbb74;" (assignment_expression "piVar7 = DAT_000bbb74" identifier = identifier) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "piVar5[5] = iVar1;" (assignment_expression "piVar5[5] = iVar1" (subscript_expression "piVar5[5]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (piVar7 != (int *)0x0) {\n    do {\n      if ((code *)piVar7[5] != (code *)0x0) {\n        DAT_000bbb68 = piVar7;\n        iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c);\n        DAT_000bbb68 = (int *)0x0;\n        if (iVar1 != 0) {\n          DAT_000bbb64 = piVar7[1];\n        }\n      }\n      piVar7 = (int *)*piVar7;\n    } while ((piVar7 != (int *)0x0) && (local_3c == 0));\n  }" if (parenthesized_expression "(piVar7 != (int *)0x0)" ( (binary_expression "piVar7 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    do {\n      if ((code *)piVar7[5] != (code *)0x0) {\n        DAT_000bbb68 = piVar7;\n        iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c);\n        DAT_000bbb68 = (int *)0x0;\n        if (iVar1 != 0) {\n          DAT_000bbb64 = piVar7[1];\n        }\n      }\n      piVar7 = (int *)*piVar7;\n    } while ((piVar7 != (int *)0x0) && (local_3c == 0));\n  }" { (do_statement "do {\n      if ((code *)piVar7[5] != (code *)0x0) {\n        DAT_000bbb68 = piVar7;\n        iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c);\n        DAT_000bbb68 = (int *)0x0;\n        if (iVar1 != 0) {\n          DAT_000bbb64 = piVar7[1];\n        }\n      }\n      piVar7 = (int *)*piVar7;\n    } while ((piVar7 != (int *)0x0) && (local_3c == 0));" do (compound_statement "{\n      if ((code *)piVar7[5] != (code *)0x0) {\n        DAT_000bbb68 = piVar7;\n        iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c);\n        DAT_000bbb68 = (int *)0x0;\n        if (iVar1 != 0) {\n          DAT_000bbb64 = piVar7[1];\n        }\n      }\n      piVar7 = (int *)*piVar7;\n    }" { (if_statement "if ((code *)piVar7[5] != (code *)0x0) {\n        DAT_000bbb68 = piVar7;\n        iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c);\n        DAT_000bbb68 = (int *)0x0;\n        if (iVar1 != 0) {\n          DAT_000bbb64 = piVar7[1];\n        }\n      }" if (parenthesized_expression "((code *)piVar7[5] != (code *)0x0)" ( (binary_expression "(code *)piVar7[5] != (code *)0x0" (cast_expression "(code *)piVar7[5]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[5]" identifier [ number_literal ])) != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        DAT_000bbb68 = piVar7;\n        iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c);\n        DAT_000bbb68 = (int *)0x0;\n        if (iVar1 != 0) {\n          DAT_000bbb64 = piVar7[1];\n        }\n      }" { (expression_statement "DAT_000bbb68 = piVar7;" (assignment_expression "DAT_000bbb68 = piVar7" identifier = identifier) ;) (expression_statement "iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c);" (assignment_expression "iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c)" identifier = (call_expression "(*(code *)piVar7[5])(&local_38,&local_3c)" (parenthesized_expression "(*(code *)piVar7[5])" ( (pointer_expression "*(code *)piVar7[5]" * (cast_expression "(code *)piVar7[5]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[5]" identifier [ number_literal ]))) )) (argument_list "(&local_38,&local_3c)" ( (pointer_expression "&local_38" & identifier) , (pointer_expression "&local_3c" & identifier) )))) ;) (expression_statement "DAT_000bbb68 = (int *)0x0;" (assignment_expression "DAT_000bbb68 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar1 != 0) {\n          DAT_000bbb64 = piVar7[1];\n        }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n          DAT_000bbb64 = piVar7[1];\n        }" { (expression_statement "DAT_000bbb64 = piVar7[1];" (assignment_expression "DAT_000bbb64 = piVar7[1]" identifier = (subscript_expression "piVar7[1]" identifier [ number_literal ])) ;) })) })) (expression_statement "piVar7 = (int *)*piVar7;" (assignment_expression "piVar7 = (int *)*piVar7" identifier = (cast_expression "(int *)*piVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) ;) }) while (parenthesized_expression "((piVar7 != (int *)0x0) && (local_3c == 0))" ( (binary_expression "(piVar7 != (int *)0x0) && (local_3c == 0)" (parenthesized_expression "(piVar7 != (int *)0x0)" ( (binary_expression "piVar7 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(local_3c == 0)" ( (binary_expression "local_3c == 0" identifier == number_literal) ))) )) ;) })) (expression_statement "iVar1 = DAT_000bbb64;" (assignment_expression "iVar1 = DAT_000bbb64" identifier = identifier) ;) (if_statement "if (DAT_000bbb64 != 0) {\n    uVar2 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n    FUN_00031730(uVar2,iVar1);\n  }" if (parenthesized_expression "(DAT_000bbb64 != 0)" ( (binary_expression "DAT_000bbb64 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar2 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n    FUN_00031730(uVar2,iVar1);\n  }" { (expression_statement "uVar2 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);" (assignment_expression "uVar2 = 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_00031730(uVar2,iVar1);" (call_expression "FUN_00031730(uVar2,iVar1)" identifier (argument_list "(uVar2,iVar1)" ( identifier , identifier ))) ;) })) (if_statement "if ((piVar5[6] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {\n    close(piVar5[6]);\n    piVar5[6] = -1;\n  }" if (parenthesized_expression "((piVar5[6] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0))" ( (binary_expression "(piVar5[6] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)" (parenthesized_expression "(piVar5[6] != -1)" ( (binary_expression "piVar5[6] != -1" (subscript_expression "piVar5[6]" 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(piVar5[6]);\n    piVar5[6] = -1;\n  }" { (expression_statement "close(piVar5[6]);" (call_expression "close(piVar5[6])" identifier (argument_list "(piVar5[6])" ( (subscript_expression "piVar5[6]" identifier [ number_literal ]) ))) ;) (expression_statement "piVar5[6] = -1;" (assignment_expression "piVar5[6] = -1" (subscript_expression "piVar5[6]" identifier [ number_literal ]) = number_literal) ;) })) (if_statement "if (local_3c == 0) {\n    *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x20;\n    bfd_close_all_done(iVar3);\n    return 0;\n  }" if (parenthesized_expression "(local_3c == 0)" ( (binary_expression "local_3c == 0" identifier == number_literal) )) (compound_statement "{\n    *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x20;\n    bfd_close_all_done(iVar3);\n    return 0;\n  }" { (expression_statement "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x20;" (assignment_expression "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x20" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 0xb) & 0xcf | 0x20" (binary_expression "*(byte *)(param_1 + 0xb) & 0xcf" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "bfd_close_all_done(iVar3);" (call_expression "bfd_close_all_done(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "param_1[0xc] = iVar3;" (assignment_expression "param_1[0xc] = iVar3" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x10;" (assignment_expression "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x10" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 0xb) & 0xcf | 0x10" (binary_expression "*(byte *)(param_1 + 0xb) & 0xcf" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "bfd_make_readable(iVar3);" (call_expression "bfd_make_readable(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))) ;) (return_statement "return *(undefined4 *)(iVar3 + 4);" return (pointer_expression "*(undefined4 *)(iVar3 + 4)" * (cast_expression "(undefined4 *)(iVar3 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 4)" ( (binary_expression "iVar3 + 4" identifier + number_literal) )))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nbfd_target * plugin_object_p(bfd *ibfd)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  bfd *pbVar4;\n  int iVar5;\n  bfd_boolean bVar6;\n  undefined4 *puVar7;\n  char *pcVar8;\n  ld_plugin_status lVar9;\n  char *fmt;\n  plugin *ppVar10;\n  int claimed;\n  ld_plugin_input_file file;\n  \n  if ((ibfd->field_0x2a & 0x20) != 0) {\n    return (bfd_target *)0x0;\n  }\n  if ((ibfd->field_0x2c & 0x30) != 0) {\n    if ((ibfd->field_0x2c & 0x30) != 0x10) {\n      return (bfd_target *)0x0;\n    }\n    return ibfd->plugin_dummy_bfd->xvec;\n  }\n  pcVar8 = ibfd->filename;\n  *(undefined4 *)PTR_bfd_use_reserved_id_000bafc8 = 1;\n  iVar2 = bfd_plugin_target_p(ibfd->xvec);\n  pbVar4 = ibfd;\n  if (iVar2 != 0) {\n    pbVar4 = link_info.output_bfd;\n  }\n  uVar3 = concat(pcVar8," (symbol from plugin)",0);\n  pbVar4 = (bfd *)bfd_create(uVar3,pbVar4);\n  if (pbVar4 != (bfd *)0x0) {\n    *(uint *)&pbVar4->field_0x28 = *(uint *)&pbVar4->field_0x28 | 0x220000;\n    iVar5 = bfd_make_writable(pbVar4);\n    if (iVar5 != 0) {\n      if (iVar2 == 0) {\n        uVar3 = bfd_get_arch_info(ibfd);\n        bfd_set_arch_info(pbVar4,uVar3);\n        uVar3 = bfd_get_gp_size(ibfd);\n        bfd_set_gp_size(pbVar4,uVar3);\n        bVar6 = (*pbVar4->xvec->_bfd_copy_private_bfd_data)(ibfd,pbVar4);\n        if (bVar6 == 0) goto LAB_00034a70;\n      }\n      iVar2 = bfd_make_section_anyway_with_flags(pbVar4,".text",0x20811b);\n      if (iVar2 != 0) goto LAB_000348b2;\n    }\n  }\nLAB_00034a70:\n  pbVar4 = (bfd *)0x0;\n  pcVar8 = (char *)dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);\n  einfo(pcVar8);\nLAB_000348b2:\n  puVar7 = (undefined4 *)bfd_alloc(pbVar4,0x30);\n  if (puVar7 == (undefined4 *)0x0) {\n    uVar3 = bfd_get_error();\n    pcVar8 = (char *)dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    einfo(pcVar8,uVar3);\n  }\n  iVar2 = bfd_plugin_open_input(ibfd,&file);\n  if (iVar2 == 0) {\n    return (bfd_target *)0x0;\n  }\n  pcVar8 = ibfd->filename;\n  if (file.name == pcVar8) {\n    file.name = plugin_strdup(pbVar4,pcVar8);\n    pcVar8 = ibfd->filename;\n  }\n  puVar7[7] = 0;\n  puVar7[6] = file.fd;\n  puVar7[9] = file.offset._4_4_;\n  puVar7[8] = (undefined4)file.offset;\n  puVar7[0xb] = file.filesize._4_4_;\n  puVar7[10] = (undefined4)file.filesize;\n  *puVar7 = pbVar4;\n  puVar7[1] = 0;\n  puVar7[2] = 0;\n  puVar7[3] = 0;\n  puVar7[4] = 0;\n  file.handle = puVar7;\n  pcVar8 = plugin_strdup(pbVar4,pcVar8);\n  ppVar10 = plugins_list;\n  claimed = 0;\n  puVar7[5] = pcVar8;\n  if (ppVar10 != (plugin_t *)0x0) {\n    do {\n      if (ppVar10->claim_file_handler != (ld_plugin_claim_file_handler)0x0) {\n        called_plugin = ppVar10;\n        lVar9 = (*ppVar10->claim_file_handler)(&file,&claimed);\n        called_plugin = (plugin_t *)0x0;\n        if (lVar9 != LDPS_OK) {\n          error_plugin = ppVar10->name;\n        }\n      }\n      ppVar10 = ppVar10->next;\n    } while ((ppVar10 != (plugin *)0x0) && (claimed == 0));\n  }\n  pcVar8 = 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,pcVar8);\n  }\n  if ((puVar7[6] != -1) && (iVar2 = bfd_plugin_target_p(ibfd->xvec), iVar2 == 0)) {\n    close(puVar7[6]);\n    puVar7[6] = 0xffffffff;\n  }\n  bVar1 = ibfd->field_0x2c & 0xcf;\n  if (claimed == 0) {\n    ibfd->field_0x2c = bVar1 | 0x20;\n    bfd_close_all_done(pbVar4);\n    return (bfd_target *)0x0;\n  }\n  ibfd->plugin_dummy_bfd = pbVar4;\n  ibfd->field_0x2c = bVar1 | 0x10;\n  bfd_make_readable(pbVar4);\n  return pbVar4->xvec;\n}\n\n" comment (function_definition "bfd_target * plugin_object_p(bfd *ibfd)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  bfd *pbVar4;\n  int iVar5;\n  bfd_boolean bVar6;\n  undefined4 *puVar7;\n  char *pcVar8;\n  ld_plugin_status lVar9;\n  char *fmt;\n  plugin *ppVar10;\n  int claimed;\n  ld_plugin_input_file file;\n  \n  if ((ibfd->field_0x2a & 0x20) != 0) {\n    return (bfd_target *)0x0;\n  }\n  if ((ibfd->field_0x2c & 0x30) != 0) {\n    if ((ibfd->field_0x2c & 0x30) != 0x10) {\n      return (bfd_target *)0x0;\n    }\n    return ibfd->plugin_dummy_bfd->xvec;\n  }\n  pcVar8 = ibfd->filename;\n  *(undefined4 *)PTR_bfd_use_reserved_id_000bafc8 = 1;\n  iVar2 = bfd_plugin_target_p(ibfd->xvec);\n  pbVar4 = ibfd;\n  if (iVar2 != 0) {\n    pbVar4 = link_info.output_bfd;\n  }\n  uVar3 = concat(pcVar8," (symbol from plugin)",0);\n  pbVar4 = (bfd *)bfd_create(uVar3,pbVar4);\n  if (pbVar4 != (bfd *)0x0) {\n    *(uint *)&pbVar4->field_0x28 = *(uint *)&pbVar4->field_0x28 | 0x220000;\n    iVar5 = bfd_make_writable(pbVar4);\n    if (iVar5 != 0) {\n      if (iVar2 == 0) {\n        uVar3 = bfd_get_arch_info(ibfd);\n        bfd_set_arch_info(pbVar4,uVar3);\n        uVar3 = bfd_get_gp_size(ibfd);\n        bfd_set_gp_size(pbVar4,uVar3);\n        bVar6 = (*pbVar4->xvec->_bfd_copy_private_bfd_data)(ibfd,pbVar4);\n        if (bVar6 == 0) goto LAB_00034a70;\n      }\n      iVar2 = bfd_make_section_anyway_with_flags(pbVar4,".text",0x20811b);\n      if (iVar2 != 0) goto LAB_000348b2;\n    }\n  }\nLAB_00034a70:\n  pbVar4 = (bfd *)0x0;\n  pcVar8 = (char *)dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);\n  einfo(pcVar8);\nLAB_000348b2:\n  puVar7 = (undefined4 *)bfd_alloc(pbVar4,0x30);\n  if (puVar7 == (undefined4 *)0x0) {\n    uVar3 = bfd_get_error();\n    pcVar8 = (char *)dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    einfo(pcVar8,uVar3);\n  }\n  iVar2 = bfd_plugin_open_input(ibfd,&file);\n  if (iVar2 == 0) {\n    return (bfd_target *)0x0;\n  }\n  pcVar8 = ibfd->filename;\n  if (file.name == pcVar8) {\n    file.name = plugin_strdup(pbVar4,pcVar8);\n    pcVar8 = ibfd->filename;\n  }\n  puVar7[7] = 0;\n  puVar7[6] = file.fd;\n  puVar7[9] = file.offset._4_4_;\n  puVar7[8] = (undefined4)file.offset;\n  puVar7[0xb] = file.filesize._4_4_;\n  puVar7[10] = (undefined4)file.filesize;\n  *puVar7 = pbVar4;\n  puVar7[1] = 0;\n  puVar7[2] = 0;\n  puVar7[3] = 0;\n  puVar7[4] = 0;\n  file.handle = puVar7;\n  pcVar8 = plugin_strdup(pbVar4,pcVar8);\n  ppVar10 = plugins_list;\n  claimed = 0;\n  puVar7[5] = pcVar8;\n  if (ppVar10 != (plugin_t *)0x0) {\n    do {\n      if (ppVar10->claim_file_handler != (ld_plugin_claim_file_handler)0x0) {\n        called_plugin = ppVar10;\n        lVar9 = (*ppVar10->claim_file_handler)(&file,&claimed);\n        called_plugin = (plugin_t *)0x0;\n        if (lVar9 != LDPS_OK) {\n          error_plugin = ppVar10->name;\n        }\n      }\n      ppVar10 = ppVar10->next;\n    } while ((ppVar10 != (plugin *)0x0) && (claimed == 0));\n  }\n  pcVar8 = 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,pcVar8);\n  }\n  if ((puVar7[6] != -1) && (iVar2 = bfd_plugin_target_p(ibfd->xvec), iVar2 == 0)) {\n    close(puVar7[6]);\n    puVar7[6] = 0xffffffff;\n  }\n  bVar1 = ibfd->field_0x2c & 0xcf;\n  if (claimed == 0) {\n    ibfd->field_0x2c = bVar1 | 0x20;\n    bfd_close_all_done(pbVar4);\n    return (bfd_target *)0x0;\n  }\n  ibfd->plugin_dummy_bfd = pbVar4;\n  ibfd->field_0x2c = bVar1 | 0x10;\n  bfd_make_readable(pbVar4);\n  return pbVar4->xvec;\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  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  bfd *pbVar4;\n  int iVar5;\n  bfd_boolean bVar6;\n  undefined4 *puVar7;\n  char *pcVar8;\n  ld_plugin_status lVar9;\n  char *fmt;\n  plugin *ppVar10;\n  int claimed;\n  ld_plugin_input_file file;\n  \n  if ((ibfd->field_0x2a & 0x20) != 0) {\n    return (bfd_target *)0x0;\n  }\n  if ((ibfd->field_0x2c & 0x30) != 0) {\n    if ((ibfd->field_0x2c & 0x30) != 0x10) {\n      return (bfd_target *)0x0;\n    }\n    return ibfd->plugin_dummy_bfd->xvec;\n  }\n  pcVar8 = ibfd->filename;\n  *(undefined4 *)PTR_bfd_use_reserved_id_000bafc8 = 1;\n  iVar2 = bfd_plugin_target_p(ibfd->xvec);\n  pbVar4 = ibfd;\n  if (iVar2 != 0) {\n    pbVar4 = link_info.output_bfd;\n  }\n  uVar3 = concat(pcVar8," (symbol from plugin)",0);\n  pbVar4 = (bfd *)bfd_create(uVar3,pbVar4);\n  if (pbVar4 != (bfd *)0x0) {\n    *(uint *)&pbVar4->field_0x28 = *(uint *)&pbVar4->field_0x28 | 0x220000;\n    iVar5 = bfd_make_writable(pbVar4);\n    if (iVar5 != 0) {\n      if (iVar2 == 0) {\n        uVar3 = bfd_get_arch_info(ibfd);\n        bfd_set_arch_info(pbVar4,uVar3);\n        uVar3 = bfd_get_gp_size(ibfd);\n        bfd_set_gp_size(pbVar4,uVar3);\n        bVar6 = (*pbVar4->xvec->_bfd_copy_private_bfd_data)(ibfd,pbVar4);\n        if (bVar6 == 0) goto LAB_00034a70;\n      }\n      iVar2 = bfd_make_section_anyway_with_flags(pbVar4,".text",0x20811b);\n      if (iVar2 != 0) goto LAB_000348b2;\n    }\n  }\nLAB_00034a70:\n  pbVar4 = (bfd *)0x0;\n  pcVar8 = (char *)dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);\n  einfo(pcVar8);\nLAB_000348b2:\n  puVar7 = (undefined4 *)bfd_alloc(pbVar4,0x30);\n  if (puVar7 == (undefined4 *)0x0) {\n    uVar3 = bfd_get_error();\n    pcVar8 = (char *)dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    einfo(pcVar8,uVar3);\n  }\n  iVar2 = bfd_plugin_open_input(ibfd,&file);\n  if (iVar2 == 0) {\n    return (bfd_target *)0x0;\n  }\n  pcVar8 = ibfd->filename;\n  if (file.name == pcVar8) {\n    file.name = plugin_strdup(pbVar4,pcVar8);\n    pcVar8 = ibfd->filename;\n  }\n  puVar7[7] = 0;\n  puVar7[6] = file.fd;\n  puVar7[9] = file.offset._4_4_;\n  puVar7[8] = (undefined4)file.offset;\n  puVar7[0xb] = file.filesize._4_4_;\n  puVar7[10] = (undefined4)file.filesize;\n  *puVar7 = pbVar4;\n  puVar7[1] = 0;\n  puVar7[2] = 0;\n  puVar7[3] = 0;\n  puVar7[4] = 0;\n  file.handle = puVar7;\n  pcVar8 = plugin_strdup(pbVar4,pcVar8);\n  ppVar10 = plugins_list;\n  claimed = 0;\n  puVar7[5] = pcVar8;\n  if (ppVar10 != (plugin_t *)0x0) {\n    do {\n      if (ppVar10->claim_file_handler != (ld_plugin_claim_file_handler)0x0) {\n        called_plugin = ppVar10;\n        lVar9 = (*ppVar10->claim_file_handler)(&file,&claimed);\n        called_plugin = (plugin_t *)0x0;\n        if (lVar9 != LDPS_OK) {\n          error_plugin = ppVar10->name;\n        }\n      }\n      ppVar10 = ppVar10->next;\n    } while ((ppVar10 != (plugin *)0x0) && (claimed == 0));\n  }\n  pcVar8 = 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,pcVar8);\n  }\n  if ((puVar7[6] != -1) && (iVar2 = bfd_plugin_target_p(ibfd->xvec), iVar2 == 0)) {\n    close(puVar7[6]);\n    puVar7[6] = 0xffffffff;\n  }\n  bVar1 = ibfd->field_0x2c & 0xcf;\n  if (claimed == 0) {\n    ibfd->field_0x2c = bVar1 | 0x20;\n    bfd_close_all_done(pbVar4);\n    return (bfd_target *)0x0;\n  }\n  ibfd->plugin_dummy_bfd = pbVar4;\n  ibfd->field_0x2c = bVar1 | 0x10;\n  bfd_make_readable(pbVar4);\n  return pbVar4->xvec;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "bfd *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "bfd_boolean bVar6;" type_identifier identifier ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "ld_plugin_status lVar9;" type_identifier identifier ;) (declaration "char *fmt;" primitive_type (pointer_declarator "*fmt" * identifier) ;) (declaration "plugin *ppVar10;" type_identifier (pointer_declarator "*ppVar10" * identifier) ;) (declaration "int claimed;" primitive_type identifier ;) (declaration "ld_plugin_input_file file;" type_identifier identifier ;) (if_statement "if ((ibfd->field_0x2a & 0x20) != 0) {\n    return (bfd_target *)0x0;\n  }" if (parenthesized_expression "((ibfd->field_0x2a & 0x20) != 0)" ( (binary_expression "(ibfd->field_0x2a & 0x20) != 0" (parenthesized_expression "(ibfd->field_0x2a & 0x20)" ( (binary_expression "ibfd->field_0x2a & 0x20" (field_expression "ibfd->field_0x2a" 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_0x2c & 0x30) != 0) {\n    if ((ibfd->field_0x2c & 0x30) != 0x10) {\n      return (bfd_target *)0x0;\n    }\n    return ibfd->plugin_dummy_bfd->xvec;\n  }" if (parenthesized_expression "((ibfd->field_0x2c & 0x30) != 0)" ( (binary_expression "(ibfd->field_0x2c & 0x30) != 0" (parenthesized_expression "(ibfd->field_0x2c & 0x30)" ( (binary_expression "ibfd->field_0x2c & 0x30" (field_expression "ibfd->field_0x2c" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    if ((ibfd->field_0x2c & 0x30) != 0x10) {\n      return (bfd_target *)0x0;\n    }\n    return ibfd->plugin_dummy_bfd->xvec;\n  }" { (if_statement "if ((ibfd->field_0x2c & 0x30) != 0x10) {\n      return (bfd_target *)0x0;\n    }" if (parenthesized_expression "((ibfd->field_0x2c & 0x30) != 0x10)" ( (binary_expression "(ibfd->field_0x2c & 0x30) != 0x10" (parenthesized_expression "(ibfd->field_0x2c & 0x30)" ( (binary_expression "ibfd->field_0x2c & 0x30" (field_expression "ibfd->field_0x2c" 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 "pcVar8 = ibfd->filename;" (assignment_expression "pcVar8 = ibfd->filename" identifier = (field_expression "ibfd->filename" identifier -> field_identifier)) ;) (expression_statement "*(undefined4 *)PTR_bfd_use_reserved_id_000bafc8 = 1;" (assignment_expression "*(undefined4 *)PTR_bfd_use_reserved_id_000bafc8 = 1" (pointer_expression "*(undefined4 *)PTR_bfd_use_reserved_id_000bafc8" * (cast_expression "(undefined4 *)PTR_bfd_use_reserved_id_000bafc8" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "iVar2 = bfd_plugin_target_p(ibfd->xvec);" (assignment_expression "iVar2 = 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 "pbVar4 = ibfd;" (assignment_expression "pbVar4 = ibfd" identifier = identifier) ;) (if_statement "if (iVar2 != 0) {\n    pbVar4 = link_info.output_bfd;\n  }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    pbVar4 = link_info.output_bfd;\n  }" { (expression_statement "pbVar4 = link_info.output_bfd;" (assignment_expression "pbVar4 = link_info.output_bfd" identifier = (field_expression "link_info.output_bfd" identifier . field_identifier)) ;) })) (expression_statement "uVar3 = concat(pcVar8," (symbol from plugin)",0);" (assignment_expression "uVar3 = concat(pcVar8," (symbol from plugin)",0)" identifier = (call_expression "concat(pcVar8," (symbol from plugin)",0)" identifier (argument_list "(pcVar8," (symbol from plugin)",0)" ( identifier , (string_literal "" (symbol from plugin)"" " string_content ") , number_literal )))) ;) (expression_statement "pbVar4 = (bfd *)bfd_create(uVar3,pbVar4);" (assignment_expression "pbVar4 = (bfd *)bfd_create(uVar3,pbVar4)" identifier = (cast_expression "(bfd *)bfd_create(uVar3,pbVar4)" ( (type_descriptor "bfd *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_create(uVar3,pbVar4)" identifier (argument_list "(uVar3,pbVar4)" ( identifier , identifier ))))) ;) (if_statement "if (pbVar4 != (bfd *)0x0) {\n    *(uint *)&pbVar4->field_0x28 = *(uint *)&pbVar4->field_0x28 | 0x220000;\n    iVar5 = bfd_make_writable(pbVar4);\n    if (iVar5 != 0) {\n      if (iVar2 == 0) {\n        uVar3 = bfd_get_arch_info(ibfd);\n        bfd_set_arch_info(pbVar4,uVar3);\n        uVar3 = bfd_get_gp_size(ibfd);\n        bfd_set_gp_size(pbVar4,uVar3);\n        bVar6 = (*pbVar4->xvec->_bfd_copy_private_bfd_data)(ibfd,pbVar4);\n        if (bVar6 == 0) goto LAB_00034a70;\n      }\n      iVar2 = bfd_make_section_anyway_with_flags(pbVar4,".text",0x20811b);\n      if (iVar2 != 0) goto LAB_000348b2;\n    }\n  }" if (parenthesized_expression "(pbVar4 != (bfd *)0x0)" ( (binary_expression "pbVar4 != (bfd *)0x0" identifier != (cast_expression "(bfd *)0x0" ( (type_descriptor "bfd *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *(uint *)&pbVar4->field_0x28 = *(uint *)&pbVar4->field_0x28 | 0x220000;\n    iVar5 = bfd_make_writable(pbVar4);\n    if (iVar5 != 0) {\n      if (iVar2 == 0) {\n        uVar3 = bfd_get_arch_info(ibfd);\n        bfd_set_arch_info(pbVar4,uVar3);\n        uVar3 = bfd_get_gp_size(ibfd);\n        bfd_set_gp_size(pbVar4,uVar3);\n        bVar6 = (*pbVar4->xvec->_bfd_copy_private_bfd_data)(ibfd,pbVar4);\n        if (bVar6 == 0) goto LAB_00034a70;\n      }\n      iVar2 = bfd_make_section_anyway_with_flags(pbVar4,".text",0x20811b);\n      if (iVar2 != 0) goto LAB_000348b2;\n    }\n  }" { (expression_statement "*(uint *)&pbVar4->field_0x28 = *(uint *)&pbVar4->field_0x28 | 0x220000;" (assignment_expression "*(uint *)&pbVar4->field_0x28 = *(uint *)&pbVar4->field_0x28 | 0x220000" (pointer_expression "*(uint *)&pbVar4->field_0x28" * (cast_expression "(uint *)&pbVar4->field_0x28" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pbVar4->field_0x28" & (field_expression "pbVar4->field_0x28" identifier -> field_identifier)))) = (binary_expression "*(uint *)&pbVar4->field_0x28 | 0x220000" (pointer_expression "*(uint *)&pbVar4->field_0x28" * (cast_expression "(uint *)&pbVar4->field_0x28" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pbVar4->field_0x28" & (field_expression "pbVar4->field_0x28" identifier -> field_identifier)))) | number_literal)) ;) (expression_statement "iVar5 = bfd_make_writable(pbVar4);" (assignment_expression "iVar5 = bfd_make_writable(pbVar4)" identifier = (call_expression "bfd_make_writable(pbVar4)" identifier (argument_list "(pbVar4)" ( identifier )))) ;) (if_statement "if (iVar5 != 0) {\n      if (iVar2 == 0) {\n        uVar3 = bfd_get_arch_info(ibfd);\n        bfd_set_arch_info(pbVar4,uVar3);\n        uVar3 = bfd_get_gp_size(ibfd);\n        bfd_set_gp_size(pbVar4,uVar3);\n        bVar6 = (*pbVar4->xvec->_bfd_copy_private_bfd_data)(ibfd,pbVar4);\n        if (bVar6 == 0) goto LAB_00034a70;\n      }\n      iVar2 = bfd_make_section_anyway_with_flags(pbVar4,".text",0x20811b);\n      if (iVar2 != 0) goto LAB_000348b2;\n    }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      if (iVar2 == 0) {\n        uVar3 = bfd_get_arch_info(ibfd);\n        bfd_set_arch_info(pbVar4,uVar3);\n        uVar3 = bfd_get_gp_size(ibfd);\n        bfd_set_gp_size(pbVar4,uVar3);\n        bVar6 = (*pbVar4->xvec->_bfd_copy_private_bfd_data)(ibfd,pbVar4);\n        if (bVar6 == 0) goto LAB_00034a70;\n      }\n      iVar2 = bfd_make_section_anyway_with_flags(pbVar4,".text",0x20811b);\n      if (iVar2 != 0) goto LAB_000348b2;\n    }" { (if_statement "if (iVar2 == 0) {\n        uVar3 = bfd_get_arch_info(ibfd);\n        bfd_set_arch_info(pbVar4,uVar3);\n        uVar3 = bfd_get_gp_size(ibfd);\n        bfd_set_gp_size(pbVar4,uVar3);\n        bVar6 = (*pbVar4->xvec->_bfd_copy_private_bfd_data)(ibfd,pbVar4);\n        if (bVar6 == 0) goto LAB_00034a70;\n      }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar3 = bfd_get_arch_info(ibfd);\n        bfd_set_arch_info(pbVar4,uVar3);\n        uVar3 = bfd_get_gp_size(ibfd);\n        bfd_set_gp_size(pbVar4,uVar3);\n        bVar6 = (*pbVar4->xvec->_bfd_copy_private_bfd_data)(ibfd,pbVar4);\n        if (bVar6 == 0) goto LAB_00034a70;\n      }" { (expression_statement "uVar3 = bfd_get_arch_info(ibfd);" (assignment_expression "uVar3 = bfd_get_arch_info(ibfd)" identifier = (call_expression "bfd_get_arch_info(ibfd)" identifier (argument_list "(ibfd)" ( identifier )))) ;) (expression_statement "bfd_set_arch_info(pbVar4,uVar3);" (call_expression "bfd_set_arch_info(pbVar4,uVar3)" identifier (argument_list "(pbVar4,uVar3)" ( 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(pbVar4,uVar3);" (call_expression "bfd_set_gp_size(pbVar4,uVar3)" identifier (argument_list "(pbVar4,uVar3)" ( identifier , identifier ))) ;) (expression_statement "bVar6 = (*pbVar4->xvec->_bfd_copy_private_bfd_data)(ibfd,pbVar4);" (assignment_expression "bVar6 = (*pbVar4->xvec->_bfd_copy_private_bfd_data)(ibfd,pbVar4)" identifier = (call_expression "(*pbVar4->xvec->_bfd_copy_private_bfd_data)(ibfd,pbVar4)" (parenthesized_expression "(*pbVar4->xvec->_bfd_copy_private_bfd_data)" ( (pointer_expression "*pbVar4->xvec->_bfd_copy_private_bfd_data" * (field_expression "pbVar4->xvec->_bfd_copy_private_bfd_data" (field_expression "pbVar4->xvec" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(ibfd,pbVar4)" ( identifier , identifier )))) ;) (if_statement "if (bVar6 == 0) goto LAB_00034a70;" if (parenthesized_expression "(bVar6 == 0)" ( (binary_expression "bVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00034a70;" goto statement_identifier ;)) })) (expression_statement "iVar2 = bfd_make_section_anyway_with_flags(pbVar4,".text",0x20811b);" (assignment_expression "iVar2 = bfd_make_section_anyway_with_flags(pbVar4,".text",0x20811b)" identifier = (call_expression "bfd_make_section_anyway_with_flags(pbVar4,".text",0x20811b)" identifier (argument_list "(pbVar4,".text",0x20811b)" ( identifier , (string_literal "".text"" " string_content ") , number_literal )))) ;) (if_statement "if (iVar2 != 0) goto LAB_000348b2;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000348b2;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_00034a70:\n  pbVar4 = (bfd *)0x0;" statement_identifier : (expression_statement "pbVar4 = (bfd *)0x0;" (assignment_expression "pbVar4 = (bfd *)0x0" identifier = (cast_expression "(bfd *)0x0" ( (type_descriptor "bfd *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "pcVar8 = (char *)dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);" (assignment_expression "pcVar8 = (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(pcVar8);" (call_expression "einfo(pcVar8)" identifier (argument_list "(pcVar8)" ( identifier ))) ;) (labeled_statement "LAB_000348b2:\n  puVar7 = (undefined4 *)bfd_alloc(pbVar4,0x30);" statement_identifier : (expression_statement "puVar7 = (undefined4 *)bfd_alloc(pbVar4,0x30);" (assignment_expression "puVar7 = (undefined4 *)bfd_alloc(pbVar4,0x30)" identifier = (cast_expression "(undefined4 *)bfd_alloc(pbVar4,0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_alloc(pbVar4,0x30)" identifier (argument_list "(pbVar4,0x30)" ( identifier , number_literal ))))) ;)) (if_statement "if (puVar7 == (undefined4 *)0x0) {\n    uVar3 = bfd_get_error();\n    pcVar8 = (char *)dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    einfo(pcVar8,uVar3);\n  }" if (parenthesized_expression "(puVar7 == (undefined4 *)0x0)" ( (binary_expression "puVar7 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar3 = bfd_get_error();\n    pcVar8 = (char *)dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    einfo(pcVar8,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 "pcVar8 = (char *)dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);" (assignment_expression "pcVar8 = (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(pcVar8,uVar3);" (call_expression "einfo(pcVar8,uVar3)" identifier (argument_list "(pcVar8,uVar3)" ( identifier , identifier ))) ;) })) (expression_statement "iVar2 = bfd_plugin_open_input(ibfd,&file);" (assignment_expression "iVar2 = 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 (iVar2 == 0) {\n    return (bfd_target *)0x0;\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == 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) ;) })) (expression_statement "pcVar8 = ibfd->filename;" (assignment_expression "pcVar8 = ibfd->filename" identifier = (field_expression "ibfd->filename" identifier -> field_identifier)) ;) (if_statement "if (file.name == pcVar8) {\n    file.name = plugin_strdup(pbVar4,pcVar8);\n    pcVar8 = ibfd->filename;\n  }" if (parenthesized_expression "(file.name == pcVar8)" ( (binary_expression "file.name == pcVar8" (field_expression "file.name" identifier . field_identifier) == identifier) )) (compound_statement "{\n    file.name = plugin_strdup(pbVar4,pcVar8);\n    pcVar8 = ibfd->filename;\n  }" { (expression_statement "file.name = plugin_strdup(pbVar4,pcVar8);" (assignment_expression "file.name = plugin_strdup(pbVar4,pcVar8)" (field_expression "file.name" identifier . field_identifier) = (call_expression "plugin_strdup(pbVar4,pcVar8)" identifier (argument_list "(pbVar4,pcVar8)" ( identifier , identifier )))) ;) (expression_statement "pcVar8 = ibfd->filename;" (assignment_expression "pcVar8 = ibfd->filename" identifier = (field_expression "ibfd->filename" identifier -> field_identifier)) ;) })) (expression_statement "puVar7[7] = 0;" (assignment_expression "puVar7[7] = 0" (subscript_expression "puVar7[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar7[6] = file.fd;" (assignment_expression "puVar7[6] = file.fd" (subscript_expression "puVar7[6]" identifier [ number_literal ]) = (field_expression "file.fd" identifier . field_identifier)) ;) (expression_statement "puVar7[9] = file.offset._4_4_;" (assignment_expression "puVar7[9] = file.offset._4_4_" (subscript_expression "puVar7[9]" identifier [ number_literal ]) = (field_expression "file.offset._4_4_" (field_expression "file.offset" identifier . field_identifier) . field_identifier)) ;) (expression_statement "puVar7[8] = (undefined4)file.offset;" (assignment_expression "puVar7[8] = (undefined4)file.offset" (subscript_expression "puVar7[8]" identifier [ number_literal ]) = (cast_expression "(undefined4)file.offset" ( (type_descriptor "undefined4" type_identifier) ) (field_expression "file.offset" identifier . field_identifier))) ;) (expression_statement "puVar7[0xb] = file.filesize._4_4_;" (assignment_expression "puVar7[0xb] = file.filesize._4_4_" (subscript_expression "puVar7[0xb]" identifier [ number_literal ]) = (field_expression "file.filesize._4_4_" (field_expression "file.filesize" identifier . field_identifier) . field_identifier)) ;) (expression_statement "puVar7[10] = (undefined4)file.filesize;" (assignment_expression "puVar7[10] = (undefined4)file.filesize" (subscript_expression "puVar7[10]" identifier [ number_literal ]) = (cast_expression "(undefined4)file.filesize" ( (type_descriptor "undefined4" type_identifier) ) (field_expression "file.filesize" identifier . field_identifier))) ;) (expression_statement "*puVar7 = pbVar4;" (assignment_expression "*puVar7 = pbVar4" (pointer_expression "*puVar7" * identifier) = identifier) ;) (expression_statement "puVar7[1] = 0;" (assignment_expression "puVar7[1] = 0" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar7[2] = 0;" (assignment_expression "puVar7[2] = 0" (subscript_expression "puVar7[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar7[3] = 0;" (assignment_expression "puVar7[3] = 0" (subscript_expression "puVar7[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar7[4] = 0;" (assignment_expression "puVar7[4] = 0" (subscript_expression "puVar7[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "file.handle = puVar7;" (assignment_expression "file.handle = puVar7" (field_expression "file.handle" identifier . field_identifier) = identifier) ;) (expression_statement "pcVar8 = plugin_strdup(pbVar4,pcVar8);" (assignment_expression "pcVar8 = plugin_strdup(pbVar4,pcVar8)" identifier = (call_expression "plugin_strdup(pbVar4,pcVar8)" identifier (argument_list "(pbVar4,pcVar8)" ( identifier , identifier )))) ;) (expression_statement "ppVar10 = plugins_list;" (assignment_expression "ppVar10 = plugins_list" identifier = identifier) ;) (expression_statement "claimed = 0;" (assignment_expression "claimed = 0" identifier = number_literal) ;) (expression_statement "puVar7[5] = pcVar8;" (assignment_expression "puVar7[5] = pcVar8" (subscript_expression "puVar7[5]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (ppVar10 != (plugin_t *)0x0) {\n    do {\n      if (ppVar10->claim_file_handler != (ld_plugin_claim_file_handler)0x0) {\n        called_plugin = ppVar10;\n        lVar9 = (*ppVar10->claim_file_handler)(&file,&claimed);\n        called_plugin = (plugin_t *)0x0;\n        if (lVar9 != LDPS_OK) {\n          error_plugin = ppVar10->name;\n        }\n      }\n      ppVar10 = ppVar10->next;\n    } while ((ppVar10 != (plugin *)0x0) && (claimed == 0));\n  }" if (parenthesized_expression "(ppVar10 != (plugin_t *)0x0)" ( (binary_expression "ppVar10 != (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 (ppVar10->claim_file_handler != (ld_plugin_claim_file_handler)0x0) {\n        called_plugin = ppVar10;\n        lVar9 = (*ppVar10->claim_file_handler)(&file,&claimed);\n        called_plugin = (plugin_t *)0x0;\n        if (lVar9 != LDPS_OK) {\n          error_plugin = ppVar10->name;\n        }\n      }\n      ppVar10 = ppVar10->next;\n    } while ((ppVar10 != (plugin *)0x0) && (claimed == 0));\n  }" { (do_statement "do {\n      if (ppVar10->claim_file_handler != (ld_plugin_claim_file_handler)0x0) {\n        called_plugin = ppVar10;\n        lVar9 = (*ppVar10->claim_file_handler)(&file,&claimed);\n        called_plugin = (plugin_t *)0x0;\n        if (lVar9 != LDPS_OK) {\n          error_plugin = ppVar10->name;\n        }\n      }\n      ppVar10 = ppVar10->next;\n    } while ((ppVar10 != (plugin *)0x0) && (claimed == 0));" do (compound_statement "{\n      if (ppVar10->claim_file_handler != (ld_plugin_claim_file_handler)0x0) {\n        called_plugin = ppVar10;\n        lVar9 = (*ppVar10->claim_file_handler)(&file,&claimed);\n        called_plugin = (plugin_t *)0x0;\n        if (lVar9 != LDPS_OK) {\n          error_plugin = ppVar10->name;\n        }\n      }\n      ppVar10 = ppVar10->next;\n    }" { (if_statement "if (ppVar10->claim_file_handler != (ld_plugin_claim_file_handler)0x0) {\n        called_plugin = ppVar10;\n        lVar9 = (*ppVar10->claim_file_handler)(&file,&claimed);\n        called_plugin = (plugin_t *)0x0;\n        if (lVar9 != LDPS_OK) {\n          error_plugin = ppVar10->name;\n        }\n      }" if (parenthesized_expression "(ppVar10->claim_file_handler != (ld_plugin_claim_file_handler)0x0)" ( (binary_expression "ppVar10->claim_file_handler != (ld_plugin_claim_file_handler)0x0" (field_expression "ppVar10->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 = ppVar10;\n        lVar9 = (*ppVar10->claim_file_handler)(&file,&claimed);\n        called_plugin = (plugin_t *)0x0;\n        if (lVar9 != LDPS_OK) {\n          error_plugin = ppVar10->name;\n        }\n      }" { (expression_statement "called_plugin = ppVar10;" (assignment_expression "called_plugin = ppVar10" identifier = identifier) ;) (expression_statement "lVar9 = (*ppVar10->claim_file_handler)(&file,&claimed);" (assignment_expression "lVar9 = (*ppVar10->claim_file_handler)(&file,&claimed)" identifier = (call_expression "(*ppVar10->claim_file_handler)(&file,&claimed)" (parenthesized_expression "(*ppVar10->claim_file_handler)" ( (pointer_expression "*ppVar10->claim_file_handler" * (field_expression "ppVar10->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 (lVar9 != LDPS_OK) {\n          error_plugin = ppVar10->name;\n        }" if (parenthesized_expression "(lVar9 != LDPS_OK)" ( (binary_expression "lVar9 != LDPS_OK" identifier != identifier) )) (compound_statement "{\n          error_plugin = ppVar10->name;\n        }" { (expression_statement "error_plugin = ppVar10->name;" (assignment_expression "error_plugin = ppVar10->name" identifier = (field_expression "ppVar10->name" identifier -> field_identifier)) ;) })) })) (expression_statement "ppVar10 = ppVar10->next;" (assignment_expression "ppVar10 = ppVar10->next" identifier = (field_expression "ppVar10->next" identifier -> field_identifier)) ;) }) while (parenthesized_expression "((ppVar10 != (plugin *)0x0) && (claimed == 0))" ( (binary_expression "(ppVar10 != (plugin *)0x0) && (claimed == 0)" (parenthesized_expression "(ppVar10 != (plugin *)0x0)" ( (binary_expression "ppVar10 != (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 "pcVar8 = error_plugin;" (assignment_expression "pcVar8 = 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,pcVar8);\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,pcVar8);\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,pcVar8);" (call_expression "einfo(fmt,pcVar8)" identifier (argument_list "(fmt,pcVar8)" ( identifier , identifier ))) ;) })) (if_statement "if ((puVar7[6] != -1) && (iVar2 = bfd_plugin_target_p(ibfd->xvec), iVar2 == 0)) {\n    close(puVar7[6]);\n    puVar7[6] = 0xffffffff;\n  }" if (parenthesized_expression "((puVar7[6] != -1) && (iVar2 = bfd_plugin_target_p(ibfd->xvec), iVar2 == 0))" ( (binary_expression "(puVar7[6] != -1) && (iVar2 = bfd_plugin_target_p(ibfd->xvec), iVar2 == 0)" (parenthesized_expression "(puVar7[6] != -1)" ( (binary_expression "puVar7[6] != -1" (subscript_expression "puVar7[6]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(iVar2 = bfd_plugin_target_p(ibfd->xvec), iVar2 == 0)" ( (comma_expression "iVar2 = bfd_plugin_target_p(ibfd->xvec), iVar2 == 0" (assignment_expression "iVar2 = 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 "iVar2 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    close(puVar7[6]);\n    puVar7[6] = 0xffffffff;\n  }" { (expression_statement "close(puVar7[6]);" (call_expression "close(puVar7[6])" identifier (argument_list "(puVar7[6])" ( (subscript_expression "puVar7[6]" identifier [ number_literal ]) ))) ;) (expression_statement "puVar7[6] = 0xffffffff;" (assignment_expression "puVar7[6] = 0xffffffff" (subscript_expression "puVar7[6]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "bVar1 = ibfd->field_0x2c & 0xcf;" (assignment_expression "bVar1 = ibfd->field_0x2c & 0xcf" identifier = (binary_expression "ibfd->field_0x2c & 0xcf" (field_expression "ibfd->field_0x2c" identifier -> field_identifier) & number_literal)) ;) (if_statement "if (claimed == 0) {\n    ibfd->field_0x2c = bVar1 | 0x20;\n    bfd_close_all_done(pbVar4);\n    return (bfd_target *)0x0;\n  }" if (parenthesized_expression "(claimed == 0)" ( (binary_expression "claimed == 0" identifier == number_literal) )) (compound_statement "{\n    ibfd->field_0x2c = bVar1 | 0x20;\n    bfd_close_all_done(pbVar4);\n    return (bfd_target *)0x0;\n  }" { (expression_statement "ibfd->field_0x2c = bVar1 | 0x20;" (assignment_expression "ibfd->field_0x2c = bVar1 | 0x20" (field_expression "ibfd->field_0x2c" identifier -> field_identifier) = (binary_expression "bVar1 | 0x20" identifier | number_literal)) ;) (expression_statement "bfd_close_all_done(pbVar4);" (call_expression "bfd_close_all_done(pbVar4)" identifier (argument_list "(pbVar4)" ( 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 = pbVar4;" (assignment_expression "ibfd->plugin_dummy_bfd = pbVar4" (field_expression "ibfd->plugin_dummy_bfd" identifier -> field_identifier) = identifier) ;) (expression_statement "ibfd->field_0x2c = bVar1 | 0x10;" (assignment_expression "ibfd->field_0x2c = bVar1 | 0x10" (field_expression "ibfd->field_0x2c" identifier -> field_identifier) = (binary_expression "bVar1 | 0x10" identifier | number_literal)) ;) (expression_statement "bfd_make_readable(pbVar4);" (call_expression "bfd_make_readable(pbVar4)" identifier (argument_list "(pbVar4)" ( identifier ))) ;) (return_statement "return pbVar4->xvec;" return (field_expression "pbVar4->xvec" identifier -> field_identifier) ;) })))
(translation_unit "undefined4 FUN_000347a0(int *param_1)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  int local_3c;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int *local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x347a9;\n  if ((*(byte *)((int)param_1 + 0x2a) & 0x20) != 0) {\n    return 0;\n  }\n  if ((*(byte *)(param_1 + 0xb) & 0x30) != 0) {\n    if ((*(byte *)(param_1 + 0xb) & 0x30) != 0x10) {\n      return 0;\n    }\n    return *(undefined4 *)(param_1[0xc] + 4);\n  }\n  iVar3 = *param_1;\n  *(undefined4 *)PTR_bfd_use_reserved_id_000bafc8 = 1;\n  iVar1 = bfd_plugin_target_p(param_1[1]);\n  piVar5 = param_1;\n  if (iVar1 != 0) {\n    piVar5 = DAT_000bbe30;\n  }\n  uVar2 = concat(iVar3," (symbol from plugin)",0);\n  iVar3 = bfd_create(uVar2,piVar5);\n  if (iVar3 != 0) {\n    *(uint *)(iVar3 + 0x28) = *(uint *)(iVar3 + 0x28) | 0x220000;\n    iVar4 = bfd_make_writable(iVar3);\n    if (iVar4 != 0) {\n      if (iVar1 == 0) {\n        uVar2 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(iVar3,uVar2);\n        uVar2 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(iVar3,uVar2);\n        iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3);\n        if (iVar1 == 0) goto LAB_00034a70;\n      }\n      iVar1 = bfd_make_section_anyway_with_flags(iVar3,".text",0x20811b);\n      if (iVar1 != 0) goto LAB_000348b2;\n    }\n  }\nLAB_00034a70:\n  iVar3 = 0;\n  uVar2 = dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);\n  FUN_00031730(uVar2);\nLAB_000348b2:\n  piVar5 = (int *)bfd_alloc(iVar3,0x30);\n  if (piVar5 == (int *)0x0) {\n    uVar2 = bfd_get_error();\n    uVar6 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    FUN_00031730(uVar6,uVar2);\n  }\n  iVar1 = bfd_plugin_open_input(param_1,&local_38);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  if (local_38 == *param_1) {\n    local_38 = FUN_00033800();\n  }\n  piVar5[7] = 0;\n  piVar5[6] = local_34;\n  piVar5[9] = local_2c;\n  piVar5[8] = local_30;\n  piVar5[0xb] = local_24;\n  piVar5[10] = local_28;\n  *piVar5 = iVar3;\n  piVar5[1] = 0;\n  piVar5[2] = 0;\n  piVar5[3] = 0;\n  piVar5[4] = 0;\n  local_20 = piVar5;\n  iVar1 = FUN_00033800();\n  piVar7 = DAT_000bbb74;\n  local_3c = 0;\n  piVar5[5] = iVar1;\n  if (piVar7 != (int *)0x0) {\n    do {\n      if ((code *)piVar7[5] != (code *)0x0) {\n        DAT_000bbb68 = piVar7;\n        iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c);\n        DAT_000bbb68 = (int *)0x0;\n        if (iVar1 != 0) {\n          DAT_000bbb64 = piVar7[1];\n        }\n      }\n      piVar7 = (int *)*piVar7;\n    } while ((piVar7 != (int *)0x0) && (local_3c == 0));\n  }\n  iVar1 = DAT_000bbb64;\n  if (DAT_000bbb64 != 0) {\n    uVar2 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n    FUN_00031730(uVar2,iVar1);\n  }\n  if ((piVar5[6] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {\n    close(piVar5[6]);\n    piVar5[6] = -1;\n  }\n  if (local_3c == 0) {\n    *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x20;\n    bfd_close_all_done(iVar3);\n    return 0;\n  }\n  param_1[0xc] = iVar3;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x10;\n  bfd_make_readable(iVar3);\n  return *(undefined4 *)(iVar3 + 4);\n}\n\n" (function_definition "undefined4 FUN_000347a0(int *param_1)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  int local_3c;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int *local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x347a9;\n  if ((*(byte *)((int)param_1 + 0x2a) & 0x20) != 0) {\n    return 0;\n  }\n  if ((*(byte *)(param_1 + 0xb) & 0x30) != 0) {\n    if ((*(byte *)(param_1 + 0xb) & 0x30) != 0x10) {\n      return 0;\n    }\n    return *(undefined4 *)(param_1[0xc] + 4);\n  }\n  iVar3 = *param_1;\n  *(undefined4 *)PTR_bfd_use_reserved_id_000bafc8 = 1;\n  iVar1 = bfd_plugin_target_p(param_1[1]);\n  piVar5 = param_1;\n  if (iVar1 != 0) {\n    piVar5 = DAT_000bbe30;\n  }\n  uVar2 = concat(iVar3," (symbol from plugin)",0);\n  iVar3 = bfd_create(uVar2,piVar5);\n  if (iVar3 != 0) {\n    *(uint *)(iVar3 + 0x28) = *(uint *)(iVar3 + 0x28) | 0x220000;\n    iVar4 = bfd_make_writable(iVar3);\n    if (iVar4 != 0) {\n      if (iVar1 == 0) {\n        uVar2 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(iVar3,uVar2);\n        uVar2 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(iVar3,uVar2);\n        iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3);\n        if (iVar1 == 0) goto LAB_00034a70;\n      }\n      iVar1 = bfd_make_section_anyway_with_flags(iVar3,".text",0x20811b);\n      if (iVar1 != 0) goto LAB_000348b2;\n    }\n  }\nLAB_00034a70:\n  iVar3 = 0;\n  uVar2 = dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);\n  FUN_00031730(uVar2);\nLAB_000348b2:\n  piVar5 = (int *)bfd_alloc(iVar3,0x30);\n  if (piVar5 == (int *)0x0) {\n    uVar2 = bfd_get_error();\n    uVar6 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    FUN_00031730(uVar6,uVar2);\n  }\n  iVar1 = bfd_plugin_open_input(param_1,&local_38);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  if (local_38 == *param_1) {\n    local_38 = FUN_00033800();\n  }\n  piVar5[7] = 0;\n  piVar5[6] = local_34;\n  piVar5[9] = local_2c;\n  piVar5[8] = local_30;\n  piVar5[0xb] = local_24;\n  piVar5[10] = local_28;\n  *piVar5 = iVar3;\n  piVar5[1] = 0;\n  piVar5[2] = 0;\n  piVar5[3] = 0;\n  piVar5[4] = 0;\n  local_20 = piVar5;\n  iVar1 = FUN_00033800();\n  piVar7 = DAT_000bbb74;\n  local_3c = 0;\n  piVar5[5] = iVar1;\n  if (piVar7 != (int *)0x0) {\n    do {\n      if ((code *)piVar7[5] != (code *)0x0) {\n        DAT_000bbb68 = piVar7;\n        iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c);\n        DAT_000bbb68 = (int *)0x0;\n        if (iVar1 != 0) {\n          DAT_000bbb64 = piVar7[1];\n        }\n      }\n      piVar7 = (int *)*piVar7;\n    } while ((piVar7 != (int *)0x0) && (local_3c == 0));\n  }\n  iVar1 = DAT_000bbb64;\n  if (DAT_000bbb64 != 0) {\n    uVar2 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n    FUN_00031730(uVar2,iVar1);\n  }\n  if ((piVar5[6] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {\n    close(piVar5[6]);\n    piVar5[6] = -1;\n  }\n  if (local_3c == 0) {\n    *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x20;\n    bfd_close_all_done(iVar3);\n    return 0;\n  }\n  param_1[0xc] = iVar3;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x10;\n  bfd_make_readable(iVar3);\n  return *(undefined4 *)(iVar3 + 4);\n}" type_identifier (function_declarator "FUN_000347a0(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  int local_3c;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int *local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x347a9;\n  if ((*(byte *)((int)param_1 + 0x2a) & 0x20) != 0) {\n    return 0;\n  }\n  if ((*(byte *)(param_1 + 0xb) & 0x30) != 0) {\n    if ((*(byte *)(param_1 + 0xb) & 0x30) != 0x10) {\n      return 0;\n    }\n    return *(undefined4 *)(param_1[0xc] + 4);\n  }\n  iVar3 = *param_1;\n  *(undefined4 *)PTR_bfd_use_reserved_id_000bafc8 = 1;\n  iVar1 = bfd_plugin_target_p(param_1[1]);\n  piVar5 = param_1;\n  if (iVar1 != 0) {\n    piVar5 = DAT_000bbe30;\n  }\n  uVar2 = concat(iVar3," (symbol from plugin)",0);\n  iVar3 = bfd_create(uVar2,piVar5);\n  if (iVar3 != 0) {\n    *(uint *)(iVar3 + 0x28) = *(uint *)(iVar3 + 0x28) | 0x220000;\n    iVar4 = bfd_make_writable(iVar3);\n    if (iVar4 != 0) {\n      if (iVar1 == 0) {\n        uVar2 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(iVar3,uVar2);\n        uVar2 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(iVar3,uVar2);\n        iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3);\n        if (iVar1 == 0) goto LAB_00034a70;\n      }\n      iVar1 = bfd_make_section_anyway_with_flags(iVar3,".text",0x20811b);\n      if (iVar1 != 0) goto LAB_000348b2;\n    }\n  }\nLAB_00034a70:\n  iVar3 = 0;\n  uVar2 = dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);\n  FUN_00031730(uVar2);\nLAB_000348b2:\n  piVar5 = (int *)bfd_alloc(iVar3,0x30);\n  if (piVar5 == (int *)0x0) {\n    uVar2 = bfd_get_error();\n    uVar6 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    FUN_00031730(uVar6,uVar2);\n  }\n  iVar1 = bfd_plugin_open_input(param_1,&local_38);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  if (local_38 == *param_1) {\n    local_38 = FUN_00033800();\n  }\n  piVar5[7] = 0;\n  piVar5[6] = local_34;\n  piVar5[9] = local_2c;\n  piVar5[8] = local_30;\n  piVar5[0xb] = local_24;\n  piVar5[10] = local_28;\n  *piVar5 = iVar3;\n  piVar5[1] = 0;\n  piVar5[2] = 0;\n  piVar5[3] = 0;\n  piVar5[4] = 0;\n  local_20 = piVar5;\n  iVar1 = FUN_00033800();\n  piVar7 = DAT_000bbb74;\n  local_3c = 0;\n  piVar5[5] = iVar1;\n  if (piVar7 != (int *)0x0) {\n    do {\n      if ((code *)piVar7[5] != (code *)0x0) {\n        DAT_000bbb68 = piVar7;\n        iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c);\n        DAT_000bbb68 = (int *)0x0;\n        if (iVar1 != 0) {\n          DAT_000bbb64 = piVar7[1];\n        }\n      }\n      piVar7 = (int *)*piVar7;\n    } while ((piVar7 != (int *)0x0) && (local_3c == 0));\n  }\n  iVar1 = DAT_000bbb64;\n  if (DAT_000bbb64 != 0) {\n    uVar2 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n    FUN_00031730(uVar2,iVar1);\n  }\n  if ((piVar5[6] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {\n    close(piVar5[6]);\n    piVar5[6] = -1;\n  }\n  if (local_3c == 0) {\n    *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x20;\n    bfd_close_all_done(iVar3);\n    return 0;\n  }\n  param_1[0xc] = iVar3;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x10;\n  bfd_make_readable(iVar3);\n  return *(undefined4 *)(iVar3 + 4);\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int *local_20;" primitive_type (pointer_declarator "*local_20" * identifier) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x347a9;" (assignment_expression "uStack_14 = 0x347a9" identifier = number_literal) ;) (if_statement "if ((*(byte *)((int)param_1 + 0x2a) & 0x20) != 0) {\n    return 0;\n  }" if (parenthesized_expression "((*(byte *)((int)param_1 + 0x2a) & 0x20) != 0)" ( (binary_expression "(*(byte *)((int)param_1 + 0x2a) & 0x20) != 0" (parenthesized_expression "(*(byte *)((int)param_1 + 0x2a) & 0x20)" ( (binary_expression "*(byte *)((int)param_1 + 0x2a) & 0x20" (pointer_expression "*(byte *)((int)param_1 + 0x2a)" * (cast_expression "(byte *)((int)param_1 + 0x2a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x2a)" ( (binary_expression "(int)param_1 + 0x2a" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) 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 + 0xb) & 0x30) != 0) {\n    if ((*(byte *)(param_1 + 0xb) & 0x30) != 0x10) {\n      return 0;\n    }\n    return *(undefined4 *)(param_1[0xc] + 4);\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0xb) & 0x30) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0xb) & 0x30) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0xb) & 0x30)" ( (binary_expression "*(byte *)(param_1 + 0xb) & 0x30" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    if ((*(byte *)(param_1 + 0xb) & 0x30) != 0x10) {\n      return 0;\n    }\n    return *(undefined4 *)(param_1[0xc] + 4);\n  }" { (if_statement "if ((*(byte *)(param_1 + 0xb) & 0x30) != 0x10) {\n      return 0;\n    }" if (parenthesized_expression "((*(byte *)(param_1 + 0xb) & 0x30) != 0x10)" ( (binary_expression "(*(byte *)(param_1 + 0xb) & 0x30) != 0x10" (parenthesized_expression "(*(byte *)(param_1 + 0xb) & 0x30)" ( (binary_expression "*(byte *)(param_1 + 0xb) & 0x30" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (return_statement "return *(undefined4 *)(param_1[0xc] + 4);" return (pointer_expression "*(undefined4 *)(param_1[0xc] + 4)" * (cast_expression "(undefined4 *)(param_1[0xc] + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[0xc] + 4)" ( (binary_expression "param_1[0xc] + 4" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) + number_literal) )))) ;) })) (expression_statement "iVar3 = *param_1;" (assignment_expression "iVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*(undefined4 *)PTR_bfd_use_reserved_id_000bafc8 = 1;" (assignment_expression "*(undefined4 *)PTR_bfd_use_reserved_id_000bafc8 = 1" (pointer_expression "*(undefined4 *)PTR_bfd_use_reserved_id_000bafc8" * (cast_expression "(undefined4 *)PTR_bfd_use_reserved_id_000bafc8" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) 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 "piVar5 = param_1;" (assignment_expression "piVar5 = param_1" identifier = identifier) ;) (if_statement "if (iVar1 != 0) {\n    piVar5 = DAT_000bbe30;\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    piVar5 = DAT_000bbe30;\n  }" { (expression_statement "piVar5 = DAT_000bbe30;" (assignment_expression "piVar5 = DAT_000bbe30" identifier = identifier) ;) })) (expression_statement "uVar2 = concat(iVar3," (symbol from plugin)",0);" (assignment_expression "uVar2 = concat(iVar3," (symbol from plugin)",0)" identifier = (call_expression "concat(iVar3," (symbol from plugin)",0)" identifier (argument_list "(iVar3," (symbol from plugin)",0)" ( identifier , (string_literal "" (symbol from plugin)"" " string_content ") , number_literal )))) ;) (expression_statement "iVar3 = bfd_create(uVar2,piVar5);" (assignment_expression "iVar3 = bfd_create(uVar2,piVar5)" identifier = (call_expression "bfd_create(uVar2,piVar5)" identifier (argument_list "(uVar2,piVar5)" ( identifier , identifier )))) ;) (if_statement "if (iVar3 != 0) {\n    *(uint *)(iVar3 + 0x28) = *(uint *)(iVar3 + 0x28) | 0x220000;\n    iVar4 = bfd_make_writable(iVar3);\n    if (iVar4 != 0) {\n      if (iVar1 == 0) {\n        uVar2 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(iVar3,uVar2);\n        uVar2 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(iVar3,uVar2);\n        iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3);\n        if (iVar1 == 0) goto LAB_00034a70;\n      }\n      iVar1 = bfd_make_section_anyway_with_flags(iVar3,".text",0x20811b);\n      if (iVar1 != 0) goto LAB_000348b2;\n    }\n  }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    *(uint *)(iVar3 + 0x28) = *(uint *)(iVar3 + 0x28) | 0x220000;\n    iVar4 = bfd_make_writable(iVar3);\n    if (iVar4 != 0) {\n      if (iVar1 == 0) {\n        uVar2 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(iVar3,uVar2);\n        uVar2 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(iVar3,uVar2);\n        iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3);\n        if (iVar1 == 0) goto LAB_00034a70;\n      }\n      iVar1 = bfd_make_section_anyway_with_flags(iVar3,".text",0x20811b);\n      if (iVar1 != 0) goto LAB_000348b2;\n    }\n  }" { (expression_statement "*(uint *)(iVar3 + 0x28) = *(uint *)(iVar3 + 0x28) | 0x220000;" (assignment_expression "*(uint *)(iVar3 + 0x28) = *(uint *)(iVar3 + 0x28) | 0x220000" (pointer_expression "*(uint *)(iVar3 + 0x28)" * (cast_expression "(uint *)(iVar3 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x28)" ( (binary_expression "iVar3 + 0x28" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar3 + 0x28) | 0x220000" (pointer_expression "*(uint *)(iVar3 + 0x28)" * (cast_expression "(uint *)(iVar3 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x28)" ( (binary_expression "iVar3 + 0x28" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "iVar4 = bfd_make_writable(iVar3);" (assignment_expression "iVar4 = bfd_make_writable(iVar3)" identifier = (call_expression "bfd_make_writable(iVar3)" identifier (argument_list "(iVar3)" ( identifier )))) ;) (if_statement "if (iVar4 != 0) {\n      if (iVar1 == 0) {\n        uVar2 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(iVar3,uVar2);\n        uVar2 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(iVar3,uVar2);\n        iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3);\n        if (iVar1 == 0) goto LAB_00034a70;\n      }\n      iVar1 = bfd_make_section_anyway_with_flags(iVar3,".text",0x20811b);\n      if (iVar1 != 0) goto LAB_000348b2;\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      if (iVar1 == 0) {\n        uVar2 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(iVar3,uVar2);\n        uVar2 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(iVar3,uVar2);\n        iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3);\n        if (iVar1 == 0) goto LAB_00034a70;\n      }\n      iVar1 = bfd_make_section_anyway_with_flags(iVar3,".text",0x20811b);\n      if (iVar1 != 0) goto LAB_000348b2;\n    }" { (if_statement "if (iVar1 == 0) {\n        uVar2 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(iVar3,uVar2);\n        uVar2 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(iVar3,uVar2);\n        iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3);\n        if (iVar1 == 0) goto LAB_00034a70;\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar2 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(iVar3,uVar2);\n        uVar2 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(iVar3,uVar2);\n        iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3);\n        if (iVar1 == 0) goto LAB_00034a70;\n      }" { (expression_statement "uVar2 = bfd_get_arch_info(param_1);" (assignment_expression "uVar2 = 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(iVar3,uVar2);" (call_expression "bfd_set_arch_info(iVar3,uVar2)" identifier (argument_list "(iVar3,uVar2)" ( identifier , identifier ))) ;) (expression_statement "uVar2 = bfd_get_gp_size(param_1);" (assignment_expression "uVar2 = 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(iVar3,uVar2);" (call_expression "bfd_set_gp_size(iVar3,uVar2)" identifier (argument_list "(iVar3,uVar2)" ( identifier , identifier ))) ;) (expression_statement "iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3);" (assignment_expression "iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3)" identifier = (call_expression "(**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3)" (parenthesized_expression "(**(code **)(*(int *)(iVar3 + 4) + 0xa8))" ( (pointer_expression "**(code **)(*(int *)(iVar3 + 4) + 0xa8)" * (pointer_expression "*(code **)(*(int *)(iVar3 + 4) + 0xa8)" * (cast_expression "(code **)(*(int *)(iVar3 + 4) + 0xa8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar3 + 4) + 0xa8)" ( (binary_expression "*(int *)(iVar3 + 4) + 0xa8" (pointer_expression "*(int *)(iVar3 + 4)" * (cast_expression "(int *)(iVar3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 4)" ( (binary_expression "iVar3 + 4" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(param_1,iVar3)" ( identifier , identifier )))) ;) (if_statement "if (iVar1 == 0) goto LAB_00034a70;" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00034a70;" goto statement_identifier ;)) })) (expression_statement "iVar1 = bfd_make_section_anyway_with_flags(iVar3,".text",0x20811b);" (assignment_expression "iVar1 = bfd_make_section_anyway_with_flags(iVar3,".text",0x20811b)" identifier = (call_expression "bfd_make_section_anyway_with_flags(iVar3,".text",0x20811b)" identifier (argument_list "(iVar3,".text",0x20811b)" ( identifier , (string_literal "".text"" " string_content ") , number_literal )))) ;) (if_statement "if (iVar1 != 0) goto LAB_000348b2;" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000348b2;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_00034a70:\n  iVar3 = 0;" statement_identifier : (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;)) (expression_statement "uVar2 = dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);" (assignment_expression "uVar2 = 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_00031730(uVar2);" (call_expression "FUN_00031730(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (labeled_statement "LAB_000348b2:\n  piVar5 = (int *)bfd_alloc(iVar3,0x30);" statement_identifier : (expression_statement "piVar5 = (int *)bfd_alloc(iVar3,0x30);" (assignment_expression "piVar5 = (int *)bfd_alloc(iVar3,0x30)" identifier = (cast_expression "(int *)bfd_alloc(iVar3,0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_alloc(iVar3,0x30)" identifier (argument_list "(iVar3,0x30)" ( identifier , number_literal ))))) ;)) (if_statement "if (piVar5 == (int *)0x0) {\n    uVar2 = bfd_get_error();\n    uVar6 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    FUN_00031730(uVar6,uVar2);\n  }" if (parenthesized_expression "(piVar5 == (int *)0x0)" ( (binary_expression "piVar5 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar2 = bfd_get_error();\n    uVar6 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    FUN_00031730(uVar6,uVar2);\n  }" { (expression_statement "uVar2 = bfd_get_error();" (assignment_expression "uVar2 = bfd_get_error()" identifier = (call_expression "bfd_get_error()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar6 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);" (assignment_expression "uVar6 = 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_00031730(uVar6,uVar2);" (call_expression "FUN_00031730(uVar6,uVar2)" identifier (argument_list "(uVar6,uVar2)" ( identifier , identifier ))) ;) })) (expression_statement "iVar1 = bfd_plugin_open_input(param_1,&local_38);" (assignment_expression "iVar1 = bfd_plugin_open_input(param_1,&local_38)" identifier = (call_expression "bfd_plugin_open_input(param_1,&local_38)" identifier (argument_list "(param_1,&local_38)" ( identifier , (pointer_expression "&local_38" & identifier) )))) ;) (if_statement "if (iVar1 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (local_38 == *param_1) {\n    local_38 = FUN_00033800();\n  }" if (parenthesized_expression "(local_38 == *param_1)" ( (binary_expression "local_38 == *param_1" identifier == (pointer_expression "*param_1" * identifier)) )) (compound_statement "{\n    local_38 = FUN_00033800();\n  }" { (expression_statement "local_38 = FUN_00033800();" (assignment_expression "local_38 = FUN_00033800()" identifier = (call_expression "FUN_00033800()" identifier (argument_list "()" ( )))) ;) })) (expression_statement "piVar5[7] = 0;" (assignment_expression "piVar5[7] = 0" (subscript_expression "piVar5[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5[6] = local_34;" (assignment_expression "piVar5[6] = local_34" (subscript_expression "piVar5[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar5[9] = local_2c;" (assignment_expression "piVar5[9] = local_2c" (subscript_expression "piVar5[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar5[8] = local_30;" (assignment_expression "piVar5[8] = local_30" (subscript_expression "piVar5[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar5[0xb] = local_24;" (assignment_expression "piVar5[0xb] = local_24" (subscript_expression "piVar5[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar5[10] = local_28;" (assignment_expression "piVar5[10] = local_28" (subscript_expression "piVar5[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*piVar5 = iVar3;" (assignment_expression "*piVar5 = iVar3" (pointer_expression "*piVar5" * identifier) = identifier) ;) (expression_statement "piVar5[1] = 0;" (assignment_expression "piVar5[1] = 0" (subscript_expression "piVar5[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5[2] = 0;" (assignment_expression "piVar5[2] = 0" (subscript_expression "piVar5[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5[3] = 0;" (assignment_expression "piVar5[3] = 0" (subscript_expression "piVar5[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5[4] = 0;" (assignment_expression "piVar5[4] = 0" (subscript_expression "piVar5[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_20 = piVar5;" (assignment_expression "local_20 = piVar5" identifier = identifier) ;) (expression_statement "iVar1 = FUN_00033800();" (assignment_expression "iVar1 = FUN_00033800()" identifier = (call_expression "FUN_00033800()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar7 = DAT_000bbb74;" (assignment_expression "piVar7 = DAT_000bbb74" identifier = identifier) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "piVar5[5] = iVar1;" (assignment_expression "piVar5[5] = iVar1" (subscript_expression "piVar5[5]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (piVar7 != (int *)0x0) {\n    do {\n      if ((code *)piVar7[5] != (code *)0x0) {\n        DAT_000bbb68 = piVar7;\n        iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c);\n        DAT_000bbb68 = (int *)0x0;\n        if (iVar1 != 0) {\n          DAT_000bbb64 = piVar7[1];\n        }\n      }\n      piVar7 = (int *)*piVar7;\n    } while ((piVar7 != (int *)0x0) && (local_3c == 0));\n  }" if (parenthesized_expression "(piVar7 != (int *)0x0)" ( (binary_expression "piVar7 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    do {\n      if ((code *)piVar7[5] != (code *)0x0) {\n        DAT_000bbb68 = piVar7;\n        iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c);\n        DAT_000bbb68 = (int *)0x0;\n        if (iVar1 != 0) {\n          DAT_000bbb64 = piVar7[1];\n        }\n      }\n      piVar7 = (int *)*piVar7;\n    } while ((piVar7 != (int *)0x0) && (local_3c == 0));\n  }" { (do_statement "do {\n      if ((code *)piVar7[5] != (code *)0x0) {\n        DAT_000bbb68 = piVar7;\n        iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c);\n        DAT_000bbb68 = (int *)0x0;\n        if (iVar1 != 0) {\n          DAT_000bbb64 = piVar7[1];\n        }\n      }\n      piVar7 = (int *)*piVar7;\n    } while ((piVar7 != (int *)0x0) && (local_3c == 0));" do (compound_statement "{\n      if ((code *)piVar7[5] != (code *)0x0) {\n        DAT_000bbb68 = piVar7;\n        iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c);\n        DAT_000bbb68 = (int *)0x0;\n        if (iVar1 != 0) {\n          DAT_000bbb64 = piVar7[1];\n        }\n      }\n      piVar7 = (int *)*piVar7;\n    }" { (if_statement "if ((code *)piVar7[5] != (code *)0x0) {\n        DAT_000bbb68 = piVar7;\n        iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c);\n        DAT_000bbb68 = (int *)0x0;\n        if (iVar1 != 0) {\n          DAT_000bbb64 = piVar7[1];\n        }\n      }" if (parenthesized_expression "((code *)piVar7[5] != (code *)0x0)" ( (binary_expression "(code *)piVar7[5] != (code *)0x0" (cast_expression "(code *)piVar7[5]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[5]" identifier [ number_literal ])) != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        DAT_000bbb68 = piVar7;\n        iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c);\n        DAT_000bbb68 = (int *)0x0;\n        if (iVar1 != 0) {\n          DAT_000bbb64 = piVar7[1];\n        }\n      }" { (expression_statement "DAT_000bbb68 = piVar7;" (assignment_expression "DAT_000bbb68 = piVar7" identifier = identifier) ;) (expression_statement "iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c);" (assignment_expression "iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c)" identifier = (call_expression "(*(code *)piVar7[5])(&local_38,&local_3c)" (parenthesized_expression "(*(code *)piVar7[5])" ( (pointer_expression "*(code *)piVar7[5]" * (cast_expression "(code *)piVar7[5]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[5]" identifier [ number_literal ]))) )) (argument_list "(&local_38,&local_3c)" ( (pointer_expression "&local_38" & identifier) , (pointer_expression "&local_3c" & identifier) )))) ;) (expression_statement "DAT_000bbb68 = (int *)0x0;" (assignment_expression "DAT_000bbb68 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar1 != 0) {\n          DAT_000bbb64 = piVar7[1];\n        }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n          DAT_000bbb64 = piVar7[1];\n        }" { (expression_statement "DAT_000bbb64 = piVar7[1];" (assignment_expression "DAT_000bbb64 = piVar7[1]" identifier = (subscript_expression "piVar7[1]" identifier [ number_literal ])) ;) })) })) (expression_statement "piVar7 = (int *)*piVar7;" (assignment_expression "piVar7 = (int *)*piVar7" identifier = (cast_expression "(int *)*piVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) ;) }) while (parenthesized_expression "((piVar7 != (int *)0x0) && (local_3c == 0))" ( (binary_expression "(piVar7 != (int *)0x0) && (local_3c == 0)" (parenthesized_expression "(piVar7 != (int *)0x0)" ( (binary_expression "piVar7 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(local_3c == 0)" ( (binary_expression "local_3c == 0" identifier == number_literal) ))) )) ;) })) (expression_statement "iVar1 = DAT_000bbb64;" (assignment_expression "iVar1 = DAT_000bbb64" identifier = identifier) ;) (if_statement "if (DAT_000bbb64 != 0) {\n    uVar2 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n    FUN_00031730(uVar2,iVar1);\n  }" if (parenthesized_expression "(DAT_000bbb64 != 0)" ( (binary_expression "DAT_000bbb64 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar2 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n    FUN_00031730(uVar2,iVar1);\n  }" { (expression_statement "uVar2 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);" (assignment_expression "uVar2 = 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_00031730(uVar2,iVar1);" (call_expression "FUN_00031730(uVar2,iVar1)" identifier (argument_list "(uVar2,iVar1)" ( identifier , identifier ))) ;) })) (if_statement "if ((piVar5[6] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {\n    close(piVar5[6]);\n    piVar5[6] = -1;\n  }" if (parenthesized_expression "((piVar5[6] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0))" ( (binary_expression "(piVar5[6] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)" (parenthesized_expression "(piVar5[6] != -1)" ( (binary_expression "piVar5[6] != -1" (subscript_expression "piVar5[6]" 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(piVar5[6]);\n    piVar5[6] = -1;\n  }" { (expression_statement "close(piVar5[6]);" (call_expression "close(piVar5[6])" identifier (argument_list "(piVar5[6])" ( (subscript_expression "piVar5[6]" identifier [ number_literal ]) ))) ;) (expression_statement "piVar5[6] = -1;" (assignment_expression "piVar5[6] = -1" (subscript_expression "piVar5[6]" identifier [ number_literal ]) = number_literal) ;) })) (if_statement "if (local_3c == 0) {\n    *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x20;\n    bfd_close_all_done(iVar3);\n    return 0;\n  }" if (parenthesized_expression "(local_3c == 0)" ( (binary_expression "local_3c == 0" identifier == number_literal) )) (compound_statement "{\n    *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x20;\n    bfd_close_all_done(iVar3);\n    return 0;\n  }" { (expression_statement "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x20;" (assignment_expression "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x20" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 0xb) & 0xcf | 0x20" (binary_expression "*(byte *)(param_1 + 0xb) & 0xcf" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "bfd_close_all_done(iVar3);" (call_expression "bfd_close_all_done(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "param_1[0xc] = iVar3;" (assignment_expression "param_1[0xc] = iVar3" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x10;" (assignment_expression "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x10" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 0xb) & 0xcf | 0x10" (binary_expression "*(byte *)(param_1 + 0xb) & 0xcf" (pointer_expression "*(byte *)(param_1 + 0xb)" * (cast_expression "(byte *)(param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "bfd_make_readable(iVar3);" (call_expression "bfd_make_readable(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))) ;) (return_statement "return *(undefined4 *)(iVar3 + 4);" return (pointer_expression "*(undefined4 *)(iVar3 + 4)" * (cast_expression "(undefined4 *)(iVar3 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 4)" ( (binary_expression "iVar3 + 4" identifier + number_literal) )))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = 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 (cast_expression ( (type_descriptor TYPE) ) 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 TYPE (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 TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , LIT ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (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 { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) })) (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 ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (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 TYPE (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 TYPE (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 TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (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 (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 ( (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (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 (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 ))) ;) (return_statement return (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) })))
(function_definition "undefined4 FUN_000347a0(int *param_1)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  int local_3c;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int *local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x347a9;\n  if ((*(byte *)((int)param_1 + 0x2a) & 0x20) != 0) {\n    return 0;\n  }\n  if ((*(byte *)(param_1 + 0xb) & 0x30) != 0) {\n    if ((*(byte *)(param_1 + 0xb) & 0x30) != 0x10) {\n      return 0;\n    }\n    return *(undefined4 *)(param_1[0xc] + 4);\n  }\n  iVar3 = *param_1;\n  *(undefined4 *)PTR_bfd_use_reserved_id_000bafc8 = 1;\n  iVar1 = bfd_plugin_target_p(param_1[1]);\n  piVar5 = param_1;\n  if (iVar1 != 0) {\n    piVar5 = DAT_000bbe30;\n  }\n  uVar2 = concat(iVar3," (symbol from plugin)",0);\n  iVar3 = bfd_create(uVar2,piVar5);\n  if (iVar3 != 0) {\n    *(uint *)(iVar3 + 0x28) = *(uint *)(iVar3 + 0x28) | 0x220000;\n    iVar4 = bfd_make_writable(iVar3);\n    if (iVar4 != 0) {\n      if (iVar1 == 0) {\n        uVar2 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(iVar3,uVar2);\n        uVar2 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(iVar3,uVar2);\n        iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3);\n        if (iVar1 == 0) goto LAB_00034a70;\n      }\n      iVar1 = bfd_make_section_anyway_with_flags(iVar3,".text",0x20811b);\n      if (iVar1 != 0) goto LAB_000348b2;\n    }\n  }\nLAB_00034a70:\n  iVar3 = 0;\n  uVar2 = dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);\n  FUN_00031730(uVar2);\nLAB_000348b2:\n  piVar5 = (int *)bfd_alloc(iVar3,0x30);\n  if (piVar5 == (int *)0x0) {\n    uVar2 = bfd_get_error();\n    uVar6 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    FUN_00031730(uVar6,uVar2);\n  }\n  iVar1 = bfd_plugin_open_input(param_1,&local_38);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  if (local_38 == *param_1) {\n    local_38 = FUN_00033800();\n  }\n  piVar5[7] = 0;\n  piVar5[6] = local_34;\n  piVar5[9] = local_2c;\n  piVar5[8] = local_30;\n  piVar5[0xb] = local_24;\n  piVar5[10] = local_28;\n  *piVar5 = iVar3;\n  piVar5[1] = 0;\n  piVar5[2] = 0;\n  piVar5[3] = 0;\n  piVar5[4] = 0;\n  local_20 = piVar5;\n  iVar1 = FUN_00033800();\n  piVar7 = DAT_000bbb74;\n  local_3c = 0;\n  piVar5[5] = iVar1;\n  if (piVar7 != (int *)0x0) {\n    do {\n      if ((code *)piVar7[5] != (code *)0x0) {\n        DAT_000bbb68 = piVar7;\n        iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c);\n        DAT_000bbb68 = (int *)0x0;\n        if (iVar1 != 0) {\n          DAT_000bbb64 = piVar7[1];\n        }\n      }\n      piVar7 = (int *)*piVar7;\n    } while ((piVar7 != (int *)0x0) && (local_3c == 0));\n  }\n  iVar1 = DAT_000bbb64;\n  if (DAT_000bbb64 != 0) {\n    uVar2 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n    FUN_00031730(uVar2,iVar1);\n  }\n  if ((piVar5[6] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {\n    close(piVar5[6]);\n    piVar5[6] = -1;\n  }\n  if (local_3c == 0) {\n    *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x20;\n    bfd_close_all_done(iVar3);\n    return 0;\n  }\n  param_1[0xc] = iVar3;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x10;\n  bfd_make_readable(iVar3);\n  return *(undefined4 *)(iVar3 + 4);\n}" (type_identifier "undefined4") (function_declarator "FUN_000347a0(int *param_1)" (identifier "FUN_000347a0") (parameter_list "(int *param_1)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  int *piVar7;\n  int local_3c;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int *local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x347a9;\n  if ((*(byte *)((int)param_1 + 0x2a) & 0x20) != 0) {\n    return 0;\n  }\n  if ((*(byte *)(param_1 + 0xb) & 0x30) != 0) {\n    if ((*(byte *)(param_1 + 0xb) & 0x30) != 0x10) {\n      return 0;\n    }\n    return *(undefined4 *)(param_1[0xc] + 4);\n  }\n  iVar3 = *param_1;\n  *(undefined4 *)PTR_bfd_use_reserved_id_000bafc8 = 1;\n  iVar1 = bfd_plugin_target_p(param_1[1]);\n  piVar5 = param_1;\n  if (iVar1 != 0) {\n    piVar5 = DAT_000bbe30;\n  }\n  uVar2 = concat(iVar3," (symbol from plugin)",0);\n  iVar3 = bfd_create(uVar2,piVar5);\n  if (iVar3 != 0) {\n    *(uint *)(iVar3 + 0x28) = *(uint *)(iVar3 + 0x28) | 0x220000;\n    iVar4 = bfd_make_writable(iVar3);\n    if (iVar4 != 0) {\n      if (iVar1 == 0) {\n        uVar2 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(iVar3,uVar2);\n        uVar2 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(iVar3,uVar2);\n        iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3);\n        if (iVar1 == 0) goto LAB_00034a70;\n      }\n      iVar1 = bfd_make_section_anyway_with_flags(iVar3,".text",0x20811b);\n      if (iVar1 != 0) goto LAB_000348b2;\n    }\n  }\nLAB_00034a70:\n  iVar3 = 0;\n  uVar2 = dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);\n  FUN_00031730(uVar2);\nLAB_000348b2:\n  piVar5 = (int *)bfd_alloc(iVar3,0x30);\n  if (piVar5 == (int *)0x0) {\n    uVar2 = bfd_get_error();\n    uVar6 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    FUN_00031730(uVar6,uVar2);\n  }\n  iVar1 = bfd_plugin_open_input(param_1,&local_38);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  if (local_38 == *param_1) {\n    local_38 = FUN_00033800();\n  }\n  piVar5[7] = 0;\n  piVar5[6] = local_34;\n  piVar5[9] = local_2c;\n  piVar5[8] = local_30;\n  piVar5[0xb] = local_24;\n  piVar5[10] = local_28;\n  *piVar5 = iVar3;\n  piVar5[1] = 0;\n  piVar5[2] = 0;\n  piVar5[3] = 0;\n  piVar5[4] = 0;\n  local_20 = piVar5;\n  iVar1 = FUN_00033800();\n  piVar7 = DAT_000bbb74;\n  local_3c = 0;\n  piVar5[5] = iVar1;\n  if (piVar7 != (int *)0x0) {\n    do {\n      if ((code *)piVar7[5] != (code *)0x0) {\n        DAT_000bbb68 = piVar7;\n        iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c);\n        DAT_000bbb68 = (int *)0x0;\n        if (iVar1 != 0) {\n          DAT_000bbb64 = piVar7[1];\n        }\n      }\n      piVar7 = (int *)*piVar7;\n    } while ((piVar7 != (int *)0x0) && (local_3c == 0));\n  }\n  iVar1 = DAT_000bbb64;\n  if (DAT_000bbb64 != 0) {\n    uVar2 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n    FUN_00031730(uVar2,iVar1);\n  }\n  if ((piVar5[6] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {\n    close(piVar5[6]);\n    piVar5[6] = -1;\n  }\n  if (local_3c == 0) {\n    *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x20;\n    bfd_close_all_done(iVar3);\n    return 0;\n  }\n  param_1[0xc] = iVar3;\n  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x10;\n  bfd_make_readable(iVar3);\n  return *(undefined4 *)(iVar3 + 4);\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "int local_3c;" (primitive_type "int") (identifier "local_3c") (; ";")) (declaration "int local_38;" (primitive_type "int") (identifier "local_38") (; ";")) (declaration "int local_34;" (primitive_type "int") (identifier "local_34") (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (declaration "int local_28;" (primitive_type "int") (identifier "local_28") (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (declaration "int *local_20;" (primitive_type "int") (pointer_declarator "*local_20" (* "*") (identifier "local_20")) (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x347a9;" (assignment_expression "uStack_14 = 0x347a9" (identifier "uStack_14") (= "=") (number_literal "0x347a9")) (; ";")) (if_statement "if ((*(byte *)((int)param_1 + 0x2a) & 0x20) != 0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "((*(byte *)((int)param_1 + 0x2a) & 0x20) != 0)" (( "(") (binary_expression "(*(byte *)((int)param_1 + 0x2a) & 0x20) != 0" (parenthesized_expression "(*(byte *)((int)param_1 + 0x2a) & 0x20)" (( "(") (binary_expression "*(byte *)((int)param_1 + 0x2a) & 0x20" (pointer_expression "*(byte *)((int)param_1 + 0x2a)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x2a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x2a)" (( "(") (binary_expression "(int)param_1 + 0x2a" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x2a")) () ")")))) (& "&") (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 + 0xb) & 0x30) != 0) {\n    if ((*(byte *)(param_1 + 0xb) & 0x30) != 0x10) {\n      return 0;\n    }\n    return *(undefined4 *)(param_1[0xc] + 4);\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0xb) & 0x30) != 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0xb) & 0x30) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0xb) & 0x30)" (( "(") (binary_expression "*(byte *)(param_1 + 0xb) & 0x30" (pointer_expression "*(byte *)(param_1 + 0xb)" (* "*") (cast_expression "(byte *)(param_1 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb)" (( "(") (binary_expression "param_1 + 0xb" (identifier "param_1") (+ "+") (number_literal "0xb")) () ")")))) (& "&") (number_literal "0x30")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if ((*(byte *)(param_1 + 0xb) & 0x30) != 0x10) {\n      return 0;\n    }\n    return *(undefined4 *)(param_1[0xc] + 4);\n  }" ({ "{") (if_statement "if ((*(byte *)(param_1 + 0xb) & 0x30) != 0x10) {\n      return 0;\n    }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0xb) & 0x30) != 0x10)" (( "(") (binary_expression "(*(byte *)(param_1 + 0xb) & 0x30) != 0x10" (parenthesized_expression "(*(byte *)(param_1 + 0xb) & 0x30)" (( "(") (binary_expression "*(byte *)(param_1 + 0xb) & 0x30" (pointer_expression "*(byte *)(param_1 + 0xb)" (* "*") (cast_expression "(byte *)(param_1 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb)" (( "(") (binary_expression "param_1 + 0xb" (identifier "param_1") (+ "+") (number_literal "0xb")) () ")")))) (& "&") (number_literal "0x30")) () ")")) (!= "!=") (number_literal "0x10")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (return_statement "return *(undefined4 *)(param_1[0xc] + 4);" (return "return") (pointer_expression "*(undefined4 *)(param_1[0xc] + 4)" (* "*") (cast_expression "(undefined4 *)(param_1[0xc] + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[0xc] + 4)" (( "(") (binary_expression "param_1[0xc] + 4" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (+ "+") (number_literal "4")) () ")")))) (; ";")) (} "}"))) (expression_statement "iVar3 = *param_1;" (assignment_expression "iVar3 = *param_1" (identifier "iVar3") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "*(undefined4 *)PTR_bfd_use_reserved_id_000bafc8 = 1;" (assignment_expression "*(undefined4 *)PTR_bfd_use_reserved_id_000bafc8 = 1" (pointer_expression "*(undefined4 *)PTR_bfd_use_reserved_id_000bafc8" (* "*") (cast_expression "(undefined4 *)PTR_bfd_use_reserved_id_000bafc8" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_bfd_use_reserved_id_000bafc8"))) (= "=") (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 "piVar5 = param_1;" (assignment_expression "piVar5 = param_1" (identifier "piVar5") (= "=") (identifier "param_1")) (; ";")) (if_statement "if (iVar1 != 0) {\n    piVar5 = DAT_000bbe30;\n  }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    piVar5 = DAT_000bbe30;\n  }" ({ "{") (expression_statement "piVar5 = DAT_000bbe30;" (assignment_expression "piVar5 = DAT_000bbe30" (identifier "piVar5") (= "=") (identifier "DAT_000bbe30")) (; ";")) (} "}"))) (expression_statement "uVar2 = concat(iVar3," (symbol from plugin)",0);" (assignment_expression "uVar2 = concat(iVar3," (symbol from plugin)",0)" (identifier "uVar2") (= "=") (call_expression "concat(iVar3," (symbol from plugin)",0)" (identifier "concat") (argument_list "(iVar3," (symbol from plugin)",0)" (( "(") (identifier "iVar3") (, ",") (string_literal "" (symbol from plugin)"" (" """) (string_content " (symbol from plugin)") (" """)) (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "iVar3 = bfd_create(uVar2,piVar5);" (assignment_expression "iVar3 = bfd_create(uVar2,piVar5)" (identifier "iVar3") (= "=") (call_expression "bfd_create(uVar2,piVar5)" (identifier "bfd_create") (argument_list "(uVar2,piVar5)" (( "(") (identifier "uVar2") (, ",") (identifier "piVar5") () ")")))) (; ";")) (if_statement "if (iVar3 != 0) {\n    *(uint *)(iVar3 + 0x28) = *(uint *)(iVar3 + 0x28) | 0x220000;\n    iVar4 = bfd_make_writable(iVar3);\n    if (iVar4 != 0) {\n      if (iVar1 == 0) {\n        uVar2 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(iVar3,uVar2);\n        uVar2 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(iVar3,uVar2);\n        iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3);\n        if (iVar1 == 0) goto LAB_00034a70;\n      }\n      iVar1 = bfd_make_section_anyway_with_flags(iVar3,".text",0x20811b);\n      if (iVar1 != 0) goto LAB_000348b2;\n    }\n  }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    *(uint *)(iVar3 + 0x28) = *(uint *)(iVar3 + 0x28) | 0x220000;\n    iVar4 = bfd_make_writable(iVar3);\n    if (iVar4 != 0) {\n      if (iVar1 == 0) {\n        uVar2 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(iVar3,uVar2);\n        uVar2 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(iVar3,uVar2);\n        iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3);\n        if (iVar1 == 0) goto LAB_00034a70;\n      }\n      iVar1 = bfd_make_section_anyway_with_flags(iVar3,".text",0x20811b);\n      if (iVar1 != 0) goto LAB_000348b2;\n    }\n  }" ({ "{") (expression_statement "*(uint *)(iVar3 + 0x28) = *(uint *)(iVar3 + 0x28) | 0x220000;" (assignment_expression "*(uint *)(iVar3 + 0x28) = *(uint *)(iVar3 + 0x28) | 0x220000" (pointer_expression "*(uint *)(iVar3 + 0x28)" (* "*") (cast_expression "(uint *)(iVar3 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x28)" (( "(") (binary_expression "iVar3 + 0x28" (identifier "iVar3") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (binary_expression "*(uint *)(iVar3 + 0x28) | 0x220000" (pointer_expression "*(uint *)(iVar3 + 0x28)" (* "*") (cast_expression "(uint *)(iVar3 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x28)" (( "(") (binary_expression "iVar3 + 0x28" (identifier "iVar3") (+ "+") (number_literal "0x28")) () ")")))) (| "|") (number_literal "0x220000"))) (; ";")) (expression_statement "iVar4 = bfd_make_writable(iVar3);" (assignment_expression "iVar4 = bfd_make_writable(iVar3)" (identifier "iVar4") (= "=") (call_expression "bfd_make_writable(iVar3)" (identifier "bfd_make_writable") (argument_list "(iVar3)" (( "(") (identifier "iVar3") () ")")))) (; ";")) (if_statement "if (iVar4 != 0) {\n      if (iVar1 == 0) {\n        uVar2 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(iVar3,uVar2);\n        uVar2 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(iVar3,uVar2);\n        iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3);\n        if (iVar1 == 0) goto LAB_00034a70;\n      }\n      iVar1 = bfd_make_section_anyway_with_flags(iVar3,".text",0x20811b);\n      if (iVar1 != 0) goto LAB_000348b2;\n    }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (iVar1 == 0) {\n        uVar2 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(iVar3,uVar2);\n        uVar2 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(iVar3,uVar2);\n        iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3);\n        if (iVar1 == 0) goto LAB_00034a70;\n      }\n      iVar1 = bfd_make_section_anyway_with_flags(iVar3,".text",0x20811b);\n      if (iVar1 != 0) goto LAB_000348b2;\n    }" ({ "{") (if_statement "if (iVar1 == 0) {\n        uVar2 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(iVar3,uVar2);\n        uVar2 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(iVar3,uVar2);\n        iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3);\n        if (iVar1 == 0) goto LAB_00034a70;\n      }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar2 = bfd_get_arch_info(param_1);\n        bfd_set_arch_info(iVar3,uVar2);\n        uVar2 = bfd_get_gp_size(param_1);\n        bfd_set_gp_size(iVar3,uVar2);\n        iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3);\n        if (iVar1 == 0) goto LAB_00034a70;\n      }" ({ "{") (expression_statement "uVar2 = bfd_get_arch_info(param_1);" (assignment_expression "uVar2 = bfd_get_arch_info(param_1)" (identifier "uVar2") (= "=") (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(iVar3,uVar2);" (call_expression "bfd_set_arch_info(iVar3,uVar2)" (identifier "bfd_set_arch_info") (argument_list "(iVar3,uVar2)" (( "(") (identifier "iVar3") (, ",") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "uVar2 = bfd_get_gp_size(param_1);" (assignment_expression "uVar2 = bfd_get_gp_size(param_1)" (identifier "uVar2") (= "=") (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(iVar3,uVar2);" (call_expression "bfd_set_gp_size(iVar3,uVar2)" (identifier "bfd_set_gp_size") (argument_list "(iVar3,uVar2)" (( "(") (identifier "iVar3") (, ",") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3);" (assignment_expression "iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3)" (identifier "iVar1") (= "=") (call_expression "(**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3)" (parenthesized_expression "(**(code **)(*(int *)(iVar3 + 4) + 0xa8))" (( "(") (pointer_expression "**(code **)(*(int *)(iVar3 + 4) + 0xa8)" (* "*") (pointer_expression "*(code **)(*(int *)(iVar3 + 4) + 0xa8)" (* "*") (cast_expression "(code **)(*(int *)(iVar3 + 4) + 0xa8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(iVar3 + 4) + 0xa8)" (( "(") (binary_expression "*(int *)(iVar3 + 4) + 0xa8" (pointer_expression "*(int *)(iVar3 + 4)" (* "*") (cast_expression "(int *)(iVar3 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 4)" (( "(") (binary_expression "iVar3 + 4" (identifier "iVar3") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0xa8")) () ")"))))) () ")")) (argument_list "(param_1,iVar3)" (( "(") (identifier "param_1") (, ",") (identifier "iVar3") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) goto LAB_00034a70;" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00034a70;" (goto "goto") (statement_identifier "LAB_00034a70") (; ";"))) (} "}"))) (expression_statement "iVar1 = bfd_make_section_anyway_with_flags(iVar3,".text",0x20811b);" (assignment_expression "iVar1 = bfd_make_section_anyway_with_flags(iVar3,".text",0x20811b)" (identifier "iVar1") (= "=") (call_expression "bfd_make_section_anyway_with_flags(iVar3,".text",0x20811b)" (identifier "bfd_make_section_anyway_with_flags") (argument_list "(iVar3,".text",0x20811b)" (( "(") (identifier "iVar3") (, ",") (string_literal "".text"" (" """) (string_content ".text") (" """)) (, ",") (number_literal "0x20811b") () ")")))) (; ";")) (if_statement "if (iVar1 != 0) goto LAB_000348b2;" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000348b2;" (goto "goto") (statement_identifier "LAB_000348b2") (; ";"))) (} "}"))) (} "}"))) (labeled_statement "LAB_00034a70:\n  iVar3 = 0;" (statement_identifier "LAB_00034a70") (: ":") (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (; ";"))) (expression_statement "uVar2 = dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);" (assignment_expression "uVar2 = dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5)" (identifier "uVar2") (= "=") (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_00031730(uVar2);" (call_expression "FUN_00031730(uVar2)" (identifier "FUN_00031730") (argument_list "(uVar2)" (( "(") (identifier "uVar2") () ")"))) (; ";")) (labeled_statement "LAB_000348b2:\n  piVar5 = (int *)bfd_alloc(iVar3,0x30);" (statement_identifier "LAB_000348b2") (: ":") (expression_statement "piVar5 = (int *)bfd_alloc(iVar3,0x30);" (assignment_expression "piVar5 = (int *)bfd_alloc(iVar3,0x30)" (identifier "piVar5") (= "=") (cast_expression "(int *)bfd_alloc(iVar3,0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "bfd_alloc(iVar3,0x30)" (identifier "bfd_alloc") (argument_list "(iVar3,0x30)" (( "(") (identifier "iVar3") (, ",") (number_literal "0x30") () ")"))))) (; ";"))) (if_statement "if (piVar5 == (int *)0x0) {\n    uVar2 = bfd_get_error();\n    uVar6 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    FUN_00031730(uVar6,uVar2);\n  }" (if "if") (parenthesized_expression "(piVar5 == (int *)0x0)" (( "(") (binary_expression "piVar5 == (int *)0x0" (identifier "piVar5") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    uVar2 = bfd_get_error();\n    uVar6 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);\n    FUN_00031730(uVar6,uVar2);\n  }" ({ "{") (expression_statement "uVar2 = bfd_get_error();" (assignment_expression "uVar2 = bfd_get_error()" (identifier "uVar2") (= "=") (call_expression "bfd_get_error()" (identifier "bfd_get_error") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar6 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);" (assignment_expression "uVar6 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5)" (identifier "uVar6") (= "=") (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_00031730(uVar6,uVar2);" (call_expression "FUN_00031730(uVar6,uVar2)" (identifier "FUN_00031730") (argument_list "(uVar6,uVar2)" (( "(") (identifier "uVar6") (, ",") (identifier "uVar2") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar1 = bfd_plugin_open_input(param_1,&local_38);" (assignment_expression "iVar1 = bfd_plugin_open_input(param_1,&local_38)" (identifier "iVar1") (= "=") (call_expression "bfd_plugin_open_input(param_1,&local_38)" (identifier "bfd_plugin_open_input") (argument_list "(param_1,&local_38)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&local_38" (& "&") (identifier "local_38")) () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (local_38 == *param_1) {\n    local_38 = FUN_00033800();\n  }" (if "if") (parenthesized_expression "(local_38 == *param_1)" (( "(") (binary_expression "local_38 == *param_1" (identifier "local_38") (== "==") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) () ")")) (compound_statement "{\n    local_38 = FUN_00033800();\n  }" ({ "{") (expression_statement "local_38 = FUN_00033800();" (assignment_expression "local_38 = FUN_00033800()" (identifier "local_38") (= "=") (call_expression "FUN_00033800()" (identifier "FUN_00033800") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}"))) (expression_statement "piVar5[7] = 0;" (assignment_expression "piVar5[7] = 0" (subscript_expression "piVar5[7]" (identifier "piVar5") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar5[6] = local_34;" (assignment_expression "piVar5[6] = local_34" (subscript_expression "piVar5[6]" (identifier "piVar5") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "local_34")) (; ";")) (expression_statement "piVar5[9] = local_2c;" (assignment_expression "piVar5[9] = local_2c" (subscript_expression "piVar5[9]" (identifier "piVar5") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "local_2c")) (; ";")) (expression_statement "piVar5[8] = local_30;" (assignment_expression "piVar5[8] = local_30" (subscript_expression "piVar5[8]" (identifier "piVar5") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "local_30")) (; ";")) (expression_statement "piVar5[0xb] = local_24;" (assignment_expression "piVar5[0xb] = local_24" (subscript_expression "piVar5[0xb]" (identifier "piVar5") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "local_24")) (; ";")) (expression_statement "piVar5[10] = local_28;" (assignment_expression "piVar5[10] = local_28" (subscript_expression "piVar5[10]" (identifier "piVar5") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "local_28")) (; ";")) (expression_statement "*piVar5 = iVar3;" (assignment_expression "*piVar5 = iVar3" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "piVar5[1] = 0;" (assignment_expression "piVar5[1] = 0" (subscript_expression "piVar5[1]" (identifier "piVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar5[2] = 0;" (assignment_expression "piVar5[2] = 0" (subscript_expression "piVar5[2]" (identifier "piVar5") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar5[3] = 0;" (assignment_expression "piVar5[3] = 0" (subscript_expression "piVar5[3]" (identifier "piVar5") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar5[4] = 0;" (assignment_expression "piVar5[4] = 0" (subscript_expression "piVar5[4]" (identifier "piVar5") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_20 = piVar5;" (assignment_expression "local_20 = piVar5" (identifier "local_20") (= "=") (identifier "piVar5")) (; ";")) (expression_statement "iVar1 = FUN_00033800();" (assignment_expression "iVar1 = FUN_00033800()" (identifier "iVar1") (= "=") (call_expression "FUN_00033800()" (identifier "FUN_00033800") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "piVar7 = DAT_000bbb74;" (assignment_expression "piVar7 = DAT_000bbb74" (identifier "piVar7") (= "=") (identifier "DAT_000bbb74")) (; ";")) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar5[5] = iVar1;" (assignment_expression "piVar5[5] = iVar1" (subscript_expression "piVar5[5]" (identifier "piVar5") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "iVar1")) (; ";")) (if_statement "if (piVar7 != (int *)0x0) {\n    do {\n      if ((code *)piVar7[5] != (code *)0x0) {\n        DAT_000bbb68 = piVar7;\n        iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c);\n        DAT_000bbb68 = (int *)0x0;\n        if (iVar1 != 0) {\n          DAT_000bbb64 = piVar7[1];\n        }\n      }\n      piVar7 = (int *)*piVar7;\n    } while ((piVar7 != (int *)0x0) && (local_3c == 0));\n  }" (if "if") (parenthesized_expression "(piVar7 != (int *)0x0)" (( "(") (binary_expression "piVar7 != (int *)0x0" (identifier "piVar7") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    do {\n      if ((code *)piVar7[5] != (code *)0x0) {\n        DAT_000bbb68 = piVar7;\n        iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c);\n        DAT_000bbb68 = (int *)0x0;\n        if (iVar1 != 0) {\n          DAT_000bbb64 = piVar7[1];\n        }\n      }\n      piVar7 = (int *)*piVar7;\n    } while ((piVar7 != (int *)0x0) && (local_3c == 0));\n  }" ({ "{") (do_statement "do {\n      if ((code *)piVar7[5] != (code *)0x0) {\n        DAT_000bbb68 = piVar7;\n        iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c);\n        DAT_000bbb68 = (int *)0x0;\n        if (iVar1 != 0) {\n          DAT_000bbb64 = piVar7[1];\n        }\n      }\n      piVar7 = (int *)*piVar7;\n    } while ((piVar7 != (int *)0x0) && (local_3c == 0));" (do "do") (compound_statement "{\n      if ((code *)piVar7[5] != (code *)0x0) {\n        DAT_000bbb68 = piVar7;\n        iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c);\n        DAT_000bbb68 = (int *)0x0;\n        if (iVar1 != 0) {\n          DAT_000bbb64 = piVar7[1];\n        }\n      }\n      piVar7 = (int *)*piVar7;\n    }" ({ "{") (if_statement "if ((code *)piVar7[5] != (code *)0x0) {\n        DAT_000bbb68 = piVar7;\n        iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c);\n        DAT_000bbb68 = (int *)0x0;\n        if (iVar1 != 0) {\n          DAT_000bbb64 = piVar7[1];\n        }\n      }" (if "if") (parenthesized_expression "((code *)piVar7[5] != (code *)0x0)" (( "(") (binary_expression "(code *)piVar7[5] != (code *)0x0" (cast_expression "(code *)piVar7[5]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar7[5]" (identifier "piVar7") ([ "[") (number_literal "5") (] "]"))) (!= "!=") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        DAT_000bbb68 = piVar7;\n        iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c);\n        DAT_000bbb68 = (int *)0x0;\n        if (iVar1 != 0) {\n          DAT_000bbb64 = piVar7[1];\n        }\n      }" ({ "{") (expression_statement "DAT_000bbb68 = piVar7;" (assignment_expression "DAT_000bbb68 = piVar7" (identifier "DAT_000bbb68") (= "=") (identifier "piVar7")) (; ";")) (expression_statement "iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c);" (assignment_expression "iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c)" (identifier "iVar1") (= "=") (call_expression "(*(code *)piVar7[5])(&local_38,&local_3c)" (parenthesized_expression "(*(code *)piVar7[5])" (( "(") (pointer_expression "*(code *)piVar7[5]" (* "*") (cast_expression "(code *)piVar7[5]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar7[5]" (identifier "piVar7") ([ "[") (number_literal "5") (] "]")))) () ")")) (argument_list "(&local_38,&local_3c)" (( "(") (pointer_expression "&local_38" (& "&") (identifier "local_38")) (, ",") (pointer_expression "&local_3c" (& "&") (identifier "local_3c")) () ")")))) (; ";")) (expression_statement "DAT_000bbb68 = (int *)0x0;" (assignment_expression "DAT_000bbb68 = (int *)0x0" (identifier "DAT_000bbb68") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (iVar1 != 0) {\n          DAT_000bbb64 = piVar7[1];\n        }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          DAT_000bbb64 = piVar7[1];\n        }" ({ "{") (expression_statement "DAT_000bbb64 = piVar7[1];" (assignment_expression "DAT_000bbb64 = piVar7[1]" (identifier "DAT_000bbb64") (= "=") (subscript_expression "piVar7[1]" (identifier "piVar7") ([ "[") (number_literal "1") (] "]"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "piVar7 = (int *)*piVar7;" (assignment_expression "piVar7 = (int *)*piVar7" (identifier "piVar7") (= "=") (cast_expression "(int *)*piVar7" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar7" (* "*") (identifier "piVar7")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((piVar7 != (int *)0x0) && (local_3c == 0))" (( "(") (binary_expression "(piVar7 != (int *)0x0) && (local_3c == 0)" (parenthesized_expression "(piVar7 != (int *)0x0)" (( "(") (binary_expression "piVar7 != (int *)0x0" (identifier "piVar7") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(local_3c == 0)" (( "(") (binary_expression "local_3c == 0" (identifier "local_3c") (== "==") (number_literal "0")) () ")"))) () ")")) (; ";")) (} "}"))) (expression_statement "iVar1 = DAT_000bbb64;" (assignment_expression "iVar1 = DAT_000bbb64" (identifier "iVar1") (= "=") (identifier "DAT_000bbb64")) (; ";")) (if_statement "if (DAT_000bbb64 != 0) {\n    uVar2 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n    FUN_00031730(uVar2,iVar1);\n  }" (if "if") (parenthesized_expression "(DAT_000bbb64 != 0)" (( "(") (binary_expression "DAT_000bbb64 != 0" (identifier "DAT_000bbb64") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar2 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);\n    FUN_00031730(uVar2,iVar1);\n  }" ({ "{") (expression_statement "uVar2 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);" (assignment_expression "uVar2 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5)" (identifier "uVar2") (= "=") (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_00031730(uVar2,iVar1);" (call_expression "FUN_00031730(uVar2,iVar1)" (identifier "FUN_00031730") (argument_list "(uVar2,iVar1)" (( "(") (identifier "uVar2") (, ",") (identifier "iVar1") () ")"))) (; ";")) (} "}"))) (if_statement "if ((piVar5[6] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {\n    close(piVar5[6]);\n    piVar5[6] = -1;\n  }" (if "if") (parenthesized_expression "((piVar5[6] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0))" (( "(") (binary_expression "(piVar5[6] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)" (parenthesized_expression "(piVar5[6] != -1)" (( "(") (binary_expression "piVar5[6] != -1" (subscript_expression "piVar5[6]" (identifier "piVar5") ([ "[") (number_literal "6") (] "]")) (!= "!=") (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(piVar5[6]);\n    piVar5[6] = -1;\n  }" ({ "{") (expression_statement "close(piVar5[6]);" (call_expression "close(piVar5[6])" (identifier "close") (argument_list "(piVar5[6])" (( "(") (subscript_expression "piVar5[6]" (identifier "piVar5") ([ "[") (number_literal "6") (] "]")) () ")"))) (; ";")) (expression_statement "piVar5[6] = -1;" (assignment_expression "piVar5[6] = -1" (subscript_expression "piVar5[6]" (identifier "piVar5") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "-1")) (; ";")) (} "}"))) (if_statement "if (local_3c == 0) {\n    *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x20;\n    bfd_close_all_done(iVar3);\n    return 0;\n  }" (if "if") (parenthesized_expression "(local_3c == 0)" (( "(") (binary_expression "local_3c == 0" (identifier "local_3c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x20;\n    bfd_close_all_done(iVar3);\n    return 0;\n  }" ({ "{") (expression_statement "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x20;" (assignment_expression "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x20" (pointer_expression "*(byte *)(param_1 + 0xb)" (* "*") (cast_expression "(byte *)(param_1 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb)" (( "(") (binary_expression "param_1 + 0xb" (identifier "param_1") (+ "+") (number_literal "0xb")) () ")")))) (= "=") (binary_expression "*(byte *)(param_1 + 0xb) & 0xcf | 0x20" (binary_expression "*(byte *)(param_1 + 0xb) & 0xcf" (pointer_expression "*(byte *)(param_1 + 0xb)" (* "*") (cast_expression "(byte *)(param_1 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb)" (( "(") (binary_expression "param_1 + 0xb" (identifier "param_1") (+ "+") (number_literal "0xb")) () ")")))) (& "&") (number_literal "0xcf")) (| "|") (number_literal "0x20"))) (; ";")) (expression_statement "bfd_close_all_done(iVar3);" (call_expression "bfd_close_all_done(iVar3)" (identifier "bfd_close_all_done") (argument_list "(iVar3)" (( "(") (identifier "iVar3") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "param_1[0xc] = iVar3;" (assignment_expression "param_1[0xc] = iVar3" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x10;" (assignment_expression "*(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x10" (pointer_expression "*(byte *)(param_1 + 0xb)" (* "*") (cast_expression "(byte *)(param_1 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb)" (( "(") (binary_expression "param_1 + 0xb" (identifier "param_1") (+ "+") (number_literal "0xb")) () ")")))) (= "=") (binary_expression "*(byte *)(param_1 + 0xb) & 0xcf | 0x10" (binary_expression "*(byte *)(param_1 + 0xb) & 0xcf" (pointer_expression "*(byte *)(param_1 + 0xb)" (* "*") (cast_expression "(byte *)(param_1 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb)" (( "(") (binary_expression "param_1 + 0xb" (identifier "param_1") (+ "+") (number_literal "0xb")) () ")")))) (& "&") (number_literal "0xcf")) (| "|") (number_literal "0x10"))) (; ";")) (expression_statement "bfd_make_readable(iVar3);" (call_expression "bfd_make_readable(iVar3)" (identifier "bfd_make_readable") (argument_list "(iVar3)" (( "(") (identifier "iVar3") () ")"))) (; ";")) (return_statement "return *(undefined4 *)(iVar3 + 4);" (return "return") (pointer_expression "*(undefined4 *)(iVar3 + 4)" (* "*") (cast_expression "(undefined4 *)(iVar3 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 4)" (( "(") (binary_expression "iVar3 + 4" (identifier "iVar3") (+ "+") (number_literal "4")) () ")")))) (; ";")) (} "}")))

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

type_1 * function_1(type_2 *ibfd)

{
  type_3 var_28;
  int var_2;
  type_4 uVar3;
  type_2 *var_5;
  int var_7;
  type_5 var_12;
  type_4 *var_17;
  char *var_20;
  type_6 var_23;
  char *fmt;
  type_7 *var_22;
  int var_25;
  type_8 file;
  
  if ((ibfd->field_0x2a & 0x20) != 0) {
    return (type_1 *)0x0;
  }
  if ((ibfd->field_0x2c & 0x30) != 0) {
    if ((ibfd->field_0x2c & 0x30) != 0x10) {
      return (type_1 *)0x0;
    }
    return ibfd->plugin_dummy_bfd->xvec;
  }
  var_20 = ibfd->filename;
  *(type_4 *)PTR_bfd_use_reserved_id_000bafc8 = 1;
  var_2 = var_1(ibfd->xvec);
  var_5 = ibfd;
  if (var_2 != 0) {
    var_5 = link_info.output_bfd;
  }
  uVar3 = var_3(var_20," (symbol from plugin)",0);
  var_5 = (type_2 *)var_4(uVar3,var_5);
  if (var_5 != (type_2 *)0x0) {
    *(type_9 *)&var_5->field_0x28 = *(type_9 *)&var_5->field_0x28 | 0x220000;
    var_7 = var_6(var_5);
    if (var_7 != 0) {
      if (var_2 == 0) {
        uVar3 = var_8(ibfd);
        var_9(var_5,uVar3);
        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_00034a70;
      }
      var_2 = var_13(var_5,".text",0x20811b);
      if (var_2 != 0) goto LAB_000348b2;
    }
  }
LAB_00034a70:
  var_5 = (type_2 *)0x0;
  var_20 = (char *)var_14(0,"%F%P: could not create dummy IR bfd: %E\n",5);
  var_15(var_20);
LAB_000348b2:
  var_17 = (type_4 *)var_16(var_5,0x30);
  if (var_17 == (type_4 *)0x0) {
    uVar3 = var_18();
    var_20 = (char *)var_14(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);
    var_15(var_20,uVar3);
  }
  var_2 = var_19(ibfd,&file);
  if (var_2 == 0) {
    return (type_1 *)0x0;
  }
  var_20 = ibfd->filename;
  if (file.name == var_20) {
    file.name = var_21(var_5,var_20);
    var_20 = ibfd->filename;
  }
  var_17[7] = 0;
  var_17[6] = file.fd;
  var_17[9] = file.offset._4_4_;
  var_17[8] = (type_4)file.offset;
  var_17[0xb] = file.filesize._4_4_;
  var_17[10] = (type_4)file.filesize;
  *var_17 = var_5;
  var_17[1] = 0;
  var_17[2] = 0;
  var_17[3] = 0;
  var_17[4] = 0;
  file.handle = var_17;
  var_20 = var_21(var_5,var_20);
  var_22 = plugins_list;
  var_25 = 0;
  var_17[5] = var_20;
  if (var_22 != (type_10 *)0x0) {
    do {
      if (var_22->claim_file_handler != (type_11)0x0) {
        called_plugin = var_22;
        var_23 = (*var_22->claim_file_handler)(&file,&var_25);
        called_plugin = (type_10 *)0x0;
        if (var_23 != var_24) {
          var_26 = var_22->name;
        }
      }
      var_22 = var_22->next;
    } while ((var_22 != (type_7 *)0x0) && (var_25 == 0));
  }
  var_20 = var_26;
  if (var_26 != (char *)0x0) {
    fmt = (char *)var_14(0,"%F%P: %s: plugin reported error claiming file\n",5);
    var_15(fmt,var_20);
  }
  if ((var_17[6] != -1) && (var_2 = var_1(ibfd->xvec), var_2 == 0)) {
    var_27(var_17[6]);
    var_17[6] = 0xffffffff;
  }
  var_28 = ibfd->field_0x2c & 0xcf;
  if (var_25 == 0) {
    ibfd->field_0x2c = var_28 | 0x20;
    var_29(var_5);
    return (type_1 *)0x0;
  }
  ibfd->plugin_dummy_bfd = var_5;
  ibfd->field_0x2c = var_28 | 0x10;
  var_30(var_5);
  return var_5->xvec;
}


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

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

undefined4 MASKED(int *param_1)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  int *piVar5;
  undefined4 uVar6;
  int *piVar7;
  int local_3c;
  int local_38;
  int local_34;
  int local_30;
  int local_2c;
  int local_28;
  int local_24;
  int *local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x347a9;
  if ((*(byte *)((int)param_1 + 0x2a) & 0x20) != 0) {
    return 0;
  }
  if ((*(byte *)(param_1 + 0xb) & 0x30) != 0) {
    if ((*(byte *)(param_1 + 0xb) & 0x30) != 0x10) {
      return 0;
    }
    return *(undefined4 *)(param_1[0xc] + 4);
  }
  iVar3 = *param_1;
  *(undefined4 *)PTR_bfd_use_reserved_id_000bafc8 = 1;
  iVar1 = bfd_plugin_target_p(param_1[1]);
  piVar5 = param_1;
  if (iVar1 != 0) {
    piVar5 = DAT_000bbe30;
  }
  uVar2 = concat(iVar3," (symbol from plugin)",0);
  iVar3 = bfd_create(uVar2,piVar5);
  if (iVar3 != 0) {
    *(uint *)(iVar3 + 0x28) = *(uint *)(iVar3 + 0x28) | 0x220000;
    iVar4 = bfd_make_writable(iVar3);
    if (iVar4 != 0) {
      if (iVar1 == 0) {
        uVar2 = bfd_get_arch_info(param_1);
        bfd_set_arch_info(iVar3,uVar2);
        uVar2 = bfd_get_gp_size(param_1);
        bfd_set_gp_size(iVar3,uVar2);
        iVar1 = (**(code **)(*(int *)(iVar3 + 4) + 0xa8))(param_1,iVar3);
        if (iVar1 == 0) goto LAB_00034a70;
      }
      iVar1 = bfd_make_section_anyway_with_flags(iVar3,".text",0x20811b);
      if (iVar1 != 0) goto LAB_000348b2;
    }
  }
LAB_00034a70:
  iVar3 = 0;
  uVar2 = dcgettext(0,"%F%P: could not create dummy IR bfd: %E\n",5);
  FUN_00031730(uVar2);
LAB_000348b2:
  piVar5 = (int *)bfd_alloc(iVar3,0x30);
  if (piVar5 == (int *)0x0) {
    uVar2 = bfd_get_error();
    uVar6 = dcgettext(0,"%F%P: plugin failed to allocate memory for input: %s\n",5);
    FUN_00031730(uVar6,uVar2);
  }
  iVar1 = bfd_plugin_open_input(param_1,&local_38);
  if (iVar1 == 0) {
    return 0;
  }
  if (local_38 == *param_1) {
    local_38 = FUN_00033800();
  }
  piVar5[7] = 0;
  piVar5[6] = local_34;
  piVar5[9] = local_2c;
  piVar5[8] = local_30;
  piVar5[0xb] = local_24;
  piVar5[10] = local_28;
  *piVar5 = iVar3;
  piVar5[1] = 0;
  piVar5[2] = 0;
  piVar5[3] = 0;
  piVar5[4] = 0;
  local_20 = piVar5;
  iVar1 = FUN_00033800();
  piVar7 = DAT_000bbb74;
  local_3c = 0;
  piVar5[5] = iVar1;
  if (piVar7 != (int *)0x0) {
    do {
      if ((code *)piVar7[5] != (code *)0x0) {
        DAT_000bbb68 = piVar7;
        iVar1 = (*(code *)piVar7[5])(&local_38,&local_3c);
        DAT_000bbb68 = (int *)0x0;
        if (iVar1 != 0) {
          DAT_000bbb64 = piVar7[1];
        }
      }
      piVar7 = (int *)*piVar7;
    } while ((piVar7 != (int *)0x0) && (local_3c == 0));
  }
  iVar1 = DAT_000bbb64;
  if (DAT_000bbb64 != 0) {
    uVar2 = dcgettext(0,"%F%P: %s: plugin reported error claiming file\n",5);
    FUN_00031730(uVar2,iVar1);
  }
  if ((piVar5[6] != -1) && (iVar1 = bfd_plugin_target_p(param_1[1]), iVar1 == 0)) {
    close(piVar5[6]);
    piVar5[6] = -1;
  }
  if (local_3c == 0) {
    *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x20;
    bfd_close_all_done(iVar3);
    return 0;
  }
  param_1[0xc] = iVar3;
  *(byte *)(param_1 + 0xb) = *(byte *)(param_1 + 0xb) & 0xcf | 0x10;
  bfd_make_readable(iVar3);
  return *(undefined4 *)(iVar3 + 4);
}

