
ld_plugin_status add_symbols(void *handle,int nsyms,ld_plugin_symbol *syms)

{
  uint uVar1;
  long lVar2;
  undefined8 *puVar3;
  long *plVar4;
  char *pcVar5;
  void *__ptr;
  long lVar6;
  int iVar7;
  undefined8 *puVar8;
  plugin_input_file_t *input;
  undefined4 uVar9;
  
                    /* WARNING: Load size is inaccurate */
  lVar2 = *handle;
  if (called_plugin == (plugin_t *)0x0) {
    info_assert("../../ld/plugin.c",0x1ec);
  }
  puVar3 = (undefined8 *)xmalloc((long)nsyms << 3);
  if (0 < nsyms) {
    puVar8 = puVar3;
    do {
      plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);
      pcVar5 = syms->version;
      *puVar8 = plVar4;
      *plVar4 = lVar2;
      if (pcVar5 == (char *)0x0) {
        pcVar5 = syms->name;
      }
      else {
        pcVar5 = (char *)concat(syms->name,&DAT_00142269,pcVar5,0);
      }
      plVar4[1] = (long)pcVar5;
      plVar4[2] = 0;
      switch(syms->def) {
      case 0:
        pcVar5 = syms->comdat_key;
        uVar9 = 2;
        if (pcVar5 == (char *)0x0) goto LAB_00127b33;
LAB_001279a3:
        __ptr = (void *)concat(".gnu.linkonce.t.",pcVar5,0);
        lVar6 = bfd_get_section_by_name(lVar2,__ptr);
        if (lVar6 != 0) {
          free(__ptr);
          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);
          goto LAB_001279ea;
        }
        lVar6 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);
        if (lVar6 == 0) {
switchD_00127984_caseD_5:
          return LDPS_ERR;
        }
        break;
      case 1:
        pcVar5 = syms->comdat_key;
        uVar9 = 0x82;
        if (pcVar5 != (char *)0x0) goto LAB_001279a3;
LAB_00127b33:
        lVar6 = bfd_get_section_by_name(lVar2,".text");
        break;
      case 2:
        uVar9 = 0;
        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);
        lVar6 = 0x170b38;
        goto LAB_001279ea;
      case 3:
        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);
        *(undefined4 *)(plVar4 + 3) = 0x80;
        plVar4[4] = 0x170b38;
        if (iVar7 != 5) goto LAB_001279fd;
        goto LAB_00127a97;
      case 4:
        plVar4[2] = syms->size;
        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {
          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;
          plVar4[6] = 1;
          *(undefined4 *)(plVar4 + 3) = 2;
          plVar4[4] = (long)_bfd_std_section;
          goto LAB_00127a97;
        }
        *(undefined4 *)(plVar4 + 3) = 2;
        plVar4[4] = (long)_bfd_std_section;
        goto LAB_001279fd;
      default:
        goto switchD_00127984_caseD_5;
      }
      iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);
LAB_001279ea:
      *(undefined4 *)(plVar4 + 3) = uVar9;
      plVar4[4] = lVar6;
      if (iVar7 == 5) {
LAB_00127a97:
        lVar6 = *plVar4;
        if (((lVar6 == 0) || (*(int *)(*(long *)(lVar6 + 8) + 8) != 5)) ||
           (*(long *)(lVar6 + 0xf8) == 0)) {
          lVar6 = plVar4[1];
          pcVar5 = (char *)dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);
          plVar4 = (long *)0x0;
          einfo(pcVar5,lVar6);
          uVar1 = syms->visibility;
        }
        else {
          uVar1 = syms->visibility;
        }
        if (3 < uVar1) {
          pcVar5 = (char *)dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);
          einfo(pcVar5,(ulong)uVar1);
          return LDPS_ERR;
        }
        *(byte *)((long)plVar4 + 0x49) =
             *(byte *)((long)plVar4 + 0x49) & 0xfc | *(byte *)((long)&CSWTCH_58 + (ulong)uVar1);
      }
LAB_001279fd:
      puVar8 = puVar8 + 1;
      syms = syms + 1;
    } while (puVar8 != puVar3 + (ulong)(nsyms - 1) + 1);
  }
  bfd_set_symtab(lVar2,puVar3,nsyms);
  return LDPS_OK;
}



undefined8 FUN_001278c0(long *param_1,int param_2,long *param_3)

{
  uint uVar1;
  long lVar2;
  undefined8 *puVar3;
  long *plVar4;
  long lVar5;
  void *__ptr;
  undefined8 uVar6;
  int iVar7;
  undefined8 *puVar8;
  undefined4 uVar9;
  
  lVar2 = *param_1;
  if (DAT_00171670 == 0) {
    FUN_00125250("../../ld/plugin.c",0x1ec);
  }
  puVar3 = (undefined8 *)xmalloc((long)param_2 << 3);
  if (0 < param_2) {
    puVar8 = puVar3;
    do {
      plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);
      lVar5 = param_3[1];
      *puVar8 = plVar4;
      *plVar4 = lVar2;
      if (lVar5 == 0) {
        lVar5 = *param_3;
      }
      else {
        lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);
      }
      plVar4[1] = lVar5;
      plVar4[2] = 0;
      switch((int)param_3[2]) {
      case 0:
        lVar5 = param_3[4];
        uVar9 = 2;
        if (lVar5 == 0) goto LAB_00127b33;
LAB_001279a3:
        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);
        lVar5 = bfd_get_section_by_name(lVar2,__ptr);
        if (lVar5 != 0) {
          free(__ptr);
          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);
          goto LAB_001279ea;
        }
        lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);
        if (lVar5 == 0) {
switchD_00127984_caseD_5:
          return 3;
        }
        break;
      case 1:
        lVar5 = param_3[4];
        uVar9 = 0x82;
        if (lVar5 != 0) goto LAB_001279a3;
LAB_00127b33:
        lVar5 = bfd_get_section_by_name(lVar2,".text");
        break;
      case 2:
        uVar9 = 0;
        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);
        lVar5 = 0x170b38;
        goto LAB_001279ea;
      case 3:
        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);
        *(undefined4 *)(plVar4 + 3) = 0x80;
        plVar4[4] = 0x170b38;
        if (iVar7 != 5) goto LAB_001279fd;
        goto LAB_00127a97;
      case 4:
        plVar4[2] = param_3[3];
        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {
          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;
          plVar4[6] = 1;
          *(undefined4 *)(plVar4 + 3) = 2;
          plVar4[4] = (long)_bfd_std_section;
          goto LAB_00127a97;
        }
        *(undefined4 *)(plVar4 + 3) = 2;
        plVar4[4] = (long)_bfd_std_section;
        goto LAB_001279fd;
      default:
        goto switchD_00127984_caseD_5;
      }
      iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);
LAB_001279ea:
      *(undefined4 *)(plVar4 + 3) = uVar9;
      plVar4[4] = lVar5;
      if (iVar7 == 5) {
LAB_00127a97:
        lVar5 = *plVar4;
        if (((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||
           (*(long *)(lVar5 + 0xf8) == 0)) {
          lVar5 = plVar4[1];
          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);
          plVar4 = (long *)0x0;
          FUN_00125190(uVar6,lVar5);
          uVar1 = *(uint *)((long)param_3 + 0x14);
        }
        else {
          uVar1 = *(uint *)((long)param_3 + 0x14);
        }
        if (3 < uVar1) {
          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);
          FUN_00125190(uVar6,uVar1);
          return 3;
        }
        *(byte *)((long)plVar4 + 0x49) =
             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1];
      }
LAB_001279fd:
      puVar8 = puVar8 + 1;
      param_3 = param_3 + 6;
    } while (puVar8 != puVar3 + (ulong)(param_2 - 1) + 1);
  }
  bfd_set_symtab(lVar2,puVar3,param_2);
  return 0;
}


PUSH R15
PUSH R14
PUSH R13
MOV R13,RDX
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x38
CMP qword ptr [0x00171670],0x0
MOV R15,qword ptr [RDI]
MOV dword ptr [RSP + 0x24],ESI
JZ 0x00127c20
MOVSXD RDI,dword ptr [RSP + 0x24]
MOV RBX,RDI
SHL RDI,0x3
CALL 0x00109c00
MOV qword ptr [RSP + 0x28],RAX
TEST EBX,EBX
JLE 0x00127a10
MOV EAX,dword ptr [RSP + 0x24]
MOV RCX,qword ptr [RSP + 0x28]
LEA RBP,[0x142320]
SUB EAX,0x1
MOV RBX,RCX
LEA RAX,[RCX + RAX*0x8 + 0x8]
MOV qword ptr [RSP + 0x8],RAX
NOP dword ptr [RAX]
MOV RAX,qword ptr [R15 + 0x8]
MOV RDI,R15
CALL qword ptr [RAX + 0x200]
MOV RDX,qword ptr [R13 + 0x8]
MOV qword ptr [RBX],RAX
MOV R12,RAX
MOV qword ptr [RAX],R15
TEST RDX,RDX
JZ 0x00127b50
MOV RDI,qword ptr [R13]
XOR ECX,ECX
LEA RSI,[0x142269]
XOR EAX,EAX
CALL 0x00109400
CMP dword ptr [R13 + 0x10],0x4
MOV qword ptr [R12 + 0x8],RAX
MOV qword ptr [R12 + 0x10],0x0
JA 0x00127be0
MOV EAX,dword ptr [R13 + 0x10]
MOVSXD RAX,dword ptr [RBP + RAX*0x4]
ADD RAX,RBP
JMP RAX
MOV RSI,qword ptr [R13 + 0x20]
MOV R14D,0x2
TEST RSI,RSI
JZ 0x00127b33
XOR EDX,EDX
LEA RDI,[0x14226b]
XOR EAX,EAX
CALL 0x00109400
MOV RDI,R15
MOV RSI,RAX
MOV qword ptr [RSP + 0x10],RAX
CALL 0x001094d0
MOV R8,qword ptr [RSP + 0x10]
TEST RAX,RAX
MOV qword ptr [RSP + 0x18],RAX
JZ 0x00127bc0
MOV RDI,R8
CALL 0x00109bf0
MOV RDX,qword ptr [R15 + 0x8]
MOV RAX,qword ptr [RSP + 0x18]
MOV EDX,dword ptr [RDX + 0x8]
MOV dword ptr [R12 + 0x18],R14D
MOV qword ptr [R12 + 0x20],RAX
CMP EDX,0x5
JZ 0x00127a97
ADD RBX,0x8
ADD R13,0x30
CMP RBX,qword ptr [RSP + 0x8]
JNZ 0x00127928
MOV EDX,dword ptr [RSP + 0x24]
MOV RSI,qword ptr [RSP + 0x28]
MOV RDI,R15
CALL 0x001095f0
XOR EAX,EAX
ADD RSP,0x38
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RAX,qword ptr [R13 + 0x18]
MOV qword ptr [R12 + 0x10],RAX
MOV RAX,qword ptr [R15 + 0x8]
CMP dword ptr [RAX + 0x8],0x5
JZ 0x00127bf0
MOV dword ptr [R12 + 0x18],0x2
LEA RAX,[0x170a20]
MOV qword ptr [R12 + 0x20],RAX
JMP 0x001279fd
MOV RAX,qword ptr [R15 + 0x8]
MOV R14D,0x80
MOV EDX,dword ptr [RAX + 0x8]
LEA RAX,[0x170b38]
MOV dword ptr [R12 + 0x18],R14D
MOV qword ptr [R12 + 0x20],RAX
CMP EDX,0x5
JNZ 0x001279fd
MOV RAX,qword ptr [R12]
TEST RAX,RAX
JZ 0x00127aae
MOV RDX,qword ptr [RAX + 0x8]
CMP dword ptr [RDX + 0x8],0x5
JZ 0x00127b60
MOV R12,qword ptr [R12 + 0x8]
MOV EDX,0x5
LEA RSI,[0x142090]
XOR EDI,EDI
CALL 0x001092b0
MOV RDI,RAX
MOV RSI,R12
XOR EAX,EAX
XOR R12D,R12D
CALL 0x00125190
MOV ECX,dword ptr [R13 + 0x14]
CMP ECX,0x3
JA 0x00127b7b
MOVZX EAX,byte ptr [R12 + 0x49]
LEA RSI,[0x14239c]
AND EAX,0xfffffffc
OR AL,byte ptr [RSI + RCX*0x1]
MOV byte ptr [R12 + 0x49],AL
JMP 0x001279fd
MOV RAX,qword ptr [R15 + 0x8]
XOR R14D,R14D
MOV EDX,dword ptr [RAX + 0x8]
LEA RAX,[0x170b38]
JMP 0x001279ea
MOV RSI,qword ptr [R13 + 0x20]
MOV R14D,0x82
TEST RSI,RSI
JNZ 0x001279a3
LEA RSI,[0x164fcd]
MOV RDI,R15
CALL 0x001094d0
MOV RDX,qword ptr [R15 + 0x8]
MOV EDX,dword ptr [RDX + 0x8]
JMP 0x001279ea
MOV RAX,qword ptr [R13]
JMP 0x0012795f
CMP qword ptr [RAX + 0xf8],0x0
JZ 0x00127aae
MOV ECX,dword ptr [R13 + 0x14]
CMP ECX,0x3
JBE 0x00127ae3
MOV EDX,0x5
LEA RSI,[0x1420b8]
XOR EDI,EDI
MOV dword ptr [RSP + 0x8],ECX
CALL 0x001092b0
MOV ECX,dword ptr [RSP + 0x8]
MOV RDI,RAX
XOR EAX,EAX
MOV ESI,ECX
CALL 0x00125190
ADD RSP,0x38
MOV EAX,0x3
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV EDX,0x22811b
MOV RSI,R8
MOV RDI,R15
CALL 0x00109200
TEST RAX,RAX
JNZ 0x00127b42
NOP dword ptr [RAX]
MOV EAX,0x3
JMP 0x00127a23
MOV dword ptr [R12 + 0x4c],0xfffffff2
LEA RAX,[0x170a20]
MOV qword ptr [R12 + 0x30],0x1
MOV dword ptr [R12 + 0x18],0x2
MOV qword ptr [R12 + 0x20],RAX
JMP 0x00127a97
MOV ESI,0x1ec
LEA RDI,[0x142257]
CALL 0x00125250
JMP 0x001278e6
(translation_unit "undefined8 FUN_001278c0(long *param_1,int param_2,long *param_3)\n\n{\n  uint uVar1;\n  long lVar2;\n  undefined8 *puVar3;\n  long *plVar4;\n  long lVar5;\n  void *__ptr;\n  undefined8 uVar6;\n  int iVar7;\n  undefined8 *puVar8;\n  undefined4 uVar9;\n  \n  lVar2 = *param_1;\n  if (DAT_00171670 == 0) {\n    FUN_00125250("../../ld/plugin.c",0x1ec);\n  }\n  puVar3 = (undefined8 *)xmalloc((long)param_2 << 3);\n  if (0 < param_2) {\n    puVar8 = puVar3;\n    do {\n      plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);\n      lVar5 = param_3[1];\n      *puVar8 = plVar4;\n      *plVar4 = lVar2;\n      if (lVar5 == 0) {\n        lVar5 = *param_3;\n      }\n      else {\n        lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);\n      }\n      plVar4[1] = lVar5;\n      plVar4[2] = 0;\n      switch((int)param_3[2]) {\n      case 0:\n        lVar5 = param_3[4];\n        uVar9 = 2;\n        if (lVar5 == 0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);\n        lVar5 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }\n        break;\n      case 1:\n        lVar5 = param_3[4];\n        uVar9 = 0x82;\n        if (lVar5 != 0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar5 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = param_3[3];\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }\n      iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\nLAB_001279ea:\n      *(undefined4 *)(plVar4 + 3) = uVar9;\n      plVar4[4] = lVar5;\n      if (iVar7 == 5) {\nLAB_00127a97:\n        lVar5 = *plVar4;\n        if (((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)) {\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        if (3 < uVar1) {\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1];\n      }\nLAB_001279fd:\n      puVar8 = puVar8 + 1;\n      param_3 = param_3 + 6;\n    } while (puVar8 != puVar3 + (ulong)(param_2 - 1) + 1);\n  }\n  bfd_set_symtab(lVar2,puVar3,param_2);\n  return 0;\n}\n\n" (function_definition "undefined8 FUN_001278c0(long *param_1,int param_2,long *param_3)\n\n{\n  uint uVar1;\n  long lVar2;\n  undefined8 *puVar3;\n  long *plVar4;\n  long lVar5;\n  void *__ptr;\n  undefined8 uVar6;\n  int iVar7;\n  undefined8 *puVar8;\n  undefined4 uVar9;\n  \n  lVar2 = *param_1;\n  if (DAT_00171670 == 0) {\n    FUN_00125250("../../ld/plugin.c",0x1ec);\n  }\n  puVar3 = (undefined8 *)xmalloc((long)param_2 << 3);\n  if (0 < param_2) {\n    puVar8 = puVar3;\n    do {\n      plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);\n      lVar5 = param_3[1];\n      *puVar8 = plVar4;\n      *plVar4 = lVar2;\n      if (lVar5 == 0) {\n        lVar5 = *param_3;\n      }\n      else {\n        lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);\n      }\n      plVar4[1] = lVar5;\n      plVar4[2] = 0;\n      switch((int)param_3[2]) {\n      case 0:\n        lVar5 = param_3[4];\n        uVar9 = 2;\n        if (lVar5 == 0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);\n        lVar5 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }\n        break;\n      case 1:\n        lVar5 = param_3[4];\n        uVar9 = 0x82;\n        if (lVar5 != 0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar5 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = param_3[3];\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }\n      iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\nLAB_001279ea:\n      *(undefined4 *)(plVar4 + 3) = uVar9;\n      plVar4[4] = lVar5;\n      if (iVar7 == 5) {\nLAB_00127a97:\n        lVar5 = *plVar4;\n        if (((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)) {\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        if (3 < uVar1) {\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1];\n      }\nLAB_001279fd:\n      puVar8 = puVar8 + 1;\n      param_3 = param_3 + 6;\n    } while (puVar8 != puVar3 + (ulong)(param_2 - 1) + 1);\n  }\n  bfd_set_symtab(lVar2,puVar3,param_2);\n  return 0;\n}" type_identifier (function_declarator "FUN_001278c0(long *param_1,int param_2,long *param_3)" identifier (parameter_list "(long *param_1,int param_2,long *param_3)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "long *param_3" (sized_type_specifier "long" long) (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  long lVar2;\n  undefined8 *puVar3;\n  long *plVar4;\n  long lVar5;\n  void *__ptr;\n  undefined8 uVar6;\n  int iVar7;\n  undefined8 *puVar8;\n  undefined4 uVar9;\n  \n  lVar2 = *param_1;\n  if (DAT_00171670 == 0) {\n    FUN_00125250("../../ld/plugin.c",0x1ec);\n  }\n  puVar3 = (undefined8 *)xmalloc((long)param_2 << 3);\n  if (0 < param_2) {\n    puVar8 = puVar3;\n    do {\n      plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);\n      lVar5 = param_3[1];\n      *puVar8 = plVar4;\n      *plVar4 = lVar2;\n      if (lVar5 == 0) {\n        lVar5 = *param_3;\n      }\n      else {\n        lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);\n      }\n      plVar4[1] = lVar5;\n      plVar4[2] = 0;\n      switch((int)param_3[2]) {\n      case 0:\n        lVar5 = param_3[4];\n        uVar9 = 2;\n        if (lVar5 == 0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);\n        lVar5 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }\n        break;\n      case 1:\n        lVar5 = param_3[4];\n        uVar9 = 0x82;\n        if (lVar5 != 0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar5 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = param_3[3];\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }\n      iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\nLAB_001279ea:\n      *(undefined4 *)(plVar4 + 3) = uVar9;\n      plVar4[4] = lVar5;\n      if (iVar7 == 5) {\nLAB_00127a97:\n        lVar5 = *plVar4;\n        if (((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)) {\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        if (3 < uVar1) {\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1];\n      }\nLAB_001279fd:\n      puVar8 = puVar8 + 1;\n      param_3 = param_3 + 6;\n    } while (puVar8 != puVar3 + (ulong)(param_2 - 1) + 1);\n  }\n  bfd_set_symtab(lVar2,puVar3,param_2);\n  return 0;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined8 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (expression_statement "lVar2 = *param_1;" (assignment_expression "lVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (DAT_00171670 == 0) {\n    FUN_00125250("../../ld/plugin.c",0x1ec);\n  }" if (parenthesized_expression "(DAT_00171670 == 0)" ( (binary_expression "DAT_00171670 == 0" identifier == number_literal) )) (compound_statement "{\n    FUN_00125250("../../ld/plugin.c",0x1ec);\n  }" { (expression_statement "FUN_00125250("../../ld/plugin.c",0x1ec);" (call_expression "FUN_00125250("../../ld/plugin.c",0x1ec)" identifier (argument_list "("../../ld/plugin.c",0x1ec)" ( (string_literal ""../../ld/plugin.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "puVar3 = (undefined8 *)xmalloc((long)param_2 << 3);" (assignment_expression "puVar3 = (undefined8 *)xmalloc((long)param_2 << 3)" identifier = (cast_expression "(undefined8 *)xmalloc((long)param_2 << 3)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc((long)param_2 << 3)" identifier (argument_list "((long)param_2 << 3)" ( (binary_expression "(long)param_2 << 3" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) << number_literal) ))))) ;) (if_statement "if (0 < param_2) {\n    puVar8 = puVar3;\n    do {\n      plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);\n      lVar5 = param_3[1];\n      *puVar8 = plVar4;\n      *plVar4 = lVar2;\n      if (lVar5 == 0) {\n        lVar5 = *param_3;\n      }\n      else {\n        lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);\n      }\n      plVar4[1] = lVar5;\n      plVar4[2] = 0;\n      switch((int)param_3[2]) {\n      case 0:\n        lVar5 = param_3[4];\n        uVar9 = 2;\n        if (lVar5 == 0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);\n        lVar5 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }\n        break;\n      case 1:\n        lVar5 = param_3[4];\n        uVar9 = 0x82;\n        if (lVar5 != 0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar5 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = param_3[3];\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }\n      iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\nLAB_001279ea:\n      *(undefined4 *)(plVar4 + 3) = uVar9;\n      plVar4[4] = lVar5;\n      if (iVar7 == 5) {\nLAB_00127a97:\n        lVar5 = *plVar4;\n        if (((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)) {\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        if (3 < uVar1) {\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1];\n      }\nLAB_001279fd:\n      puVar8 = puVar8 + 1;\n      param_3 = param_3 + 6;\n    } while (puVar8 != puVar3 + (ulong)(param_2 - 1) + 1);\n  }" if (parenthesized_expression "(0 < param_2)" ( (binary_expression "0 < param_2" number_literal < identifier) )) (compound_statement "{\n    puVar8 = puVar3;\n    do {\n      plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);\n      lVar5 = param_3[1];\n      *puVar8 = plVar4;\n      *plVar4 = lVar2;\n      if (lVar5 == 0) {\n        lVar5 = *param_3;\n      }\n      else {\n        lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);\n      }\n      plVar4[1] = lVar5;\n      plVar4[2] = 0;\n      switch((int)param_3[2]) {\n      case 0:\n        lVar5 = param_3[4];\n        uVar9 = 2;\n        if (lVar5 == 0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);\n        lVar5 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }\n        break;\n      case 1:\n        lVar5 = param_3[4];\n        uVar9 = 0x82;\n        if (lVar5 != 0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar5 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = param_3[3];\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }\n      iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\nLAB_001279ea:\n      *(undefined4 *)(plVar4 + 3) = uVar9;\n      plVar4[4] = lVar5;\n      if (iVar7 == 5) {\nLAB_00127a97:\n        lVar5 = *plVar4;\n        if (((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)) {\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        if (3 < uVar1) {\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1];\n      }\nLAB_001279fd:\n      puVar8 = puVar8 + 1;\n      param_3 = param_3 + 6;\n    } while (puVar8 != puVar3 + (ulong)(param_2 - 1) + 1);\n  }" { (expression_statement "puVar8 = puVar3;" (assignment_expression "puVar8 = puVar3" identifier = identifier) ;) (do_statement "do {\n      plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);\n      lVar5 = param_3[1];\n      *puVar8 = plVar4;\n      *plVar4 = lVar2;\n      if (lVar5 == 0) {\n        lVar5 = *param_3;\n      }\n      else {\n        lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);\n      }\n      plVar4[1] = lVar5;\n      plVar4[2] = 0;\n      switch((int)param_3[2]) {\n      case 0:\n        lVar5 = param_3[4];\n        uVar9 = 2;\n        if (lVar5 == 0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);\n        lVar5 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }\n        break;\n      case 1:\n        lVar5 = param_3[4];\n        uVar9 = 0x82;\n        if (lVar5 != 0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar5 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = param_3[3];\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }\n      iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\nLAB_001279ea:\n      *(undefined4 *)(plVar4 + 3) = uVar9;\n      plVar4[4] = lVar5;\n      if (iVar7 == 5) {\nLAB_00127a97:\n        lVar5 = *plVar4;\n        if (((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)) {\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        if (3 < uVar1) {\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1];\n      }\nLAB_001279fd:\n      puVar8 = puVar8 + 1;\n      param_3 = param_3 + 6;\n    } while (puVar8 != puVar3 + (ulong)(param_2 - 1) + 1);" do (compound_statement "{\n      plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);\n      lVar5 = param_3[1];\n      *puVar8 = plVar4;\n      *plVar4 = lVar2;\n      if (lVar5 == 0) {\n        lVar5 = *param_3;\n      }\n      else {\n        lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);\n      }\n      plVar4[1] = lVar5;\n      plVar4[2] = 0;\n      switch((int)param_3[2]) {\n      case 0:\n        lVar5 = param_3[4];\n        uVar9 = 2;\n        if (lVar5 == 0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);\n        lVar5 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }\n        break;\n      case 1:\n        lVar5 = param_3[4];\n        uVar9 = 0x82;\n        if (lVar5 != 0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar5 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = param_3[3];\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }\n      iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\nLAB_001279ea:\n      *(undefined4 *)(plVar4 + 3) = uVar9;\n      plVar4[4] = lVar5;\n      if (iVar7 == 5) {\nLAB_00127a97:\n        lVar5 = *plVar4;\n        if (((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)) {\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        if (3 < uVar1) {\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1];\n      }\nLAB_001279fd:\n      puVar8 = puVar8 + 1;\n      param_3 = param_3 + 6;\n    }" { (expression_statement "plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);" (assignment_expression "plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2)" identifier = (cast_expression "(long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2)" (parenthesized_expression "(**(code **)(*(long *)(lVar2 + 8) + 0x200))" ( (pointer_expression "**(code **)(*(long *)(lVar2 + 8) + 0x200)" * (pointer_expression "*(code **)(*(long *)(lVar2 + 8) + 0x200)" * (cast_expression "(code **)(*(long *)(lVar2 + 8) + 0x200)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(lVar2 + 8) + 0x200)" ( (binary_expression "*(long *)(lVar2 + 8) + 0x200" (pointer_expression "*(long *)(lVar2 + 8)" * (cast_expression "(long *)(lVar2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(lVar2)" ( identifier ))))) ;) (expression_statement "lVar5 = param_3[1];" (assignment_expression "lVar5 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (expression_statement "*puVar8 = plVar4;" (assignment_expression "*puVar8 = plVar4" (pointer_expression "*puVar8" * identifier) = identifier) ;) (expression_statement "*plVar4 = lVar2;" (assignment_expression "*plVar4 = lVar2" (pointer_expression "*plVar4" * identifier) = identifier) ;) (if_statement "if (lVar5 == 0) {\n        lVar5 = *param_3;\n      }\n      else {\n        lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);\n      }" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        lVar5 = *param_3;\n      }" { (expression_statement "lVar5 = *param_3;" (assignment_expression "lVar5 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) }) (else_clause "else {\n        lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);\n      }" else (compound_statement "{\n        lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);\n      }" { (expression_statement "lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);" (assignment_expression "lVar5 = concat(*param_3,&DAT_00142269,lVar5,0)" identifier = (call_expression "concat(*param_3,&DAT_00142269,lVar5,0)" identifier (argument_list "(*param_3,&DAT_00142269,lVar5,0)" ( (pointer_expression "*param_3" * identifier) , (pointer_expression "&DAT_00142269" & identifier) , identifier , number_literal )))) ;) }))) (expression_statement "plVar4[1] = lVar5;" (assignment_expression "plVar4[1] = lVar5" (subscript_expression "plVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar4[2] = 0;" (assignment_expression "plVar4[2] = 0" (subscript_expression "plVar4[2]" identifier [ number_literal ]) = number_literal) ;) (switch_statement "switch((int)param_3[2]) {\n      case 0:\n        lVar5 = param_3[4];\n        uVar9 = 2;\n        if (lVar5 == 0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);\n        lVar5 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }\n        break;\n      case 1:\n        lVar5 = param_3[4];\n        uVar9 = 0x82;\n        if (lVar5 != 0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar5 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = param_3[3];\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }" switch (parenthesized_expression "((int)param_3[2])" ( (cast_expression "(int)param_3[2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_3[2]" identifier [ number_literal ])) )) (compound_statement "{\n      case 0:\n        lVar5 = param_3[4];\n        uVar9 = 2;\n        if (lVar5 == 0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);\n        lVar5 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }\n        break;\n      case 1:\n        lVar5 = param_3[4];\n        uVar9 = 0x82;\n        if (lVar5 != 0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar5 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = param_3[3];\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }" { (case_statement "case 0:\n        lVar5 = param_3[4];\n        uVar9 = 2;\n        if (lVar5 == 0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);\n        lVar5 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }\n        break;" case number_literal : (expression_statement "lVar5 = param_3[4];" (assignment_expression "lVar5 = param_3[4]" identifier = (subscript_expression "param_3[4]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = 2;" (assignment_expression "uVar9 = 2" identifier = number_literal) ;) (if_statement "if (lVar5 == 0) goto LAB_00127b33;" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00127b33;" goto statement_identifier ;)) (labeled_statement "LAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);" statement_identifier : (expression_statement "__ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);" (assignment_expression "__ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0)" identifier = (cast_expression "(void *)concat(".gnu.linkonce.t.",lVar5,0)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "concat(".gnu.linkonce.t.",lVar5,0)" identifier (argument_list "(".gnu.linkonce.t.",lVar5,0)" ( (string_literal "".gnu.linkonce.t."" " string_content ") , identifier , number_literal ))))) ;)) (expression_statement "lVar5 = bfd_get_section_by_name(lVar2,__ptr);" (assignment_expression "lVar5 = bfd_get_section_by_name(lVar2,__ptr)" identifier = (call_expression "bfd_get_section_by_name(lVar2,__ptr)" identifier (argument_list "(lVar2,__ptr)" ( identifier , identifier )))) ;) (if_statement "if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }" if (parenthesized_expression "(lVar5 != 0)" ( (binary_expression "lVar5 != 0" identifier != number_literal) )) (compound_statement "{\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }" { (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (expression_statement "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);" (assignment_expression "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8)" identifier = (pointer_expression "*(int *)(*(long *)(lVar2 + 8) + 8)" * (cast_expression "(int *)(*(long *)(lVar2 + 8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar2 + 8) + 8)" ( (binary_expression "*(long *)(lVar2 + 8) + 8" (pointer_expression "*(long *)(lVar2 + 8)" * (cast_expression "(long *)(lVar2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (goto_statement "goto LAB_001279ea;" goto statement_identifier ;) })) (expression_statement "lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);" (assignment_expression "lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b)" identifier = (call_expression "bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b)" identifier (argument_list "(lVar2,__ptr,0x22811b)" ( identifier , identifier , number_literal )))) ;) (if_statement "if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (compound_statement "{\nswitchD_00127984_caseD_5:\n          return 3;\n        }" { (labeled_statement "switchD_00127984_caseD_5:\n          return 3;" statement_identifier : (return_statement "return 3;" return number_literal ;)) })) (break_statement "break;" break ;)) (case_statement "case 1:\n        lVar5 = param_3[4];\n        uVar9 = 0x82;\n        if (lVar5 != 0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");\n        break;" case number_literal : (expression_statement "lVar5 = param_3[4];" (assignment_expression "lVar5 = param_3[4]" identifier = (subscript_expression "param_3[4]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = 0x82;" (assignment_expression "uVar9 = 0x82" identifier = number_literal) ;) (if_statement "if (lVar5 != 0) goto LAB_001279a3;" if (parenthesized_expression "(lVar5 != 0)" ( (binary_expression "lVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001279a3;" goto statement_identifier ;)) (labeled_statement "LAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");" statement_identifier : (expression_statement "lVar5 = bfd_get_section_by_name(lVar2,".text");" (assignment_expression "lVar5 = bfd_get_section_by_name(lVar2,".text")" identifier = (call_expression "bfd_get_section_by_name(lVar2,".text")" identifier (argument_list "(lVar2,".text")" ( identifier , (string_literal "".text"" " string_content ") )))) ;)) (break_statement "break;" break ;)) (case_statement "case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar5 = 0x170b38;\n        goto LAB_001279ea;" case number_literal : (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (expression_statement "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);" (assignment_expression "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8)" identifier = (pointer_expression "*(int *)(*(long *)(lVar2 + 8) + 8)" * (cast_expression "(int *)(*(long *)(lVar2 + 8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar2 + 8) + 8)" ( (binary_expression "*(long *)(lVar2 + 8) + 8" (pointer_expression "*(long *)(lVar2 + 8)" * (cast_expression "(long *)(lVar2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "lVar5 = 0x170b38;" (assignment_expression "lVar5 = 0x170b38" identifier = number_literal) ;) (goto_statement "goto LAB_001279ea;" goto statement_identifier ;)) (case_statement "case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;" case number_literal : (expression_statement "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);" (assignment_expression "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8)" identifier = (pointer_expression "*(int *)(*(long *)(lVar2 + 8) + 8)" * (cast_expression "(int *)(*(long *)(lVar2 + 8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar2 + 8) + 8)" ( (binary_expression "*(long *)(lVar2 + 8) + 8" (pointer_expression "*(long *)(lVar2 + 8)" * (cast_expression "(long *)(lVar2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(plVar4 + 3) = 0x80;" (assignment_expression "*(undefined4 *)(plVar4 + 3) = 0x80" (pointer_expression "*(undefined4 *)(plVar4 + 3)" * (cast_expression "(undefined4 *)(plVar4 + 3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4 + 3)" ( (binary_expression "plVar4 + 3" identifier + number_literal) )))) = number_literal) ;) (expression_statement "plVar4[4] = 0x170b38;" (assignment_expression "plVar4[4] = 0x170b38" (subscript_expression "plVar4[4]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (iVar7 != 5) goto LAB_001279fd;" if (parenthesized_expression "(iVar7 != 5)" ( (binary_expression "iVar7 != 5" identifier != number_literal) )) (goto_statement "goto LAB_001279fd;" goto statement_identifier ;)) (goto_statement "goto LAB_00127a97;" goto statement_identifier ;)) (case_statement "case 4:\n        plVar4[2] = param_3[3];\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;" case number_literal : (expression_statement "plVar4[2] = param_3[3];" (assignment_expression "plVar4[2] = param_3[3]" (subscript_expression "plVar4[2]" identifier [ number_literal ]) = (subscript_expression "param_3[3]" identifier [ number_literal ])) ;) (if_statement "if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }" if (parenthesized_expression "(*(int *)(*(long *)(lVar2 + 8) + 8) == 5)" ( (binary_expression "*(int *)(*(long *)(lVar2 + 8) + 8) == 5" (pointer_expression "*(int *)(*(long *)(lVar2 + 8) + 8)" * (cast_expression "(int *)(*(long *)(lVar2 + 8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar2 + 8) + 8)" ( (binary_expression "*(long *)(lVar2 + 8) + 8" (pointer_expression "*(long *)(lVar2 + 8)" * (cast_expression "(long *)(lVar2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) )))) + number_literal) )))) == number_literal) )) (compound_statement "{\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }" { (expression_statement "*(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;" (assignment_expression "*(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2" (pointer_expression "*(undefined4 *)((long)plVar4 + 0x4c)" * (cast_expression "(undefined4 *)((long)plVar4 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar4 + 0x4c)" ( (binary_expression "(long)plVar4 + 0x4c" (cast_expression "(long)plVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "plVar4[6] = 1;" (assignment_expression "plVar4[6] = 1" (subscript_expression "plVar4[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(plVar4 + 3) = 2;" (assignment_expression "*(undefined4 *)(plVar4 + 3) = 2" (pointer_expression "*(undefined4 *)(plVar4 + 3)" * (cast_expression "(undefined4 *)(plVar4 + 3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4 + 3)" ( (binary_expression "plVar4 + 3" identifier + number_literal) )))) = number_literal) ;) (expression_statement "plVar4[4] = (long)_bfd_std_section;" (assignment_expression "plVar4[4] = (long)_bfd_std_section" (subscript_expression "plVar4[4]" identifier [ number_literal ]) = (cast_expression "(long)_bfd_std_section" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (goto_statement "goto LAB_00127a97;" goto statement_identifier ;) })) (expression_statement "*(undefined4 *)(plVar4 + 3) = 2;" (assignment_expression "*(undefined4 *)(plVar4 + 3) = 2" (pointer_expression "*(undefined4 *)(plVar4 + 3)" * (cast_expression "(undefined4 *)(plVar4 + 3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4 + 3)" ( (binary_expression "plVar4 + 3" identifier + number_literal) )))) = number_literal) ;) (expression_statement "plVar4[4] = (long)_bfd_std_section;" (assignment_expression "plVar4[4] = (long)_bfd_std_section" (subscript_expression "plVar4[4]" identifier [ number_literal ]) = (cast_expression "(long)_bfd_std_section" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (goto_statement "goto LAB_001279fd;" goto statement_identifier ;)) (case_statement "default:\n        goto switchD_00127984_caseD_5;" default : (goto_statement "goto switchD_00127984_caseD_5;" goto statement_identifier ;)) })) (expression_statement "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);" (assignment_expression "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8)" identifier = (pointer_expression "*(int *)(*(long *)(lVar2 + 8) + 8)" * (cast_expression "(int *)(*(long *)(lVar2 + 8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar2 + 8) + 8)" ( (binary_expression "*(long *)(lVar2 + 8) + 8" (pointer_expression "*(long *)(lVar2 + 8)" * (cast_expression "(long *)(lVar2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (labeled_statement "LAB_001279ea:\n      *(undefined4 *)(plVar4 + 3) = uVar9;" statement_identifier : (expression_statement "*(undefined4 *)(plVar4 + 3) = uVar9;" (assignment_expression "*(undefined4 *)(plVar4 + 3) = uVar9" (pointer_expression "*(undefined4 *)(plVar4 + 3)" * (cast_expression "(undefined4 *)(plVar4 + 3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4 + 3)" ( (binary_expression "plVar4 + 3" identifier + number_literal) )))) = identifier) ;)) (expression_statement "plVar4[4] = lVar5;" (assignment_expression "plVar4[4] = lVar5" (subscript_expression "plVar4[4]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar7 == 5) {\nLAB_00127a97:\n        lVar5 = *plVar4;\n        if (((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)) {\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        if (3 < uVar1) {\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1];\n      }" if (parenthesized_expression "(iVar7 == 5)" ( (binary_expression "iVar7 == 5" identifier == number_literal) )) (compound_statement "{\nLAB_00127a97:\n        lVar5 = *plVar4;\n        if (((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)) {\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        if (3 < uVar1) {\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1];\n      }" { (labeled_statement "LAB_00127a97:\n        lVar5 = *plVar4;" statement_identifier : (expression_statement "lVar5 = *plVar4;" (assignment_expression "lVar5 = *plVar4" identifier = (pointer_expression "*plVar4" * identifier)) ;)) (if_statement "if (((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)) {\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }" if (parenthesized_expression "(((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0))" ( (binary_expression "((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)" (parenthesized_expression "((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5))" ( (binary_expression "(lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)" (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) || (parenthesized_expression "(*(int *)(*(long *)(lVar5 + 8) + 8) != 5)" ( (binary_expression "*(int *)(*(long *)(lVar5 + 8) + 8) != 5" (pointer_expression "*(int *)(*(long *)(lVar5 + 8) + 8)" * (cast_expression "(int *)(*(long *)(lVar5 + 8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar5 + 8) + 8)" ( (binary_expression "*(long *)(lVar5 + 8) + 8" (pointer_expression "*(long *)(lVar5 + 8)" * (cast_expression "(long *)(lVar5 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 8)" ( (binary_expression "lVar5 + 8" identifier + number_literal) )))) + number_literal) )))) != number_literal) ))) )) || (parenthesized_expression "(*(long *)(lVar5 + 0xf8) == 0)" ( (binary_expression "*(long *)(lVar5 + 0xf8) == 0" (pointer_expression "*(long *)(lVar5 + 0xf8)" * (cast_expression "(long *)(lVar5 + 0xf8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0xf8)" ( (binary_expression "lVar5 + 0xf8" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }" { (expression_statement "lVar5 = plVar4[1];" (assignment_expression "lVar5 = plVar4[1]" identifier = (subscript_expression "plVar4[1]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);" (assignment_expression "uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5)" identifier = (call_expression "dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5)" identifier (argument_list "(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5)" ( number_literal , (string_literal ""%F%P: %s: non-ELF symbol in ELF BFD!\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "plVar4 = (long *)0x0;" (assignment_expression "plVar4 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "FUN_00125190(uVar6,lVar5);" (call_expression "FUN_00125190(uVar6,lVar5)" identifier (argument_list "(uVar6,lVar5)" ( identifier , identifier ))) ;) (expression_statement "uVar1 = *(uint *)((long)param_3 + 0x14);" (assignment_expression "uVar1 = *(uint *)((long)param_3 + 0x14)" identifier = (pointer_expression "*(uint *)((long)param_3 + 0x14)" * (cast_expression "(uint *)((long)param_3 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_3 + 0x14)" ( (binary_expression "(long)param_3 + 0x14" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) }) (else_clause "else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }" else (compound_statement "{\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }" { (expression_statement "uVar1 = *(uint *)((long)param_3 + 0x14);" (assignment_expression "uVar1 = *(uint *)((long)param_3 + 0x14)" identifier = (pointer_expression "*(uint *)((long)param_3 + 0x14)" * (cast_expression "(uint *)((long)param_3 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_3 + 0x14)" ( (binary_expression "(long)param_3 + 0x14" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) }))) (if_statement "if (3 < uVar1) {\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }" if (parenthesized_expression "(3 < uVar1)" ( (binary_expression "3 < uVar1" number_literal < identifier) )) (compound_statement "{\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }" { (expression_statement "uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);" (assignment_expression "uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5)" identifier = (call_expression "dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5)" identifier (argument_list "(0,"%F%P: unknown ELF symbol visibility: %d!\n",5)" ( number_literal , (string_literal ""%F%P: unknown ELF symbol visibility: %d!\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00125190(uVar6,uVar1);" (call_expression "FUN_00125190(uVar6,uVar1)" identifier (argument_list "(uVar6,uVar1)" ( identifier , identifier ))) ;) (return_statement "return 3;" return number_literal ;) })) (expression_statement "*(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1];" (assignment_expression "*(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1]" (pointer_expression "*(byte *)((long)plVar4 + 0x49)" * (cast_expression "(byte *)((long)plVar4 + 0x49)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar4 + 0x49)" ( (binary_expression "(long)plVar4 + 0x49" (cast_expression "(long)plVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1]" (binary_expression "*(byte *)((long)plVar4 + 0x49) & 0xfc" (pointer_expression "*(byte *)((long)plVar4 + 0x49)" * (cast_expression "(byte *)((long)plVar4 + 0x49)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar4 + 0x49)" ( (binary_expression "(long)plVar4 + 0x49" (cast_expression "(long)plVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) | (subscript_expression "(&DAT_0014239c)[uVar1]" (parenthesized_expression "(&DAT_0014239c)" ( (pointer_expression "&DAT_0014239c" & identifier) )) [ identifier ]))) ;) })) (labeled_statement "LAB_001279fd:\n      puVar8 = puVar8 + 1;" statement_identifier : (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;)) (expression_statement "param_3 = param_3 + 6;" (assignment_expression "param_3 = param_3 + 6" identifier = (binary_expression "param_3 + 6" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar8 != puVar3 + (ulong)(param_2 - 1) + 1)" ( (binary_expression "puVar8 != puVar3 + (ulong)(param_2 - 1) + 1" identifier != (binary_expression "puVar3 + (ulong)(param_2 - 1) + 1" (binary_expression "puVar3 + (ulong)(param_2 - 1)" identifier + (call_expression "(ulong)(param_2 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_2 - 1)" ( (binary_expression "param_2 - 1" identifier - number_literal) )))) + number_literal)) )) ;) })) (expression_statement "bfd_set_symtab(lVar2,puVar3,param_2);" (call_expression "bfd_set_symtab(lVar2,puVar3,param_2)" identifier (argument_list "(lVar2,puVar3,param_2)" ( identifier , identifier , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "ld_plugin_status add_symbols(void *handle,int nsyms,ld_plugin_symbol *syms)\n\n{\n  uint uVar1;\n  long lVar2;\n  undefined8 *puVar3;\n  long *plVar4;\n  char *pcVar5;\n  void *__ptr;\n  long lVar6;\n  int iVar7;\n  undefined8 *puVar8;\n  plugin_input_file_t *input;\n  undefined4 uVar9;\n  \n                    /* WARNING: Load size is inaccurate */\n  lVar2 = *handle;\n  if (called_plugin == (plugin_t *)0x0) {\n    info_assert("../../ld/plugin.c",0x1ec);\n  }\n  puVar3 = (undefined8 *)xmalloc((long)nsyms << 3);\n  if (0 < nsyms) {\n    puVar8 = puVar3;\n    do {\n      plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);\n      pcVar5 = syms->version;\n      *puVar8 = plVar4;\n      *plVar4 = lVar2;\n      if (pcVar5 == (char *)0x0) {\n        pcVar5 = syms->name;\n      }\n      else {\n        pcVar5 = (char *)concat(syms->name,&DAT_00142269,pcVar5,0);\n      }\n      plVar4[1] = (long)pcVar5;\n      plVar4[2] = 0;\n      switch(syms->def) {\n      case 0:\n        pcVar5 = syms->comdat_key;\n        uVar9 = 2;\n        if (pcVar5 == (char *)0x0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",pcVar5,0);\n        lVar6 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar6 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar6 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar6 == 0) {\nswitchD_00127984_caseD_5:\n          return LDPS_ERR;\n        }\n        break;\n      case 1:\n        pcVar5 = syms->comdat_key;\n        uVar9 = 0x82;\n        if (pcVar5 != (char *)0x0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar6 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar6 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = syms->size;\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }\n      iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\nLAB_001279ea:\n      *(undefined4 *)(plVar4 + 3) = uVar9;\n      plVar4[4] = lVar6;\n      if (iVar7 == 5) {\nLAB_00127a97:\n        lVar6 = *plVar4;\n        if (((lVar6 == 0) || (*(int *)(*(long *)(lVar6 + 8) + 8) != 5)) ||\n           (*(long *)(lVar6 + 0xf8) == 0)) {\n          lVar6 = plVar4[1];\n          pcVar5 = (char *)dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          einfo(pcVar5,lVar6);\n          uVar1 = syms->visibility;\n        }\n        else {\n          uVar1 = syms->visibility;\n        }\n        if (3 < uVar1) {\n          pcVar5 = (char *)dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          einfo(pcVar5,(ulong)uVar1);\n          return LDPS_ERR;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | *(byte *)((long)&CSWTCH_58 + (ulong)uVar1);\n      }\nLAB_001279fd:\n      puVar8 = puVar8 + 1;\n      syms = syms + 1;\n    } while (puVar8 != puVar3 + (ulong)(nsyms - 1) + 1);\n  }\n  bfd_set_symtab(lVar2,puVar3,nsyms);\n  return LDPS_OK;\n}\n\n" (function_definition "ld_plugin_status add_symbols(void *handle,int nsyms,ld_plugin_symbol *syms)\n\n{\n  uint uVar1;\n  long lVar2;\n  undefined8 *puVar3;\n  long *plVar4;\n  char *pcVar5;\n  void *__ptr;\n  long lVar6;\n  int iVar7;\n  undefined8 *puVar8;\n  plugin_input_file_t *input;\n  undefined4 uVar9;\n  \n                    /* WARNING: Load size is inaccurate */\n  lVar2 = *handle;\n  if (called_plugin == (plugin_t *)0x0) {\n    info_assert("../../ld/plugin.c",0x1ec);\n  }\n  puVar3 = (undefined8 *)xmalloc((long)nsyms << 3);\n  if (0 < nsyms) {\n    puVar8 = puVar3;\n    do {\n      plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);\n      pcVar5 = syms->version;\n      *puVar8 = plVar4;\n      *plVar4 = lVar2;\n      if (pcVar5 == (char *)0x0) {\n        pcVar5 = syms->name;\n      }\n      else {\n        pcVar5 = (char *)concat(syms->name,&DAT_00142269,pcVar5,0);\n      }\n      plVar4[1] = (long)pcVar5;\n      plVar4[2] = 0;\n      switch(syms->def) {\n      case 0:\n        pcVar5 = syms->comdat_key;\n        uVar9 = 2;\n        if (pcVar5 == (char *)0x0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",pcVar5,0);\n        lVar6 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar6 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar6 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar6 == 0) {\nswitchD_00127984_caseD_5:\n          return LDPS_ERR;\n        }\n        break;\n      case 1:\n        pcVar5 = syms->comdat_key;\n        uVar9 = 0x82;\n        if (pcVar5 != (char *)0x0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar6 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar6 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = syms->size;\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }\n      iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\nLAB_001279ea:\n      *(undefined4 *)(plVar4 + 3) = uVar9;\n      plVar4[4] = lVar6;\n      if (iVar7 == 5) {\nLAB_00127a97:\n        lVar6 = *plVar4;\n        if (((lVar6 == 0) || (*(int *)(*(long *)(lVar6 + 8) + 8) != 5)) ||\n           (*(long *)(lVar6 + 0xf8) == 0)) {\n          lVar6 = plVar4[1];\n          pcVar5 = (char *)dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          einfo(pcVar5,lVar6);\n          uVar1 = syms->visibility;\n        }\n        else {\n          uVar1 = syms->visibility;\n        }\n        if (3 < uVar1) {\n          pcVar5 = (char *)dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          einfo(pcVar5,(ulong)uVar1);\n          return LDPS_ERR;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | *(byte *)((long)&CSWTCH_58 + (ulong)uVar1);\n      }\nLAB_001279fd:\n      puVar8 = puVar8 + 1;\n      syms = syms + 1;\n    } while (puVar8 != puVar3 + (ulong)(nsyms - 1) + 1);\n  }\n  bfd_set_symtab(lVar2,puVar3,nsyms);\n  return LDPS_OK;\n}" type_identifier (function_declarator "add_symbols(void *handle,int nsyms,ld_plugin_symbol *syms)" identifier (parameter_list "(void *handle,int nsyms,ld_plugin_symbol *syms)" ( (parameter_declaration "void *handle" primitive_type (pointer_declarator "*handle" * identifier)) , (parameter_declaration "int nsyms" primitive_type identifier) , (parameter_declaration "ld_plugin_symbol *syms" type_identifier (pointer_declarator "*syms" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  long lVar2;\n  undefined8 *puVar3;\n  long *plVar4;\n  char *pcVar5;\n  void *__ptr;\n  long lVar6;\n  int iVar7;\n  undefined8 *puVar8;\n  plugin_input_file_t *input;\n  undefined4 uVar9;\n  \n                    /* WARNING: Load size is inaccurate */\n  lVar2 = *handle;\n  if (called_plugin == (plugin_t *)0x0) {\n    info_assert("../../ld/plugin.c",0x1ec);\n  }\n  puVar3 = (undefined8 *)xmalloc((long)nsyms << 3);\n  if (0 < nsyms) {\n    puVar8 = puVar3;\n    do {\n      plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);\n      pcVar5 = syms->version;\n      *puVar8 = plVar4;\n      *plVar4 = lVar2;\n      if (pcVar5 == (char *)0x0) {\n        pcVar5 = syms->name;\n      }\n      else {\n        pcVar5 = (char *)concat(syms->name,&DAT_00142269,pcVar5,0);\n      }\n      plVar4[1] = (long)pcVar5;\n      plVar4[2] = 0;\n      switch(syms->def) {\n      case 0:\n        pcVar5 = syms->comdat_key;\n        uVar9 = 2;\n        if (pcVar5 == (char *)0x0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",pcVar5,0);\n        lVar6 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar6 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar6 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar6 == 0) {\nswitchD_00127984_caseD_5:\n          return LDPS_ERR;\n        }\n        break;\n      case 1:\n        pcVar5 = syms->comdat_key;\n        uVar9 = 0x82;\n        if (pcVar5 != (char *)0x0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar6 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar6 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = syms->size;\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }\n      iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\nLAB_001279ea:\n      *(undefined4 *)(plVar4 + 3) = uVar9;\n      plVar4[4] = lVar6;\n      if (iVar7 == 5) {\nLAB_00127a97:\n        lVar6 = *plVar4;\n        if (((lVar6 == 0) || (*(int *)(*(long *)(lVar6 + 8) + 8) != 5)) ||\n           (*(long *)(lVar6 + 0xf8) == 0)) {\n          lVar6 = plVar4[1];\n          pcVar5 = (char *)dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          einfo(pcVar5,lVar6);\n          uVar1 = syms->visibility;\n        }\n        else {\n          uVar1 = syms->visibility;\n        }\n        if (3 < uVar1) {\n          pcVar5 = (char *)dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          einfo(pcVar5,(ulong)uVar1);\n          return LDPS_ERR;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | *(byte *)((long)&CSWTCH_58 + (ulong)uVar1);\n      }\nLAB_001279fd:\n      puVar8 = puVar8 + 1;\n      syms = syms + 1;\n    } while (puVar8 != puVar3 + (ulong)(nsyms - 1) + 1);\n  }\n  bfd_set_symtab(lVar2,puVar3,nsyms);\n  return LDPS_OK;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined8 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "plugin_input_file_t *input;" type_identifier (pointer_declarator "*input" * identifier) ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) comment (expression_statement "lVar2 = *handle;" (assignment_expression "lVar2 = *handle" identifier = (pointer_expression "*handle" * identifier)) ;) (if_statement "if (called_plugin == (plugin_t *)0x0) {\n    info_assert("../../ld/plugin.c",0x1ec);\n  }" if (parenthesized_expression "(called_plugin == (plugin_t *)0x0)" ( (binary_expression "called_plugin == (plugin_t *)0x0" identifier == (cast_expression "(plugin_t *)0x0" ( (type_descriptor "plugin_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    info_assert("../../ld/plugin.c",0x1ec);\n  }" { (expression_statement "info_assert("../../ld/plugin.c",0x1ec);" (call_expression "info_assert("../../ld/plugin.c",0x1ec)" identifier (argument_list "("../../ld/plugin.c",0x1ec)" ( (string_literal ""../../ld/plugin.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "puVar3 = (undefined8 *)xmalloc((long)nsyms << 3);" (assignment_expression "puVar3 = (undefined8 *)xmalloc((long)nsyms << 3)" identifier = (cast_expression "(undefined8 *)xmalloc((long)nsyms << 3)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc((long)nsyms << 3)" identifier (argument_list "((long)nsyms << 3)" ( (binary_expression "(long)nsyms << 3" (cast_expression "(long)nsyms" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) << number_literal) ))))) ;) (if_statement "if (0 < nsyms) {\n    puVar8 = puVar3;\n    do {\n      plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);\n      pcVar5 = syms->version;\n      *puVar8 = plVar4;\n      *plVar4 = lVar2;\n      if (pcVar5 == (char *)0x0) {\n        pcVar5 = syms->name;\n      }\n      else {\n        pcVar5 = (char *)concat(syms->name,&DAT_00142269,pcVar5,0);\n      }\n      plVar4[1] = (long)pcVar5;\n      plVar4[2] = 0;\n      switch(syms->def) {\n      case 0:\n        pcVar5 = syms->comdat_key;\n        uVar9 = 2;\n        if (pcVar5 == (char *)0x0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",pcVar5,0);\n        lVar6 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar6 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar6 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar6 == 0) {\nswitchD_00127984_caseD_5:\n          return LDPS_ERR;\n        }\n        break;\n      case 1:\n        pcVar5 = syms->comdat_key;\n        uVar9 = 0x82;\n        if (pcVar5 != (char *)0x0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar6 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar6 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = syms->size;\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }\n      iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\nLAB_001279ea:\n      *(undefined4 *)(plVar4 + 3) = uVar9;\n      plVar4[4] = lVar6;\n      if (iVar7 == 5) {\nLAB_00127a97:\n        lVar6 = *plVar4;\n        if (((lVar6 == 0) || (*(int *)(*(long *)(lVar6 + 8) + 8) != 5)) ||\n           (*(long *)(lVar6 + 0xf8) == 0)) {\n          lVar6 = plVar4[1];\n          pcVar5 = (char *)dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          einfo(pcVar5,lVar6);\n          uVar1 = syms->visibility;\n        }\n        else {\n          uVar1 = syms->visibility;\n        }\n        if (3 < uVar1) {\n          pcVar5 = (char *)dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          einfo(pcVar5,(ulong)uVar1);\n          return LDPS_ERR;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | *(byte *)((long)&CSWTCH_58 + (ulong)uVar1);\n      }\nLAB_001279fd:\n      puVar8 = puVar8 + 1;\n      syms = syms + 1;\n    } while (puVar8 != puVar3 + (ulong)(nsyms - 1) + 1);\n  }" if (parenthesized_expression "(0 < nsyms)" ( (binary_expression "0 < nsyms" number_literal < identifier) )) (compound_statement "{\n    puVar8 = puVar3;\n    do {\n      plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);\n      pcVar5 = syms->version;\n      *puVar8 = plVar4;\n      *plVar4 = lVar2;\n      if (pcVar5 == (char *)0x0) {\n        pcVar5 = syms->name;\n      }\n      else {\n        pcVar5 = (char *)concat(syms->name,&DAT_00142269,pcVar5,0);\n      }\n      plVar4[1] = (long)pcVar5;\n      plVar4[2] = 0;\n      switch(syms->def) {\n      case 0:\n        pcVar5 = syms->comdat_key;\n        uVar9 = 2;\n        if (pcVar5 == (char *)0x0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",pcVar5,0);\n        lVar6 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar6 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar6 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar6 == 0) {\nswitchD_00127984_caseD_5:\n          return LDPS_ERR;\n        }\n        break;\n      case 1:\n        pcVar5 = syms->comdat_key;\n        uVar9 = 0x82;\n        if (pcVar5 != (char *)0x0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar6 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar6 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = syms->size;\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }\n      iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\nLAB_001279ea:\n      *(undefined4 *)(plVar4 + 3) = uVar9;\n      plVar4[4] = lVar6;\n      if (iVar7 == 5) {\nLAB_00127a97:\n        lVar6 = *plVar4;\n        if (((lVar6 == 0) || (*(int *)(*(long *)(lVar6 + 8) + 8) != 5)) ||\n           (*(long *)(lVar6 + 0xf8) == 0)) {\n          lVar6 = plVar4[1];\n          pcVar5 = (char *)dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          einfo(pcVar5,lVar6);\n          uVar1 = syms->visibility;\n        }\n        else {\n          uVar1 = syms->visibility;\n        }\n        if (3 < uVar1) {\n          pcVar5 = (char *)dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          einfo(pcVar5,(ulong)uVar1);\n          return LDPS_ERR;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | *(byte *)((long)&CSWTCH_58 + (ulong)uVar1);\n      }\nLAB_001279fd:\n      puVar8 = puVar8 + 1;\n      syms = syms + 1;\n    } while (puVar8 != puVar3 + (ulong)(nsyms - 1) + 1);\n  }" { (expression_statement "puVar8 = puVar3;" (assignment_expression "puVar8 = puVar3" identifier = identifier) ;) (do_statement "do {\n      plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);\n      pcVar5 = syms->version;\n      *puVar8 = plVar4;\n      *plVar4 = lVar2;\n      if (pcVar5 == (char *)0x0) {\n        pcVar5 = syms->name;\n      }\n      else {\n        pcVar5 = (char *)concat(syms->name,&DAT_00142269,pcVar5,0);\n      }\n      plVar4[1] = (long)pcVar5;\n      plVar4[2] = 0;\n      switch(syms->def) {\n      case 0:\n        pcVar5 = syms->comdat_key;\n        uVar9 = 2;\n        if (pcVar5 == (char *)0x0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",pcVar5,0);\n        lVar6 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar6 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar6 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar6 == 0) {\nswitchD_00127984_caseD_5:\n          return LDPS_ERR;\n        }\n        break;\n      case 1:\n        pcVar5 = syms->comdat_key;\n        uVar9 = 0x82;\n        if (pcVar5 != (char *)0x0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar6 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar6 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = syms->size;\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }\n      iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\nLAB_001279ea:\n      *(undefined4 *)(plVar4 + 3) = uVar9;\n      plVar4[4] = lVar6;\n      if (iVar7 == 5) {\nLAB_00127a97:\n        lVar6 = *plVar4;\n        if (((lVar6 == 0) || (*(int *)(*(long *)(lVar6 + 8) + 8) != 5)) ||\n           (*(long *)(lVar6 + 0xf8) == 0)) {\n          lVar6 = plVar4[1];\n          pcVar5 = (char *)dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          einfo(pcVar5,lVar6);\n          uVar1 = syms->visibility;\n        }\n        else {\n          uVar1 = syms->visibility;\n        }\n        if (3 < uVar1) {\n          pcVar5 = (char *)dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          einfo(pcVar5,(ulong)uVar1);\n          return LDPS_ERR;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | *(byte *)((long)&CSWTCH_58 + (ulong)uVar1);\n      }\nLAB_001279fd:\n      puVar8 = puVar8 + 1;\n      syms = syms + 1;\n    } while (puVar8 != puVar3 + (ulong)(nsyms - 1) + 1);" do (compound_statement "{\n      plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);\n      pcVar5 = syms->version;\n      *puVar8 = plVar4;\n      *plVar4 = lVar2;\n      if (pcVar5 == (char *)0x0) {\n        pcVar5 = syms->name;\n      }\n      else {\n        pcVar5 = (char *)concat(syms->name,&DAT_00142269,pcVar5,0);\n      }\n      plVar4[1] = (long)pcVar5;\n      plVar4[2] = 0;\n      switch(syms->def) {\n      case 0:\n        pcVar5 = syms->comdat_key;\n        uVar9 = 2;\n        if (pcVar5 == (char *)0x0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",pcVar5,0);\n        lVar6 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar6 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar6 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar6 == 0) {\nswitchD_00127984_caseD_5:\n          return LDPS_ERR;\n        }\n        break;\n      case 1:\n        pcVar5 = syms->comdat_key;\n        uVar9 = 0x82;\n        if (pcVar5 != (char *)0x0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar6 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar6 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = syms->size;\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }\n      iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\nLAB_001279ea:\n      *(undefined4 *)(plVar4 + 3) = uVar9;\n      plVar4[4] = lVar6;\n      if (iVar7 == 5) {\nLAB_00127a97:\n        lVar6 = *plVar4;\n        if (((lVar6 == 0) || (*(int *)(*(long *)(lVar6 + 8) + 8) != 5)) ||\n           (*(long *)(lVar6 + 0xf8) == 0)) {\n          lVar6 = plVar4[1];\n          pcVar5 = (char *)dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          einfo(pcVar5,lVar6);\n          uVar1 = syms->visibility;\n        }\n        else {\n          uVar1 = syms->visibility;\n        }\n        if (3 < uVar1) {\n          pcVar5 = (char *)dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          einfo(pcVar5,(ulong)uVar1);\n          return LDPS_ERR;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | *(byte *)((long)&CSWTCH_58 + (ulong)uVar1);\n      }\nLAB_001279fd:\n      puVar8 = puVar8 + 1;\n      syms = syms + 1;\n    }" { (expression_statement "plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);" (assignment_expression "plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2)" identifier = (cast_expression "(long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2)" (parenthesized_expression "(**(code **)(*(long *)(lVar2 + 8) + 0x200))" ( (pointer_expression "**(code **)(*(long *)(lVar2 + 8) + 0x200)" * (pointer_expression "*(code **)(*(long *)(lVar2 + 8) + 0x200)" * (cast_expression "(code **)(*(long *)(lVar2 + 8) + 0x200)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(lVar2 + 8) + 0x200)" ( (binary_expression "*(long *)(lVar2 + 8) + 0x200" (pointer_expression "*(long *)(lVar2 + 8)" * (cast_expression "(long *)(lVar2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(lVar2)" ( identifier ))))) ;) (expression_statement "pcVar5 = syms->version;" (assignment_expression "pcVar5 = syms->version" identifier = (field_expression "syms->version" identifier -> field_identifier)) ;) (expression_statement "*puVar8 = plVar4;" (assignment_expression "*puVar8 = plVar4" (pointer_expression "*puVar8" * identifier) = identifier) ;) (expression_statement "*plVar4 = lVar2;" (assignment_expression "*plVar4 = lVar2" (pointer_expression "*plVar4" * identifier) = identifier) ;) (if_statement "if (pcVar5 == (char *)0x0) {\n        pcVar5 = syms->name;\n      }\n      else {\n        pcVar5 = (char *)concat(syms->name,&DAT_00142269,pcVar5,0);\n      }" if (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pcVar5 = syms->name;\n      }" { (expression_statement "pcVar5 = syms->name;" (assignment_expression "pcVar5 = syms->name" identifier = (field_expression "syms->name" identifier -> field_identifier)) ;) }) (else_clause "else {\n        pcVar5 = (char *)concat(syms->name,&DAT_00142269,pcVar5,0);\n      }" else (compound_statement "{\n        pcVar5 = (char *)concat(syms->name,&DAT_00142269,pcVar5,0);\n      }" { (expression_statement "pcVar5 = (char *)concat(syms->name,&DAT_00142269,pcVar5,0);" (assignment_expression "pcVar5 = (char *)concat(syms->name,&DAT_00142269,pcVar5,0)" identifier = (cast_expression "(char *)concat(syms->name,&DAT_00142269,pcVar5,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "concat(syms->name,&DAT_00142269,pcVar5,0)" identifier (argument_list "(syms->name,&DAT_00142269,pcVar5,0)" ( (field_expression "syms->name" identifier -> field_identifier) , (pointer_expression "&DAT_00142269" & identifier) , identifier , number_literal ))))) ;) }))) (expression_statement "plVar4[1] = (long)pcVar5;" (assignment_expression "plVar4[1] = (long)pcVar5" (subscript_expression "plVar4[1]" identifier [ number_literal ]) = (cast_expression "(long)pcVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "plVar4[2] = 0;" (assignment_expression "plVar4[2] = 0" (subscript_expression "plVar4[2]" identifier [ number_literal ]) = number_literal) ;) (switch_statement "switch(syms->def) {\n      case 0:\n        pcVar5 = syms->comdat_key;\n        uVar9 = 2;\n        if (pcVar5 == (char *)0x0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",pcVar5,0);\n        lVar6 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar6 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar6 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar6 == 0) {\nswitchD_00127984_caseD_5:\n          return LDPS_ERR;\n        }\n        break;\n      case 1:\n        pcVar5 = syms->comdat_key;\n        uVar9 = 0x82;\n        if (pcVar5 != (char *)0x0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar6 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar6 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = syms->size;\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }" switch (parenthesized_expression "(syms->def)" ( (field_expression "syms->def" identifier -> field_identifier) )) (compound_statement "{\n      case 0:\n        pcVar5 = syms->comdat_key;\n        uVar9 = 2;\n        if (pcVar5 == (char *)0x0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",pcVar5,0);\n        lVar6 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar6 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar6 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar6 == 0) {\nswitchD_00127984_caseD_5:\n          return LDPS_ERR;\n        }\n        break;\n      case 1:\n        pcVar5 = syms->comdat_key;\n        uVar9 = 0x82;\n        if (pcVar5 != (char *)0x0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar6 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar6 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = syms->size;\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }" { (case_statement "case 0:\n        pcVar5 = syms->comdat_key;\n        uVar9 = 2;\n        if (pcVar5 == (char *)0x0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",pcVar5,0);\n        lVar6 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar6 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar6 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar6 == 0) {\nswitchD_00127984_caseD_5:\n          return LDPS_ERR;\n        }\n        break;" case number_literal : (expression_statement "pcVar5 = syms->comdat_key;" (assignment_expression "pcVar5 = syms->comdat_key" identifier = (field_expression "syms->comdat_key" identifier -> field_identifier)) ;) (expression_statement "uVar9 = 2;" (assignment_expression "uVar9 = 2" identifier = number_literal) ;) (if_statement "if (pcVar5 == (char *)0x0) goto LAB_00127b33;" if (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00127b33;" goto statement_identifier ;)) (labeled_statement "LAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",pcVar5,0);" statement_identifier : (expression_statement "__ptr = (void *)concat(".gnu.linkonce.t.",pcVar5,0);" (assignment_expression "__ptr = (void *)concat(".gnu.linkonce.t.",pcVar5,0)" identifier = (cast_expression "(void *)concat(".gnu.linkonce.t.",pcVar5,0)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "concat(".gnu.linkonce.t.",pcVar5,0)" identifier (argument_list "(".gnu.linkonce.t.",pcVar5,0)" ( (string_literal "".gnu.linkonce.t."" " string_content ") , identifier , number_literal ))))) ;)) (expression_statement "lVar6 = bfd_get_section_by_name(lVar2,__ptr);" (assignment_expression "lVar6 = bfd_get_section_by_name(lVar2,__ptr)" identifier = (call_expression "bfd_get_section_by_name(lVar2,__ptr)" identifier (argument_list "(lVar2,__ptr)" ( identifier , identifier )))) ;) (if_statement "if (lVar6 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }" if (parenthesized_expression "(lVar6 != 0)" ( (binary_expression "lVar6 != 0" identifier != number_literal) )) (compound_statement "{\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }" { (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (expression_statement "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);" (assignment_expression "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8)" identifier = (pointer_expression "*(int *)(*(long *)(lVar2 + 8) + 8)" * (cast_expression "(int *)(*(long *)(lVar2 + 8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar2 + 8) + 8)" ( (binary_expression "*(long *)(lVar2 + 8) + 8" (pointer_expression "*(long *)(lVar2 + 8)" * (cast_expression "(long *)(lVar2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (goto_statement "goto LAB_001279ea;" goto statement_identifier ;) })) (expression_statement "lVar6 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);" (assignment_expression "lVar6 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b)" identifier = (call_expression "bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b)" identifier (argument_list "(lVar2,__ptr,0x22811b)" ( identifier , identifier , number_literal )))) ;) (if_statement "if (lVar6 == 0) {\nswitchD_00127984_caseD_5:\n          return LDPS_ERR;\n        }" if (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) (compound_statement "{\nswitchD_00127984_caseD_5:\n          return LDPS_ERR;\n        }" { (labeled_statement "switchD_00127984_caseD_5:\n          return LDPS_ERR;" statement_identifier : (return_statement "return LDPS_ERR;" return identifier ;)) })) (break_statement "break;" break ;)) (case_statement "case 1:\n        pcVar5 = syms->comdat_key;\n        uVar9 = 0x82;\n        if (pcVar5 != (char *)0x0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar6 = bfd_get_section_by_name(lVar2,".text");\n        break;" case number_literal : (expression_statement "pcVar5 = syms->comdat_key;" (assignment_expression "pcVar5 = syms->comdat_key" identifier = (field_expression "syms->comdat_key" identifier -> field_identifier)) ;) (expression_statement "uVar9 = 0x82;" (assignment_expression "uVar9 = 0x82" identifier = number_literal) ;) (if_statement "if (pcVar5 != (char *)0x0) goto LAB_001279a3;" if (parenthesized_expression "(pcVar5 != (char *)0x0)" ( (binary_expression "pcVar5 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001279a3;" goto statement_identifier ;)) (labeled_statement "LAB_00127b33:\n        lVar6 = bfd_get_section_by_name(lVar2,".text");" statement_identifier : (expression_statement "lVar6 = bfd_get_section_by_name(lVar2,".text");" (assignment_expression "lVar6 = bfd_get_section_by_name(lVar2,".text")" identifier = (call_expression "bfd_get_section_by_name(lVar2,".text")" identifier (argument_list "(lVar2,".text")" ( identifier , (string_literal "".text"" " string_content ") )))) ;)) (break_statement "break;" break ;)) (case_statement "case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar6 = 0x170b38;\n        goto LAB_001279ea;" case number_literal : (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (expression_statement "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);" (assignment_expression "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8)" identifier = (pointer_expression "*(int *)(*(long *)(lVar2 + 8) + 8)" * (cast_expression "(int *)(*(long *)(lVar2 + 8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar2 + 8) + 8)" ( (binary_expression "*(long *)(lVar2 + 8) + 8" (pointer_expression "*(long *)(lVar2 + 8)" * (cast_expression "(long *)(lVar2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "lVar6 = 0x170b38;" (assignment_expression "lVar6 = 0x170b38" identifier = number_literal) ;) (goto_statement "goto LAB_001279ea;" goto statement_identifier ;)) (case_statement "case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;" case number_literal : (expression_statement "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);" (assignment_expression "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8)" identifier = (pointer_expression "*(int *)(*(long *)(lVar2 + 8) + 8)" * (cast_expression "(int *)(*(long *)(lVar2 + 8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar2 + 8) + 8)" ( (binary_expression "*(long *)(lVar2 + 8) + 8" (pointer_expression "*(long *)(lVar2 + 8)" * (cast_expression "(long *)(lVar2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(plVar4 + 3) = 0x80;" (assignment_expression "*(undefined4 *)(plVar4 + 3) = 0x80" (pointer_expression "*(undefined4 *)(plVar4 + 3)" * (cast_expression "(undefined4 *)(plVar4 + 3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4 + 3)" ( (binary_expression "plVar4 + 3" identifier + number_literal) )))) = number_literal) ;) (expression_statement "plVar4[4] = 0x170b38;" (assignment_expression "plVar4[4] = 0x170b38" (subscript_expression "plVar4[4]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (iVar7 != 5) goto LAB_001279fd;" if (parenthesized_expression "(iVar7 != 5)" ( (binary_expression "iVar7 != 5" identifier != number_literal) )) (goto_statement "goto LAB_001279fd;" goto statement_identifier ;)) (goto_statement "goto LAB_00127a97;" goto statement_identifier ;)) (case_statement "case 4:\n        plVar4[2] = syms->size;\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;" case number_literal : (expression_statement "plVar4[2] = syms->size;" (assignment_expression "plVar4[2] = syms->size" (subscript_expression "plVar4[2]" identifier [ number_literal ]) = (field_expression "syms->size" identifier -> field_identifier)) ;) (if_statement "if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }" if (parenthesized_expression "(*(int *)(*(long *)(lVar2 + 8) + 8) == 5)" ( (binary_expression "*(int *)(*(long *)(lVar2 + 8) + 8) == 5" (pointer_expression "*(int *)(*(long *)(lVar2 + 8) + 8)" * (cast_expression "(int *)(*(long *)(lVar2 + 8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar2 + 8) + 8)" ( (binary_expression "*(long *)(lVar2 + 8) + 8" (pointer_expression "*(long *)(lVar2 + 8)" * (cast_expression "(long *)(lVar2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) )))) + number_literal) )))) == number_literal) )) (compound_statement "{\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }" { (expression_statement "*(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;" (assignment_expression "*(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2" (pointer_expression "*(undefined4 *)((long)plVar4 + 0x4c)" * (cast_expression "(undefined4 *)((long)plVar4 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar4 + 0x4c)" ( (binary_expression "(long)plVar4 + 0x4c" (cast_expression "(long)plVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "plVar4[6] = 1;" (assignment_expression "plVar4[6] = 1" (subscript_expression "plVar4[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(plVar4 + 3) = 2;" (assignment_expression "*(undefined4 *)(plVar4 + 3) = 2" (pointer_expression "*(undefined4 *)(plVar4 + 3)" * (cast_expression "(undefined4 *)(plVar4 + 3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4 + 3)" ( (binary_expression "plVar4 + 3" identifier + number_literal) )))) = number_literal) ;) (expression_statement "plVar4[4] = (long)_bfd_std_section;" (assignment_expression "plVar4[4] = (long)_bfd_std_section" (subscript_expression "plVar4[4]" identifier [ number_literal ]) = (cast_expression "(long)_bfd_std_section" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (goto_statement "goto LAB_00127a97;" goto statement_identifier ;) })) (expression_statement "*(undefined4 *)(plVar4 + 3) = 2;" (assignment_expression "*(undefined4 *)(plVar4 + 3) = 2" (pointer_expression "*(undefined4 *)(plVar4 + 3)" * (cast_expression "(undefined4 *)(plVar4 + 3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4 + 3)" ( (binary_expression "plVar4 + 3" identifier + number_literal) )))) = number_literal) ;) (expression_statement "plVar4[4] = (long)_bfd_std_section;" (assignment_expression "plVar4[4] = (long)_bfd_std_section" (subscript_expression "plVar4[4]" identifier [ number_literal ]) = (cast_expression "(long)_bfd_std_section" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (goto_statement "goto LAB_001279fd;" goto statement_identifier ;)) (case_statement "default:\n        goto switchD_00127984_caseD_5;" default : (goto_statement "goto switchD_00127984_caseD_5;" goto statement_identifier ;)) })) (expression_statement "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);" (assignment_expression "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8)" identifier = (pointer_expression "*(int *)(*(long *)(lVar2 + 8) + 8)" * (cast_expression "(int *)(*(long *)(lVar2 + 8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar2 + 8) + 8)" ( (binary_expression "*(long *)(lVar2 + 8) + 8" (pointer_expression "*(long *)(lVar2 + 8)" * (cast_expression "(long *)(lVar2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (labeled_statement "LAB_001279ea:\n      *(undefined4 *)(plVar4 + 3) = uVar9;" statement_identifier : (expression_statement "*(undefined4 *)(plVar4 + 3) = uVar9;" (assignment_expression "*(undefined4 *)(plVar4 + 3) = uVar9" (pointer_expression "*(undefined4 *)(plVar4 + 3)" * (cast_expression "(undefined4 *)(plVar4 + 3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4 + 3)" ( (binary_expression "plVar4 + 3" identifier + number_literal) )))) = identifier) ;)) (expression_statement "plVar4[4] = lVar6;" (assignment_expression "plVar4[4] = lVar6" (subscript_expression "plVar4[4]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar7 == 5) {\nLAB_00127a97:\n        lVar6 = *plVar4;\n        if (((lVar6 == 0) || (*(int *)(*(long *)(lVar6 + 8) + 8) != 5)) ||\n           (*(long *)(lVar6 + 0xf8) == 0)) {\n          lVar6 = plVar4[1];\n          pcVar5 = (char *)dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          einfo(pcVar5,lVar6);\n          uVar1 = syms->visibility;\n        }\n        else {\n          uVar1 = syms->visibility;\n        }\n        if (3 < uVar1) {\n          pcVar5 = (char *)dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          einfo(pcVar5,(ulong)uVar1);\n          return LDPS_ERR;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | *(byte *)((long)&CSWTCH_58 + (ulong)uVar1);\n      }" if (parenthesized_expression "(iVar7 == 5)" ( (binary_expression "iVar7 == 5" identifier == number_literal) )) (compound_statement "{\nLAB_00127a97:\n        lVar6 = *plVar4;\n        if (((lVar6 == 0) || (*(int *)(*(long *)(lVar6 + 8) + 8) != 5)) ||\n           (*(long *)(lVar6 + 0xf8) == 0)) {\n          lVar6 = plVar4[1];\n          pcVar5 = (char *)dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          einfo(pcVar5,lVar6);\n          uVar1 = syms->visibility;\n        }\n        else {\n          uVar1 = syms->visibility;\n        }\n        if (3 < uVar1) {\n          pcVar5 = (char *)dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          einfo(pcVar5,(ulong)uVar1);\n          return LDPS_ERR;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | *(byte *)((long)&CSWTCH_58 + (ulong)uVar1);\n      }" { (labeled_statement "LAB_00127a97:\n        lVar6 = *plVar4;" statement_identifier : (expression_statement "lVar6 = *plVar4;" (assignment_expression "lVar6 = *plVar4" identifier = (pointer_expression "*plVar4" * identifier)) ;)) (if_statement "if (((lVar6 == 0) || (*(int *)(*(long *)(lVar6 + 8) + 8) != 5)) ||\n           (*(long *)(lVar6 + 0xf8) == 0)) {\n          lVar6 = plVar4[1];\n          pcVar5 = (char *)dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          einfo(pcVar5,lVar6);\n          uVar1 = syms->visibility;\n        }\n        else {\n          uVar1 = syms->visibility;\n        }" if (parenthesized_expression "(((lVar6 == 0) || (*(int *)(*(long *)(lVar6 + 8) + 8) != 5)) ||\n           (*(long *)(lVar6 + 0xf8) == 0))" ( (binary_expression "((lVar6 == 0) || (*(int *)(*(long *)(lVar6 + 8) + 8) != 5)) ||\n           (*(long *)(lVar6 + 0xf8) == 0)" (parenthesized_expression "((lVar6 == 0) || (*(int *)(*(long *)(lVar6 + 8) + 8) != 5))" ( (binary_expression "(lVar6 == 0) || (*(int *)(*(long *)(lVar6 + 8) + 8) != 5)" (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) || (parenthesized_expression "(*(int *)(*(long *)(lVar6 + 8) + 8) != 5)" ( (binary_expression "*(int *)(*(long *)(lVar6 + 8) + 8) != 5" (pointer_expression "*(int *)(*(long *)(lVar6 + 8) + 8)" * (cast_expression "(int *)(*(long *)(lVar6 + 8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar6 + 8) + 8)" ( (binary_expression "*(long *)(lVar6 + 8) + 8" (pointer_expression "*(long *)(lVar6 + 8)" * (cast_expression "(long *)(lVar6 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 8)" ( (binary_expression "lVar6 + 8" identifier + number_literal) )))) + number_literal) )))) != number_literal) ))) )) || (parenthesized_expression "(*(long *)(lVar6 + 0xf8) == 0)" ( (binary_expression "*(long *)(lVar6 + 0xf8) == 0" (pointer_expression "*(long *)(lVar6 + 0xf8)" * (cast_expression "(long *)(lVar6 + 0xf8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0xf8)" ( (binary_expression "lVar6 + 0xf8" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n          lVar6 = plVar4[1];\n          pcVar5 = (char *)dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          einfo(pcVar5,lVar6);\n          uVar1 = syms->visibility;\n        }" { (expression_statement "lVar6 = plVar4[1];" (assignment_expression "lVar6 = plVar4[1]" identifier = (subscript_expression "plVar4[1]" identifier [ number_literal ])) ;) (expression_statement "pcVar5 = (char *)dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);" (assignment_expression "pcVar5 = (char *)dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5)" identifier (argument_list "(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5)" ( number_literal , (string_literal ""%F%P: %s: non-ELF symbol in ELF BFD!\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "plVar4 = (long *)0x0;" (assignment_expression "plVar4 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "einfo(pcVar5,lVar6);" (call_expression "einfo(pcVar5,lVar6)" identifier (argument_list "(pcVar5,lVar6)" ( identifier , identifier ))) ;) (expression_statement "uVar1 = syms->visibility;" (assignment_expression "uVar1 = syms->visibility" identifier = (field_expression "syms->visibility" identifier -> field_identifier)) ;) }) (else_clause "else {\n          uVar1 = syms->visibility;\n        }" else (compound_statement "{\n          uVar1 = syms->visibility;\n        }" { (expression_statement "uVar1 = syms->visibility;" (assignment_expression "uVar1 = syms->visibility" identifier = (field_expression "syms->visibility" identifier -> field_identifier)) ;) }))) (if_statement "if (3 < uVar1) {\n          pcVar5 = (char *)dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          einfo(pcVar5,(ulong)uVar1);\n          return LDPS_ERR;\n        }" if (parenthesized_expression "(3 < uVar1)" ( (binary_expression "3 < uVar1" number_literal < identifier) )) (compound_statement "{\n          pcVar5 = (char *)dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          einfo(pcVar5,(ulong)uVar1);\n          return LDPS_ERR;\n        }" { (expression_statement "pcVar5 = (char *)dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);" (assignment_expression "pcVar5 = (char *)dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5)" identifier (argument_list "(0,"%F%P: unknown ELF symbol visibility: %d!\n",5)" ( number_literal , (string_literal ""%F%P: unknown ELF symbol visibility: %d!\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "einfo(pcVar5,(ulong)uVar1);" (call_expression "einfo(pcVar5,(ulong)uVar1)" identifier (argument_list "(pcVar5,(ulong)uVar1)" ( identifier , (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) ))) ;) (return_statement "return LDPS_ERR;" return identifier ;) })) (expression_statement "*(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | *(byte *)((long)&CSWTCH_58 + (ulong)uVar1);" (assignment_expression "*(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | *(byte *)((long)&CSWTCH_58 + (ulong)uVar1)" (pointer_expression "*(byte *)((long)plVar4 + 0x49)" * (cast_expression "(byte *)((long)plVar4 + 0x49)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar4 + 0x49)" ( (binary_expression "(long)plVar4 + 0x49" (cast_expression "(long)plVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((long)plVar4 + 0x49) & 0xfc | *(byte *)((long)&CSWTCH_58 + (ulong)uVar1)" (binary_expression "*(byte *)((long)plVar4 + 0x49) & 0xfc" (pointer_expression "*(byte *)((long)plVar4 + 0x49)" * (cast_expression "(byte *)((long)plVar4 + 0x49)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar4 + 0x49)" ( (binary_expression "(long)plVar4 + 0x49" (cast_expression "(long)plVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) | (pointer_expression "*(byte *)((long)&CSWTCH_58 + (ulong)uVar1)" * (cast_expression "(byte *)((long)&CSWTCH_58 + (ulong)uVar1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&CSWTCH_58 + (ulong)uVar1)" ( (binary_expression "(long)&CSWTCH_58 + (ulong)uVar1" (cast_expression "(long)&CSWTCH_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&CSWTCH_58" & identifier)) + (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier)) )))))) ;) })) (labeled_statement "LAB_001279fd:\n      puVar8 = puVar8 + 1;" statement_identifier : (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;)) (expression_statement "syms = syms + 1;" (assignment_expression "syms = syms + 1" identifier = (binary_expression "syms + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar8 != puVar3 + (ulong)(nsyms - 1) + 1)" ( (binary_expression "puVar8 != puVar3 + (ulong)(nsyms - 1) + 1" identifier != (binary_expression "puVar3 + (ulong)(nsyms - 1) + 1" (binary_expression "puVar3 + (ulong)(nsyms - 1)" identifier + (call_expression "(ulong)(nsyms - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(nsyms - 1)" ( (binary_expression "nsyms - 1" identifier - number_literal) )))) + number_literal)) )) ;) })) (expression_statement "bfd_set_symtab(lVar2,puVar3,nsyms);" (call_expression "bfd_set_symtab(lVar2,puVar3,nsyms)" identifier (argument_list "(lVar2,puVar3,nsyms)" ( identifier , identifier , identifier ))) ;) (return_statement "return LDPS_OK;" return identifier ;) })))
(translation_unit "undefined8 FUN_001278c0(long *param_1,int param_2,long *param_3)\n\n{\n  uint uVar1;\n  long lVar2;\n  undefined8 *puVar3;\n  long *plVar4;\n  long lVar5;\n  void *__ptr;\n  undefined8 uVar6;\n  int iVar7;\n  undefined8 *puVar8;\n  undefined4 uVar9;\n  \n  lVar2 = *param_1;\n  if (DAT_00171670 == 0) {\n    FUN_00125250("../../ld/plugin.c",0x1ec);\n  }\n  puVar3 = (undefined8 *)xmalloc((long)param_2 << 3);\n  if (0 < param_2) {\n    puVar8 = puVar3;\n    do {\n      plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);\n      lVar5 = param_3[1];\n      *puVar8 = plVar4;\n      *plVar4 = lVar2;\n      if (lVar5 == 0) {\n        lVar5 = *param_3;\n      }\n      else {\n        lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);\n      }\n      plVar4[1] = lVar5;\n      plVar4[2] = 0;\n      switch((int)param_3[2]) {\n      case 0:\n        lVar5 = param_3[4];\n        uVar9 = 2;\n        if (lVar5 == 0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);\n        lVar5 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }\n        break;\n      case 1:\n        lVar5 = param_3[4];\n        uVar9 = 0x82;\n        if (lVar5 != 0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar5 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = param_3[3];\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }\n      iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\nLAB_001279ea:\n      *(undefined4 *)(plVar4 + 3) = uVar9;\n      plVar4[4] = lVar5;\n      if (iVar7 == 5) {\nLAB_00127a97:\n        lVar5 = *plVar4;\n        if (((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)) {\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        if (3 < uVar1) {\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1];\n      }\nLAB_001279fd:\n      puVar8 = puVar8 + 1;\n      param_3 = param_3 + 6;\n    } while (puVar8 != puVar3 + (ulong)(param_2 - 1) + 1);\n  }\n  bfd_set_symtab(lVar2,puVar3,param_2);\n  return 0;\n}\n\n" (function_definition "undefined8 FUN_001278c0(long *param_1,int param_2,long *param_3)\n\n{\n  uint uVar1;\n  long lVar2;\n  undefined8 *puVar3;\n  long *plVar4;\n  long lVar5;\n  void *__ptr;\n  undefined8 uVar6;\n  int iVar7;\n  undefined8 *puVar8;\n  undefined4 uVar9;\n  \n  lVar2 = *param_1;\n  if (DAT_00171670 == 0) {\n    FUN_00125250("../../ld/plugin.c",0x1ec);\n  }\n  puVar3 = (undefined8 *)xmalloc((long)param_2 << 3);\n  if (0 < param_2) {\n    puVar8 = puVar3;\n    do {\n      plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);\n      lVar5 = param_3[1];\n      *puVar8 = plVar4;\n      *plVar4 = lVar2;\n      if (lVar5 == 0) {\n        lVar5 = *param_3;\n      }\n      else {\n        lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);\n      }\n      plVar4[1] = lVar5;\n      plVar4[2] = 0;\n      switch((int)param_3[2]) {\n      case 0:\n        lVar5 = param_3[4];\n        uVar9 = 2;\n        if (lVar5 == 0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);\n        lVar5 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }\n        break;\n      case 1:\n        lVar5 = param_3[4];\n        uVar9 = 0x82;\n        if (lVar5 != 0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar5 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = param_3[3];\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }\n      iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\nLAB_001279ea:\n      *(undefined4 *)(plVar4 + 3) = uVar9;\n      plVar4[4] = lVar5;\n      if (iVar7 == 5) {\nLAB_00127a97:\n        lVar5 = *plVar4;\n        if (((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)) {\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        if (3 < uVar1) {\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1];\n      }\nLAB_001279fd:\n      puVar8 = puVar8 + 1;\n      param_3 = param_3 + 6;\n    } while (puVar8 != puVar3 + (ulong)(param_2 - 1) + 1);\n  }\n  bfd_set_symtab(lVar2,puVar3,param_2);\n  return 0;\n}" type_identifier (function_declarator "FUN_001278c0(long *param_1,int param_2,long *param_3)" identifier (parameter_list "(long *param_1,int param_2,long *param_3)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "long *param_3" (sized_type_specifier "long" long) (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  long lVar2;\n  undefined8 *puVar3;\n  long *plVar4;\n  long lVar5;\n  void *__ptr;\n  undefined8 uVar6;\n  int iVar7;\n  undefined8 *puVar8;\n  undefined4 uVar9;\n  \n  lVar2 = *param_1;\n  if (DAT_00171670 == 0) {\n    FUN_00125250("../../ld/plugin.c",0x1ec);\n  }\n  puVar3 = (undefined8 *)xmalloc((long)param_2 << 3);\n  if (0 < param_2) {\n    puVar8 = puVar3;\n    do {\n      plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);\n      lVar5 = param_3[1];\n      *puVar8 = plVar4;\n      *plVar4 = lVar2;\n      if (lVar5 == 0) {\n        lVar5 = *param_3;\n      }\n      else {\n        lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);\n      }\n      plVar4[1] = lVar5;\n      plVar4[2] = 0;\n      switch((int)param_3[2]) {\n      case 0:\n        lVar5 = param_3[4];\n        uVar9 = 2;\n        if (lVar5 == 0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);\n        lVar5 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }\n        break;\n      case 1:\n        lVar5 = param_3[4];\n        uVar9 = 0x82;\n        if (lVar5 != 0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar5 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = param_3[3];\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }\n      iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\nLAB_001279ea:\n      *(undefined4 *)(plVar4 + 3) = uVar9;\n      plVar4[4] = lVar5;\n      if (iVar7 == 5) {\nLAB_00127a97:\n        lVar5 = *plVar4;\n        if (((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)) {\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        if (3 < uVar1) {\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1];\n      }\nLAB_001279fd:\n      puVar8 = puVar8 + 1;\n      param_3 = param_3 + 6;\n    } while (puVar8 != puVar3 + (ulong)(param_2 - 1) + 1);\n  }\n  bfd_set_symtab(lVar2,puVar3,param_2);\n  return 0;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined8 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (expression_statement "lVar2 = *param_1;" (assignment_expression "lVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (DAT_00171670 == 0) {\n    FUN_00125250("../../ld/plugin.c",0x1ec);\n  }" if (parenthesized_expression "(DAT_00171670 == 0)" ( (binary_expression "DAT_00171670 == 0" identifier == number_literal) )) (compound_statement "{\n    FUN_00125250("../../ld/plugin.c",0x1ec);\n  }" { (expression_statement "FUN_00125250("../../ld/plugin.c",0x1ec);" (call_expression "FUN_00125250("../../ld/plugin.c",0x1ec)" identifier (argument_list "("../../ld/plugin.c",0x1ec)" ( (string_literal ""../../ld/plugin.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "puVar3 = (undefined8 *)xmalloc((long)param_2 << 3);" (assignment_expression "puVar3 = (undefined8 *)xmalloc((long)param_2 << 3)" identifier = (cast_expression "(undefined8 *)xmalloc((long)param_2 << 3)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc((long)param_2 << 3)" identifier (argument_list "((long)param_2 << 3)" ( (binary_expression "(long)param_2 << 3" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) << number_literal) ))))) ;) (if_statement "if (0 < param_2) {\n    puVar8 = puVar3;\n    do {\n      plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);\n      lVar5 = param_3[1];\n      *puVar8 = plVar4;\n      *plVar4 = lVar2;\n      if (lVar5 == 0) {\n        lVar5 = *param_3;\n      }\n      else {\n        lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);\n      }\n      plVar4[1] = lVar5;\n      plVar4[2] = 0;\n      switch((int)param_3[2]) {\n      case 0:\n        lVar5 = param_3[4];\n        uVar9 = 2;\n        if (lVar5 == 0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);\n        lVar5 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }\n        break;\n      case 1:\n        lVar5 = param_3[4];\n        uVar9 = 0x82;\n        if (lVar5 != 0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar5 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = param_3[3];\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }\n      iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\nLAB_001279ea:\n      *(undefined4 *)(plVar4 + 3) = uVar9;\n      plVar4[4] = lVar5;\n      if (iVar7 == 5) {\nLAB_00127a97:\n        lVar5 = *plVar4;\n        if (((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)) {\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        if (3 < uVar1) {\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1];\n      }\nLAB_001279fd:\n      puVar8 = puVar8 + 1;\n      param_3 = param_3 + 6;\n    } while (puVar8 != puVar3 + (ulong)(param_2 - 1) + 1);\n  }" if (parenthesized_expression "(0 < param_2)" ( (binary_expression "0 < param_2" number_literal < identifier) )) (compound_statement "{\n    puVar8 = puVar3;\n    do {\n      plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);\n      lVar5 = param_3[1];\n      *puVar8 = plVar4;\n      *plVar4 = lVar2;\n      if (lVar5 == 0) {\n        lVar5 = *param_3;\n      }\n      else {\n        lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);\n      }\n      plVar4[1] = lVar5;\n      plVar4[2] = 0;\n      switch((int)param_3[2]) {\n      case 0:\n        lVar5 = param_3[4];\n        uVar9 = 2;\n        if (lVar5 == 0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);\n        lVar5 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }\n        break;\n      case 1:\n        lVar5 = param_3[4];\n        uVar9 = 0x82;\n        if (lVar5 != 0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar5 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = param_3[3];\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }\n      iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\nLAB_001279ea:\n      *(undefined4 *)(plVar4 + 3) = uVar9;\n      plVar4[4] = lVar5;\n      if (iVar7 == 5) {\nLAB_00127a97:\n        lVar5 = *plVar4;\n        if (((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)) {\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        if (3 < uVar1) {\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1];\n      }\nLAB_001279fd:\n      puVar8 = puVar8 + 1;\n      param_3 = param_3 + 6;\n    } while (puVar8 != puVar3 + (ulong)(param_2 - 1) + 1);\n  }" { (expression_statement "puVar8 = puVar3;" (assignment_expression "puVar8 = puVar3" identifier = identifier) ;) (do_statement "do {\n      plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);\n      lVar5 = param_3[1];\n      *puVar8 = plVar4;\n      *plVar4 = lVar2;\n      if (lVar5 == 0) {\n        lVar5 = *param_3;\n      }\n      else {\n        lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);\n      }\n      plVar4[1] = lVar5;\n      plVar4[2] = 0;\n      switch((int)param_3[2]) {\n      case 0:\n        lVar5 = param_3[4];\n        uVar9 = 2;\n        if (lVar5 == 0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);\n        lVar5 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }\n        break;\n      case 1:\n        lVar5 = param_3[4];\n        uVar9 = 0x82;\n        if (lVar5 != 0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar5 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = param_3[3];\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }\n      iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\nLAB_001279ea:\n      *(undefined4 *)(plVar4 + 3) = uVar9;\n      plVar4[4] = lVar5;\n      if (iVar7 == 5) {\nLAB_00127a97:\n        lVar5 = *plVar4;\n        if (((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)) {\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        if (3 < uVar1) {\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1];\n      }\nLAB_001279fd:\n      puVar8 = puVar8 + 1;\n      param_3 = param_3 + 6;\n    } while (puVar8 != puVar3 + (ulong)(param_2 - 1) + 1);" do (compound_statement "{\n      plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);\n      lVar5 = param_3[1];\n      *puVar8 = plVar4;\n      *plVar4 = lVar2;\n      if (lVar5 == 0) {\n        lVar5 = *param_3;\n      }\n      else {\n        lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);\n      }\n      plVar4[1] = lVar5;\n      plVar4[2] = 0;\n      switch((int)param_3[2]) {\n      case 0:\n        lVar5 = param_3[4];\n        uVar9 = 2;\n        if (lVar5 == 0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);\n        lVar5 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }\n        break;\n      case 1:\n        lVar5 = param_3[4];\n        uVar9 = 0x82;\n        if (lVar5 != 0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar5 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = param_3[3];\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }\n      iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\nLAB_001279ea:\n      *(undefined4 *)(plVar4 + 3) = uVar9;\n      plVar4[4] = lVar5;\n      if (iVar7 == 5) {\nLAB_00127a97:\n        lVar5 = *plVar4;\n        if (((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)) {\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        if (3 < uVar1) {\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1];\n      }\nLAB_001279fd:\n      puVar8 = puVar8 + 1;\n      param_3 = param_3 + 6;\n    }" { (expression_statement "plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);" (assignment_expression "plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2)" identifier = (cast_expression "(long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2)" (parenthesized_expression "(**(code **)(*(long *)(lVar2 + 8) + 0x200))" ( (pointer_expression "**(code **)(*(long *)(lVar2 + 8) + 0x200)" * (pointer_expression "*(code **)(*(long *)(lVar2 + 8) + 0x200)" * (cast_expression "(code **)(*(long *)(lVar2 + 8) + 0x200)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(lVar2 + 8) + 0x200)" ( (binary_expression "*(long *)(lVar2 + 8) + 0x200" (pointer_expression "*(long *)(lVar2 + 8)" * (cast_expression "(long *)(lVar2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(lVar2)" ( identifier ))))) ;) (expression_statement "lVar5 = param_3[1];" (assignment_expression "lVar5 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (expression_statement "*puVar8 = plVar4;" (assignment_expression "*puVar8 = plVar4" (pointer_expression "*puVar8" * identifier) = identifier) ;) (expression_statement "*plVar4 = lVar2;" (assignment_expression "*plVar4 = lVar2" (pointer_expression "*plVar4" * identifier) = identifier) ;) (if_statement "if (lVar5 == 0) {\n        lVar5 = *param_3;\n      }\n      else {\n        lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);\n      }" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        lVar5 = *param_3;\n      }" { (expression_statement "lVar5 = *param_3;" (assignment_expression "lVar5 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) }) (else_clause "else {\n        lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);\n      }" else (compound_statement "{\n        lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);\n      }" { (expression_statement "lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);" (assignment_expression "lVar5 = concat(*param_3,&DAT_00142269,lVar5,0)" identifier = (call_expression "concat(*param_3,&DAT_00142269,lVar5,0)" identifier (argument_list "(*param_3,&DAT_00142269,lVar5,0)" ( (pointer_expression "*param_3" * identifier) , (pointer_expression "&DAT_00142269" & identifier) , identifier , number_literal )))) ;) }))) (expression_statement "plVar4[1] = lVar5;" (assignment_expression "plVar4[1] = lVar5" (subscript_expression "plVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar4[2] = 0;" (assignment_expression "plVar4[2] = 0" (subscript_expression "plVar4[2]" identifier [ number_literal ]) = number_literal) ;) (switch_statement "switch((int)param_3[2]) {\n      case 0:\n        lVar5 = param_3[4];\n        uVar9 = 2;\n        if (lVar5 == 0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);\n        lVar5 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }\n        break;\n      case 1:\n        lVar5 = param_3[4];\n        uVar9 = 0x82;\n        if (lVar5 != 0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar5 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = param_3[3];\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }" switch (parenthesized_expression "((int)param_3[2])" ( (cast_expression "(int)param_3[2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_3[2]" identifier [ number_literal ])) )) (compound_statement "{\n      case 0:\n        lVar5 = param_3[4];\n        uVar9 = 2;\n        if (lVar5 == 0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);\n        lVar5 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }\n        break;\n      case 1:\n        lVar5 = param_3[4];\n        uVar9 = 0x82;\n        if (lVar5 != 0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar5 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = param_3[3];\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }" { (case_statement "case 0:\n        lVar5 = param_3[4];\n        uVar9 = 2;\n        if (lVar5 == 0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);\n        lVar5 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }\n        break;" case number_literal : (expression_statement "lVar5 = param_3[4];" (assignment_expression "lVar5 = param_3[4]" identifier = (subscript_expression "param_3[4]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = 2;" (assignment_expression "uVar9 = 2" identifier = number_literal) ;) (if_statement "if (lVar5 == 0) goto LAB_00127b33;" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00127b33;" goto statement_identifier ;)) (labeled_statement "LAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);" statement_identifier : (expression_statement "__ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);" (assignment_expression "__ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0)" identifier = (cast_expression "(void *)concat(".gnu.linkonce.t.",lVar5,0)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "concat(".gnu.linkonce.t.",lVar5,0)" identifier (argument_list "(".gnu.linkonce.t.",lVar5,0)" ( (string_literal "".gnu.linkonce.t."" " string_content ") , identifier , number_literal ))))) ;)) (expression_statement "lVar5 = bfd_get_section_by_name(lVar2,__ptr);" (assignment_expression "lVar5 = bfd_get_section_by_name(lVar2,__ptr)" identifier = (call_expression "bfd_get_section_by_name(lVar2,__ptr)" identifier (argument_list "(lVar2,__ptr)" ( identifier , identifier )))) ;) (if_statement "if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }" if (parenthesized_expression "(lVar5 != 0)" ( (binary_expression "lVar5 != 0" identifier != number_literal) )) (compound_statement "{\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }" { (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (expression_statement "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);" (assignment_expression "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8)" identifier = (pointer_expression "*(int *)(*(long *)(lVar2 + 8) + 8)" * (cast_expression "(int *)(*(long *)(lVar2 + 8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar2 + 8) + 8)" ( (binary_expression "*(long *)(lVar2 + 8) + 8" (pointer_expression "*(long *)(lVar2 + 8)" * (cast_expression "(long *)(lVar2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (goto_statement "goto LAB_001279ea;" goto statement_identifier ;) })) (expression_statement "lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);" (assignment_expression "lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b)" identifier = (call_expression "bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b)" identifier (argument_list "(lVar2,__ptr,0x22811b)" ( identifier , identifier , number_literal )))) ;) (if_statement "if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (compound_statement "{\nswitchD_00127984_caseD_5:\n          return 3;\n        }" { (labeled_statement "switchD_00127984_caseD_5:\n          return 3;" statement_identifier : (return_statement "return 3;" return number_literal ;)) })) (break_statement "break;" break ;)) (case_statement "case 1:\n        lVar5 = param_3[4];\n        uVar9 = 0x82;\n        if (lVar5 != 0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");\n        break;" case number_literal : (expression_statement "lVar5 = param_3[4];" (assignment_expression "lVar5 = param_3[4]" identifier = (subscript_expression "param_3[4]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = 0x82;" (assignment_expression "uVar9 = 0x82" identifier = number_literal) ;) (if_statement "if (lVar5 != 0) goto LAB_001279a3;" if (parenthesized_expression "(lVar5 != 0)" ( (binary_expression "lVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001279a3;" goto statement_identifier ;)) (labeled_statement "LAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");" statement_identifier : (expression_statement "lVar5 = bfd_get_section_by_name(lVar2,".text");" (assignment_expression "lVar5 = bfd_get_section_by_name(lVar2,".text")" identifier = (call_expression "bfd_get_section_by_name(lVar2,".text")" identifier (argument_list "(lVar2,".text")" ( identifier , (string_literal "".text"" " string_content ") )))) ;)) (break_statement "break;" break ;)) (case_statement "case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar5 = 0x170b38;\n        goto LAB_001279ea;" case number_literal : (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (expression_statement "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);" (assignment_expression "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8)" identifier = (pointer_expression "*(int *)(*(long *)(lVar2 + 8) + 8)" * (cast_expression "(int *)(*(long *)(lVar2 + 8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar2 + 8) + 8)" ( (binary_expression "*(long *)(lVar2 + 8) + 8" (pointer_expression "*(long *)(lVar2 + 8)" * (cast_expression "(long *)(lVar2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "lVar5 = 0x170b38;" (assignment_expression "lVar5 = 0x170b38" identifier = number_literal) ;) (goto_statement "goto LAB_001279ea;" goto statement_identifier ;)) (case_statement "case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;" case number_literal : (expression_statement "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);" (assignment_expression "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8)" identifier = (pointer_expression "*(int *)(*(long *)(lVar2 + 8) + 8)" * (cast_expression "(int *)(*(long *)(lVar2 + 8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar2 + 8) + 8)" ( (binary_expression "*(long *)(lVar2 + 8) + 8" (pointer_expression "*(long *)(lVar2 + 8)" * (cast_expression "(long *)(lVar2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(plVar4 + 3) = 0x80;" (assignment_expression "*(undefined4 *)(plVar4 + 3) = 0x80" (pointer_expression "*(undefined4 *)(plVar4 + 3)" * (cast_expression "(undefined4 *)(plVar4 + 3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4 + 3)" ( (binary_expression "plVar4 + 3" identifier + number_literal) )))) = number_literal) ;) (expression_statement "plVar4[4] = 0x170b38;" (assignment_expression "plVar4[4] = 0x170b38" (subscript_expression "plVar4[4]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (iVar7 != 5) goto LAB_001279fd;" if (parenthesized_expression "(iVar7 != 5)" ( (binary_expression "iVar7 != 5" identifier != number_literal) )) (goto_statement "goto LAB_001279fd;" goto statement_identifier ;)) (goto_statement "goto LAB_00127a97;" goto statement_identifier ;)) (case_statement "case 4:\n        plVar4[2] = param_3[3];\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;" case number_literal : (expression_statement "plVar4[2] = param_3[3];" (assignment_expression "plVar4[2] = param_3[3]" (subscript_expression "plVar4[2]" identifier [ number_literal ]) = (subscript_expression "param_3[3]" identifier [ number_literal ])) ;) (if_statement "if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }" if (parenthesized_expression "(*(int *)(*(long *)(lVar2 + 8) + 8) == 5)" ( (binary_expression "*(int *)(*(long *)(lVar2 + 8) + 8) == 5" (pointer_expression "*(int *)(*(long *)(lVar2 + 8) + 8)" * (cast_expression "(int *)(*(long *)(lVar2 + 8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar2 + 8) + 8)" ( (binary_expression "*(long *)(lVar2 + 8) + 8" (pointer_expression "*(long *)(lVar2 + 8)" * (cast_expression "(long *)(lVar2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) )))) + number_literal) )))) == number_literal) )) (compound_statement "{\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }" { (expression_statement "*(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;" (assignment_expression "*(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2" (pointer_expression "*(undefined4 *)((long)plVar4 + 0x4c)" * (cast_expression "(undefined4 *)((long)plVar4 + 0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar4 + 0x4c)" ( (binary_expression "(long)plVar4 + 0x4c" (cast_expression "(long)plVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "plVar4[6] = 1;" (assignment_expression "plVar4[6] = 1" (subscript_expression "plVar4[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(plVar4 + 3) = 2;" (assignment_expression "*(undefined4 *)(plVar4 + 3) = 2" (pointer_expression "*(undefined4 *)(plVar4 + 3)" * (cast_expression "(undefined4 *)(plVar4 + 3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4 + 3)" ( (binary_expression "plVar4 + 3" identifier + number_literal) )))) = number_literal) ;) (expression_statement "plVar4[4] = (long)_bfd_std_section;" (assignment_expression "plVar4[4] = (long)_bfd_std_section" (subscript_expression "plVar4[4]" identifier [ number_literal ]) = (cast_expression "(long)_bfd_std_section" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (goto_statement "goto LAB_00127a97;" goto statement_identifier ;) })) (expression_statement "*(undefined4 *)(plVar4 + 3) = 2;" (assignment_expression "*(undefined4 *)(plVar4 + 3) = 2" (pointer_expression "*(undefined4 *)(plVar4 + 3)" * (cast_expression "(undefined4 *)(plVar4 + 3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4 + 3)" ( (binary_expression "plVar4 + 3" identifier + number_literal) )))) = number_literal) ;) (expression_statement "plVar4[4] = (long)_bfd_std_section;" (assignment_expression "plVar4[4] = (long)_bfd_std_section" (subscript_expression "plVar4[4]" identifier [ number_literal ]) = (cast_expression "(long)_bfd_std_section" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (goto_statement "goto LAB_001279fd;" goto statement_identifier ;)) (case_statement "default:\n        goto switchD_00127984_caseD_5;" default : (goto_statement "goto switchD_00127984_caseD_5;" goto statement_identifier ;)) })) (expression_statement "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);" (assignment_expression "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8)" identifier = (pointer_expression "*(int *)(*(long *)(lVar2 + 8) + 8)" * (cast_expression "(int *)(*(long *)(lVar2 + 8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar2 + 8) + 8)" ( (binary_expression "*(long *)(lVar2 + 8) + 8" (pointer_expression "*(long *)(lVar2 + 8)" * (cast_expression "(long *)(lVar2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (labeled_statement "LAB_001279ea:\n      *(undefined4 *)(plVar4 + 3) = uVar9;" statement_identifier : (expression_statement "*(undefined4 *)(plVar4 + 3) = uVar9;" (assignment_expression "*(undefined4 *)(plVar4 + 3) = uVar9" (pointer_expression "*(undefined4 *)(plVar4 + 3)" * (cast_expression "(undefined4 *)(plVar4 + 3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar4 + 3)" ( (binary_expression "plVar4 + 3" identifier + number_literal) )))) = identifier) ;)) (expression_statement "plVar4[4] = lVar5;" (assignment_expression "plVar4[4] = lVar5" (subscript_expression "plVar4[4]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar7 == 5) {\nLAB_00127a97:\n        lVar5 = *plVar4;\n        if (((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)) {\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        if (3 < uVar1) {\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1];\n      }" if (parenthesized_expression "(iVar7 == 5)" ( (binary_expression "iVar7 == 5" identifier == number_literal) )) (compound_statement "{\nLAB_00127a97:\n        lVar5 = *plVar4;\n        if (((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)) {\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        if (3 < uVar1) {\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1];\n      }" { (labeled_statement "LAB_00127a97:\n        lVar5 = *plVar4;" statement_identifier : (expression_statement "lVar5 = *plVar4;" (assignment_expression "lVar5 = *plVar4" identifier = (pointer_expression "*plVar4" * identifier)) ;)) (if_statement "if (((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)) {\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }" if (parenthesized_expression "(((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0))" ( (binary_expression "((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)" (parenthesized_expression "((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5))" ( (binary_expression "(lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)" (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) || (parenthesized_expression "(*(int *)(*(long *)(lVar5 + 8) + 8) != 5)" ( (binary_expression "*(int *)(*(long *)(lVar5 + 8) + 8) != 5" (pointer_expression "*(int *)(*(long *)(lVar5 + 8) + 8)" * (cast_expression "(int *)(*(long *)(lVar5 + 8) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar5 + 8) + 8)" ( (binary_expression "*(long *)(lVar5 + 8) + 8" (pointer_expression "*(long *)(lVar5 + 8)" * (cast_expression "(long *)(lVar5 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 8)" ( (binary_expression "lVar5 + 8" identifier + number_literal) )))) + number_literal) )))) != number_literal) ))) )) || (parenthesized_expression "(*(long *)(lVar5 + 0xf8) == 0)" ( (binary_expression "*(long *)(lVar5 + 0xf8) == 0" (pointer_expression "*(long *)(lVar5 + 0xf8)" * (cast_expression "(long *)(lVar5 + 0xf8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0xf8)" ( (binary_expression "lVar5 + 0xf8" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }" { (expression_statement "lVar5 = plVar4[1];" (assignment_expression "lVar5 = plVar4[1]" identifier = (subscript_expression "plVar4[1]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);" (assignment_expression "uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5)" identifier = (call_expression "dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5)" identifier (argument_list "(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5)" ( number_literal , (string_literal ""%F%P: %s: non-ELF symbol in ELF BFD!\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "plVar4 = (long *)0x0;" (assignment_expression "plVar4 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "FUN_00125190(uVar6,lVar5);" (call_expression "FUN_00125190(uVar6,lVar5)" identifier (argument_list "(uVar6,lVar5)" ( identifier , identifier ))) ;) (expression_statement "uVar1 = *(uint *)((long)param_3 + 0x14);" (assignment_expression "uVar1 = *(uint *)((long)param_3 + 0x14)" identifier = (pointer_expression "*(uint *)((long)param_3 + 0x14)" * (cast_expression "(uint *)((long)param_3 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_3 + 0x14)" ( (binary_expression "(long)param_3 + 0x14" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) }) (else_clause "else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }" else (compound_statement "{\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }" { (expression_statement "uVar1 = *(uint *)((long)param_3 + 0x14);" (assignment_expression "uVar1 = *(uint *)((long)param_3 + 0x14)" identifier = (pointer_expression "*(uint *)((long)param_3 + 0x14)" * (cast_expression "(uint *)((long)param_3 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_3 + 0x14)" ( (binary_expression "(long)param_3 + 0x14" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) }))) (if_statement "if (3 < uVar1) {\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }" if (parenthesized_expression "(3 < uVar1)" ( (binary_expression "3 < uVar1" number_literal < identifier) )) (compound_statement "{\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }" { (expression_statement "uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);" (assignment_expression "uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5)" identifier = (call_expression "dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5)" identifier (argument_list "(0,"%F%P: unknown ELF symbol visibility: %d!\n",5)" ( number_literal , (string_literal ""%F%P: unknown ELF symbol visibility: %d!\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00125190(uVar6,uVar1);" (call_expression "FUN_00125190(uVar6,uVar1)" identifier (argument_list "(uVar6,uVar1)" ( identifier , identifier ))) ;) (return_statement "return 3;" return number_literal ;) })) (expression_statement "*(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1];" (assignment_expression "*(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1]" (pointer_expression "*(byte *)((long)plVar4 + 0x49)" * (cast_expression "(byte *)((long)plVar4 + 0x49)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar4 + 0x49)" ( (binary_expression "(long)plVar4 + 0x49" (cast_expression "(long)plVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1]" (binary_expression "*(byte *)((long)plVar4 + 0x49) & 0xfc" (pointer_expression "*(byte *)((long)plVar4 + 0x49)" * (cast_expression "(byte *)((long)plVar4 + 0x49)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar4 + 0x49)" ( (binary_expression "(long)plVar4 + 0x49" (cast_expression "(long)plVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) | (subscript_expression "(&DAT_0014239c)[uVar1]" (parenthesized_expression "(&DAT_0014239c)" ( (pointer_expression "&DAT_0014239c" & identifier) )) [ identifier ]))) ;) })) (labeled_statement "LAB_001279fd:\n      puVar8 = puVar8 + 1;" statement_identifier : (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;)) (expression_statement "param_3 = param_3 + 6;" (assignment_expression "param_3 = param_3 + 6" identifier = (binary_expression "param_3 + 6" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar8 != puVar3 + (ulong)(param_2 - 1) + 1)" ( (binary_expression "puVar8 != puVar3 + (ulong)(param_2 - 1) + 1" identifier != (binary_expression "puVar3 + (ulong)(param_2 - 1) + 1" (binary_expression "puVar3 + (ulong)(param_2 - 1)" identifier + (call_expression "(ulong)(param_2 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_2 - 1)" ( (binary_expression "param_2 - 1" identifier - number_literal) )))) + number_literal)) )) ;) })) (expression_statement "bfd_set_symtab(lVar2,puVar3,param_2);" (call_expression "bfd_set_symtab(lVar2,puVar3,param_2)" identifier (argument_list "(lVar2,puVar3,param_2)" ( identifier , identifier , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) << LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , (pointer_expression & IDENT) , IDENT , LIT )))) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (switch_statement switch (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) )) (compound_statement { (case_statement case LIT : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (string_literal " string_content ") , IDENT , 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 (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (return_statement return LIT ;)) })) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;)) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (goto_statement goto statement_identifier ;)) (case_statement default : (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != LIT) ))) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (return_statement return LIT ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) & LIT) | (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ IDENT ]))) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression (binary_expression IDENT + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) )))) + LIT)) )) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (return_statement return LIT ;) })))
(function_definition "undefined8 FUN_001278c0(long *param_1,int param_2,long *param_3)\n\n{\n  uint uVar1;\n  long lVar2;\n  undefined8 *puVar3;\n  long *plVar4;\n  long lVar5;\n  void *__ptr;\n  undefined8 uVar6;\n  int iVar7;\n  undefined8 *puVar8;\n  undefined4 uVar9;\n  \n  lVar2 = *param_1;\n  if (DAT_00171670 == 0) {\n    FUN_00125250("../../ld/plugin.c",0x1ec);\n  }\n  puVar3 = (undefined8 *)xmalloc((long)param_2 << 3);\n  if (0 < param_2) {\n    puVar8 = puVar3;\n    do {\n      plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);\n      lVar5 = param_3[1];\n      *puVar8 = plVar4;\n      *plVar4 = lVar2;\n      if (lVar5 == 0) {\n        lVar5 = *param_3;\n      }\n      else {\n        lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);\n      }\n      plVar4[1] = lVar5;\n      plVar4[2] = 0;\n      switch((int)param_3[2]) {\n      case 0:\n        lVar5 = param_3[4];\n        uVar9 = 2;\n        if (lVar5 == 0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);\n        lVar5 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }\n        break;\n      case 1:\n        lVar5 = param_3[4];\n        uVar9 = 0x82;\n        if (lVar5 != 0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar5 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = param_3[3];\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }\n      iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\nLAB_001279ea:\n      *(undefined4 *)(plVar4 + 3) = uVar9;\n      plVar4[4] = lVar5;\n      if (iVar7 == 5) {\nLAB_00127a97:\n        lVar5 = *plVar4;\n        if (((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)) {\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        if (3 < uVar1) {\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1];\n      }\nLAB_001279fd:\n      puVar8 = puVar8 + 1;\n      param_3 = param_3 + 6;\n    } while (puVar8 != puVar3 + (ulong)(param_2 - 1) + 1);\n  }\n  bfd_set_symtab(lVar2,puVar3,param_2);\n  return 0;\n}" (type_identifier "undefined8") (function_declarator "FUN_001278c0(long *param_1,int param_2,long *param_3)" (identifier "FUN_001278c0") (parameter_list "(long *param_1,int param_2,long *param_3)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "long *param_3" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  uint uVar1;\n  long lVar2;\n  undefined8 *puVar3;\n  long *plVar4;\n  long lVar5;\n  void *__ptr;\n  undefined8 uVar6;\n  int iVar7;\n  undefined8 *puVar8;\n  undefined4 uVar9;\n  \n  lVar2 = *param_1;\n  if (DAT_00171670 == 0) {\n    FUN_00125250("../../ld/plugin.c",0x1ec);\n  }\n  puVar3 = (undefined8 *)xmalloc((long)param_2 << 3);\n  if (0 < param_2) {\n    puVar8 = puVar3;\n    do {\n      plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);\n      lVar5 = param_3[1];\n      *puVar8 = plVar4;\n      *plVar4 = lVar2;\n      if (lVar5 == 0) {\n        lVar5 = *param_3;\n      }\n      else {\n        lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);\n      }\n      plVar4[1] = lVar5;\n      plVar4[2] = 0;\n      switch((int)param_3[2]) {\n      case 0:\n        lVar5 = param_3[4];\n        uVar9 = 2;\n        if (lVar5 == 0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);\n        lVar5 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }\n        break;\n      case 1:\n        lVar5 = param_3[4];\n        uVar9 = 0x82;\n        if (lVar5 != 0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar5 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = param_3[3];\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }\n      iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\nLAB_001279ea:\n      *(undefined4 *)(plVar4 + 3) = uVar9;\n      plVar4[4] = lVar5;\n      if (iVar7 == 5) {\nLAB_00127a97:\n        lVar5 = *plVar4;\n        if (((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)) {\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        if (3 < uVar1) {\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1];\n      }\nLAB_001279fd:\n      puVar8 = puVar8 + 1;\n      param_3 = param_3 + 6;\n    } while (puVar8 != puVar3 + (ulong)(param_2 - 1) + 1);\n  }\n  bfd_set_symtab(lVar2,puVar3,param_2);\n  return 0;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "undefined8 *puVar3;" (type_identifier "undefined8") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "long *plVar4;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar4" (* "*") (identifier "plVar4")) (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "void *__ptr;" (primitive_type "void") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (declaration "undefined8 uVar6;" (type_identifier "undefined8") (identifier "uVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "undefined8 *puVar8;" (type_identifier "undefined8") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (expression_statement "lVar2 = *param_1;" (assignment_expression "lVar2 = *param_1" (identifier "lVar2") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (DAT_00171670 == 0) {\n    FUN_00125250("../../ld/plugin.c",0x1ec);\n  }" (if "if") (parenthesized_expression "(DAT_00171670 == 0)" (( "(") (binary_expression "DAT_00171670 == 0" (identifier "DAT_00171670") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_00125250("../../ld/plugin.c",0x1ec);\n  }" ({ "{") (expression_statement "FUN_00125250("../../ld/plugin.c",0x1ec);" (call_expression "FUN_00125250("../../ld/plugin.c",0x1ec)" (identifier "FUN_00125250") (argument_list "("../../ld/plugin.c",0x1ec)" (( "(") (string_literal ""../../ld/plugin.c"" (" """) (string_content "../../ld/plugin.c") (" """)) (, ",") (number_literal "0x1ec") () ")"))) (; ";")) (} "}"))) (expression_statement "puVar3 = (undefined8 *)xmalloc((long)param_2 << 3);" (assignment_expression "puVar3 = (undefined8 *)xmalloc((long)param_2 << 3)" (identifier "puVar3") (= "=") (cast_expression "(undefined8 *)xmalloc((long)param_2 << 3)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc((long)param_2 << 3)" (identifier "xmalloc") (argument_list "((long)param_2 << 3)" (( "(") (binary_expression "(long)param_2 << 3" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (<< "<<") (number_literal "3")) () ")"))))) (; ";")) (if_statement "if (0 < param_2) {\n    puVar8 = puVar3;\n    do {\n      plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);\n      lVar5 = param_3[1];\n      *puVar8 = plVar4;\n      *plVar4 = lVar2;\n      if (lVar5 == 0) {\n        lVar5 = *param_3;\n      }\n      else {\n        lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);\n      }\n      plVar4[1] = lVar5;\n      plVar4[2] = 0;\n      switch((int)param_3[2]) {\n      case 0:\n        lVar5 = param_3[4];\n        uVar9 = 2;\n        if (lVar5 == 0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);\n        lVar5 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }\n        break;\n      case 1:\n        lVar5 = param_3[4];\n        uVar9 = 0x82;\n        if (lVar5 != 0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar5 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = param_3[3];\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }\n      iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\nLAB_001279ea:\n      *(undefined4 *)(plVar4 + 3) = uVar9;\n      plVar4[4] = lVar5;\n      if (iVar7 == 5) {\nLAB_00127a97:\n        lVar5 = *plVar4;\n        if (((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)) {\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        if (3 < uVar1) {\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1];\n      }\nLAB_001279fd:\n      puVar8 = puVar8 + 1;\n      param_3 = param_3 + 6;\n    } while (puVar8 != puVar3 + (ulong)(param_2 - 1) + 1);\n  }" (if "if") (parenthesized_expression "(0 < param_2)" (( "(") (binary_expression "0 < param_2" (number_literal "0") (< "<") (identifier "param_2")) () ")")) (compound_statement "{\n    puVar8 = puVar3;\n    do {\n      plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);\n      lVar5 = param_3[1];\n      *puVar8 = plVar4;\n      *plVar4 = lVar2;\n      if (lVar5 == 0) {\n        lVar5 = *param_3;\n      }\n      else {\n        lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);\n      }\n      plVar4[1] = lVar5;\n      plVar4[2] = 0;\n      switch((int)param_3[2]) {\n      case 0:\n        lVar5 = param_3[4];\n        uVar9 = 2;\n        if (lVar5 == 0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);\n        lVar5 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }\n        break;\n      case 1:\n        lVar5 = param_3[4];\n        uVar9 = 0x82;\n        if (lVar5 != 0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar5 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = param_3[3];\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }\n      iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\nLAB_001279ea:\n      *(undefined4 *)(plVar4 + 3) = uVar9;\n      plVar4[4] = lVar5;\n      if (iVar7 == 5) {\nLAB_00127a97:\n        lVar5 = *plVar4;\n        if (((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)) {\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        if (3 < uVar1) {\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1];\n      }\nLAB_001279fd:\n      puVar8 = puVar8 + 1;\n      param_3 = param_3 + 6;\n    } while (puVar8 != puVar3 + (ulong)(param_2 - 1) + 1);\n  }" ({ "{") (expression_statement "puVar8 = puVar3;" (assignment_expression "puVar8 = puVar3" (identifier "puVar8") (= "=") (identifier "puVar3")) (; ";")) (do_statement "do {\n      plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);\n      lVar5 = param_3[1];\n      *puVar8 = plVar4;\n      *plVar4 = lVar2;\n      if (lVar5 == 0) {\n        lVar5 = *param_3;\n      }\n      else {\n        lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);\n      }\n      plVar4[1] = lVar5;\n      plVar4[2] = 0;\n      switch((int)param_3[2]) {\n      case 0:\n        lVar5 = param_3[4];\n        uVar9 = 2;\n        if (lVar5 == 0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);\n        lVar5 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }\n        break;\n      case 1:\n        lVar5 = param_3[4];\n        uVar9 = 0x82;\n        if (lVar5 != 0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar5 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = param_3[3];\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }\n      iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\nLAB_001279ea:\n      *(undefined4 *)(plVar4 + 3) = uVar9;\n      plVar4[4] = lVar5;\n      if (iVar7 == 5) {\nLAB_00127a97:\n        lVar5 = *plVar4;\n        if (((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)) {\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        if (3 < uVar1) {\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1];\n      }\nLAB_001279fd:\n      puVar8 = puVar8 + 1;\n      param_3 = param_3 + 6;\n    } while (puVar8 != puVar3 + (ulong)(param_2 - 1) + 1);" (do "do") (compound_statement "{\n      plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);\n      lVar5 = param_3[1];\n      *puVar8 = plVar4;\n      *plVar4 = lVar2;\n      if (lVar5 == 0) {\n        lVar5 = *param_3;\n      }\n      else {\n        lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);\n      }\n      plVar4[1] = lVar5;\n      plVar4[2] = 0;\n      switch((int)param_3[2]) {\n      case 0:\n        lVar5 = param_3[4];\n        uVar9 = 2;\n        if (lVar5 == 0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);\n        lVar5 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }\n        break;\n      case 1:\n        lVar5 = param_3[4];\n        uVar9 = 0x82;\n        if (lVar5 != 0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar5 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = param_3[3];\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }\n      iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\nLAB_001279ea:\n      *(undefined4 *)(plVar4 + 3) = uVar9;\n      plVar4[4] = lVar5;\n      if (iVar7 == 5) {\nLAB_00127a97:\n        lVar5 = *plVar4;\n        if (((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)) {\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        if (3 < uVar1) {\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1];\n      }\nLAB_001279fd:\n      puVar8 = puVar8 + 1;\n      param_3 = param_3 + 6;\n    }" ({ "{") (expression_statement "plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);" (assignment_expression "plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2)" (identifier "plVar4") (= "=") (cast_expression "(long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2)" (parenthesized_expression "(**(code **)(*(long *)(lVar2 + 8) + 0x200))" (( "(") (pointer_expression "**(code **)(*(long *)(lVar2 + 8) + 0x200)" (* "*") (pointer_expression "*(code **)(*(long *)(lVar2 + 8) + 0x200)" (* "*") (cast_expression "(code **)(*(long *)(lVar2 + 8) + 0x200)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)(lVar2 + 8) + 0x200)" (( "(") (binary_expression "*(long *)(lVar2 + 8) + 0x200" (pointer_expression "*(long *)(lVar2 + 8)" (* "*") (cast_expression "(long *)(lVar2 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 8)" (( "(") (binary_expression "lVar2 + 8" (identifier "lVar2") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x200")) () ")"))))) () ")")) (argument_list "(lVar2)" (( "(") (identifier "lVar2") () ")"))))) (; ";")) (expression_statement "lVar5 = param_3[1];" (assignment_expression "lVar5 = param_3[1]" (identifier "lVar5") (= "=") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*puVar8 = plVar4;" (assignment_expression "*puVar8 = plVar4" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (identifier "plVar4")) (; ";")) (expression_statement "*plVar4 = lVar2;" (assignment_expression "*plVar4 = lVar2" (pointer_expression "*plVar4" (* "*") (identifier "plVar4")) (= "=") (identifier "lVar2")) (; ";")) (if_statement "if (lVar5 == 0) {\n        lVar5 = *param_3;\n      }\n      else {\n        lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);\n      }" (if "if") (parenthesized_expression "(lVar5 == 0)" (( "(") (binary_expression "lVar5 == 0" (identifier "lVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        lVar5 = *param_3;\n      }" ({ "{") (expression_statement "lVar5 = *param_3;" (assignment_expression "lVar5 = *param_3" (identifier "lVar5") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (} "}")) (else_clause "else {\n        lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);\n      }" (else "else") (compound_statement "{\n        lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);\n      }" ({ "{") (expression_statement "lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);" (assignment_expression "lVar5 = concat(*param_3,&DAT_00142269,lVar5,0)" (identifier "lVar5") (= "=") (call_expression "concat(*param_3,&DAT_00142269,lVar5,0)" (identifier "concat") (argument_list "(*param_3,&DAT_00142269,lVar5,0)" (( "(") (pointer_expression "*param_3" (* "*") (identifier "param_3")) (, ",") (pointer_expression "&DAT_00142269" (& "&") (identifier "DAT_00142269")) (, ",") (identifier "lVar5") (, ",") (number_literal "0") () ")")))) (; ";")) (} "}")))) (expression_statement "plVar4[1] = lVar5;" (assignment_expression "plVar4[1] = lVar5" (subscript_expression "plVar4[1]" (identifier "plVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "lVar5")) (; ";")) (expression_statement "plVar4[2] = 0;" (assignment_expression "plVar4[2] = 0" (subscript_expression "plVar4[2]" (identifier "plVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (switch_statement "switch((int)param_3[2]) {\n      case 0:\n        lVar5 = param_3[4];\n        uVar9 = 2;\n        if (lVar5 == 0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);\n        lVar5 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }\n        break;\n      case 1:\n        lVar5 = param_3[4];\n        uVar9 = 0x82;\n        if (lVar5 != 0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar5 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = param_3[3];\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }" (switch "switch") (parenthesized_expression "((int)param_3[2])" (( "(") (cast_expression "(int)param_3[2]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]"))) () ")")) (compound_statement "{\n      case 0:\n        lVar5 = param_3[4];\n        uVar9 = 2;\n        if (lVar5 == 0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);\n        lVar5 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }\n        break;\n      case 1:\n        lVar5 = param_3[4];\n        uVar9 = 0x82;\n        if (lVar5 != 0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");\n        break;\n      case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar5 = 0x170b38;\n        goto LAB_001279ea;\n      case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;\n      case 4:\n        plVar4[2] = param_3[3];\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;\n      default:\n        goto switchD_00127984_caseD_5;\n      }" ({ "{") (case_statement "case 0:\n        lVar5 = param_3[4];\n        uVar9 = 2;\n        if (lVar5 == 0) goto LAB_00127b33;\nLAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);\n        lVar5 = bfd_get_section_by_name(lVar2,__ptr);\n        if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }\n        lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);\n        if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }\n        break;" (case "case") (number_literal "0") (: ":") (expression_statement "lVar5 = param_3[4];" (assignment_expression "lVar5 = param_3[4]" (identifier "lVar5") (= "=") (subscript_expression "param_3[4]" (identifier "param_3") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "uVar9 = 2;" (assignment_expression "uVar9 = 2" (identifier "uVar9") (= "=") (number_literal "2")) (; ";")) (if_statement "if (lVar5 == 0) goto LAB_00127b33;" (if "if") (parenthesized_expression "(lVar5 == 0)" (( "(") (binary_expression "lVar5 == 0" (identifier "lVar5") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00127b33;" (goto "goto") (statement_identifier "LAB_00127b33") (; ";"))) (labeled_statement "LAB_001279a3:\n        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);" (statement_identifier "LAB_001279a3") (: ":") (expression_statement "__ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);" (assignment_expression "__ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0)" (identifier "__ptr") (= "=") (cast_expression "(void *)concat(".gnu.linkonce.t.",lVar5,0)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "concat(".gnu.linkonce.t.",lVar5,0)" (identifier "concat") (argument_list "(".gnu.linkonce.t.",lVar5,0)" (( "(") (string_literal "".gnu.linkonce.t."" (" """) (string_content ".gnu.linkonce.t.") (" """)) (, ",") (identifier "lVar5") (, ",") (number_literal "0") () ")"))))) (; ";"))) (expression_statement "lVar5 = bfd_get_section_by_name(lVar2,__ptr);" (assignment_expression "lVar5 = bfd_get_section_by_name(lVar2,__ptr)" (identifier "lVar5") (= "=") (call_expression "bfd_get_section_by_name(lVar2,__ptr)" (identifier "bfd_get_section_by_name") (argument_list "(lVar2,__ptr)" (( "(") (identifier "lVar2") (, ",") (identifier "__ptr") () ")")))) (; ";")) (if_statement "if (lVar5 != 0) {\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }" (if "if") (parenthesized_expression "(lVar5 != 0)" (( "(") (binary_expression "lVar5 != 0" (identifier "lVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          free(__ptr);\n          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n          goto LAB_001279ea;\n        }" ({ "{") (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (expression_statement "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);" (assignment_expression "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(*(long *)(lVar2 + 8) + 8)" (* "*") (cast_expression "(int *)(*(long *)(lVar2 + 8) + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(lVar2 + 8) + 8)" (( "(") (binary_expression "*(long *)(lVar2 + 8) + 8" (pointer_expression "*(long *)(lVar2 + 8)" (* "*") (cast_expression "(long *)(lVar2 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 8)" (( "(") (binary_expression "lVar2 + 8" (identifier "lVar2") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (goto_statement "goto LAB_001279ea;" (goto "goto") (statement_identifier "LAB_001279ea") (; ";")) (} "}"))) (expression_statement "lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);" (assignment_expression "lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b)" (identifier "lVar5") (= "=") (call_expression "bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b)" (identifier "bfd_make_section_anyway_with_flags") (argument_list "(lVar2,__ptr,0x22811b)" (( "(") (identifier "lVar2") (, ",") (identifier "__ptr") (, ",") (number_literal "0x22811b") () ")")))) (; ";")) (if_statement "if (lVar5 == 0) {\nswitchD_00127984_caseD_5:\n          return 3;\n        }" (if "if") (parenthesized_expression "(lVar5 == 0)" (( "(") (binary_expression "lVar5 == 0" (identifier "lVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nswitchD_00127984_caseD_5:\n          return 3;\n        }" ({ "{") (labeled_statement "switchD_00127984_caseD_5:\n          return 3;" (statement_identifier "switchD_00127984_caseD_5") (: ":") (return_statement "return 3;" (return "return") (number_literal "3") (; ";"))) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 1:\n        lVar5 = param_3[4];\n        uVar9 = 0x82;\n        if (lVar5 != 0) goto LAB_001279a3;\nLAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");\n        break;" (case "case") (number_literal "1") (: ":") (expression_statement "lVar5 = param_3[4];" (assignment_expression "lVar5 = param_3[4]" (identifier "lVar5") (= "=") (subscript_expression "param_3[4]" (identifier "param_3") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "uVar9 = 0x82;" (assignment_expression "uVar9 = 0x82" (identifier "uVar9") (= "=") (number_literal "0x82")) (; ";")) (if_statement "if (lVar5 != 0) goto LAB_001279a3;" (if "if") (parenthesized_expression "(lVar5 != 0)" (( "(") (binary_expression "lVar5 != 0" (identifier "lVar5") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_001279a3;" (goto "goto") (statement_identifier "LAB_001279a3") (; ";"))) (labeled_statement "LAB_00127b33:\n        lVar5 = bfd_get_section_by_name(lVar2,".text");" (statement_identifier "LAB_00127b33") (: ":") (expression_statement "lVar5 = bfd_get_section_by_name(lVar2,".text");" (assignment_expression "lVar5 = bfd_get_section_by_name(lVar2,".text")" (identifier "lVar5") (= "=") (call_expression "bfd_get_section_by_name(lVar2,".text")" (identifier "bfd_get_section_by_name") (argument_list "(lVar2,".text")" (( "(") (identifier "lVar2") (, ",") (string_literal "".text"" (" """) (string_content ".text") (" """)) () ")")))) (; ";"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 2:\n        uVar9 = 0;\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        lVar5 = 0x170b38;\n        goto LAB_001279ea;" (case "case") (number_literal "2") (: ":") (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" (identifier "uVar9") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);" (assignment_expression "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(*(long *)(lVar2 + 8) + 8)" (* "*") (cast_expression "(int *)(*(long *)(lVar2 + 8) + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(lVar2 + 8) + 8)" (( "(") (binary_expression "*(long *)(lVar2 + 8) + 8" (pointer_expression "*(long *)(lVar2 + 8)" (* "*") (cast_expression "(long *)(lVar2 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 8)" (( "(") (binary_expression "lVar2 + 8" (identifier "lVar2") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar5 = 0x170b38;" (assignment_expression "lVar5 = 0x170b38" (identifier "lVar5") (= "=") (number_literal "0x170b38")) (; ";")) (goto_statement "goto LAB_001279ea;" (goto "goto") (statement_identifier "LAB_001279ea") (; ";"))) (case_statement "case 3:\n        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);\n        *(undefined4 *)(plVar4 + 3) = 0x80;\n        plVar4[4] = 0x170b38;\n        if (iVar7 != 5) goto LAB_001279fd;\n        goto LAB_00127a97;" (case "case") (number_literal "3") (: ":") (expression_statement "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);" (assignment_expression "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(*(long *)(lVar2 + 8) + 8)" (* "*") (cast_expression "(int *)(*(long *)(lVar2 + 8) + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(lVar2 + 8) + 8)" (( "(") (binary_expression "*(long *)(lVar2 + 8) + 8" (pointer_expression "*(long *)(lVar2 + 8)" (* "*") (cast_expression "(long *)(lVar2 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 8)" (( "(") (binary_expression "lVar2 + 8" (identifier "lVar2") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(plVar4 + 3) = 0x80;" (assignment_expression "*(undefined4 *)(plVar4 + 3) = 0x80" (pointer_expression "*(undefined4 *)(plVar4 + 3)" (* "*") (cast_expression "(undefined4 *)(plVar4 + 3)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar4 + 3)" (( "(") (binary_expression "plVar4 + 3" (identifier "plVar4") (+ "+") (number_literal "3")) () ")")))) (= "=") (number_literal "0x80")) (; ";")) (expression_statement "plVar4[4] = 0x170b38;" (assignment_expression "plVar4[4] = 0x170b38" (subscript_expression "plVar4[4]" (identifier "plVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0x170b38")) (; ";")) (if_statement "if (iVar7 != 5) goto LAB_001279fd;" (if "if") (parenthesized_expression "(iVar7 != 5)" (( "(") (binary_expression "iVar7 != 5" (identifier "iVar7") (!= "!=") (number_literal "5")) () ")")) (goto_statement "goto LAB_001279fd;" (goto "goto") (statement_identifier "LAB_001279fd") (; ";"))) (goto_statement "goto LAB_00127a97;" (goto "goto") (statement_identifier "LAB_00127a97") (; ";"))) (case_statement "case 4:\n        plVar4[2] = param_3[3];\n        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }\n        *(undefined4 *)(plVar4 + 3) = 2;\n        plVar4[4] = (long)_bfd_std_section;\n        goto LAB_001279fd;" (case "case") (number_literal "4") (: ":") (expression_statement "plVar4[2] = param_3[3];" (assignment_expression "plVar4[2] = param_3[3]" (subscript_expression "plVar4[2]" (identifier "plVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]"))) (; ";")) (if_statement "if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }" (if "if") (parenthesized_expression "(*(int *)(*(long *)(lVar2 + 8) + 8) == 5)" (( "(") (binary_expression "*(int *)(*(long *)(lVar2 + 8) + 8) == 5" (pointer_expression "*(int *)(*(long *)(lVar2 + 8) + 8)" (* "*") (cast_expression "(int *)(*(long *)(lVar2 + 8) + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(lVar2 + 8) + 8)" (( "(") (binary_expression "*(long *)(lVar2 + 8) + 8" (pointer_expression "*(long *)(lVar2 + 8)" (* "*") (cast_expression "(long *)(lVar2 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 8)" (( "(") (binary_expression "lVar2 + 8" (identifier "lVar2") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (== "==") (number_literal "5")) () ")")) (compound_statement "{\n          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;\n          plVar4[6] = 1;\n          *(undefined4 *)(plVar4 + 3) = 2;\n          plVar4[4] = (long)_bfd_std_section;\n          goto LAB_00127a97;\n        }" ({ "{") (expression_statement "*(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;" (assignment_expression "*(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2" (pointer_expression "*(undefined4 *)((long)plVar4 + 0x4c)" (* "*") (cast_expression "(undefined4 *)((long)plVar4 + 0x4c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar4 + 0x4c)" (( "(") (binary_expression "(long)plVar4 + 0x4c" (cast_expression "(long)plVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar4")) (+ "+") (number_literal "0x4c")) () ")")))) (= "=") (number_literal "0xfffffff2")) (; ";")) (expression_statement "plVar4[6] = 1;" (assignment_expression "plVar4[6] = 1" (subscript_expression "plVar4[6]" (identifier "plVar4") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(undefined4 *)(plVar4 + 3) = 2;" (assignment_expression "*(undefined4 *)(plVar4 + 3) = 2" (pointer_expression "*(undefined4 *)(plVar4 + 3)" (* "*") (cast_expression "(undefined4 *)(plVar4 + 3)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar4 + 3)" (( "(") (binary_expression "plVar4 + 3" (identifier "plVar4") (+ "+") (number_literal "3")) () ")")))) (= "=") (number_literal "2")) (; ";")) (expression_statement "plVar4[4] = (long)_bfd_std_section;" (assignment_expression "plVar4[4] = (long)_bfd_std_section" (subscript_expression "plVar4[4]" (identifier "plVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (cast_expression "(long)_bfd_std_section" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "_bfd_std_section"))) (; ";")) (goto_statement "goto LAB_00127a97;" (goto "goto") (statement_identifier "LAB_00127a97") (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(plVar4 + 3) = 2;" (assignment_expression "*(undefined4 *)(plVar4 + 3) = 2" (pointer_expression "*(undefined4 *)(plVar4 + 3)" (* "*") (cast_expression "(undefined4 *)(plVar4 + 3)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar4 + 3)" (( "(") (binary_expression "plVar4 + 3" (identifier "plVar4") (+ "+") (number_literal "3")) () ")")))) (= "=") (number_literal "2")) (; ";")) (expression_statement "plVar4[4] = (long)_bfd_std_section;" (assignment_expression "plVar4[4] = (long)_bfd_std_section" (subscript_expression "plVar4[4]" (identifier "plVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (cast_expression "(long)_bfd_std_section" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "_bfd_std_section"))) (; ";")) (goto_statement "goto LAB_001279fd;" (goto "goto") (statement_identifier "LAB_001279fd") (; ";"))) (case_statement "default:\n        goto switchD_00127984_caseD_5;" (default "default") (: ":") (goto_statement "goto switchD_00127984_caseD_5;" (goto "goto") (statement_identifier "switchD_00127984_caseD_5") (; ";"))) (} "}"))) (expression_statement "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);" (assignment_expression "iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(*(long *)(lVar2 + 8) + 8)" (* "*") (cast_expression "(int *)(*(long *)(lVar2 + 8) + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(lVar2 + 8) + 8)" (( "(") (binary_expression "*(long *)(lVar2 + 8) + 8" (pointer_expression "*(long *)(lVar2 + 8)" (* "*") (cast_expression "(long *)(lVar2 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 8)" (( "(") (binary_expression "lVar2 + 8" (identifier "lVar2") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (labeled_statement "LAB_001279ea:\n      *(undefined4 *)(plVar4 + 3) = uVar9;" (statement_identifier "LAB_001279ea") (: ":") (expression_statement "*(undefined4 *)(plVar4 + 3) = uVar9;" (assignment_expression "*(undefined4 *)(plVar4 + 3) = uVar9" (pointer_expression "*(undefined4 *)(plVar4 + 3)" (* "*") (cast_expression "(undefined4 *)(plVar4 + 3)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar4 + 3)" (( "(") (binary_expression "plVar4 + 3" (identifier "plVar4") (+ "+") (number_literal "3")) () ")")))) (= "=") (identifier "uVar9")) (; ";"))) (expression_statement "plVar4[4] = lVar5;" (assignment_expression "plVar4[4] = lVar5" (subscript_expression "plVar4[4]" (identifier "plVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "lVar5")) (; ";")) (if_statement "if (iVar7 == 5) {\nLAB_00127a97:\n        lVar5 = *plVar4;\n        if (((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)) {\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        if (3 < uVar1) {\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1];\n      }" (if "if") (parenthesized_expression "(iVar7 == 5)" (( "(") (binary_expression "iVar7 == 5" (identifier "iVar7") (== "==") (number_literal "5")) () ")")) (compound_statement "{\nLAB_00127a97:\n        lVar5 = *plVar4;\n        if (((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)) {\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        if (3 < uVar1) {\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }\n        *(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1];\n      }" ({ "{") (labeled_statement "LAB_00127a97:\n        lVar5 = *plVar4;" (statement_identifier "LAB_00127a97") (: ":") (expression_statement "lVar5 = *plVar4;" (assignment_expression "lVar5 = *plVar4" (identifier "lVar5") (= "=") (pointer_expression "*plVar4" (* "*") (identifier "plVar4"))) (; ";"))) (if_statement "if (((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)) {\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }\n        else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }" (if "if") (parenthesized_expression "(((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0))" (( "(") (binary_expression "((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||\n           (*(long *)(lVar5 + 0xf8) == 0)" (parenthesized_expression "((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5))" (( "(") (binary_expression "(lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)" (parenthesized_expression "(lVar5 == 0)" (( "(") (binary_expression "lVar5 == 0" (identifier "lVar5") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(int *)(*(long *)(lVar5 + 8) + 8) != 5)" (( "(") (binary_expression "*(int *)(*(long *)(lVar5 + 8) + 8) != 5" (pointer_expression "*(int *)(*(long *)(lVar5 + 8) + 8)" (* "*") (cast_expression "(int *)(*(long *)(lVar5 + 8) + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(lVar5 + 8) + 8)" (( "(") (binary_expression "*(long *)(lVar5 + 8) + 8" (pointer_expression "*(long *)(lVar5 + 8)" (* "*") (cast_expression "(long *)(lVar5 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 8)" (( "(") (binary_expression "lVar5 + 8" (identifier "lVar5") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (!= "!=") (number_literal "5")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(*(long *)(lVar5 + 0xf8) == 0)" (( "(") (binary_expression "*(long *)(lVar5 + 0xf8) == 0" (pointer_expression "*(long *)(lVar5 + 0xf8)" (* "*") (cast_expression "(long *)(lVar5 + 0xf8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0xf8)" (( "(") (binary_expression "lVar5 + 0xf8" (identifier "lVar5") (+ "+") (number_literal "0xf8")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          lVar5 = plVar4[1];\n          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          plVar4 = (long *)0x0;\n          FUN_00125190(uVar6,lVar5);\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }" ({ "{") (expression_statement "lVar5 = plVar4[1];" (assignment_expression "lVar5 = plVar4[1]" (identifier "lVar5") (= "=") (subscript_expression "plVar4[1]" (identifier "plVar4") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);" (assignment_expression "uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5)" (identifier "uVar6") (= "=") (call_expression "dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5)" (identifier "dcgettext") (argument_list "(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%F%P: %s: non-ELF symbol in ELF BFD!\n"" (" """) (string_content "%F%P: %s: non-ELF symbol in ELF BFD!") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "plVar4 = (long *)0x0;" (assignment_expression "plVar4 = (long *)0x0" (identifier "plVar4") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "FUN_00125190(uVar6,lVar5);" (call_expression "FUN_00125190(uVar6,lVar5)" (identifier "FUN_00125190") (argument_list "(uVar6,lVar5)" (( "(") (identifier "uVar6") (, ",") (identifier "lVar5") () ")"))) (; ";")) (expression_statement "uVar1 = *(uint *)((long)param_3 + 0x14);" (assignment_expression "uVar1 = *(uint *)((long)param_3 + 0x14)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)((long)param_3 + 0x14)" (* "*") (cast_expression "(uint *)((long)param_3 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_3 + 0x14)" (( "(") (binary_expression "(long)param_3 + 0x14" (cast_expression "(long)param_3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_3")) (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }" (else "else") (compound_statement "{\n          uVar1 = *(uint *)((long)param_3 + 0x14);\n        }" ({ "{") (expression_statement "uVar1 = *(uint *)((long)param_3 + 0x14);" (assignment_expression "uVar1 = *(uint *)((long)param_3 + 0x14)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)((long)param_3 + 0x14)" (* "*") (cast_expression "(uint *)((long)param_3 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_3 + 0x14)" (( "(") (binary_expression "(long)param_3 + 0x14" (cast_expression "(long)param_3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_3")) (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (} "}")))) (if_statement "if (3 < uVar1) {\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }" (if "if") (parenthesized_expression "(3 < uVar1)" (( "(") (binary_expression "3 < uVar1" (number_literal "3") (< "<") (identifier "uVar1")) () ")")) (compound_statement "{\n          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00125190(uVar6,uVar1);\n          return 3;\n        }" ({ "{") (expression_statement "uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);" (assignment_expression "uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5)" (identifier "uVar6") (= "=") (call_expression "dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5)" (identifier "dcgettext") (argument_list "(0,"%F%P: unknown ELF symbol visibility: %d!\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%F%P: unknown ELF symbol visibility: %d!\n"" (" """) (string_content "%F%P: unknown ELF symbol visibility: %d!") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00125190(uVar6,uVar1);" (call_expression "FUN_00125190(uVar6,uVar1)" (identifier "FUN_00125190") (argument_list "(uVar6,uVar1)" (( "(") (identifier "uVar6") (, ",") (identifier "uVar1") () ")"))) (; ";")) (return_statement "return 3;" (return "return") (number_literal "3") (; ";")) (} "}"))) (expression_statement "*(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1];" (assignment_expression "*(byte *)((long)plVar4 + 0x49) =\n             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1]" (pointer_expression "*(byte *)((long)plVar4 + 0x49)" (* "*") (cast_expression "(byte *)((long)plVar4 + 0x49)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar4 + 0x49)" (( "(") (binary_expression "(long)plVar4 + 0x49" (cast_expression "(long)plVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar4")) (+ "+") (number_literal "0x49")) () ")")))) (= "=") (binary_expression "*(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1]" (binary_expression "*(byte *)((long)plVar4 + 0x49) & 0xfc" (pointer_expression "*(byte *)((long)plVar4 + 0x49)" (* "*") (cast_expression "(byte *)((long)plVar4 + 0x49)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar4 + 0x49)" (( "(") (binary_expression "(long)plVar4 + 0x49" (cast_expression "(long)plVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar4")) (+ "+") (number_literal "0x49")) () ")")))) (& "&") (number_literal "0xfc")) (| "|") (subscript_expression "(&DAT_0014239c)[uVar1]" (parenthesized_expression "(&DAT_0014239c)" (( "(") (pointer_expression "&DAT_0014239c" (& "&") (identifier "DAT_0014239c")) () ")")) ([ "[") (identifier "uVar1") (] "]")))) (; ";")) (} "}"))) (labeled_statement "LAB_001279fd:\n      puVar8 = puVar8 + 1;" (statement_identifier "LAB_001279fd") (: ":") (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" (identifier "puVar8") (= "=") (binary_expression "puVar8 + 1" (identifier "puVar8") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "param_3 = param_3 + 6;" (assignment_expression "param_3 = param_3 + 6" (identifier "param_3") (= "=") (binary_expression "param_3 + 6" (identifier "param_3") (+ "+") (number_literal "6"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar8 != puVar3 + (ulong)(param_2 - 1) + 1)" (( "(") (binary_expression "puVar8 != puVar3 + (ulong)(param_2 - 1) + 1" (identifier "puVar8") (!= "!=") (binary_expression "puVar3 + (ulong)(param_2 - 1) + 1" (binary_expression "puVar3 + (ulong)(param_2 - 1)" (identifier "puVar3") (+ "+") (call_expression "(ulong)(param_2 - 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(param_2 - 1)" (( "(") (binary_expression "param_2 - 1" (identifier "param_2") (- "-") (number_literal "1")) () ")")))) (+ "+") (number_literal "1"))) () ")")) (; ";")) (} "}"))) (expression_statement "bfd_set_symtab(lVar2,puVar3,param_2);" (call_expression "bfd_set_symtab(lVar2,puVar3,param_2)" (identifier "bfd_set_symtab") (argument_list "(lVar2,puVar3,param_2)" (( "(") (identifier "lVar2") (, ",") (identifier "puVar3") (, ",") (identifier "param_2") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

type_1 function_1(void *handle,int var_4,type_2 *var_18)

{
  type_3 var_16;
  long var_5;
  type_4 *var_19;
  long *var_12;
  char *var_6;
  void *__ptr;
  long var_9;
  int var_13;
  type_4 *var_17;
  type_5 *input;
  type_6 uVar9;
  
                    /* WARNING: Load size is inaccurate */
  var_5 = *handle;
  if (var_1 == (type_7 *)0x0) {
    var_2("../../ld/plugin.c",0x1ec);
  }
  var_19 = (type_4 *)var_3((long)var_4 << 3);
  if (0 < var_4) {
    var_17 = var_19;
    do {
      var_12 = (long *)(**(type_8 **)(*(long *)(var_5 + 8) + 0x200))(var_5);
      var_6 = var_18->version;
      *var_17 = var_12;
      *var_12 = var_5;
      if (var_6 == (char *)0x0) {
        var_6 = var_18->name;
      }
      else {
        var_6 = (char *)var_7(var_18->name,&DAT_00142269,var_6,0);
      }
      var_12[1] = (long)var_6;
      var_12[2] = 0;
      switch(var_18->def) {
      case 0:
        var_6 = var_18->comdat_key;
        uVar9 = 2;
        if (var_6 == (char *)0x0) goto LAB_00127b33;
LAB_001279a3:
        __ptr = (void *)var_7(".gnu.linkonce.t.",var_6,0);
        var_9 = var_8(var_5,__ptr);
        if (var_9 != 0) {
          var_10(__ptr);
          var_13 = *(int *)(*(long *)(var_5 + 8) + 8);
          goto LAB_001279ea;
        }
        var_9 = var_11(var_5,__ptr,0x22811b);
        if (var_9 == 0) {
switchD_00127984_caseD_5:
          return LDPS_ERR;
        }
        break;
      case 1:
        var_6 = var_18->comdat_key;
        uVar9 = 0x82;
        if (var_6 != (char *)0x0) goto LAB_001279a3;
LAB_00127b33:
        var_9 = var_8(var_5,".text");
        break;
      case 2:
        uVar9 = 0;
        var_13 = *(int *)(*(long *)(var_5 + 8) + 8);
        var_9 = 0x170b38;
        goto LAB_001279ea;
      case 3:
        var_13 = *(int *)(*(long *)(var_5 + 8) + 8);
        *(type_6 *)(var_12 + 3) = 0x80;
        var_12[4] = 0x170b38;
        if (var_13 != 5) goto LAB_001279fd;
        goto LAB_00127a97;
      case 4:
        var_12[2] = var_18->size;
        if (*(int *)(*(long *)(var_5 + 8) + 8) == 5) {
          *(type_6 *)((long)var_12 + 0x4c) = 0xfffffff2;
          var_12[6] = 1;
          *(type_6 *)(var_12 + 3) = 2;
          var_12[4] = (long)_bfd_std_section;
          goto LAB_00127a97;
        }
        *(type_6 *)(var_12 + 3) = 2;
        var_12[4] = (long)_bfd_std_section;
        goto LAB_001279fd;
      default:
        goto switchD_00127984_caseD_5;
      }
      var_13 = *(int *)(*(long *)(var_5 + 8) + 8);
LAB_001279ea:
      *(type_6 *)(var_12 + 3) = uVar9;
      var_12[4] = var_9;
      if (var_13 == 5) {
LAB_00127a97:
        var_9 = *var_12;
        if (((var_9 == 0) || (*(int *)(*(long *)(var_9 + 8) + 8) != 5)) ||
           (*(long *)(var_9 + 0xf8) == 0)) {
          var_9 = var_12[1];
          var_6 = (char *)var_14(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);
          var_12 = (long *)0x0;
          var_15(var_6,var_9);
          var_16 = var_18->visibility;
        }
        else {
          var_16 = var_18->visibility;
        }
        if (3 < var_16) {
          var_6 = (char *)var_14(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);
          var_15(var_6,(type_9)var_16);
          return LDPS_ERR;
        }
        *(type_10 *)((long)var_12 + 0x49) =
             *(type_10 *)((long)var_12 + 0x49) & 0xfc | *(type_10 *)((long)&CSWTCH_58 + (type_9)var_16);
      }
LAB_001279fd:
      var_17 = var_17 + 1;
      var_18 = var_18 + 1;
    } while (var_17 != var_19 + (type_9)(var_4 - 1) + 1);
  }
  var_20(var_5,var_19,var_4);
  return LDPS_OK;
}


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

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

{
  uint uVar1;
  long lVar2;
  undefined8 *puVar3;
  long *plVar4;
  long lVar5;
  void *__ptr;
  undefined8 uVar6;
  int iVar7;
  undefined8 *puVar8;
  undefined4 uVar9;
  
  lVar2 = *param_1;
  if (DAT_00171670 == 0) {
    FUN_00125250("../../ld/plugin.c",0x1ec);
  }
  puVar3 = (undefined8 *)xmalloc((long)param_2 << 3);
  if (0 < param_2) {
    puVar8 = puVar3;
    do {
      plVar4 = (long *)(**(code **)(*(long *)(lVar2 + 8) + 0x200))(lVar2);
      lVar5 = param_3[1];
      *puVar8 = plVar4;
      *plVar4 = lVar2;
      if (lVar5 == 0) {
        lVar5 = *param_3;
      }
      else {
        lVar5 = concat(*param_3,&DAT_00142269,lVar5,0);
      }
      plVar4[1] = lVar5;
      plVar4[2] = 0;
      switch((int)param_3[2]) {
      case 0:
        lVar5 = param_3[4];
        uVar9 = 2;
        if (lVar5 == 0) goto LAB_00127b33;
LAB_001279a3:
        __ptr = (void *)concat(".gnu.linkonce.t.",lVar5,0);
        lVar5 = bfd_get_section_by_name(lVar2,__ptr);
        if (lVar5 != 0) {
          free(__ptr);
          iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);
          goto LAB_001279ea;
        }
        lVar5 = bfd_make_section_anyway_with_flags(lVar2,__ptr,0x22811b);
        if (lVar5 == 0) {
switchD_00127984_caseD_5:
          return 3;
        }
        break;
      case 1:
        lVar5 = param_3[4];
        uVar9 = 0x82;
        if (lVar5 != 0) goto LAB_001279a3;
LAB_00127b33:
        lVar5 = bfd_get_section_by_name(lVar2,".text");
        break;
      case 2:
        uVar9 = 0;
        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);
        lVar5 = 0x170b38;
        goto LAB_001279ea;
      case 3:
        iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);
        *(undefined4 *)(plVar4 + 3) = 0x80;
        plVar4[4] = 0x170b38;
        if (iVar7 != 5) goto LAB_001279fd;
        goto LAB_00127a97;
      case 4:
        plVar4[2] = param_3[3];
        if (*(int *)(*(long *)(lVar2 + 8) + 8) == 5) {
          *(undefined4 *)((long)plVar4 + 0x4c) = 0xfffffff2;
          plVar4[6] = 1;
          *(undefined4 *)(plVar4 + 3) = 2;
          plVar4[4] = (long)_bfd_std_section;
          goto LAB_00127a97;
        }
        *(undefined4 *)(plVar4 + 3) = 2;
        plVar4[4] = (long)_bfd_std_section;
        goto LAB_001279fd;
      default:
        goto switchD_00127984_caseD_5;
      }
      iVar7 = *(int *)(*(long *)(lVar2 + 8) + 8);
LAB_001279ea:
      *(undefined4 *)(plVar4 + 3) = uVar9;
      plVar4[4] = lVar5;
      if (iVar7 == 5) {
LAB_00127a97:
        lVar5 = *plVar4;
        if (((lVar5 == 0) || (*(int *)(*(long *)(lVar5 + 8) + 8) != 5)) ||
           (*(long *)(lVar5 + 0xf8) == 0)) {
          lVar5 = plVar4[1];
          uVar6 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);
          plVar4 = (long *)0x0;
          FUN_00125190(uVar6,lVar5);
          uVar1 = *(uint *)((long)param_3 + 0x14);
        }
        else {
          uVar1 = *(uint *)((long)param_3 + 0x14);
        }
        if (3 < uVar1) {
          uVar6 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);
          FUN_00125190(uVar6,uVar1);
          return 3;
        }
        *(byte *)((long)plVar4 + 0x49) =
             *(byte *)((long)plVar4 + 0x49) & 0xfc | (&DAT_0014239c)[uVar1];
      }
LAB_001279fd:
      puVar8 = puVar8 + 1;
      param_3 = param_3 + 6;
    } while (puVar8 != puVar3 + (ulong)(param_2 - 1) + 1);
  }
  bfd_set_symtab(lVar2,puVar3,param_2);
  return 0;
}

