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

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

{
  int iVar1;
  uint uVar2;
  int iVar3;
  undefined *puVar4;
  int *piVar5;
  char *pcVar6;
  void *__ptr;
  undefined *puVar7;
  int iVar8;
  int iVar9;
  int local_34;
  
                    /* WARNING: Load size is inaccurate */
  iVar1 = *handle;
  if (called_plugin == (plugin_t *)0x0) {
    info_assert("../../ld/plugin.c",0x1ec);
  }
  iVar3 = xmalloc(nsyms << 2);
  puVar4 = PTR__bfd_std_section_0013bfc4 + 0xc0;
  local_34 = 0;
  if (0 < nsyms) {
    do {
      piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);
      *(int **)(iVar3 + local_34 * 4) = piVar5;
      pcVar6 = syms->version;
      *piVar5 = iVar1;
      if (pcVar6 == (char *)0x0) {
        pcVar6 = syms->name;
      }
      else {
        pcVar6 = (char *)concat(syms->name,&DAT_00065079,pcVar6,0);
      }
      piVar5[1] = (int)pcVar6;
      piVar5[2] = 0;
      piVar5[3] = 0;
      switch(syms->def) {
      case 0:
        pcVar6 = syms->comdat_key;
        iVar9 = 2;
        if (pcVar6 == (char *)0x0) goto LAB_00036680;
LAB_00036500:
        __ptr = (void *)concat(".gnu.linkonce.t.",pcVar6,0);
        puVar7 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);
        if (puVar7 == (undefined *)0x0) {
          puVar7 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);
          if (puVar7 == (undefined *)0x0) {
switchD_000364ed_caseD_5:
            return LDPS_ERR;
          }
          iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);
        }
        else {
          free(__ptr);
          iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);
        }
        break;
      case 1:
        pcVar6 = syms->comdat_key;
        iVar9 = 0x82;
        if (pcVar6 != (char *)0x0) goto LAB_00036500;
LAB_00036680:
        puVar7 = (undefined *)bfd_get_section_by_name(iVar1,".text");
        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);
        break;
      case 2:
        iVar9 = 0;
        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);
        puVar7 = PTR__bfd_std_section_0013bfc4 + 0xc0;
        break;
      case 3:
        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);
        piVar5[4] = 0x80;
        piVar5[5] = (int)puVar4;
        if (iVar8 != 5) goto LAB_00036569;
        goto LAB_000365ee;
      case 4:
        iVar8 = *(int *)((int)&syms->size + 4);
        piVar5[2] = (int)syms->size;
        iVar9 = *(int *)(iVar1 + 4);
        piVar5[3] = iVar8;
        puVar7 = PTR__bfd_std_section_0013bfc4;
        if (*(int *)(iVar9 + 4) == 5) {
          piVar5[0xe] = -0xe;
          piVar5[8] = 1;
          piVar5[9] = 0;
          piVar5[4] = 2;
          piVar5[5] = (int)puVar7;
          goto LAB_000365ee;
        }
        piVar5[4] = 2;
        piVar5[5] = (int)puVar7;
        goto LAB_00036569;
      default:
        goto switchD_000364ed_caseD_5;
      }
      piVar5[4] = iVar9;
      piVar5[5] = (int)puVar7;
      if (iVar8 == 5) {
LAB_000365ee:
        iVar8 = *piVar5;
        if (((iVar8 == 0) || (*(int *)(*(int *)(iVar8 + 4) + 4) != 5)) ||
           (*(int *)(iVar8 + 0xa0) == 0)) {
          iVar8 = piVar5[1];
          pcVar6 = (char *)dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);
          piVar5 = (int *)0x0;
          einfo(pcVar6,iVar8);
          uVar2 = syms->visibility;
        }
        else {
          uVar2 = syms->visibility;
        }
        if (3 < uVar2) {
          pcVar6 = (char *)dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);
          einfo(pcVar6,uVar2);
          return LDPS_ERR;
        }
        *(byte *)((int)piVar5 + 0x35) =
             *(byte *)((int)piVar5 + 0x35) & 0xfc | *(byte *)((int)&CSWTCH_67 + uVar2);
      }
LAB_00036569:
      local_34 = local_34 + 1;
      syms = syms + 1;
    } while (nsyms != local_34);
  }
  bfd_set_symtab(iVar1,iVar3,nsyms);
  return LDPS_OK;
}



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

undefined4 FUN_00036420(int *param_1,int param_2,int *param_3)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  undefined *puVar4;
  int *piVar5;
  int iVar6;
  void *__ptr;
  undefined4 uVar7;
  undefined *puVar8;
  int iVar9;
  int local_34;
  
  iVar1 = *param_1;
  if (DAT_0013d108 == 0) {
    FUN_00033bf0("../../ld/plugin.c",0x1ec);
  }
  iVar3 = xmalloc(param_2 << 2);
  puVar4 = PTR__bfd_std_section_0013bfc4 + 0xc0;
  local_34 = 0;
  if (0 < param_2) {
    do {
      piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);
      *(int **)(iVar3 + local_34 * 4) = piVar5;
      iVar6 = param_3[1];
      *piVar5 = iVar1;
      if (iVar6 == 0) {
        iVar6 = *param_3;
      }
      else {
        iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);
      }
      piVar5[1] = iVar6;
      piVar5[2] = 0;
      piVar5[3] = 0;
      switch(param_3[2]) {
      case 0:
        iVar6 = param_3[6];
        iVar9 = 2;
        if (iVar6 == 0) goto code_r0x00036680;
code_r0x00036500:
        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);
        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);
        if (puVar8 == (undefined *)0x0) {
          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);
          if (puVar8 == (undefined *)0x0) {
LAB_00036788:
            return 3;
          }
          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);
        }
        else {
          free(__ptr);
          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);
        }
        break;
      case 1:
        iVar6 = param_3[6];
        iVar9 = 0x82;
        if (iVar6 != 0) goto code_r0x00036500;
code_r0x00036680:
        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");
        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);
        break;
      case 2:
        iVar9 = 0;
        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);
        puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;
        break;
      case 3:
        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);
        piVar5[4] = 0x80;
        piVar5[5] = (int)puVar4;
        if (iVar6 != 5) goto code_r0x00036569;
        goto code_r0x000365ee;
      case 4:
        iVar6 = param_3[5];
        piVar5[2] = param_3[4];
        iVar9 = *(int *)(iVar1 + 4);
        piVar5[3] = iVar6;
        puVar8 = PTR__bfd_std_section_0013bfc4;
        if (*(int *)(iVar9 + 4) == 5) {
          piVar5[0xe] = -0xe;
          piVar5[8] = 1;
          piVar5[9] = 0;
          piVar5[4] = 2;
          piVar5[5] = (int)puVar8;
          goto code_r0x000365ee;
        }
        piVar5[4] = 2;
        piVar5[5] = (int)puVar8;
        goto code_r0x00036569;
      default:
        goto LAB_00036788;
      }
      piVar5[4] = iVar9;
      piVar5[5] = (int)puVar8;
      if (iVar6 == 5) {
code_r0x000365ee:
        iVar6 = *piVar5;
        if (((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||
           (*(int *)(iVar6 + 0xa0) == 0)) {
          iVar6 = piVar5[1];
          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);
          piVar5 = (int *)0x0;
          FUN_00033ba0(uVar7,iVar6);
          uVar2 = param_3[3];
        }
        else {
          uVar2 = param_3[3];
        }
        if (3 < uVar2) {
          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);
          FUN_00033ba0(uVar7,uVar2);
          return 3;
        }
        *(byte *)((int)piVar5 + 0x35) =
             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2];
      }
code_r0x00036569:
      local_34 = local_34 + 1;
      param_3 = param_3 + 8;
    } while (param_2 != local_34);
  }
  bfd_set_symtab(iVar1,iVar3,param_2);
  return 0;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00016a30
ADD EBX,0x105bd7
SUB ESP,0x2c
MOV EAX,dword ptr [ESP + 0x40]
MOV EBP,dword ptr [EAX]
MOV ESI,dword ptr [EBX + 0x1108]
TEST ESI,ESI
JZ 0x00036768
SUB ESP,0xc
MOV EAX,dword ptr [ESP + 0x50]
SHL EAX,0x2
PUSH EAX
CALL 0x00015c78
MOV dword ptr [ESP + 0x1c],EAX
ADD ESP,0x10
MOV EAX,dword ptr [EBX + 0xffffffc4]
MOV ECX,dword ptr [ESP + 0x44]
MOV EDI,dword ptr [ESP + 0x48]
ADD EAX,0xc0
MOV dword ptr [ESP + 0x8],0x0
MOV dword ptr [ESP + 0x1c],EAX
TEST ECX,ECX
JLE 0x0003657f
LEA ESI,[ESI]
MOV EAX,dword ptr [EBP + 0x4]
SUB ESP,0xc
PUSH EBP
CALL dword ptr [EAX + 0x10c]
MOV EDX,dword ptr [ESP + 0x18]
MOV ESI,EAX
MOV EAX,dword ptr [ESP + 0x1c]
ADD ESP,0x10
MOV dword ptr [EAX + EDX*0x4],ESI
MOV EAX,dword ptr [EDI + 0x4]
MOV dword ptr [ESI],EBP
TEST EAX,EAX
JZ 0x000366b0
PUSH 0x0
PUSH EAX
LEA EAX,[EBX + 0xfff29079]
PUSH EAX
PUSH dword ptr [EDI]
CALL 0x000153f0
ADD ESP,0x10
CMP dword ptr [EDI + 0x8],0x4
MOV dword ptr [ESI + 0x4],EAX
MOV dword ptr [ESI + 0x8],0x0
MOV dword ptr [ESI + 0xc],0x0
JA 0x00036788
MOV EAX,dword ptr [EDI + 0x8]
MOV ECX,dword ptr [EBX + EAX*0x4 + 0xfff29120]
ADD ECX,EBX
JMP ECX
SUB ESP,0x4
PUSH dword ptr [ESP + 0x48]
PUSH dword ptr [ESP + 0x14]
PUSH EBP
CALL 0x000155f0
ADD ESP,0x10
XOR EAX,EAX
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [EDI]
JMP 0x000364c6
SUB ESP,0x8
LEA EAX,[EBX + 0xfff29067]
PUSH 0x1ec
PUSH EAX
CALL 0x00033bf0
ADD ESP,0x10
JMP 0x00036446
MOV EAX,0x3
JMP 0x00036595
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 FUN_00036420(int *param_1,int param_2,int *param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  undefined *puVar4;\n  int *piVar5;\n  int iVar6;\n  void *__ptr;\n  undefined4 uVar7;\n  undefined *puVar8;\n  int iVar9;\n  int local_34;\n  \n  iVar1 = *param_1;\n  if (DAT_0013d108 == 0) {\n    FUN_00033bf0("../../ld/plugin.c",0x1ec);\n  }\n  iVar3 = xmalloc(param_2 << 2);\n  puVar4 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n  local_34 = 0;\n  if (0 < param_2) {\n    do {\n      piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);\n      *(int **)(iVar3 + local_34 * 4) = piVar5;\n      iVar6 = param_3[1];\n      *piVar5 = iVar1;\n      if (iVar6 == 0) {\n        iVar6 = *param_3;\n      }\n      else {\n        iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);\n      }\n      piVar5[1] = iVar6;\n      piVar5[2] = 0;\n      piVar5[3] = 0;\n      switch(param_3[2]) {\n      case 0:\n        iVar6 = param_3[6];\n        iVar9 = 2;\n        if (iVar6 == 0) goto code_r0x00036680;\ncode_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        iVar6 = param_3[6];\n        iVar9 = 0x82;\n        if (iVar6 != 0) goto code_r0x00036500;\ncode_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar6 != 5) goto code_r0x00036569;\n        goto code_r0x000365ee;\n      case 4:\n        iVar6 = param_3[5];\n        piVar5[2] = param_3[4];\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar6;\n        puVar8 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar8;\n        goto code_r0x00036569;\n      default:\n        goto LAB_00036788;\n      }\n      piVar5[4] = iVar9;\n      piVar5[5] = (int)puVar8;\n      if (iVar6 == 5) {\ncode_r0x000365ee:\n        iVar6 = *piVar5;\n        if (((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)) {\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }\n        else {\n          uVar2 = param_3[3];\n        }\n        if (3 < uVar2) {\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2];\n      }\ncode_r0x00036569:\n      local_34 = local_34 + 1;\n      param_3 = param_3 + 8;\n    } while (param_2 != local_34);\n  }\n  bfd_set_symtab(iVar1,iVar3,param_2);\n  return 0;\n}\n\n" comment (function_definition "undefined4 FUN_00036420(int *param_1,int param_2,int *param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  undefined *puVar4;\n  int *piVar5;\n  int iVar6;\n  void *__ptr;\n  undefined4 uVar7;\n  undefined *puVar8;\n  int iVar9;\n  int local_34;\n  \n  iVar1 = *param_1;\n  if (DAT_0013d108 == 0) {\n    FUN_00033bf0("../../ld/plugin.c",0x1ec);\n  }\n  iVar3 = xmalloc(param_2 << 2);\n  puVar4 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n  local_34 = 0;\n  if (0 < param_2) {\n    do {\n      piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);\n      *(int **)(iVar3 + local_34 * 4) = piVar5;\n      iVar6 = param_3[1];\n      *piVar5 = iVar1;\n      if (iVar6 == 0) {\n        iVar6 = *param_3;\n      }\n      else {\n        iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);\n      }\n      piVar5[1] = iVar6;\n      piVar5[2] = 0;\n      piVar5[3] = 0;\n      switch(param_3[2]) {\n      case 0:\n        iVar6 = param_3[6];\n        iVar9 = 2;\n        if (iVar6 == 0) goto code_r0x00036680;\ncode_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        iVar6 = param_3[6];\n        iVar9 = 0x82;\n        if (iVar6 != 0) goto code_r0x00036500;\ncode_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar6 != 5) goto code_r0x00036569;\n        goto code_r0x000365ee;\n      case 4:\n        iVar6 = param_3[5];\n        piVar5[2] = param_3[4];\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar6;\n        puVar8 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar8;\n        goto code_r0x00036569;\n      default:\n        goto LAB_00036788;\n      }\n      piVar5[4] = iVar9;\n      piVar5[5] = (int)puVar8;\n      if (iVar6 == 5) {\ncode_r0x000365ee:\n        iVar6 = *piVar5;\n        if (((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)) {\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }\n        else {\n          uVar2 = param_3[3];\n        }\n        if (3 < uVar2) {\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2];\n      }\ncode_r0x00036569:\n      local_34 = local_34 + 1;\n      param_3 = param_3 + 8;\n    } while (param_2 != local_34);\n  }\n  bfd_set_symtab(iVar1,iVar3,param_2);\n  return 0;\n}" type_identifier (function_declarator "FUN_00036420(int *param_1,int param_2,int *param_3)" identifier (parameter_list "(int *param_1,int param_2,int *param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  undefined *puVar4;\n  int *piVar5;\n  int iVar6;\n  void *__ptr;\n  undefined4 uVar7;\n  undefined *puVar8;\n  int iVar9;\n  int local_34;\n  \n  iVar1 = *param_1;\n  if (DAT_0013d108 == 0) {\n    FUN_00033bf0("../../ld/plugin.c",0x1ec);\n  }\n  iVar3 = xmalloc(param_2 << 2);\n  puVar4 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n  local_34 = 0;\n  if (0 < param_2) {\n    do {\n      piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);\n      *(int **)(iVar3 + local_34 * 4) = piVar5;\n      iVar6 = param_3[1];\n      *piVar5 = iVar1;\n      if (iVar6 == 0) {\n        iVar6 = *param_3;\n      }\n      else {\n        iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);\n      }\n      piVar5[1] = iVar6;\n      piVar5[2] = 0;\n      piVar5[3] = 0;\n      switch(param_3[2]) {\n      case 0:\n        iVar6 = param_3[6];\n        iVar9 = 2;\n        if (iVar6 == 0) goto code_r0x00036680;\ncode_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        iVar6 = param_3[6];\n        iVar9 = 0x82;\n        if (iVar6 != 0) goto code_r0x00036500;\ncode_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar6 != 5) goto code_r0x00036569;\n        goto code_r0x000365ee;\n      case 4:\n        iVar6 = param_3[5];\n        piVar5[2] = param_3[4];\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar6;\n        puVar8 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar8;\n        goto code_r0x00036569;\n      default:\n        goto LAB_00036788;\n      }\n      piVar5[4] = iVar9;\n      piVar5[5] = (int)puVar8;\n      if (iVar6 == 5) {\ncode_r0x000365ee:\n        iVar6 = *piVar5;\n        if (((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)) {\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }\n        else {\n          uVar2 = param_3[3];\n        }\n        if (3 < uVar2) {\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2];\n      }\ncode_r0x00036569:\n      local_34 = local_34 + 1;\n      param_3 = param_3 + 8;\n    } while (param_2 != local_34);\n  }\n  bfd_set_symtab(iVar1,iVar3,param_2);\n  return 0;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int local_34;" primitive_type identifier ;) (expression_statement "iVar1 = *param_1;" (assignment_expression "iVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (DAT_0013d108 == 0) {\n    FUN_00033bf0("../../ld/plugin.c",0x1ec);\n  }" if (parenthesized_expression "(DAT_0013d108 == 0)" ( (binary_expression "DAT_0013d108 == 0" identifier == number_literal) )) (compound_statement "{\n    FUN_00033bf0("../../ld/plugin.c",0x1ec);\n  }" { (expression_statement "FUN_00033bf0("../../ld/plugin.c",0x1ec);" (call_expression "FUN_00033bf0("../../ld/plugin.c",0x1ec)" identifier (argument_list "("../../ld/plugin.c",0x1ec)" ( (string_literal ""../../ld/plugin.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "iVar3 = xmalloc(param_2 << 2);" (assignment_expression "iVar3 = xmalloc(param_2 << 2)" identifier = (call_expression "xmalloc(param_2 << 2)" identifier (argument_list "(param_2 << 2)" ( (binary_expression "param_2 << 2" identifier << number_literal) )))) ;) (expression_statement "puVar4 = PTR__bfd_std_section_0013bfc4 + 0xc0;" (assignment_expression "puVar4 = PTR__bfd_std_section_0013bfc4 + 0xc0" identifier = (binary_expression "PTR__bfd_std_section_0013bfc4 + 0xc0" identifier + number_literal)) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (if_statement "if (0 < param_2) {\n    do {\n      piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);\n      *(int **)(iVar3 + local_34 * 4) = piVar5;\n      iVar6 = param_3[1];\n      *piVar5 = iVar1;\n      if (iVar6 == 0) {\n        iVar6 = *param_3;\n      }\n      else {\n        iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);\n      }\n      piVar5[1] = iVar6;\n      piVar5[2] = 0;\n      piVar5[3] = 0;\n      switch(param_3[2]) {\n      case 0:\n        iVar6 = param_3[6];\n        iVar9 = 2;\n        if (iVar6 == 0) goto code_r0x00036680;\ncode_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        iVar6 = param_3[6];\n        iVar9 = 0x82;\n        if (iVar6 != 0) goto code_r0x00036500;\ncode_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar6 != 5) goto code_r0x00036569;\n        goto code_r0x000365ee;\n      case 4:\n        iVar6 = param_3[5];\n        piVar5[2] = param_3[4];\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar6;\n        puVar8 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar8;\n        goto code_r0x00036569;\n      default:\n        goto LAB_00036788;\n      }\n      piVar5[4] = iVar9;\n      piVar5[5] = (int)puVar8;\n      if (iVar6 == 5) {\ncode_r0x000365ee:\n        iVar6 = *piVar5;\n        if (((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)) {\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }\n        else {\n          uVar2 = param_3[3];\n        }\n        if (3 < uVar2) {\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2];\n      }\ncode_r0x00036569:\n      local_34 = local_34 + 1;\n      param_3 = param_3 + 8;\n    } while (param_2 != local_34);\n  }" if (parenthesized_expression "(0 < param_2)" ( (binary_expression "0 < param_2" number_literal < identifier) )) (compound_statement "{\n    do {\n      piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);\n      *(int **)(iVar3 + local_34 * 4) = piVar5;\n      iVar6 = param_3[1];\n      *piVar5 = iVar1;\n      if (iVar6 == 0) {\n        iVar6 = *param_3;\n      }\n      else {\n        iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);\n      }\n      piVar5[1] = iVar6;\n      piVar5[2] = 0;\n      piVar5[3] = 0;\n      switch(param_3[2]) {\n      case 0:\n        iVar6 = param_3[6];\n        iVar9 = 2;\n        if (iVar6 == 0) goto code_r0x00036680;\ncode_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        iVar6 = param_3[6];\n        iVar9 = 0x82;\n        if (iVar6 != 0) goto code_r0x00036500;\ncode_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar6 != 5) goto code_r0x00036569;\n        goto code_r0x000365ee;\n      case 4:\n        iVar6 = param_3[5];\n        piVar5[2] = param_3[4];\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar6;\n        puVar8 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar8;\n        goto code_r0x00036569;\n      default:\n        goto LAB_00036788;\n      }\n      piVar5[4] = iVar9;\n      piVar5[5] = (int)puVar8;\n      if (iVar6 == 5) {\ncode_r0x000365ee:\n        iVar6 = *piVar5;\n        if (((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)) {\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }\n        else {\n          uVar2 = param_3[3];\n        }\n        if (3 < uVar2) {\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2];\n      }\ncode_r0x00036569:\n      local_34 = local_34 + 1;\n      param_3 = param_3 + 8;\n    } while (param_2 != local_34);\n  }" { (do_statement "do {\n      piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);\n      *(int **)(iVar3 + local_34 * 4) = piVar5;\n      iVar6 = param_3[1];\n      *piVar5 = iVar1;\n      if (iVar6 == 0) {\n        iVar6 = *param_3;\n      }\n      else {\n        iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);\n      }\n      piVar5[1] = iVar6;\n      piVar5[2] = 0;\n      piVar5[3] = 0;\n      switch(param_3[2]) {\n      case 0:\n        iVar6 = param_3[6];\n        iVar9 = 2;\n        if (iVar6 == 0) goto code_r0x00036680;\ncode_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        iVar6 = param_3[6];\n        iVar9 = 0x82;\n        if (iVar6 != 0) goto code_r0x00036500;\ncode_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar6 != 5) goto code_r0x00036569;\n        goto code_r0x000365ee;\n      case 4:\n        iVar6 = param_3[5];\n        piVar5[2] = param_3[4];\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar6;\n        puVar8 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar8;\n        goto code_r0x00036569;\n      default:\n        goto LAB_00036788;\n      }\n      piVar5[4] = iVar9;\n      piVar5[5] = (int)puVar8;\n      if (iVar6 == 5) {\ncode_r0x000365ee:\n        iVar6 = *piVar5;\n        if (((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)) {\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }\n        else {\n          uVar2 = param_3[3];\n        }\n        if (3 < uVar2) {\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2];\n      }\ncode_r0x00036569:\n      local_34 = local_34 + 1;\n      param_3 = param_3 + 8;\n    } while (param_2 != local_34);" do (compound_statement "{\n      piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);\n      *(int **)(iVar3 + local_34 * 4) = piVar5;\n      iVar6 = param_3[1];\n      *piVar5 = iVar1;\n      if (iVar6 == 0) {\n        iVar6 = *param_3;\n      }\n      else {\n        iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);\n      }\n      piVar5[1] = iVar6;\n      piVar5[2] = 0;\n      piVar5[3] = 0;\n      switch(param_3[2]) {\n      case 0:\n        iVar6 = param_3[6];\n        iVar9 = 2;\n        if (iVar6 == 0) goto code_r0x00036680;\ncode_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        iVar6 = param_3[6];\n        iVar9 = 0x82;\n        if (iVar6 != 0) goto code_r0x00036500;\ncode_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar6 != 5) goto code_r0x00036569;\n        goto code_r0x000365ee;\n      case 4:\n        iVar6 = param_3[5];\n        piVar5[2] = param_3[4];\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar6;\n        puVar8 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar8;\n        goto code_r0x00036569;\n      default:\n        goto LAB_00036788;\n      }\n      piVar5[4] = iVar9;\n      piVar5[5] = (int)puVar8;\n      if (iVar6 == 5) {\ncode_r0x000365ee:\n        iVar6 = *piVar5;\n        if (((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)) {\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }\n        else {\n          uVar2 = param_3[3];\n        }\n        if (3 < uVar2) {\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2];\n      }\ncode_r0x00036569:\n      local_34 = local_34 + 1;\n      param_3 = param_3 + 8;\n    }" { (expression_statement "piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);" (assignment_expression "piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1)" identifier = (cast_expression "(int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1)" (parenthesized_expression "(**(code **)(*(int *)(iVar1 + 4) + 0x10c))" ( (pointer_expression "**(code **)(*(int *)(iVar1 + 4) + 0x10c)" * (pointer_expression "*(code **)(*(int *)(iVar1 + 4) + 0x10c)" * (cast_expression "(code **)(*(int *)(iVar1 + 4) + 0x10c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar1 + 4) + 0x10c)" ( (binary_expression "*(int *)(iVar1 + 4) + 0x10c" (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(iVar1)" ( identifier ))))) ;) (expression_statement "*(int **)(iVar3 + local_34 * 4) = piVar5;" (assignment_expression "*(int **)(iVar3 + local_34 * 4) = piVar5" (pointer_expression "*(int **)(iVar3 + local_34 * 4)" * (cast_expression "(int **)(iVar3 + local_34 * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + local_34 * 4)" ( (binary_expression "iVar3 + local_34 * 4" identifier + (binary_expression "local_34 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "iVar6 = param_3[1];" (assignment_expression "iVar6 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (expression_statement "*piVar5 = iVar1;" (assignment_expression "*piVar5 = iVar1" (pointer_expression "*piVar5" * identifier) = identifier) ;) (if_statement "if (iVar6 == 0) {\n        iVar6 = *param_3;\n      }\n      else {\n        iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);\n      }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar6 = *param_3;\n      }" { (expression_statement "iVar6 = *param_3;" (assignment_expression "iVar6 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) }) (else_clause "else {\n        iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);\n      }" else (compound_statement "{\n        iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);\n      }" { (expression_statement "iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);" (assignment_expression "iVar6 = concat(*param_3,&DAT_00065079,iVar6,0)" identifier = (call_expression "concat(*param_3,&DAT_00065079,iVar6,0)" identifier (argument_list "(*param_3,&DAT_00065079,iVar6,0)" ( (pointer_expression "*param_3" * identifier) , (pointer_expression "&DAT_00065079" & identifier) , identifier , number_literal )))) ;) }))) (expression_statement "piVar5[1] = iVar6;" (assignment_expression "piVar5[1] = iVar6" (subscript_expression "piVar5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar5[2] = 0;" (assignment_expression "piVar5[2] = 0" (subscript_expression "piVar5[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5[3] = 0;" (assignment_expression "piVar5[3] = 0" (subscript_expression "piVar5[3]" identifier [ number_literal ]) = number_literal) ;) (switch_statement "switch(param_3[2]) {\n      case 0:\n        iVar6 = param_3[6];\n        iVar9 = 2;\n        if (iVar6 == 0) goto code_r0x00036680;\ncode_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        iVar6 = param_3[6];\n        iVar9 = 0x82;\n        if (iVar6 != 0) goto code_r0x00036500;\ncode_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar6 != 5) goto code_r0x00036569;\n        goto code_r0x000365ee;\n      case 4:\n        iVar6 = param_3[5];\n        piVar5[2] = param_3[4];\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar6;\n        puVar8 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar8;\n        goto code_r0x00036569;\n      default:\n        goto LAB_00036788;\n      }" switch (parenthesized_expression "(param_3[2])" ( (subscript_expression "param_3[2]" identifier [ number_literal ]) )) (compound_statement "{\n      case 0:\n        iVar6 = param_3[6];\n        iVar9 = 2;\n        if (iVar6 == 0) goto code_r0x00036680;\ncode_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        iVar6 = param_3[6];\n        iVar9 = 0x82;\n        if (iVar6 != 0) goto code_r0x00036500;\ncode_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar6 != 5) goto code_r0x00036569;\n        goto code_r0x000365ee;\n      case 4:\n        iVar6 = param_3[5];\n        piVar5[2] = param_3[4];\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar6;\n        puVar8 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar8;\n        goto code_r0x00036569;\n      default:\n        goto LAB_00036788;\n      }" { (case_statement "case 0:\n        iVar6 = param_3[6];\n        iVar9 = 2;\n        if (iVar6 == 0) goto code_r0x00036680;\ncode_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;" case number_literal : (expression_statement "iVar6 = param_3[6];" (assignment_expression "iVar6 = param_3[6]" identifier = (subscript_expression "param_3[6]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = 2;" (assignment_expression "iVar9 = 2" identifier = number_literal) ;) (if_statement "if (iVar6 == 0) goto code_r0x00036680;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (goto_statement "goto code_r0x00036680;" goto statement_identifier ;)) (labeled_statement "code_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);" statement_identifier : (expression_statement "__ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);" (assignment_expression "__ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0)" identifier = (cast_expression "(void *)concat(".gnu.linkonce.t.",iVar6,0)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "concat(".gnu.linkonce.t.",iVar6,0)" identifier (argument_list "(".gnu.linkonce.t.",iVar6,0)" ( (string_literal "".gnu.linkonce.t."" " string_content ") , identifier , number_literal ))))) ;)) (expression_statement "puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);" (assignment_expression "puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr)" identifier = (cast_expression "(undefined *)bfd_get_section_by_name(iVar1,__ptr)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_get_section_by_name(iVar1,__ptr)" identifier (argument_list "(iVar1,__ptr)" ( identifier , identifier ))))) ;) (if_statement "if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }" if (parenthesized_expression "(puVar8 == (undefined *)0x0)" ( (binary_expression "puVar8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }" { (expression_statement "puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);" (assignment_expression "puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b)" identifier = (cast_expression "(undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b)" identifier (argument_list "(iVar1,__ptr,0x22811b)" ( identifier , identifier , number_literal ))))) ;) (if_statement "if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }" if (parenthesized_expression "(puVar8 == (undefined *)0x0)" ( (binary_expression "puVar8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00036788:\n            return 3;\n          }" { (labeled_statement "LAB_00036788:\n            return 3;" statement_identifier : (return_statement "return 3;" return number_literal ;)) })) (expression_statement "iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);" (assignment_expression "iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4)" identifier = (pointer_expression "*(int *)(*(int *)(iVar1 + 4) + 4)" * (cast_expression "(int *)(*(int *)(iVar1 + 4) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + 4) + 4)" ( (binary_expression "*(int *)(iVar1 + 4) + 4" (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) }) (else_clause "else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }" else (compound_statement "{\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }" { (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (expression_statement "iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);" (assignment_expression "iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4)" identifier = (pointer_expression "*(int *)(*(int *)(iVar1 + 4) + 4)" * (cast_expression "(int *)(*(int *)(iVar1 + 4) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + 4) + 4)" ( (binary_expression "*(int *)(iVar1 + 4) + 4" (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) }))) (break_statement "break;" break ;)) (case_statement "case 1:\n        iVar6 = param_3[6];\n        iVar9 = 0x82;\n        if (iVar6 != 0) goto code_r0x00036500;\ncode_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;" case number_literal : (expression_statement "iVar6 = param_3[6];" (assignment_expression "iVar6 = param_3[6]" identifier = (subscript_expression "param_3[6]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = 0x82;" (assignment_expression "iVar9 = 0x82" identifier = number_literal) ;) (if_statement "if (iVar6 != 0) goto code_r0x00036500;" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (goto_statement "goto code_r0x00036500;" goto statement_identifier ;)) (labeled_statement "code_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");" statement_identifier : (expression_statement "puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");" (assignment_expression "puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text")" identifier = (cast_expression "(undefined *)bfd_get_section_by_name(iVar1,".text")" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_get_section_by_name(iVar1,".text")" identifier (argument_list "(iVar1,".text")" ( identifier , (string_literal "".text"" " string_content ") ))))) ;)) (expression_statement "iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);" (assignment_expression "iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4)" identifier = (pointer_expression "*(int *)(*(int *)(iVar1 + 4) + 4)" * (cast_expression "(int *)(*(int *)(iVar1 + 4) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + 4) + 4)" ( (binary_expression "*(int *)(iVar1 + 4) + 4" (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) (break_statement "break;" break ;)) (case_statement "case 2:\n        iVar9 = 0;\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;" case number_literal : (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);" (assignment_expression "iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4)" identifier = (pointer_expression "*(int *)(*(int *)(iVar1 + 4) + 4)" * (cast_expression "(int *)(*(int *)(iVar1 + 4) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + 4) + 4)" ( (binary_expression "*(int *)(iVar1 + 4) + 4" (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;" (assignment_expression "puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0" identifier = (binary_expression "PTR__bfd_std_section_0013bfc4 + 0xc0" identifier + number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case 3:\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar6 != 5) goto code_r0x00036569;\n        goto code_r0x000365ee;" case number_literal : (expression_statement "iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);" (assignment_expression "iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4)" identifier = (pointer_expression "*(int *)(*(int *)(iVar1 + 4) + 4)" * (cast_expression "(int *)(*(int *)(iVar1 + 4) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + 4) + 4)" ( (binary_expression "*(int *)(iVar1 + 4) + 4" (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "piVar5[4] = 0x80;" (assignment_expression "piVar5[4] = 0x80" (subscript_expression "piVar5[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5[5] = (int)puVar4;" (assignment_expression "piVar5[5] = (int)puVar4" (subscript_expression "piVar5[5]" identifier [ number_literal ]) = (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (iVar6 != 5) goto code_r0x00036569;" if (parenthesized_expression "(iVar6 != 5)" ( (binary_expression "iVar6 != 5" identifier != number_literal) )) (goto_statement "goto code_r0x00036569;" goto statement_identifier ;)) (goto_statement "goto code_r0x000365ee;" goto statement_identifier ;)) (case_statement "case 4:\n        iVar6 = param_3[5];\n        piVar5[2] = param_3[4];\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar6;\n        puVar8 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar8;\n        goto code_r0x00036569;" case number_literal : (expression_statement "iVar6 = param_3[5];" (assignment_expression "iVar6 = param_3[5]" identifier = (subscript_expression "param_3[5]" identifier [ number_literal ])) ;) (expression_statement "piVar5[2] = param_3[4];" (assignment_expression "piVar5[2] = param_3[4]" (subscript_expression "piVar5[2]" identifier [ number_literal ]) = (subscript_expression "param_3[4]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = *(int *)(iVar1 + 4);" (assignment_expression "iVar9 = *(int *)(iVar1 + 4)" identifier = (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) ))))) ;) (expression_statement "piVar5[3] = iVar6;" (assignment_expression "piVar5[3] = iVar6" (subscript_expression "piVar5[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8 = PTR__bfd_std_section_0013bfc4;" (assignment_expression "puVar8 = PTR__bfd_std_section_0013bfc4" identifier = identifier) ;) (if_statement "if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }" if (parenthesized_expression "(*(int *)(iVar9 + 4) == 5)" ( (binary_expression "*(int *)(iVar9 + 4) == 5" (pointer_expression "*(int *)(iVar9 + 4)" * (cast_expression "(int *)(iVar9 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 4)" ( (binary_expression "iVar9 + 4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }" { (expression_statement "piVar5[0xe] = -0xe;" (assignment_expression "piVar5[0xe] = -0xe" (subscript_expression "piVar5[0xe]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5[8] = 1;" (assignment_expression "piVar5[8] = 1" (subscript_expression "piVar5[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5[9] = 0;" (assignment_expression "piVar5[9] = 0" (subscript_expression "piVar5[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5[4] = 2;" (assignment_expression "piVar5[4] = 2" (subscript_expression "piVar5[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5[5] = (int)puVar8;" (assignment_expression "piVar5[5] = (int)puVar8" (subscript_expression "piVar5[5]" identifier [ number_literal ]) = (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (goto_statement "goto code_r0x000365ee;" goto statement_identifier ;) })) (expression_statement "piVar5[4] = 2;" (assignment_expression "piVar5[4] = 2" (subscript_expression "piVar5[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5[5] = (int)puVar8;" (assignment_expression "piVar5[5] = (int)puVar8" (subscript_expression "piVar5[5]" identifier [ number_literal ]) = (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (goto_statement "goto code_r0x00036569;" goto statement_identifier ;)) (case_statement "default:\n        goto LAB_00036788;" default : (goto_statement "goto LAB_00036788;" goto statement_identifier ;)) })) (expression_statement "piVar5[4] = iVar9;" (assignment_expression "piVar5[4] = iVar9" (subscript_expression "piVar5[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar5[5] = (int)puVar8;" (assignment_expression "piVar5[5] = (int)puVar8" (subscript_expression "piVar5[5]" identifier [ number_literal ]) = (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (iVar6 == 5) {\ncode_r0x000365ee:\n        iVar6 = *piVar5;\n        if (((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)) {\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }\n        else {\n          uVar2 = param_3[3];\n        }\n        if (3 < uVar2) {\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2];\n      }" if (parenthesized_expression "(iVar6 == 5)" ( (binary_expression "iVar6 == 5" identifier == number_literal) )) (compound_statement "{\ncode_r0x000365ee:\n        iVar6 = *piVar5;\n        if (((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)) {\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }\n        else {\n          uVar2 = param_3[3];\n        }\n        if (3 < uVar2) {\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2];\n      }" { (labeled_statement "code_r0x000365ee:\n        iVar6 = *piVar5;" statement_identifier : (expression_statement "iVar6 = *piVar5;" (assignment_expression "iVar6 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;)) (if_statement "if (((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)) {\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }\n        else {\n          uVar2 = param_3[3];\n        }" if (parenthesized_expression "(((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0))" ( (binary_expression "((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)" (parenthesized_expression "((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5))" ( (binary_expression "(iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)" (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) || (parenthesized_expression "(*(int *)(*(int *)(iVar6 + 4) + 4) != 5)" ( (binary_expression "*(int *)(*(int *)(iVar6 + 4) + 4) != 5" (pointer_expression "*(int *)(*(int *)(iVar6 + 4) + 4)" * (cast_expression "(int *)(*(int *)(iVar6 + 4) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar6 + 4) + 4)" ( (binary_expression "*(int *)(iVar6 + 4) + 4" (pointer_expression "*(int *)(iVar6 + 4)" * (cast_expression "(int *)(iVar6 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 4)" ( (binary_expression "iVar6 + 4" identifier + number_literal) )))) + number_literal) )))) != number_literal) ))) )) || (parenthesized_expression "(*(int *)(iVar6 + 0xa0) == 0)" ( (binary_expression "*(int *)(iVar6 + 0xa0) == 0" (pointer_expression "*(int *)(iVar6 + 0xa0)" * (cast_expression "(int *)(iVar6 + 0xa0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0xa0)" ( (binary_expression "iVar6 + 0xa0" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }" { (expression_statement "iVar6 = piVar5[1];" (assignment_expression "iVar6 = piVar5[1]" identifier = (subscript_expression "piVar5[1]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);" (assignment_expression "uVar7 = 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 "piVar5 = (int *)0x0;" (assignment_expression "piVar5 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "FUN_00033ba0(uVar7,iVar6);" (call_expression "FUN_00033ba0(uVar7,iVar6)" identifier (argument_list "(uVar7,iVar6)" ( identifier , identifier ))) ;) (expression_statement "uVar2 = param_3[3];" (assignment_expression "uVar2 = param_3[3]" identifier = (subscript_expression "param_3[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n          uVar2 = param_3[3];\n        }" else (compound_statement "{\n          uVar2 = param_3[3];\n        }" { (expression_statement "uVar2 = param_3[3];" (assignment_expression "uVar2 = param_3[3]" identifier = (subscript_expression "param_3[3]" identifier [ number_literal ])) ;) }))) (if_statement "if (3 < uVar2) {\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }" if (parenthesized_expression "(3 < uVar2)" ( (binary_expression "3 < uVar2" number_literal < identifier) )) (compound_statement "{\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }" { (expression_statement "uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);" (assignment_expression "uVar7 = 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_00033ba0(uVar7,uVar2);" (call_expression "FUN_00033ba0(uVar7,uVar2)" identifier (argument_list "(uVar7,uVar2)" ( identifier , identifier ))) ;) (return_statement "return 3;" return number_literal ;) })) (expression_statement "*(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2];" (assignment_expression "*(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2]" (pointer_expression "*(byte *)((int)piVar5 + 0x35)" * (cast_expression "(byte *)((int)piVar5 + 0x35)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar5 + 0x35)" ( (binary_expression "(int)piVar5 + 0x35" (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2]" (binary_expression "*(byte *)((int)piVar5 + 0x35) & 0xfc" (pointer_expression "*(byte *)((int)piVar5 + 0x35)" * (cast_expression "(byte *)((int)piVar5 + 0x35)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar5 + 0x35)" ( (binary_expression "(int)piVar5 + 0x35" (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) | (subscript_expression "(&UNK_0006519c)[uVar2]" (parenthesized_expression "(&UNK_0006519c)" ( (pointer_expression "&UNK_0006519c" & identifier) )) [ identifier ]))) ;) })) (labeled_statement "code_r0x00036569:\n      local_34 = local_34 + 1;" statement_identifier : (expression_statement "local_34 = local_34 + 1;" (assignment_expression "local_34 = local_34 + 1" identifier = (binary_expression "local_34 + 1" identifier + number_literal)) ;)) (expression_statement "param_3 = param_3 + 8;" (assignment_expression "param_3 = param_3 + 8" identifier = (binary_expression "param_3 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_2 != local_34)" ( (binary_expression "param_2 != local_34" identifier != identifier) )) ;) })) (expression_statement "bfd_set_symtab(iVar1,iVar3,param_2);" (call_expression "bfd_set_symtab(iVar1,iVar3,param_2)" identifier (argument_list "(iVar1,iVar3,param_2)" ( identifier , identifier , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nld_plugin_status add_symbols(void *handle,int nsyms,ld_plugin_symbol *syms)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  undefined *puVar4;\n  int *piVar5;\n  char *pcVar6;\n  void *__ptr;\n  undefined *puVar7;\n  int iVar8;\n  int iVar9;\n  int local_34;\n  \n                    /* WARNING: Load size is inaccurate */\n  iVar1 = *handle;\n  if (called_plugin == (plugin_t *)0x0) {\n    info_assert("../../ld/plugin.c",0x1ec);\n  }\n  iVar3 = xmalloc(nsyms << 2);\n  puVar4 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n  local_34 = 0;\n  if (0 < nsyms) {\n    do {\n      piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);\n      *(int **)(iVar3 + local_34 * 4) = piVar5;\n      pcVar6 = syms->version;\n      *piVar5 = iVar1;\n      if (pcVar6 == (char *)0x0) {\n        pcVar6 = syms->name;\n      }\n      else {\n        pcVar6 = (char *)concat(syms->name,&DAT_00065079,pcVar6,0);\n      }\n      piVar5[1] = (int)pcVar6;\n      piVar5[2] = 0;\n      piVar5[3] = 0;\n      switch(syms->def) {\n      case 0:\n        pcVar6 = syms->comdat_key;\n        iVar9 = 2;\n        if (pcVar6 == (char *)0x0) goto LAB_00036680;\nLAB_00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",pcVar6,0);\n        puVar7 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar7 == (undefined *)0x0) {\n          puVar7 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar7 == (undefined *)0x0) {\nswitchD_000364ed_caseD_5:\n            return LDPS_ERR;\n          }\n          iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        pcVar6 = syms->comdat_key;\n        iVar9 = 0x82;\n        if (pcVar6 != (char *)0x0) goto LAB_00036500;\nLAB_00036680:\n        puVar7 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar7 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar8 != 5) goto LAB_00036569;\n        goto LAB_000365ee;\n      case 4:\n        iVar8 = *(int *)((int)&syms->size + 4);\n        piVar5[2] = (int)syms->size;\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar8;\n        puVar7 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar7;\n          goto LAB_000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar7;\n        goto LAB_00036569;\n      default:\n        goto switchD_000364ed_caseD_5;\n      }\n      piVar5[4] = iVar9;\n      piVar5[5] = (int)puVar7;\n      if (iVar8 == 5) {\nLAB_000365ee:\n        iVar8 = *piVar5;\n        if (((iVar8 == 0) || (*(int *)(*(int *)(iVar8 + 4) + 4) != 5)) ||\n           (*(int *)(iVar8 + 0xa0) == 0)) {\n          iVar8 = piVar5[1];\n          pcVar6 = (char *)dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          einfo(pcVar6,iVar8);\n          uVar2 = syms->visibility;\n        }\n        else {\n          uVar2 = syms->visibility;\n        }\n        if (3 < uVar2) {\n          pcVar6 = (char *)dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          einfo(pcVar6,uVar2);\n          return LDPS_ERR;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | *(byte *)((int)&CSWTCH_67 + uVar2);\n      }\nLAB_00036569:\n      local_34 = local_34 + 1;\n      syms = syms + 1;\n    } while (nsyms != local_34);\n  }\n  bfd_set_symtab(iVar1,iVar3,nsyms);\n  return LDPS_OK;\n}\n\n" comment comment (function_definition "ld_plugin_status add_symbols(void *handle,int nsyms,ld_plugin_symbol *syms)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  undefined *puVar4;\n  int *piVar5;\n  char *pcVar6;\n  void *__ptr;\n  undefined *puVar7;\n  int iVar8;\n  int iVar9;\n  int local_34;\n  \n                    /* WARNING: Load size is inaccurate */\n  iVar1 = *handle;\n  if (called_plugin == (plugin_t *)0x0) {\n    info_assert("../../ld/plugin.c",0x1ec);\n  }\n  iVar3 = xmalloc(nsyms << 2);\n  puVar4 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n  local_34 = 0;\n  if (0 < nsyms) {\n    do {\n      piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);\n      *(int **)(iVar3 + local_34 * 4) = piVar5;\n      pcVar6 = syms->version;\n      *piVar5 = iVar1;\n      if (pcVar6 == (char *)0x0) {\n        pcVar6 = syms->name;\n      }\n      else {\n        pcVar6 = (char *)concat(syms->name,&DAT_00065079,pcVar6,0);\n      }\n      piVar5[1] = (int)pcVar6;\n      piVar5[2] = 0;\n      piVar5[3] = 0;\n      switch(syms->def) {\n      case 0:\n        pcVar6 = syms->comdat_key;\n        iVar9 = 2;\n        if (pcVar6 == (char *)0x0) goto LAB_00036680;\nLAB_00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",pcVar6,0);\n        puVar7 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar7 == (undefined *)0x0) {\n          puVar7 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar7 == (undefined *)0x0) {\nswitchD_000364ed_caseD_5:\n            return LDPS_ERR;\n          }\n          iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        pcVar6 = syms->comdat_key;\n        iVar9 = 0x82;\n        if (pcVar6 != (char *)0x0) goto LAB_00036500;\nLAB_00036680:\n        puVar7 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar7 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar8 != 5) goto LAB_00036569;\n        goto LAB_000365ee;\n      case 4:\n        iVar8 = *(int *)((int)&syms->size + 4);\n        piVar5[2] = (int)syms->size;\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar8;\n        puVar7 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar7;\n          goto LAB_000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar7;\n        goto LAB_00036569;\n      default:\n        goto switchD_000364ed_caseD_5;\n      }\n      piVar5[4] = iVar9;\n      piVar5[5] = (int)puVar7;\n      if (iVar8 == 5) {\nLAB_000365ee:\n        iVar8 = *piVar5;\n        if (((iVar8 == 0) || (*(int *)(*(int *)(iVar8 + 4) + 4) != 5)) ||\n           (*(int *)(iVar8 + 0xa0) == 0)) {\n          iVar8 = piVar5[1];\n          pcVar6 = (char *)dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          einfo(pcVar6,iVar8);\n          uVar2 = syms->visibility;\n        }\n        else {\n          uVar2 = syms->visibility;\n        }\n        if (3 < uVar2) {\n          pcVar6 = (char *)dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          einfo(pcVar6,uVar2);\n          return LDPS_ERR;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | *(byte *)((int)&CSWTCH_67 + uVar2);\n      }\nLAB_00036569:\n      local_34 = local_34 + 1;\n      syms = syms + 1;\n    } while (nsyms != local_34);\n  }\n  bfd_set_symtab(iVar1,iVar3,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  int iVar1;\n  uint uVar2;\n  int iVar3;\n  undefined *puVar4;\n  int *piVar5;\n  char *pcVar6;\n  void *__ptr;\n  undefined *puVar7;\n  int iVar8;\n  int iVar9;\n  int local_34;\n  \n                    /* WARNING: Load size is inaccurate */\n  iVar1 = *handle;\n  if (called_plugin == (plugin_t *)0x0) {\n    info_assert("../../ld/plugin.c",0x1ec);\n  }\n  iVar3 = xmalloc(nsyms << 2);\n  puVar4 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n  local_34 = 0;\n  if (0 < nsyms) {\n    do {\n      piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);\n      *(int **)(iVar3 + local_34 * 4) = piVar5;\n      pcVar6 = syms->version;\n      *piVar5 = iVar1;\n      if (pcVar6 == (char *)0x0) {\n        pcVar6 = syms->name;\n      }\n      else {\n        pcVar6 = (char *)concat(syms->name,&DAT_00065079,pcVar6,0);\n      }\n      piVar5[1] = (int)pcVar6;\n      piVar5[2] = 0;\n      piVar5[3] = 0;\n      switch(syms->def) {\n      case 0:\n        pcVar6 = syms->comdat_key;\n        iVar9 = 2;\n        if (pcVar6 == (char *)0x0) goto LAB_00036680;\nLAB_00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",pcVar6,0);\n        puVar7 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar7 == (undefined *)0x0) {\n          puVar7 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar7 == (undefined *)0x0) {\nswitchD_000364ed_caseD_5:\n            return LDPS_ERR;\n          }\n          iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        pcVar6 = syms->comdat_key;\n        iVar9 = 0x82;\n        if (pcVar6 != (char *)0x0) goto LAB_00036500;\nLAB_00036680:\n        puVar7 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar7 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar8 != 5) goto LAB_00036569;\n        goto LAB_000365ee;\n      case 4:\n        iVar8 = *(int *)((int)&syms->size + 4);\n        piVar5[2] = (int)syms->size;\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar8;\n        puVar7 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar7;\n          goto LAB_000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar7;\n        goto LAB_00036569;\n      default:\n        goto switchD_000364ed_caseD_5;\n      }\n      piVar5[4] = iVar9;\n      piVar5[5] = (int)puVar7;\n      if (iVar8 == 5) {\nLAB_000365ee:\n        iVar8 = *piVar5;\n        if (((iVar8 == 0) || (*(int *)(*(int *)(iVar8 + 4) + 4) != 5)) ||\n           (*(int *)(iVar8 + 0xa0) == 0)) {\n          iVar8 = piVar5[1];\n          pcVar6 = (char *)dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          einfo(pcVar6,iVar8);\n          uVar2 = syms->visibility;\n        }\n        else {\n          uVar2 = syms->visibility;\n        }\n        if (3 < uVar2) {\n          pcVar6 = (char *)dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          einfo(pcVar6,uVar2);\n          return LDPS_ERR;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | *(byte *)((int)&CSWTCH_67 + uVar2);\n      }\nLAB_00036569:\n      local_34 = local_34 + 1;\n      syms = syms + 1;\n    } while (nsyms != local_34);\n  }\n  bfd_set_symtab(iVar1,iVar3,nsyms);\n  return LDPS_OK;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int local_34;" primitive_type identifier ;) comment (expression_statement "iVar1 = *handle;" (assignment_expression "iVar1 = *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 "iVar3 = xmalloc(nsyms << 2);" (assignment_expression "iVar3 = xmalloc(nsyms << 2)" identifier = (call_expression "xmalloc(nsyms << 2)" identifier (argument_list "(nsyms << 2)" ( (binary_expression "nsyms << 2" identifier << number_literal) )))) ;) (expression_statement "puVar4 = PTR__bfd_std_section_0013bfc4 + 0xc0;" (assignment_expression "puVar4 = PTR__bfd_std_section_0013bfc4 + 0xc0" identifier = (binary_expression "PTR__bfd_std_section_0013bfc4 + 0xc0" identifier + number_literal)) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (if_statement "if (0 < nsyms) {\n    do {\n      piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);\n      *(int **)(iVar3 + local_34 * 4) = piVar5;\n      pcVar6 = syms->version;\n      *piVar5 = iVar1;\n      if (pcVar6 == (char *)0x0) {\n        pcVar6 = syms->name;\n      }\n      else {\n        pcVar6 = (char *)concat(syms->name,&DAT_00065079,pcVar6,0);\n      }\n      piVar5[1] = (int)pcVar6;\n      piVar5[2] = 0;\n      piVar5[3] = 0;\n      switch(syms->def) {\n      case 0:\n        pcVar6 = syms->comdat_key;\n        iVar9 = 2;\n        if (pcVar6 == (char *)0x0) goto LAB_00036680;\nLAB_00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",pcVar6,0);\n        puVar7 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar7 == (undefined *)0x0) {\n          puVar7 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar7 == (undefined *)0x0) {\nswitchD_000364ed_caseD_5:\n            return LDPS_ERR;\n          }\n          iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        pcVar6 = syms->comdat_key;\n        iVar9 = 0x82;\n        if (pcVar6 != (char *)0x0) goto LAB_00036500;\nLAB_00036680:\n        puVar7 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar7 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar8 != 5) goto LAB_00036569;\n        goto LAB_000365ee;\n      case 4:\n        iVar8 = *(int *)((int)&syms->size + 4);\n        piVar5[2] = (int)syms->size;\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar8;\n        puVar7 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar7;\n          goto LAB_000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar7;\n        goto LAB_00036569;\n      default:\n        goto switchD_000364ed_caseD_5;\n      }\n      piVar5[4] = iVar9;\n      piVar5[5] = (int)puVar7;\n      if (iVar8 == 5) {\nLAB_000365ee:\n        iVar8 = *piVar5;\n        if (((iVar8 == 0) || (*(int *)(*(int *)(iVar8 + 4) + 4) != 5)) ||\n           (*(int *)(iVar8 + 0xa0) == 0)) {\n          iVar8 = piVar5[1];\n          pcVar6 = (char *)dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          einfo(pcVar6,iVar8);\n          uVar2 = syms->visibility;\n        }\n        else {\n          uVar2 = syms->visibility;\n        }\n        if (3 < uVar2) {\n          pcVar6 = (char *)dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          einfo(pcVar6,uVar2);\n          return LDPS_ERR;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | *(byte *)((int)&CSWTCH_67 + uVar2);\n      }\nLAB_00036569:\n      local_34 = local_34 + 1;\n      syms = syms + 1;\n    } while (nsyms != local_34);\n  }" if (parenthesized_expression "(0 < nsyms)" ( (binary_expression "0 < nsyms" number_literal < identifier) )) (compound_statement "{\n    do {\n      piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);\n      *(int **)(iVar3 + local_34 * 4) = piVar5;\n      pcVar6 = syms->version;\n      *piVar5 = iVar1;\n      if (pcVar6 == (char *)0x0) {\n        pcVar6 = syms->name;\n      }\n      else {\n        pcVar6 = (char *)concat(syms->name,&DAT_00065079,pcVar6,0);\n      }\n      piVar5[1] = (int)pcVar6;\n      piVar5[2] = 0;\n      piVar5[3] = 0;\n      switch(syms->def) {\n      case 0:\n        pcVar6 = syms->comdat_key;\n        iVar9 = 2;\n        if (pcVar6 == (char *)0x0) goto LAB_00036680;\nLAB_00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",pcVar6,0);\n        puVar7 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar7 == (undefined *)0x0) {\n          puVar7 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar7 == (undefined *)0x0) {\nswitchD_000364ed_caseD_5:\n            return LDPS_ERR;\n          }\n          iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        pcVar6 = syms->comdat_key;\n        iVar9 = 0x82;\n        if (pcVar6 != (char *)0x0) goto LAB_00036500;\nLAB_00036680:\n        puVar7 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar7 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar8 != 5) goto LAB_00036569;\n        goto LAB_000365ee;\n      case 4:\n        iVar8 = *(int *)((int)&syms->size + 4);\n        piVar5[2] = (int)syms->size;\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar8;\n        puVar7 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar7;\n          goto LAB_000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar7;\n        goto LAB_00036569;\n      default:\n        goto switchD_000364ed_caseD_5;\n      }\n      piVar5[4] = iVar9;\n      piVar5[5] = (int)puVar7;\n      if (iVar8 == 5) {\nLAB_000365ee:\n        iVar8 = *piVar5;\n        if (((iVar8 == 0) || (*(int *)(*(int *)(iVar8 + 4) + 4) != 5)) ||\n           (*(int *)(iVar8 + 0xa0) == 0)) {\n          iVar8 = piVar5[1];\n          pcVar6 = (char *)dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          einfo(pcVar6,iVar8);\n          uVar2 = syms->visibility;\n        }\n        else {\n          uVar2 = syms->visibility;\n        }\n        if (3 < uVar2) {\n          pcVar6 = (char *)dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          einfo(pcVar6,uVar2);\n          return LDPS_ERR;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | *(byte *)((int)&CSWTCH_67 + uVar2);\n      }\nLAB_00036569:\n      local_34 = local_34 + 1;\n      syms = syms + 1;\n    } while (nsyms != local_34);\n  }" { (do_statement "do {\n      piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);\n      *(int **)(iVar3 + local_34 * 4) = piVar5;\n      pcVar6 = syms->version;\n      *piVar5 = iVar1;\n      if (pcVar6 == (char *)0x0) {\n        pcVar6 = syms->name;\n      }\n      else {\n        pcVar6 = (char *)concat(syms->name,&DAT_00065079,pcVar6,0);\n      }\n      piVar5[1] = (int)pcVar6;\n      piVar5[2] = 0;\n      piVar5[3] = 0;\n      switch(syms->def) {\n      case 0:\n        pcVar6 = syms->comdat_key;\n        iVar9 = 2;\n        if (pcVar6 == (char *)0x0) goto LAB_00036680;\nLAB_00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",pcVar6,0);\n        puVar7 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar7 == (undefined *)0x0) {\n          puVar7 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar7 == (undefined *)0x0) {\nswitchD_000364ed_caseD_5:\n            return LDPS_ERR;\n          }\n          iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        pcVar6 = syms->comdat_key;\n        iVar9 = 0x82;\n        if (pcVar6 != (char *)0x0) goto LAB_00036500;\nLAB_00036680:\n        puVar7 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar7 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar8 != 5) goto LAB_00036569;\n        goto LAB_000365ee;\n      case 4:\n        iVar8 = *(int *)((int)&syms->size + 4);\n        piVar5[2] = (int)syms->size;\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar8;\n        puVar7 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar7;\n          goto LAB_000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar7;\n        goto LAB_00036569;\n      default:\n        goto switchD_000364ed_caseD_5;\n      }\n      piVar5[4] = iVar9;\n      piVar5[5] = (int)puVar7;\n      if (iVar8 == 5) {\nLAB_000365ee:\n        iVar8 = *piVar5;\n        if (((iVar8 == 0) || (*(int *)(*(int *)(iVar8 + 4) + 4) != 5)) ||\n           (*(int *)(iVar8 + 0xa0) == 0)) {\n          iVar8 = piVar5[1];\n          pcVar6 = (char *)dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          einfo(pcVar6,iVar8);\n          uVar2 = syms->visibility;\n        }\n        else {\n          uVar2 = syms->visibility;\n        }\n        if (3 < uVar2) {\n          pcVar6 = (char *)dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          einfo(pcVar6,uVar2);\n          return LDPS_ERR;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | *(byte *)((int)&CSWTCH_67 + uVar2);\n      }\nLAB_00036569:\n      local_34 = local_34 + 1;\n      syms = syms + 1;\n    } while (nsyms != local_34);" do (compound_statement "{\n      piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);\n      *(int **)(iVar3 + local_34 * 4) = piVar5;\n      pcVar6 = syms->version;\n      *piVar5 = iVar1;\n      if (pcVar6 == (char *)0x0) {\n        pcVar6 = syms->name;\n      }\n      else {\n        pcVar6 = (char *)concat(syms->name,&DAT_00065079,pcVar6,0);\n      }\n      piVar5[1] = (int)pcVar6;\n      piVar5[2] = 0;\n      piVar5[3] = 0;\n      switch(syms->def) {\n      case 0:\n        pcVar6 = syms->comdat_key;\n        iVar9 = 2;\n        if (pcVar6 == (char *)0x0) goto LAB_00036680;\nLAB_00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",pcVar6,0);\n        puVar7 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar7 == (undefined *)0x0) {\n          puVar7 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar7 == (undefined *)0x0) {\nswitchD_000364ed_caseD_5:\n            return LDPS_ERR;\n          }\n          iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        pcVar6 = syms->comdat_key;\n        iVar9 = 0x82;\n        if (pcVar6 != (char *)0x0) goto LAB_00036500;\nLAB_00036680:\n        puVar7 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar7 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar8 != 5) goto LAB_00036569;\n        goto LAB_000365ee;\n      case 4:\n        iVar8 = *(int *)((int)&syms->size + 4);\n        piVar5[2] = (int)syms->size;\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar8;\n        puVar7 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar7;\n          goto LAB_000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar7;\n        goto LAB_00036569;\n      default:\n        goto switchD_000364ed_caseD_5;\n      }\n      piVar5[4] = iVar9;\n      piVar5[5] = (int)puVar7;\n      if (iVar8 == 5) {\nLAB_000365ee:\n        iVar8 = *piVar5;\n        if (((iVar8 == 0) || (*(int *)(*(int *)(iVar8 + 4) + 4) != 5)) ||\n           (*(int *)(iVar8 + 0xa0) == 0)) {\n          iVar8 = piVar5[1];\n          pcVar6 = (char *)dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          einfo(pcVar6,iVar8);\n          uVar2 = syms->visibility;\n        }\n        else {\n          uVar2 = syms->visibility;\n        }\n        if (3 < uVar2) {\n          pcVar6 = (char *)dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          einfo(pcVar6,uVar2);\n          return LDPS_ERR;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | *(byte *)((int)&CSWTCH_67 + uVar2);\n      }\nLAB_00036569:\n      local_34 = local_34 + 1;\n      syms = syms + 1;\n    }" { (expression_statement "piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);" (assignment_expression "piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1)" identifier = (cast_expression "(int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1)" (parenthesized_expression "(**(code **)(*(int *)(iVar1 + 4) + 0x10c))" ( (pointer_expression "**(code **)(*(int *)(iVar1 + 4) + 0x10c)" * (pointer_expression "*(code **)(*(int *)(iVar1 + 4) + 0x10c)" * (cast_expression "(code **)(*(int *)(iVar1 + 4) + 0x10c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar1 + 4) + 0x10c)" ( (binary_expression "*(int *)(iVar1 + 4) + 0x10c" (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(iVar1)" ( identifier ))))) ;) (expression_statement "*(int **)(iVar3 + local_34 * 4) = piVar5;" (assignment_expression "*(int **)(iVar3 + local_34 * 4) = piVar5" (pointer_expression "*(int **)(iVar3 + local_34 * 4)" * (cast_expression "(int **)(iVar3 + local_34 * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + local_34 * 4)" ( (binary_expression "iVar3 + local_34 * 4" identifier + (binary_expression "local_34 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "pcVar6 = syms->version;" (assignment_expression "pcVar6 = syms->version" identifier = (field_expression "syms->version" identifier -> field_identifier)) ;) (expression_statement "*piVar5 = iVar1;" (assignment_expression "*piVar5 = iVar1" (pointer_expression "*piVar5" * identifier) = identifier) ;) (if_statement "if (pcVar6 == (char *)0x0) {\n        pcVar6 = syms->name;\n      }\n      else {\n        pcVar6 = (char *)concat(syms->name,&DAT_00065079,pcVar6,0);\n      }" if (parenthesized_expression "(pcVar6 == (char *)0x0)" ( (binary_expression "pcVar6 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pcVar6 = syms->name;\n      }" { (expression_statement "pcVar6 = syms->name;" (assignment_expression "pcVar6 = syms->name" identifier = (field_expression "syms->name" identifier -> field_identifier)) ;) }) (else_clause "else {\n        pcVar6 = (char *)concat(syms->name,&DAT_00065079,pcVar6,0);\n      }" else (compound_statement "{\n        pcVar6 = (char *)concat(syms->name,&DAT_00065079,pcVar6,0);\n      }" { (expression_statement "pcVar6 = (char *)concat(syms->name,&DAT_00065079,pcVar6,0);" (assignment_expression "pcVar6 = (char *)concat(syms->name,&DAT_00065079,pcVar6,0)" identifier = (cast_expression "(char *)concat(syms->name,&DAT_00065079,pcVar6,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "concat(syms->name,&DAT_00065079,pcVar6,0)" identifier (argument_list "(syms->name,&DAT_00065079,pcVar6,0)" ( (field_expression "syms->name" identifier -> field_identifier) , (pointer_expression "&DAT_00065079" & identifier) , identifier , number_literal ))))) ;) }))) (expression_statement "piVar5[1] = (int)pcVar6;" (assignment_expression "piVar5[1] = (int)pcVar6" (subscript_expression "piVar5[1]" identifier [ number_literal ]) = (cast_expression "(int)pcVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar5[2] = 0;" (assignment_expression "piVar5[2] = 0" (subscript_expression "piVar5[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5[3] = 0;" (assignment_expression "piVar5[3] = 0" (subscript_expression "piVar5[3]" identifier [ number_literal ]) = number_literal) ;) (switch_statement "switch(syms->def) {\n      case 0:\n        pcVar6 = syms->comdat_key;\n        iVar9 = 2;\n        if (pcVar6 == (char *)0x0) goto LAB_00036680;\nLAB_00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",pcVar6,0);\n        puVar7 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar7 == (undefined *)0x0) {\n          puVar7 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar7 == (undefined *)0x0) {\nswitchD_000364ed_caseD_5:\n            return LDPS_ERR;\n          }\n          iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        pcVar6 = syms->comdat_key;\n        iVar9 = 0x82;\n        if (pcVar6 != (char *)0x0) goto LAB_00036500;\nLAB_00036680:\n        puVar7 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar7 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar8 != 5) goto LAB_00036569;\n        goto LAB_000365ee;\n      case 4:\n        iVar8 = *(int *)((int)&syms->size + 4);\n        piVar5[2] = (int)syms->size;\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar8;\n        puVar7 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar7;\n          goto LAB_000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar7;\n        goto LAB_00036569;\n      default:\n        goto switchD_000364ed_caseD_5;\n      }" switch (parenthesized_expression "(syms->def)" ( (field_expression "syms->def" identifier -> field_identifier) )) (compound_statement "{\n      case 0:\n        pcVar6 = syms->comdat_key;\n        iVar9 = 2;\n        if (pcVar6 == (char *)0x0) goto LAB_00036680;\nLAB_00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",pcVar6,0);\n        puVar7 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar7 == (undefined *)0x0) {\n          puVar7 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar7 == (undefined *)0x0) {\nswitchD_000364ed_caseD_5:\n            return LDPS_ERR;\n          }\n          iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        pcVar6 = syms->comdat_key;\n        iVar9 = 0x82;\n        if (pcVar6 != (char *)0x0) goto LAB_00036500;\nLAB_00036680:\n        puVar7 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar7 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar8 != 5) goto LAB_00036569;\n        goto LAB_000365ee;\n      case 4:\n        iVar8 = *(int *)((int)&syms->size + 4);\n        piVar5[2] = (int)syms->size;\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar8;\n        puVar7 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar7;\n          goto LAB_000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar7;\n        goto LAB_00036569;\n      default:\n        goto switchD_000364ed_caseD_5;\n      }" { (case_statement "case 0:\n        pcVar6 = syms->comdat_key;\n        iVar9 = 2;\n        if (pcVar6 == (char *)0x0) goto LAB_00036680;\nLAB_00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",pcVar6,0);\n        puVar7 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar7 == (undefined *)0x0) {\n          puVar7 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar7 == (undefined *)0x0) {\nswitchD_000364ed_caseD_5:\n            return LDPS_ERR;\n          }\n          iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;" case number_literal : (expression_statement "pcVar6 = syms->comdat_key;" (assignment_expression "pcVar6 = syms->comdat_key" identifier = (field_expression "syms->comdat_key" identifier -> field_identifier)) ;) (expression_statement "iVar9 = 2;" (assignment_expression "iVar9 = 2" identifier = number_literal) ;) (if_statement "if (pcVar6 == (char *)0x0) goto LAB_00036680;" if (parenthesized_expression "(pcVar6 == (char *)0x0)" ( (binary_expression "pcVar6 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00036680;" goto statement_identifier ;)) (labeled_statement "LAB_00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",pcVar6,0);" statement_identifier : (expression_statement "__ptr = (void *)concat(".gnu.linkonce.t.",pcVar6,0);" (assignment_expression "__ptr = (void *)concat(".gnu.linkonce.t.",pcVar6,0)" identifier = (cast_expression "(void *)concat(".gnu.linkonce.t.",pcVar6,0)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "concat(".gnu.linkonce.t.",pcVar6,0)" identifier (argument_list "(".gnu.linkonce.t.",pcVar6,0)" ( (string_literal "".gnu.linkonce.t."" " string_content ") , identifier , number_literal ))))) ;)) (expression_statement "puVar7 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);" (assignment_expression "puVar7 = (undefined *)bfd_get_section_by_name(iVar1,__ptr)" identifier = (cast_expression "(undefined *)bfd_get_section_by_name(iVar1,__ptr)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_get_section_by_name(iVar1,__ptr)" identifier (argument_list "(iVar1,__ptr)" ( identifier , identifier ))))) ;) (if_statement "if (puVar7 == (undefined *)0x0) {\n          puVar7 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar7 == (undefined *)0x0) {\nswitchD_000364ed_caseD_5:\n            return LDPS_ERR;\n          }\n          iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }" if (parenthesized_expression "(puVar7 == (undefined *)0x0)" ( (binary_expression "puVar7 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          puVar7 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar7 == (undefined *)0x0) {\nswitchD_000364ed_caseD_5:\n            return LDPS_ERR;\n          }\n          iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }" { (expression_statement "puVar7 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);" (assignment_expression "puVar7 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b)" identifier = (cast_expression "(undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b)" identifier (argument_list "(iVar1,__ptr,0x22811b)" ( identifier , identifier , number_literal ))))) ;) (if_statement "if (puVar7 == (undefined *)0x0) {\nswitchD_000364ed_caseD_5:\n            return LDPS_ERR;\n          }" if (parenthesized_expression "(puVar7 == (undefined *)0x0)" ( (binary_expression "puVar7 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nswitchD_000364ed_caseD_5:\n            return LDPS_ERR;\n          }" { (labeled_statement "switchD_000364ed_caseD_5:\n            return LDPS_ERR;" statement_identifier : (return_statement "return LDPS_ERR;" return identifier ;)) })) (expression_statement "iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);" (assignment_expression "iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4)" identifier = (pointer_expression "*(int *)(*(int *)(iVar1 + 4) + 4)" * (cast_expression "(int *)(*(int *)(iVar1 + 4) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + 4) + 4)" ( (binary_expression "*(int *)(iVar1 + 4) + 4" (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) }) (else_clause "else {\n          free(__ptr);\n          iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }" else (compound_statement "{\n          free(__ptr);\n          iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }" { (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (expression_statement "iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);" (assignment_expression "iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4)" identifier = (pointer_expression "*(int *)(*(int *)(iVar1 + 4) + 4)" * (cast_expression "(int *)(*(int *)(iVar1 + 4) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + 4) + 4)" ( (binary_expression "*(int *)(iVar1 + 4) + 4" (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) }))) (break_statement "break;" break ;)) (case_statement "case 1:\n        pcVar6 = syms->comdat_key;\n        iVar9 = 0x82;\n        if (pcVar6 != (char *)0x0) goto LAB_00036500;\nLAB_00036680:\n        puVar7 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;" case number_literal : (expression_statement "pcVar6 = syms->comdat_key;" (assignment_expression "pcVar6 = syms->comdat_key" identifier = (field_expression "syms->comdat_key" identifier -> field_identifier)) ;) (expression_statement "iVar9 = 0x82;" (assignment_expression "iVar9 = 0x82" identifier = number_literal) ;) (if_statement "if (pcVar6 != (char *)0x0) goto LAB_00036500;" if (parenthesized_expression "(pcVar6 != (char *)0x0)" ( (binary_expression "pcVar6 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00036500;" goto statement_identifier ;)) (labeled_statement "LAB_00036680:\n        puVar7 = (undefined *)bfd_get_section_by_name(iVar1,".text");" statement_identifier : (expression_statement "puVar7 = (undefined *)bfd_get_section_by_name(iVar1,".text");" (assignment_expression "puVar7 = (undefined *)bfd_get_section_by_name(iVar1,".text")" identifier = (cast_expression "(undefined *)bfd_get_section_by_name(iVar1,".text")" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_get_section_by_name(iVar1,".text")" identifier (argument_list "(iVar1,".text")" ( identifier , (string_literal "".text"" " string_content ") ))))) ;)) (expression_statement "iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);" (assignment_expression "iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4)" identifier = (pointer_expression "*(int *)(*(int *)(iVar1 + 4) + 4)" * (cast_expression "(int *)(*(int *)(iVar1 + 4) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + 4) + 4)" ( (binary_expression "*(int *)(iVar1 + 4) + 4" (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) (break_statement "break;" break ;)) (case_statement "case 2:\n        iVar9 = 0;\n        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar7 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;" case number_literal : (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (expression_statement "iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);" (assignment_expression "iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4)" identifier = (pointer_expression "*(int *)(*(int *)(iVar1 + 4) + 4)" * (cast_expression "(int *)(*(int *)(iVar1 + 4) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + 4) + 4)" ( (binary_expression "*(int *)(iVar1 + 4) + 4" (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "puVar7 = PTR__bfd_std_section_0013bfc4 + 0xc0;" (assignment_expression "puVar7 = PTR__bfd_std_section_0013bfc4 + 0xc0" identifier = (binary_expression "PTR__bfd_std_section_0013bfc4 + 0xc0" identifier + number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case 3:\n        iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar8 != 5) goto LAB_00036569;\n        goto LAB_000365ee;" case number_literal : (expression_statement "iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4);" (assignment_expression "iVar8 = *(int *)(*(int *)(iVar1 + 4) + 4)" identifier = (pointer_expression "*(int *)(*(int *)(iVar1 + 4) + 4)" * (cast_expression "(int *)(*(int *)(iVar1 + 4) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + 4) + 4)" ( (binary_expression "*(int *)(iVar1 + 4) + 4" (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "piVar5[4] = 0x80;" (assignment_expression "piVar5[4] = 0x80" (subscript_expression "piVar5[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5[5] = (int)puVar4;" (assignment_expression "piVar5[5] = (int)puVar4" (subscript_expression "piVar5[5]" identifier [ number_literal ]) = (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (iVar8 != 5) goto LAB_00036569;" if (parenthesized_expression "(iVar8 != 5)" ( (binary_expression "iVar8 != 5" identifier != number_literal) )) (goto_statement "goto LAB_00036569;" goto statement_identifier ;)) (goto_statement "goto LAB_000365ee;" goto statement_identifier ;)) (case_statement "case 4:\n        iVar8 = *(int *)((int)&syms->size + 4);\n        piVar5[2] = (int)syms->size;\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar8;\n        puVar7 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar7;\n          goto LAB_000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar7;\n        goto LAB_00036569;" case number_literal : (expression_statement "iVar8 = *(int *)((int)&syms->size + 4);" (assignment_expression "iVar8 = *(int *)((int)&syms->size + 4)" identifier = (pointer_expression "*(int *)((int)&syms->size + 4)" * (cast_expression "(int *)((int)&syms->size + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&syms->size + 4)" ( (binary_expression "(int)&syms->size + 4" (cast_expression "(int)&syms->size" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&syms->size" & (field_expression "syms->size" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "piVar5[2] = (int)syms->size;" (assignment_expression "piVar5[2] = (int)syms->size" (subscript_expression "piVar5[2]" identifier [ number_literal ]) = (cast_expression "(int)syms->size" ( (type_descriptor "int" primitive_type) ) (field_expression "syms->size" identifier -> field_identifier))) ;) (expression_statement "iVar9 = *(int *)(iVar1 + 4);" (assignment_expression "iVar9 = *(int *)(iVar1 + 4)" identifier = (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) ))))) ;) (expression_statement "piVar5[3] = iVar8;" (assignment_expression "piVar5[3] = iVar8" (subscript_expression "piVar5[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar7 = PTR__bfd_std_section_0013bfc4;" (assignment_expression "puVar7 = PTR__bfd_std_section_0013bfc4" identifier = identifier) ;) (if_statement "if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar7;\n          goto LAB_000365ee;\n        }" if (parenthesized_expression "(*(int *)(iVar9 + 4) == 5)" ( (binary_expression "*(int *)(iVar9 + 4) == 5" (pointer_expression "*(int *)(iVar9 + 4)" * (cast_expression "(int *)(iVar9 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 4)" ( (binary_expression "iVar9 + 4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar7;\n          goto LAB_000365ee;\n        }" { (expression_statement "piVar5[0xe] = -0xe;" (assignment_expression "piVar5[0xe] = -0xe" (subscript_expression "piVar5[0xe]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5[8] = 1;" (assignment_expression "piVar5[8] = 1" (subscript_expression "piVar5[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5[9] = 0;" (assignment_expression "piVar5[9] = 0" (subscript_expression "piVar5[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5[4] = 2;" (assignment_expression "piVar5[4] = 2" (subscript_expression "piVar5[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5[5] = (int)puVar7;" (assignment_expression "piVar5[5] = (int)puVar7" (subscript_expression "piVar5[5]" identifier [ number_literal ]) = (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (goto_statement "goto LAB_000365ee;" goto statement_identifier ;) })) (expression_statement "piVar5[4] = 2;" (assignment_expression "piVar5[4] = 2" (subscript_expression "piVar5[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5[5] = (int)puVar7;" (assignment_expression "piVar5[5] = (int)puVar7" (subscript_expression "piVar5[5]" identifier [ number_literal ]) = (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (goto_statement "goto LAB_00036569;" goto statement_identifier ;)) (case_statement "default:\n        goto switchD_000364ed_caseD_5;" default : (goto_statement "goto switchD_000364ed_caseD_5;" goto statement_identifier ;)) })) (expression_statement "piVar5[4] = iVar9;" (assignment_expression "piVar5[4] = iVar9" (subscript_expression "piVar5[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar5[5] = (int)puVar7;" (assignment_expression "piVar5[5] = (int)puVar7" (subscript_expression "piVar5[5]" identifier [ number_literal ]) = (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (iVar8 == 5) {\nLAB_000365ee:\n        iVar8 = *piVar5;\n        if (((iVar8 == 0) || (*(int *)(*(int *)(iVar8 + 4) + 4) != 5)) ||\n           (*(int *)(iVar8 + 0xa0) == 0)) {\n          iVar8 = piVar5[1];\n          pcVar6 = (char *)dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          einfo(pcVar6,iVar8);\n          uVar2 = syms->visibility;\n        }\n        else {\n          uVar2 = syms->visibility;\n        }\n        if (3 < uVar2) {\n          pcVar6 = (char *)dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          einfo(pcVar6,uVar2);\n          return LDPS_ERR;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | *(byte *)((int)&CSWTCH_67 + uVar2);\n      }" if (parenthesized_expression "(iVar8 == 5)" ( (binary_expression "iVar8 == 5" identifier == number_literal) )) (compound_statement "{\nLAB_000365ee:\n        iVar8 = *piVar5;\n        if (((iVar8 == 0) || (*(int *)(*(int *)(iVar8 + 4) + 4) != 5)) ||\n           (*(int *)(iVar8 + 0xa0) == 0)) {\n          iVar8 = piVar5[1];\n          pcVar6 = (char *)dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          einfo(pcVar6,iVar8);\n          uVar2 = syms->visibility;\n        }\n        else {\n          uVar2 = syms->visibility;\n        }\n        if (3 < uVar2) {\n          pcVar6 = (char *)dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          einfo(pcVar6,uVar2);\n          return LDPS_ERR;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | *(byte *)((int)&CSWTCH_67 + uVar2);\n      }" { (labeled_statement "LAB_000365ee:\n        iVar8 = *piVar5;" statement_identifier : (expression_statement "iVar8 = *piVar5;" (assignment_expression "iVar8 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;)) (if_statement "if (((iVar8 == 0) || (*(int *)(*(int *)(iVar8 + 4) + 4) != 5)) ||\n           (*(int *)(iVar8 + 0xa0) == 0)) {\n          iVar8 = piVar5[1];\n          pcVar6 = (char *)dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          einfo(pcVar6,iVar8);\n          uVar2 = syms->visibility;\n        }\n        else {\n          uVar2 = syms->visibility;\n        }" if (parenthesized_expression "(((iVar8 == 0) || (*(int *)(*(int *)(iVar8 + 4) + 4) != 5)) ||\n           (*(int *)(iVar8 + 0xa0) == 0))" ( (binary_expression "((iVar8 == 0) || (*(int *)(*(int *)(iVar8 + 4) + 4) != 5)) ||\n           (*(int *)(iVar8 + 0xa0) == 0)" (parenthesized_expression "((iVar8 == 0) || (*(int *)(*(int *)(iVar8 + 4) + 4) != 5))" ( (binary_expression "(iVar8 == 0) || (*(int *)(*(int *)(iVar8 + 4) + 4) != 5)" (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) || (parenthesized_expression "(*(int *)(*(int *)(iVar8 + 4) + 4) != 5)" ( (binary_expression "*(int *)(*(int *)(iVar8 + 4) + 4) != 5" (pointer_expression "*(int *)(*(int *)(iVar8 + 4) + 4)" * (cast_expression "(int *)(*(int *)(iVar8 + 4) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar8 + 4) + 4)" ( (binary_expression "*(int *)(iVar8 + 4) + 4" (pointer_expression "*(int *)(iVar8 + 4)" * (cast_expression "(int *)(iVar8 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 4)" ( (binary_expression "iVar8 + 4" identifier + number_literal) )))) + number_literal) )))) != number_literal) ))) )) || (parenthesized_expression "(*(int *)(iVar8 + 0xa0) == 0)" ( (binary_expression "*(int *)(iVar8 + 0xa0) == 0" (pointer_expression "*(int *)(iVar8 + 0xa0)" * (cast_expression "(int *)(iVar8 + 0xa0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xa0)" ( (binary_expression "iVar8 + 0xa0" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n          iVar8 = piVar5[1];\n          pcVar6 = (char *)dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          einfo(pcVar6,iVar8);\n          uVar2 = syms->visibility;\n        }" { (expression_statement "iVar8 = piVar5[1];" (assignment_expression "iVar8 = piVar5[1]" identifier = (subscript_expression "piVar5[1]" identifier [ number_literal ])) ;) (expression_statement "pcVar6 = (char *)dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);" (assignment_expression "pcVar6 = (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 "piVar5 = (int *)0x0;" (assignment_expression "piVar5 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "einfo(pcVar6,iVar8);" (call_expression "einfo(pcVar6,iVar8)" identifier (argument_list "(pcVar6,iVar8)" ( identifier , identifier ))) ;) (expression_statement "uVar2 = syms->visibility;" (assignment_expression "uVar2 = syms->visibility" identifier = (field_expression "syms->visibility" identifier -> field_identifier)) ;) }) (else_clause "else {\n          uVar2 = syms->visibility;\n        }" else (compound_statement "{\n          uVar2 = syms->visibility;\n        }" { (expression_statement "uVar2 = syms->visibility;" (assignment_expression "uVar2 = syms->visibility" identifier = (field_expression "syms->visibility" identifier -> field_identifier)) ;) }))) (if_statement "if (3 < uVar2) {\n          pcVar6 = (char *)dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          einfo(pcVar6,uVar2);\n          return LDPS_ERR;\n        }" if (parenthesized_expression "(3 < uVar2)" ( (binary_expression "3 < uVar2" number_literal < identifier) )) (compound_statement "{\n          pcVar6 = (char *)dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          einfo(pcVar6,uVar2);\n          return LDPS_ERR;\n        }" { (expression_statement "pcVar6 = (char *)dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);" (assignment_expression "pcVar6 = (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(pcVar6,uVar2);" (call_expression "einfo(pcVar6,uVar2)" identifier (argument_list "(pcVar6,uVar2)" ( identifier , identifier ))) ;) (return_statement "return LDPS_ERR;" return identifier ;) })) (expression_statement "*(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | *(byte *)((int)&CSWTCH_67 + uVar2);" (assignment_expression "*(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | *(byte *)((int)&CSWTCH_67 + uVar2)" (pointer_expression "*(byte *)((int)piVar5 + 0x35)" * (cast_expression "(byte *)((int)piVar5 + 0x35)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar5 + 0x35)" ( (binary_expression "(int)piVar5 + 0x35" (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((int)piVar5 + 0x35) & 0xfc | *(byte *)((int)&CSWTCH_67 + uVar2)" (binary_expression "*(byte *)((int)piVar5 + 0x35) & 0xfc" (pointer_expression "*(byte *)((int)piVar5 + 0x35)" * (cast_expression "(byte *)((int)piVar5 + 0x35)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar5 + 0x35)" ( (binary_expression "(int)piVar5 + 0x35" (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) | (pointer_expression "*(byte *)((int)&CSWTCH_67 + uVar2)" * (cast_expression "(byte *)((int)&CSWTCH_67 + uVar2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&CSWTCH_67 + uVar2)" ( (binary_expression "(int)&CSWTCH_67 + uVar2" (cast_expression "(int)&CSWTCH_67" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&CSWTCH_67" & identifier)) + identifier) )))))) ;) })) (labeled_statement "LAB_00036569:\n      local_34 = local_34 + 1;" statement_identifier : (expression_statement "local_34 = local_34 + 1;" (assignment_expression "local_34 = local_34 + 1" identifier = (binary_expression "local_34 + 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 "(nsyms != local_34)" ( (binary_expression "nsyms != local_34" identifier != identifier) )) ;) })) (expression_statement "bfd_set_symtab(iVar1,iVar3,nsyms);" (call_expression "bfd_set_symtab(iVar1,iVar3,nsyms)" identifier (argument_list "(iVar1,iVar3,nsyms)" ( identifier , identifier , identifier ))) ;) (return_statement "return LDPS_OK;" return identifier ;) })))
(translation_unit "undefined4 FUN_00036420(int *param_1,int param_2,int *param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  undefined *puVar4;\n  int *piVar5;\n  int iVar6;\n  void *__ptr;\n  undefined4 uVar7;\n  undefined *puVar8;\n  int iVar9;\n  int local_34;\n  \n  iVar1 = *param_1;\n  if (DAT_0013d108 == 0) {\n    FUN_00033bf0("../../ld/plugin.c",0x1ec);\n  }\n  iVar3 = xmalloc(param_2 << 2);\n  puVar4 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n  local_34 = 0;\n  if (0 < param_2) {\n    do {\n      piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);\n      *(int **)(iVar3 + local_34 * 4) = piVar5;\n      iVar6 = param_3[1];\n      *piVar5 = iVar1;\n      if (iVar6 == 0) {\n        iVar6 = *param_3;\n      }\n      else {\n        iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);\n      }\n      piVar5[1] = iVar6;\n      piVar5[2] = 0;\n      piVar5[3] = 0;\n      switch(param_3[2]) {\n      case 0:\n        iVar6 = param_3[6];\n        iVar9 = 2;\n        if (iVar6 == 0) goto code_r0x00036680;\ncode_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        iVar6 = param_3[6];\n        iVar9 = 0x82;\n        if (iVar6 != 0) goto code_r0x00036500;\ncode_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar6 != 5) goto code_r0x00036569;\n        goto code_r0x000365ee;\n      case 4:\n        iVar6 = param_3[5];\n        piVar5[2] = param_3[4];\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar6;\n        puVar8 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar8;\n        goto code_r0x00036569;\n      default:\n        goto LAB_00036788;\n      }\n      piVar5[4] = iVar9;\n      piVar5[5] = (int)puVar8;\n      if (iVar6 == 5) {\ncode_r0x000365ee:\n        iVar6 = *piVar5;\n        if (((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)) {\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }\n        else {\n          uVar2 = param_3[3];\n        }\n        if (3 < uVar2) {\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2];\n      }\ncode_r0x00036569:\n      local_34 = local_34 + 1;\n      param_3 = param_3 + 8;\n    } while (param_2 != local_34);\n  }\n  bfd_set_symtab(iVar1,iVar3,param_2);\n  return 0;\n}\n\n" (function_definition "undefined4 FUN_00036420(int *param_1,int param_2,int *param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  undefined *puVar4;\n  int *piVar5;\n  int iVar6;\n  void *__ptr;\n  undefined4 uVar7;\n  undefined *puVar8;\n  int iVar9;\n  int local_34;\n  \n  iVar1 = *param_1;\n  if (DAT_0013d108 == 0) {\n    FUN_00033bf0("../../ld/plugin.c",0x1ec);\n  }\n  iVar3 = xmalloc(param_2 << 2);\n  puVar4 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n  local_34 = 0;\n  if (0 < param_2) {\n    do {\n      piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);\n      *(int **)(iVar3 + local_34 * 4) = piVar5;\n      iVar6 = param_3[1];\n      *piVar5 = iVar1;\n      if (iVar6 == 0) {\n        iVar6 = *param_3;\n      }\n      else {\n        iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);\n      }\n      piVar5[1] = iVar6;\n      piVar5[2] = 0;\n      piVar5[3] = 0;\n      switch(param_3[2]) {\n      case 0:\n        iVar6 = param_3[6];\n        iVar9 = 2;\n        if (iVar6 == 0) goto code_r0x00036680;\ncode_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        iVar6 = param_3[6];\n        iVar9 = 0x82;\n        if (iVar6 != 0) goto code_r0x00036500;\ncode_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar6 != 5) goto code_r0x00036569;\n        goto code_r0x000365ee;\n      case 4:\n        iVar6 = param_3[5];\n        piVar5[2] = param_3[4];\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar6;\n        puVar8 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar8;\n        goto code_r0x00036569;\n      default:\n        goto LAB_00036788;\n      }\n      piVar5[4] = iVar9;\n      piVar5[5] = (int)puVar8;\n      if (iVar6 == 5) {\ncode_r0x000365ee:\n        iVar6 = *piVar5;\n        if (((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)) {\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }\n        else {\n          uVar2 = param_3[3];\n        }\n        if (3 < uVar2) {\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2];\n      }\ncode_r0x00036569:\n      local_34 = local_34 + 1;\n      param_3 = param_3 + 8;\n    } while (param_2 != local_34);\n  }\n  bfd_set_symtab(iVar1,iVar3,param_2);\n  return 0;\n}" type_identifier (function_declarator "FUN_00036420(int *param_1,int param_2,int *param_3)" identifier (parameter_list "(int *param_1,int param_2,int *param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  undefined *puVar4;\n  int *piVar5;\n  int iVar6;\n  void *__ptr;\n  undefined4 uVar7;\n  undefined *puVar8;\n  int iVar9;\n  int local_34;\n  \n  iVar1 = *param_1;\n  if (DAT_0013d108 == 0) {\n    FUN_00033bf0("../../ld/plugin.c",0x1ec);\n  }\n  iVar3 = xmalloc(param_2 << 2);\n  puVar4 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n  local_34 = 0;\n  if (0 < param_2) {\n    do {\n      piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);\n      *(int **)(iVar3 + local_34 * 4) = piVar5;\n      iVar6 = param_3[1];\n      *piVar5 = iVar1;\n      if (iVar6 == 0) {\n        iVar6 = *param_3;\n      }\n      else {\n        iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);\n      }\n      piVar5[1] = iVar6;\n      piVar5[2] = 0;\n      piVar5[3] = 0;\n      switch(param_3[2]) {\n      case 0:\n        iVar6 = param_3[6];\n        iVar9 = 2;\n        if (iVar6 == 0) goto code_r0x00036680;\ncode_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        iVar6 = param_3[6];\n        iVar9 = 0x82;\n        if (iVar6 != 0) goto code_r0x00036500;\ncode_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar6 != 5) goto code_r0x00036569;\n        goto code_r0x000365ee;\n      case 4:\n        iVar6 = param_3[5];\n        piVar5[2] = param_3[4];\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar6;\n        puVar8 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar8;\n        goto code_r0x00036569;\n      default:\n        goto LAB_00036788;\n      }\n      piVar5[4] = iVar9;\n      piVar5[5] = (int)puVar8;\n      if (iVar6 == 5) {\ncode_r0x000365ee:\n        iVar6 = *piVar5;\n        if (((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)) {\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }\n        else {\n          uVar2 = param_3[3];\n        }\n        if (3 < uVar2) {\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2];\n      }\ncode_r0x00036569:\n      local_34 = local_34 + 1;\n      param_3 = param_3 + 8;\n    } while (param_2 != local_34);\n  }\n  bfd_set_symtab(iVar1,iVar3,param_2);\n  return 0;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int local_34;" primitive_type identifier ;) (expression_statement "iVar1 = *param_1;" (assignment_expression "iVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (DAT_0013d108 == 0) {\n    FUN_00033bf0("../../ld/plugin.c",0x1ec);\n  }" if (parenthesized_expression "(DAT_0013d108 == 0)" ( (binary_expression "DAT_0013d108 == 0" identifier == number_literal) )) (compound_statement "{\n    FUN_00033bf0("../../ld/plugin.c",0x1ec);\n  }" { (expression_statement "FUN_00033bf0("../../ld/plugin.c",0x1ec);" (call_expression "FUN_00033bf0("../../ld/plugin.c",0x1ec)" identifier (argument_list "("../../ld/plugin.c",0x1ec)" ( (string_literal ""../../ld/plugin.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "iVar3 = xmalloc(param_2 << 2);" (assignment_expression "iVar3 = xmalloc(param_2 << 2)" identifier = (call_expression "xmalloc(param_2 << 2)" identifier (argument_list "(param_2 << 2)" ( (binary_expression "param_2 << 2" identifier << number_literal) )))) ;) (expression_statement "puVar4 = PTR__bfd_std_section_0013bfc4 + 0xc0;" (assignment_expression "puVar4 = PTR__bfd_std_section_0013bfc4 + 0xc0" identifier = (binary_expression "PTR__bfd_std_section_0013bfc4 + 0xc0" identifier + number_literal)) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (if_statement "if (0 < param_2) {\n    do {\n      piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);\n      *(int **)(iVar3 + local_34 * 4) = piVar5;\n      iVar6 = param_3[1];\n      *piVar5 = iVar1;\n      if (iVar6 == 0) {\n        iVar6 = *param_3;\n      }\n      else {\n        iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);\n      }\n      piVar5[1] = iVar6;\n      piVar5[2] = 0;\n      piVar5[3] = 0;\n      switch(param_3[2]) {\n      case 0:\n        iVar6 = param_3[6];\n        iVar9 = 2;\n        if (iVar6 == 0) goto code_r0x00036680;\ncode_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        iVar6 = param_3[6];\n        iVar9 = 0x82;\n        if (iVar6 != 0) goto code_r0x00036500;\ncode_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar6 != 5) goto code_r0x00036569;\n        goto code_r0x000365ee;\n      case 4:\n        iVar6 = param_3[5];\n        piVar5[2] = param_3[4];\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar6;\n        puVar8 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar8;\n        goto code_r0x00036569;\n      default:\n        goto LAB_00036788;\n      }\n      piVar5[4] = iVar9;\n      piVar5[5] = (int)puVar8;\n      if (iVar6 == 5) {\ncode_r0x000365ee:\n        iVar6 = *piVar5;\n        if (((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)) {\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }\n        else {\n          uVar2 = param_3[3];\n        }\n        if (3 < uVar2) {\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2];\n      }\ncode_r0x00036569:\n      local_34 = local_34 + 1;\n      param_3 = param_3 + 8;\n    } while (param_2 != local_34);\n  }" if (parenthesized_expression "(0 < param_2)" ( (binary_expression "0 < param_2" number_literal < identifier) )) (compound_statement "{\n    do {\n      piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);\n      *(int **)(iVar3 + local_34 * 4) = piVar5;\n      iVar6 = param_3[1];\n      *piVar5 = iVar1;\n      if (iVar6 == 0) {\n        iVar6 = *param_3;\n      }\n      else {\n        iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);\n      }\n      piVar5[1] = iVar6;\n      piVar5[2] = 0;\n      piVar5[3] = 0;\n      switch(param_3[2]) {\n      case 0:\n        iVar6 = param_3[6];\n        iVar9 = 2;\n        if (iVar6 == 0) goto code_r0x00036680;\ncode_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        iVar6 = param_3[6];\n        iVar9 = 0x82;\n        if (iVar6 != 0) goto code_r0x00036500;\ncode_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar6 != 5) goto code_r0x00036569;\n        goto code_r0x000365ee;\n      case 4:\n        iVar6 = param_3[5];\n        piVar5[2] = param_3[4];\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar6;\n        puVar8 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar8;\n        goto code_r0x00036569;\n      default:\n        goto LAB_00036788;\n      }\n      piVar5[4] = iVar9;\n      piVar5[5] = (int)puVar8;\n      if (iVar6 == 5) {\ncode_r0x000365ee:\n        iVar6 = *piVar5;\n        if (((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)) {\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }\n        else {\n          uVar2 = param_3[3];\n        }\n        if (3 < uVar2) {\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2];\n      }\ncode_r0x00036569:\n      local_34 = local_34 + 1;\n      param_3 = param_3 + 8;\n    } while (param_2 != local_34);\n  }" { (do_statement "do {\n      piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);\n      *(int **)(iVar3 + local_34 * 4) = piVar5;\n      iVar6 = param_3[1];\n      *piVar5 = iVar1;\n      if (iVar6 == 0) {\n        iVar6 = *param_3;\n      }\n      else {\n        iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);\n      }\n      piVar5[1] = iVar6;\n      piVar5[2] = 0;\n      piVar5[3] = 0;\n      switch(param_3[2]) {\n      case 0:\n        iVar6 = param_3[6];\n        iVar9 = 2;\n        if (iVar6 == 0) goto code_r0x00036680;\ncode_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        iVar6 = param_3[6];\n        iVar9 = 0x82;\n        if (iVar6 != 0) goto code_r0x00036500;\ncode_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar6 != 5) goto code_r0x00036569;\n        goto code_r0x000365ee;\n      case 4:\n        iVar6 = param_3[5];\n        piVar5[2] = param_3[4];\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar6;\n        puVar8 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar8;\n        goto code_r0x00036569;\n      default:\n        goto LAB_00036788;\n      }\n      piVar5[4] = iVar9;\n      piVar5[5] = (int)puVar8;\n      if (iVar6 == 5) {\ncode_r0x000365ee:\n        iVar6 = *piVar5;\n        if (((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)) {\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }\n        else {\n          uVar2 = param_3[3];\n        }\n        if (3 < uVar2) {\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2];\n      }\ncode_r0x00036569:\n      local_34 = local_34 + 1;\n      param_3 = param_3 + 8;\n    } while (param_2 != local_34);" do (compound_statement "{\n      piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);\n      *(int **)(iVar3 + local_34 * 4) = piVar5;\n      iVar6 = param_3[1];\n      *piVar5 = iVar1;\n      if (iVar6 == 0) {\n        iVar6 = *param_3;\n      }\n      else {\n        iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);\n      }\n      piVar5[1] = iVar6;\n      piVar5[2] = 0;\n      piVar5[3] = 0;\n      switch(param_3[2]) {\n      case 0:\n        iVar6 = param_3[6];\n        iVar9 = 2;\n        if (iVar6 == 0) goto code_r0x00036680;\ncode_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        iVar6 = param_3[6];\n        iVar9 = 0x82;\n        if (iVar6 != 0) goto code_r0x00036500;\ncode_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar6 != 5) goto code_r0x00036569;\n        goto code_r0x000365ee;\n      case 4:\n        iVar6 = param_3[5];\n        piVar5[2] = param_3[4];\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar6;\n        puVar8 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar8;\n        goto code_r0x00036569;\n      default:\n        goto LAB_00036788;\n      }\n      piVar5[4] = iVar9;\n      piVar5[5] = (int)puVar8;\n      if (iVar6 == 5) {\ncode_r0x000365ee:\n        iVar6 = *piVar5;\n        if (((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)) {\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }\n        else {\n          uVar2 = param_3[3];\n        }\n        if (3 < uVar2) {\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2];\n      }\ncode_r0x00036569:\n      local_34 = local_34 + 1;\n      param_3 = param_3 + 8;\n    }" { (expression_statement "piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);" (assignment_expression "piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1)" identifier = (cast_expression "(int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1)" (parenthesized_expression "(**(code **)(*(int *)(iVar1 + 4) + 0x10c))" ( (pointer_expression "**(code **)(*(int *)(iVar1 + 4) + 0x10c)" * (pointer_expression "*(code **)(*(int *)(iVar1 + 4) + 0x10c)" * (cast_expression "(code **)(*(int *)(iVar1 + 4) + 0x10c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar1 + 4) + 0x10c)" ( (binary_expression "*(int *)(iVar1 + 4) + 0x10c" (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(iVar1)" ( identifier ))))) ;) (expression_statement "*(int **)(iVar3 + local_34 * 4) = piVar5;" (assignment_expression "*(int **)(iVar3 + local_34 * 4) = piVar5" (pointer_expression "*(int **)(iVar3 + local_34 * 4)" * (cast_expression "(int **)(iVar3 + local_34 * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + local_34 * 4)" ( (binary_expression "iVar3 + local_34 * 4" identifier + (binary_expression "local_34 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "iVar6 = param_3[1];" (assignment_expression "iVar6 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (expression_statement "*piVar5 = iVar1;" (assignment_expression "*piVar5 = iVar1" (pointer_expression "*piVar5" * identifier) = identifier) ;) (if_statement "if (iVar6 == 0) {\n        iVar6 = *param_3;\n      }\n      else {\n        iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);\n      }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar6 = *param_3;\n      }" { (expression_statement "iVar6 = *param_3;" (assignment_expression "iVar6 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) }) (else_clause "else {\n        iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);\n      }" else (compound_statement "{\n        iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);\n      }" { (expression_statement "iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);" (assignment_expression "iVar6 = concat(*param_3,&DAT_00065079,iVar6,0)" identifier = (call_expression "concat(*param_3,&DAT_00065079,iVar6,0)" identifier (argument_list "(*param_3,&DAT_00065079,iVar6,0)" ( (pointer_expression "*param_3" * identifier) , (pointer_expression "&DAT_00065079" & identifier) , identifier , number_literal )))) ;) }))) (expression_statement "piVar5[1] = iVar6;" (assignment_expression "piVar5[1] = iVar6" (subscript_expression "piVar5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar5[2] = 0;" (assignment_expression "piVar5[2] = 0" (subscript_expression "piVar5[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5[3] = 0;" (assignment_expression "piVar5[3] = 0" (subscript_expression "piVar5[3]" identifier [ number_literal ]) = number_literal) ;) (switch_statement "switch(param_3[2]) {\n      case 0:\n        iVar6 = param_3[6];\n        iVar9 = 2;\n        if (iVar6 == 0) goto code_r0x00036680;\ncode_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        iVar6 = param_3[6];\n        iVar9 = 0x82;\n        if (iVar6 != 0) goto code_r0x00036500;\ncode_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar6 != 5) goto code_r0x00036569;\n        goto code_r0x000365ee;\n      case 4:\n        iVar6 = param_3[5];\n        piVar5[2] = param_3[4];\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar6;\n        puVar8 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar8;\n        goto code_r0x00036569;\n      default:\n        goto LAB_00036788;\n      }" switch (parenthesized_expression "(param_3[2])" ( (subscript_expression "param_3[2]" identifier [ number_literal ]) )) (compound_statement "{\n      case 0:\n        iVar6 = param_3[6];\n        iVar9 = 2;\n        if (iVar6 == 0) goto code_r0x00036680;\ncode_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        iVar6 = param_3[6];\n        iVar9 = 0x82;\n        if (iVar6 != 0) goto code_r0x00036500;\ncode_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar6 != 5) goto code_r0x00036569;\n        goto code_r0x000365ee;\n      case 4:\n        iVar6 = param_3[5];\n        piVar5[2] = param_3[4];\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar6;\n        puVar8 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar8;\n        goto code_r0x00036569;\n      default:\n        goto LAB_00036788;\n      }" { (case_statement "case 0:\n        iVar6 = param_3[6];\n        iVar9 = 2;\n        if (iVar6 == 0) goto code_r0x00036680;\ncode_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;" case number_literal : (expression_statement "iVar6 = param_3[6];" (assignment_expression "iVar6 = param_3[6]" identifier = (subscript_expression "param_3[6]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = 2;" (assignment_expression "iVar9 = 2" identifier = number_literal) ;) (if_statement "if (iVar6 == 0) goto code_r0x00036680;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (goto_statement "goto code_r0x00036680;" goto statement_identifier ;)) (labeled_statement "code_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);" statement_identifier : (expression_statement "__ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);" (assignment_expression "__ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0)" identifier = (cast_expression "(void *)concat(".gnu.linkonce.t.",iVar6,0)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "concat(".gnu.linkonce.t.",iVar6,0)" identifier (argument_list "(".gnu.linkonce.t.",iVar6,0)" ( (string_literal "".gnu.linkonce.t."" " string_content ") , identifier , number_literal ))))) ;)) (expression_statement "puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);" (assignment_expression "puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr)" identifier = (cast_expression "(undefined *)bfd_get_section_by_name(iVar1,__ptr)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_get_section_by_name(iVar1,__ptr)" identifier (argument_list "(iVar1,__ptr)" ( identifier , identifier ))))) ;) (if_statement "if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }" if (parenthesized_expression "(puVar8 == (undefined *)0x0)" ( (binary_expression "puVar8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }" { (expression_statement "puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);" (assignment_expression "puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b)" identifier = (cast_expression "(undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b)" identifier (argument_list "(iVar1,__ptr,0x22811b)" ( identifier , identifier , number_literal ))))) ;) (if_statement "if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }" if (parenthesized_expression "(puVar8 == (undefined *)0x0)" ( (binary_expression "puVar8 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00036788:\n            return 3;\n          }" { (labeled_statement "LAB_00036788:\n            return 3;" statement_identifier : (return_statement "return 3;" return number_literal ;)) })) (expression_statement "iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);" (assignment_expression "iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4)" identifier = (pointer_expression "*(int *)(*(int *)(iVar1 + 4) + 4)" * (cast_expression "(int *)(*(int *)(iVar1 + 4) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + 4) + 4)" ( (binary_expression "*(int *)(iVar1 + 4) + 4" (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) }) (else_clause "else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }" else (compound_statement "{\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }" { (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (expression_statement "iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);" (assignment_expression "iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4)" identifier = (pointer_expression "*(int *)(*(int *)(iVar1 + 4) + 4)" * (cast_expression "(int *)(*(int *)(iVar1 + 4) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + 4) + 4)" ( (binary_expression "*(int *)(iVar1 + 4) + 4" (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) }))) (break_statement "break;" break ;)) (case_statement "case 1:\n        iVar6 = param_3[6];\n        iVar9 = 0x82;\n        if (iVar6 != 0) goto code_r0x00036500;\ncode_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;" case number_literal : (expression_statement "iVar6 = param_3[6];" (assignment_expression "iVar6 = param_3[6]" identifier = (subscript_expression "param_3[6]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = 0x82;" (assignment_expression "iVar9 = 0x82" identifier = number_literal) ;) (if_statement "if (iVar6 != 0) goto code_r0x00036500;" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (goto_statement "goto code_r0x00036500;" goto statement_identifier ;)) (labeled_statement "code_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");" statement_identifier : (expression_statement "puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");" (assignment_expression "puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text")" identifier = (cast_expression "(undefined *)bfd_get_section_by_name(iVar1,".text")" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_get_section_by_name(iVar1,".text")" identifier (argument_list "(iVar1,".text")" ( identifier , (string_literal "".text"" " string_content ") ))))) ;)) (expression_statement "iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);" (assignment_expression "iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4)" identifier = (pointer_expression "*(int *)(*(int *)(iVar1 + 4) + 4)" * (cast_expression "(int *)(*(int *)(iVar1 + 4) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + 4) + 4)" ( (binary_expression "*(int *)(iVar1 + 4) + 4" (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) (break_statement "break;" break ;)) (case_statement "case 2:\n        iVar9 = 0;\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;" case number_literal : (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);" (assignment_expression "iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4)" identifier = (pointer_expression "*(int *)(*(int *)(iVar1 + 4) + 4)" * (cast_expression "(int *)(*(int *)(iVar1 + 4) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + 4) + 4)" ( (binary_expression "*(int *)(iVar1 + 4) + 4" (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;" (assignment_expression "puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0" identifier = (binary_expression "PTR__bfd_std_section_0013bfc4 + 0xc0" identifier + number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case 3:\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar6 != 5) goto code_r0x00036569;\n        goto code_r0x000365ee;" case number_literal : (expression_statement "iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);" (assignment_expression "iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4)" identifier = (pointer_expression "*(int *)(*(int *)(iVar1 + 4) + 4)" * (cast_expression "(int *)(*(int *)(iVar1 + 4) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + 4) + 4)" ( (binary_expression "*(int *)(iVar1 + 4) + 4" (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "piVar5[4] = 0x80;" (assignment_expression "piVar5[4] = 0x80" (subscript_expression "piVar5[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5[5] = (int)puVar4;" (assignment_expression "piVar5[5] = (int)puVar4" (subscript_expression "piVar5[5]" identifier [ number_literal ]) = (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (iVar6 != 5) goto code_r0x00036569;" if (parenthesized_expression "(iVar6 != 5)" ( (binary_expression "iVar6 != 5" identifier != number_literal) )) (goto_statement "goto code_r0x00036569;" goto statement_identifier ;)) (goto_statement "goto code_r0x000365ee;" goto statement_identifier ;)) (case_statement "case 4:\n        iVar6 = param_3[5];\n        piVar5[2] = param_3[4];\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar6;\n        puVar8 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar8;\n        goto code_r0x00036569;" case number_literal : (expression_statement "iVar6 = param_3[5];" (assignment_expression "iVar6 = param_3[5]" identifier = (subscript_expression "param_3[5]" identifier [ number_literal ])) ;) (expression_statement "piVar5[2] = param_3[4];" (assignment_expression "piVar5[2] = param_3[4]" (subscript_expression "piVar5[2]" identifier [ number_literal ]) = (subscript_expression "param_3[4]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = *(int *)(iVar1 + 4);" (assignment_expression "iVar9 = *(int *)(iVar1 + 4)" identifier = (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) ))))) ;) (expression_statement "piVar5[3] = iVar6;" (assignment_expression "piVar5[3] = iVar6" (subscript_expression "piVar5[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8 = PTR__bfd_std_section_0013bfc4;" (assignment_expression "puVar8 = PTR__bfd_std_section_0013bfc4" identifier = identifier) ;) (if_statement "if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }" if (parenthesized_expression "(*(int *)(iVar9 + 4) == 5)" ( (binary_expression "*(int *)(iVar9 + 4) == 5" (pointer_expression "*(int *)(iVar9 + 4)" * (cast_expression "(int *)(iVar9 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 4)" ( (binary_expression "iVar9 + 4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }" { (expression_statement "piVar5[0xe] = -0xe;" (assignment_expression "piVar5[0xe] = -0xe" (subscript_expression "piVar5[0xe]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5[8] = 1;" (assignment_expression "piVar5[8] = 1" (subscript_expression "piVar5[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5[9] = 0;" (assignment_expression "piVar5[9] = 0" (subscript_expression "piVar5[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5[4] = 2;" (assignment_expression "piVar5[4] = 2" (subscript_expression "piVar5[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5[5] = (int)puVar8;" (assignment_expression "piVar5[5] = (int)puVar8" (subscript_expression "piVar5[5]" identifier [ number_literal ]) = (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (goto_statement "goto code_r0x000365ee;" goto statement_identifier ;) })) (expression_statement "piVar5[4] = 2;" (assignment_expression "piVar5[4] = 2" (subscript_expression "piVar5[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5[5] = (int)puVar8;" (assignment_expression "piVar5[5] = (int)puVar8" (subscript_expression "piVar5[5]" identifier [ number_literal ]) = (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (goto_statement "goto code_r0x00036569;" goto statement_identifier ;)) (case_statement "default:\n        goto LAB_00036788;" default : (goto_statement "goto LAB_00036788;" goto statement_identifier ;)) })) (expression_statement "piVar5[4] = iVar9;" (assignment_expression "piVar5[4] = iVar9" (subscript_expression "piVar5[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar5[5] = (int)puVar8;" (assignment_expression "piVar5[5] = (int)puVar8" (subscript_expression "piVar5[5]" identifier [ number_literal ]) = (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (iVar6 == 5) {\ncode_r0x000365ee:\n        iVar6 = *piVar5;\n        if (((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)) {\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }\n        else {\n          uVar2 = param_3[3];\n        }\n        if (3 < uVar2) {\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2];\n      }" if (parenthesized_expression "(iVar6 == 5)" ( (binary_expression "iVar6 == 5" identifier == number_literal) )) (compound_statement "{\ncode_r0x000365ee:\n        iVar6 = *piVar5;\n        if (((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)) {\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }\n        else {\n          uVar2 = param_3[3];\n        }\n        if (3 < uVar2) {\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2];\n      }" { (labeled_statement "code_r0x000365ee:\n        iVar6 = *piVar5;" statement_identifier : (expression_statement "iVar6 = *piVar5;" (assignment_expression "iVar6 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;)) (if_statement "if (((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)) {\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }\n        else {\n          uVar2 = param_3[3];\n        }" if (parenthesized_expression "(((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0))" ( (binary_expression "((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)" (parenthesized_expression "((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5))" ( (binary_expression "(iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)" (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) || (parenthesized_expression "(*(int *)(*(int *)(iVar6 + 4) + 4) != 5)" ( (binary_expression "*(int *)(*(int *)(iVar6 + 4) + 4) != 5" (pointer_expression "*(int *)(*(int *)(iVar6 + 4) + 4)" * (cast_expression "(int *)(*(int *)(iVar6 + 4) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar6 + 4) + 4)" ( (binary_expression "*(int *)(iVar6 + 4) + 4" (pointer_expression "*(int *)(iVar6 + 4)" * (cast_expression "(int *)(iVar6 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 4)" ( (binary_expression "iVar6 + 4" identifier + number_literal) )))) + number_literal) )))) != number_literal) ))) )) || (parenthesized_expression "(*(int *)(iVar6 + 0xa0) == 0)" ( (binary_expression "*(int *)(iVar6 + 0xa0) == 0" (pointer_expression "*(int *)(iVar6 + 0xa0)" * (cast_expression "(int *)(iVar6 + 0xa0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0xa0)" ( (binary_expression "iVar6 + 0xa0" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }" { (expression_statement "iVar6 = piVar5[1];" (assignment_expression "iVar6 = piVar5[1]" identifier = (subscript_expression "piVar5[1]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);" (assignment_expression "uVar7 = 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 "piVar5 = (int *)0x0;" (assignment_expression "piVar5 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "FUN_00033ba0(uVar7,iVar6);" (call_expression "FUN_00033ba0(uVar7,iVar6)" identifier (argument_list "(uVar7,iVar6)" ( identifier , identifier ))) ;) (expression_statement "uVar2 = param_3[3];" (assignment_expression "uVar2 = param_3[3]" identifier = (subscript_expression "param_3[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n          uVar2 = param_3[3];\n        }" else (compound_statement "{\n          uVar2 = param_3[3];\n        }" { (expression_statement "uVar2 = param_3[3];" (assignment_expression "uVar2 = param_3[3]" identifier = (subscript_expression "param_3[3]" identifier [ number_literal ])) ;) }))) (if_statement "if (3 < uVar2) {\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }" if (parenthesized_expression "(3 < uVar2)" ( (binary_expression "3 < uVar2" number_literal < identifier) )) (compound_statement "{\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }" { (expression_statement "uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);" (assignment_expression "uVar7 = 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_00033ba0(uVar7,uVar2);" (call_expression "FUN_00033ba0(uVar7,uVar2)" identifier (argument_list "(uVar7,uVar2)" ( identifier , identifier ))) ;) (return_statement "return 3;" return number_literal ;) })) (expression_statement "*(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2];" (assignment_expression "*(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2]" (pointer_expression "*(byte *)((int)piVar5 + 0x35)" * (cast_expression "(byte *)((int)piVar5 + 0x35)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar5 + 0x35)" ( (binary_expression "(int)piVar5 + 0x35" (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2]" (binary_expression "*(byte *)((int)piVar5 + 0x35) & 0xfc" (pointer_expression "*(byte *)((int)piVar5 + 0x35)" * (cast_expression "(byte *)((int)piVar5 + 0x35)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar5 + 0x35)" ( (binary_expression "(int)piVar5 + 0x35" (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) | (subscript_expression "(&UNK_0006519c)[uVar2]" (parenthesized_expression "(&UNK_0006519c)" ( (pointer_expression "&UNK_0006519c" & identifier) )) [ identifier ]))) ;) })) (labeled_statement "code_r0x00036569:\n      local_34 = local_34 + 1;" statement_identifier : (expression_statement "local_34 = local_34 + 1;" (assignment_expression "local_34 = local_34 + 1" identifier = (binary_expression "local_34 + 1" identifier + number_literal)) ;)) (expression_statement "param_3 = param_3 + 8;" (assignment_expression "param_3 = param_3 + 8" identifier = (binary_expression "param_3 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_2 != local_34)" ( (binary_expression "param_2 != local_34" identifier != identifier) )) ;) })) (expression_statement "bfd_set_symtab(iVar1,iVar3,param_2);" (call_expression "bfd_set_symtab(iVar1,iVar3,param_2)" identifier (argument_list "(iVar1,iVar3,param_2)" ( identifier , identifier , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE 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 = (call_expression IDENT (argument_list ( (binary_expression IDENT << LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (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) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (switch_statement switch (parenthesized_expression ( (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (return_statement return 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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) }) (else_clause else (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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + 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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") ))))) ;)) (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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (break_statement break ;)) (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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (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 IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (goto_statement goto statement_identifier ;)) (case_statement default : (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) 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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != LIT) ))) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (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 TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression 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 TYPE) ) IDENT) + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) | (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 != IDENT) )) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (return_statement return LIT ;) })))
(function_definition "undefined4 FUN_00036420(int *param_1,int param_2,int *param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  undefined *puVar4;\n  int *piVar5;\n  int iVar6;\n  void *__ptr;\n  undefined4 uVar7;\n  undefined *puVar8;\n  int iVar9;\n  int local_34;\n  \n  iVar1 = *param_1;\n  if (DAT_0013d108 == 0) {\n    FUN_00033bf0("../../ld/plugin.c",0x1ec);\n  }\n  iVar3 = xmalloc(param_2 << 2);\n  puVar4 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n  local_34 = 0;\n  if (0 < param_2) {\n    do {\n      piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);\n      *(int **)(iVar3 + local_34 * 4) = piVar5;\n      iVar6 = param_3[1];\n      *piVar5 = iVar1;\n      if (iVar6 == 0) {\n        iVar6 = *param_3;\n      }\n      else {\n        iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);\n      }\n      piVar5[1] = iVar6;\n      piVar5[2] = 0;\n      piVar5[3] = 0;\n      switch(param_3[2]) {\n      case 0:\n        iVar6 = param_3[6];\n        iVar9 = 2;\n        if (iVar6 == 0) goto code_r0x00036680;\ncode_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        iVar6 = param_3[6];\n        iVar9 = 0x82;\n        if (iVar6 != 0) goto code_r0x00036500;\ncode_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar6 != 5) goto code_r0x00036569;\n        goto code_r0x000365ee;\n      case 4:\n        iVar6 = param_3[5];\n        piVar5[2] = param_3[4];\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar6;\n        puVar8 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar8;\n        goto code_r0x00036569;\n      default:\n        goto LAB_00036788;\n      }\n      piVar5[4] = iVar9;\n      piVar5[5] = (int)puVar8;\n      if (iVar6 == 5) {\ncode_r0x000365ee:\n        iVar6 = *piVar5;\n        if (((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)) {\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }\n        else {\n          uVar2 = param_3[3];\n        }\n        if (3 < uVar2) {\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2];\n      }\ncode_r0x00036569:\n      local_34 = local_34 + 1;\n      param_3 = param_3 + 8;\n    } while (param_2 != local_34);\n  }\n  bfd_set_symtab(iVar1,iVar3,param_2);\n  return 0;\n}" (type_identifier "undefined4") (function_declarator "FUN_00036420(int *param_1,int param_2,int *param_3)" (identifier "FUN_00036420") (parameter_list "(int *param_1,int param_2,int *param_3)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  undefined *puVar4;\n  int *piVar5;\n  int iVar6;\n  void *__ptr;\n  undefined4 uVar7;\n  undefined *puVar8;\n  int iVar9;\n  int local_34;\n  \n  iVar1 = *param_1;\n  if (DAT_0013d108 == 0) {\n    FUN_00033bf0("../../ld/plugin.c",0x1ec);\n  }\n  iVar3 = xmalloc(param_2 << 2);\n  puVar4 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n  local_34 = 0;\n  if (0 < param_2) {\n    do {\n      piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);\n      *(int **)(iVar3 + local_34 * 4) = piVar5;\n      iVar6 = param_3[1];\n      *piVar5 = iVar1;\n      if (iVar6 == 0) {\n        iVar6 = *param_3;\n      }\n      else {\n        iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);\n      }\n      piVar5[1] = iVar6;\n      piVar5[2] = 0;\n      piVar5[3] = 0;\n      switch(param_3[2]) {\n      case 0:\n        iVar6 = param_3[6];\n        iVar9 = 2;\n        if (iVar6 == 0) goto code_r0x00036680;\ncode_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        iVar6 = param_3[6];\n        iVar9 = 0x82;\n        if (iVar6 != 0) goto code_r0x00036500;\ncode_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar6 != 5) goto code_r0x00036569;\n        goto code_r0x000365ee;\n      case 4:\n        iVar6 = param_3[5];\n        piVar5[2] = param_3[4];\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar6;\n        puVar8 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar8;\n        goto code_r0x00036569;\n      default:\n        goto LAB_00036788;\n      }\n      piVar5[4] = iVar9;\n      piVar5[5] = (int)puVar8;\n      if (iVar6 == 5) {\ncode_r0x000365ee:\n        iVar6 = *piVar5;\n        if (((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)) {\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }\n        else {\n          uVar2 = param_3[3];\n        }\n        if (3 < uVar2) {\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2];\n      }\ncode_r0x00036569:\n      local_34 = local_34 + 1;\n      param_3 = param_3 + 8;\n    } while (param_2 != local_34);\n  }\n  bfd_set_symtab(iVar1,iVar3,param_2);\n  return 0;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "undefined *puVar4;" (type_identifier "undefined") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "void *__ptr;" (primitive_type "void") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "undefined *puVar8;" (type_identifier "undefined") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "int local_34;" (primitive_type "int") (identifier "local_34") (; ";")) (expression_statement "iVar1 = *param_1;" (assignment_expression "iVar1 = *param_1" (identifier "iVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (DAT_0013d108 == 0) {\n    FUN_00033bf0("../../ld/plugin.c",0x1ec);\n  }" (if "if") (parenthesized_expression "(DAT_0013d108 == 0)" (( "(") (binary_expression "DAT_0013d108 == 0" (identifier "DAT_0013d108") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_00033bf0("../../ld/plugin.c",0x1ec);\n  }" ({ "{") (expression_statement "FUN_00033bf0("../../ld/plugin.c",0x1ec);" (call_expression "FUN_00033bf0("../../ld/plugin.c",0x1ec)" (identifier "FUN_00033bf0") (argument_list "("../../ld/plugin.c",0x1ec)" (( "(") (string_literal ""../../ld/plugin.c"" (" """) (string_content "../../ld/plugin.c") (" """)) (, ",") (number_literal "0x1ec") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar3 = xmalloc(param_2 << 2);" (assignment_expression "iVar3 = xmalloc(param_2 << 2)" (identifier "iVar3") (= "=") (call_expression "xmalloc(param_2 << 2)" (identifier "xmalloc") (argument_list "(param_2 << 2)" (( "(") (binary_expression "param_2 << 2" (identifier "param_2") (<< "<<") (number_literal "2")) () ")")))) (; ";")) (expression_statement "puVar4 = PTR__bfd_std_section_0013bfc4 + 0xc0;" (assignment_expression "puVar4 = PTR__bfd_std_section_0013bfc4 + 0xc0" (identifier "puVar4") (= "=") (binary_expression "PTR__bfd_std_section_0013bfc4 + 0xc0" (identifier "PTR__bfd_std_section_0013bfc4") (+ "+") (number_literal "0xc0"))) (; ";")) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" (identifier "local_34") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0 < param_2) {\n    do {\n      piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);\n      *(int **)(iVar3 + local_34 * 4) = piVar5;\n      iVar6 = param_3[1];\n      *piVar5 = iVar1;\n      if (iVar6 == 0) {\n        iVar6 = *param_3;\n      }\n      else {\n        iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);\n      }\n      piVar5[1] = iVar6;\n      piVar5[2] = 0;\n      piVar5[3] = 0;\n      switch(param_3[2]) {\n      case 0:\n        iVar6 = param_3[6];\n        iVar9 = 2;\n        if (iVar6 == 0) goto code_r0x00036680;\ncode_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        iVar6 = param_3[6];\n        iVar9 = 0x82;\n        if (iVar6 != 0) goto code_r0x00036500;\ncode_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar6 != 5) goto code_r0x00036569;\n        goto code_r0x000365ee;\n      case 4:\n        iVar6 = param_3[5];\n        piVar5[2] = param_3[4];\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar6;\n        puVar8 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar8;\n        goto code_r0x00036569;\n      default:\n        goto LAB_00036788;\n      }\n      piVar5[4] = iVar9;\n      piVar5[5] = (int)puVar8;\n      if (iVar6 == 5) {\ncode_r0x000365ee:\n        iVar6 = *piVar5;\n        if (((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)) {\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }\n        else {\n          uVar2 = param_3[3];\n        }\n        if (3 < uVar2) {\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2];\n      }\ncode_r0x00036569:\n      local_34 = local_34 + 1;\n      param_3 = param_3 + 8;\n    } while (param_2 != local_34);\n  }" (if "if") (parenthesized_expression "(0 < param_2)" (( "(") (binary_expression "0 < param_2" (number_literal "0") (< "<") (identifier "param_2")) () ")")) (compound_statement "{\n    do {\n      piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);\n      *(int **)(iVar3 + local_34 * 4) = piVar5;\n      iVar6 = param_3[1];\n      *piVar5 = iVar1;\n      if (iVar6 == 0) {\n        iVar6 = *param_3;\n      }\n      else {\n        iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);\n      }\n      piVar5[1] = iVar6;\n      piVar5[2] = 0;\n      piVar5[3] = 0;\n      switch(param_3[2]) {\n      case 0:\n        iVar6 = param_3[6];\n        iVar9 = 2;\n        if (iVar6 == 0) goto code_r0x00036680;\ncode_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        iVar6 = param_3[6];\n        iVar9 = 0x82;\n        if (iVar6 != 0) goto code_r0x00036500;\ncode_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar6 != 5) goto code_r0x00036569;\n        goto code_r0x000365ee;\n      case 4:\n        iVar6 = param_3[5];\n        piVar5[2] = param_3[4];\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar6;\n        puVar8 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar8;\n        goto code_r0x00036569;\n      default:\n        goto LAB_00036788;\n      }\n      piVar5[4] = iVar9;\n      piVar5[5] = (int)puVar8;\n      if (iVar6 == 5) {\ncode_r0x000365ee:\n        iVar6 = *piVar5;\n        if (((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)) {\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }\n        else {\n          uVar2 = param_3[3];\n        }\n        if (3 < uVar2) {\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2];\n      }\ncode_r0x00036569:\n      local_34 = local_34 + 1;\n      param_3 = param_3 + 8;\n    } while (param_2 != local_34);\n  }" ({ "{") (do_statement "do {\n      piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);\n      *(int **)(iVar3 + local_34 * 4) = piVar5;\n      iVar6 = param_3[1];\n      *piVar5 = iVar1;\n      if (iVar6 == 0) {\n        iVar6 = *param_3;\n      }\n      else {\n        iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);\n      }\n      piVar5[1] = iVar6;\n      piVar5[2] = 0;\n      piVar5[3] = 0;\n      switch(param_3[2]) {\n      case 0:\n        iVar6 = param_3[6];\n        iVar9 = 2;\n        if (iVar6 == 0) goto code_r0x00036680;\ncode_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        iVar6 = param_3[6];\n        iVar9 = 0x82;\n        if (iVar6 != 0) goto code_r0x00036500;\ncode_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar6 != 5) goto code_r0x00036569;\n        goto code_r0x000365ee;\n      case 4:\n        iVar6 = param_3[5];\n        piVar5[2] = param_3[4];\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar6;\n        puVar8 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar8;\n        goto code_r0x00036569;\n      default:\n        goto LAB_00036788;\n      }\n      piVar5[4] = iVar9;\n      piVar5[5] = (int)puVar8;\n      if (iVar6 == 5) {\ncode_r0x000365ee:\n        iVar6 = *piVar5;\n        if (((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)) {\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }\n        else {\n          uVar2 = param_3[3];\n        }\n        if (3 < uVar2) {\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2];\n      }\ncode_r0x00036569:\n      local_34 = local_34 + 1;\n      param_3 = param_3 + 8;\n    } while (param_2 != local_34);" (do "do") (compound_statement "{\n      piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);\n      *(int **)(iVar3 + local_34 * 4) = piVar5;\n      iVar6 = param_3[1];\n      *piVar5 = iVar1;\n      if (iVar6 == 0) {\n        iVar6 = *param_3;\n      }\n      else {\n        iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);\n      }\n      piVar5[1] = iVar6;\n      piVar5[2] = 0;\n      piVar5[3] = 0;\n      switch(param_3[2]) {\n      case 0:\n        iVar6 = param_3[6];\n        iVar9 = 2;\n        if (iVar6 == 0) goto code_r0x00036680;\ncode_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        iVar6 = param_3[6];\n        iVar9 = 0x82;\n        if (iVar6 != 0) goto code_r0x00036500;\ncode_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar6 != 5) goto code_r0x00036569;\n        goto code_r0x000365ee;\n      case 4:\n        iVar6 = param_3[5];\n        piVar5[2] = param_3[4];\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar6;\n        puVar8 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar8;\n        goto code_r0x00036569;\n      default:\n        goto LAB_00036788;\n      }\n      piVar5[4] = iVar9;\n      piVar5[5] = (int)puVar8;\n      if (iVar6 == 5) {\ncode_r0x000365ee:\n        iVar6 = *piVar5;\n        if (((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)) {\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }\n        else {\n          uVar2 = param_3[3];\n        }\n        if (3 < uVar2) {\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2];\n      }\ncode_r0x00036569:\n      local_34 = local_34 + 1;\n      param_3 = param_3 + 8;\n    }" ({ "{") (expression_statement "piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);" (assignment_expression "piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1)" (identifier "piVar5") (= "=") (cast_expression "(int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1)" (parenthesized_expression "(**(code **)(*(int *)(iVar1 + 4) + 0x10c))" (( "(") (pointer_expression "**(code **)(*(int *)(iVar1 + 4) + 0x10c)" (* "*") (pointer_expression "*(code **)(*(int *)(iVar1 + 4) + 0x10c)" (* "*") (cast_expression "(code **)(*(int *)(iVar1 + 4) + 0x10c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(iVar1 + 4) + 0x10c)" (( "(") (binary_expression "*(int *)(iVar1 + 4) + 0x10c" (pointer_expression "*(int *)(iVar1 + 4)" (* "*") (cast_expression "(int *)(iVar1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 4)" (( "(") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0x10c")) () ")"))))) () ")")) (argument_list "(iVar1)" (( "(") (identifier "iVar1") () ")"))))) (; ";")) (expression_statement "*(int **)(iVar3 + local_34 * 4) = piVar5;" (assignment_expression "*(int **)(iVar3 + local_34 * 4) = piVar5" (pointer_expression "*(int **)(iVar3 + local_34 * 4)" (* "*") (cast_expression "(int **)(iVar3 + local_34 * 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + local_34 * 4)" (( "(") (binary_expression "iVar3 + local_34 * 4" (identifier "iVar3") (+ "+") (binary_expression "local_34 * 4" (identifier "local_34") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "piVar5")) (; ";")) (expression_statement "iVar6 = param_3[1];" (assignment_expression "iVar6 = param_3[1]" (identifier "iVar6") (= "=") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*piVar5 = iVar1;" (assignment_expression "*piVar5 = iVar1" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (= "=") (identifier "iVar1")) (; ";")) (if_statement "if (iVar6 == 0) {\n        iVar6 = *param_3;\n      }\n      else {\n        iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);\n      }" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar6 = *param_3;\n      }" ({ "{") (expression_statement "iVar6 = *param_3;" (assignment_expression "iVar6 = *param_3" (identifier "iVar6") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (} "}")) (else_clause "else {\n        iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);\n      }" (else "else") (compound_statement "{\n        iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);\n      }" ({ "{") (expression_statement "iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);" (assignment_expression "iVar6 = concat(*param_3,&DAT_00065079,iVar6,0)" (identifier "iVar6") (= "=") (call_expression "concat(*param_3,&DAT_00065079,iVar6,0)" (identifier "concat") (argument_list "(*param_3,&DAT_00065079,iVar6,0)" (( "(") (pointer_expression "*param_3" (* "*") (identifier "param_3")) (, ",") (pointer_expression "&DAT_00065079" (& "&") (identifier "DAT_00065079")) (, ",") (identifier "iVar6") (, ",") (number_literal "0") () ")")))) (; ";")) (} "}")))) (expression_statement "piVar5[1] = iVar6;" (assignment_expression "piVar5[1] = iVar6" (subscript_expression "piVar5[1]" (identifier "piVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "piVar5[2] = 0;" (assignment_expression "piVar5[2] = 0" (subscript_expression "piVar5[2]" (identifier "piVar5") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar5[3] = 0;" (assignment_expression "piVar5[3] = 0" (subscript_expression "piVar5[3]" (identifier "piVar5") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (switch_statement "switch(param_3[2]) {\n      case 0:\n        iVar6 = param_3[6];\n        iVar9 = 2;\n        if (iVar6 == 0) goto code_r0x00036680;\ncode_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        iVar6 = param_3[6];\n        iVar9 = 0x82;\n        if (iVar6 != 0) goto code_r0x00036500;\ncode_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar6 != 5) goto code_r0x00036569;\n        goto code_r0x000365ee;\n      case 4:\n        iVar6 = param_3[5];\n        piVar5[2] = param_3[4];\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar6;\n        puVar8 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar8;\n        goto code_r0x00036569;\n      default:\n        goto LAB_00036788;\n      }" (switch "switch") (parenthesized_expression "(param_3[2])" (( "(") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) () ")")) (compound_statement "{\n      case 0:\n        iVar6 = param_3[6];\n        iVar9 = 2;\n        if (iVar6 == 0) goto code_r0x00036680;\ncode_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;\n      case 1:\n        iVar6 = param_3[6];\n        iVar9 = 0x82;\n        if (iVar6 != 0) goto code_r0x00036500;\ncode_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;\n      case 2:\n        iVar9 = 0;\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;\n      case 3:\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar6 != 5) goto code_r0x00036569;\n        goto code_r0x000365ee;\n      case 4:\n        iVar6 = param_3[5];\n        piVar5[2] = param_3[4];\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar6;\n        puVar8 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar8;\n        goto code_r0x00036569;\n      default:\n        goto LAB_00036788;\n      }" ({ "{") (case_statement "case 0:\n        iVar6 = param_3[6];\n        iVar9 = 2;\n        if (iVar6 == 0) goto code_r0x00036680;\ncode_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);\n        if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        break;" (case "case") (number_literal "0") (: ":") (expression_statement "iVar6 = param_3[6];" (assignment_expression "iVar6 = param_3[6]" (identifier "iVar6") (= "=") (subscript_expression "param_3[6]" (identifier "param_3") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "iVar9 = 2;" (assignment_expression "iVar9 = 2" (identifier "iVar9") (= "=") (number_literal "2")) (; ";")) (if_statement "if (iVar6 == 0) goto code_r0x00036680;" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (goto_statement "goto code_r0x00036680;" (goto "goto") (statement_identifier "code_r0x00036680") (; ";"))) (labeled_statement "code_r0x00036500:\n        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);" (statement_identifier "code_r0x00036500") (: ":") (expression_statement "__ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);" (assignment_expression "__ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0)" (identifier "__ptr") (= "=") (cast_expression "(void *)concat(".gnu.linkonce.t.",iVar6,0)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "concat(".gnu.linkonce.t.",iVar6,0)" (identifier "concat") (argument_list "(".gnu.linkonce.t.",iVar6,0)" (( "(") (string_literal "".gnu.linkonce.t."" (" """) (string_content ".gnu.linkonce.t.") (" """)) (, ",") (identifier "iVar6") (, ",") (number_literal "0") () ")"))))) (; ";"))) (expression_statement "puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);" (assignment_expression "puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr)" (identifier "puVar8") (= "=") (cast_expression "(undefined *)bfd_get_section_by_name(iVar1,__ptr)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "bfd_get_section_by_name(iVar1,__ptr)" (identifier "bfd_get_section_by_name") (argument_list "(iVar1,__ptr)" (( "(") (identifier "iVar1") (, ",") (identifier "__ptr") () ")"))))) (; ";")) (if_statement "if (puVar8 == (undefined *)0x0) {\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }\n        else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }" (if "if") (parenthesized_expression "(puVar8 == (undefined *)0x0)" (( "(") (binary_expression "puVar8 == (undefined *)0x0" (identifier "puVar8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);\n          if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }" ({ "{") (expression_statement "puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);" (assignment_expression "puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b)" (identifier "puVar8") (= "=") (cast_expression "(undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b)" (identifier "bfd_make_section_anyway_with_flags") (argument_list "(iVar1,__ptr,0x22811b)" (( "(") (identifier "iVar1") (, ",") (identifier "__ptr") (, ",") (number_literal "0x22811b") () ")"))))) (; ";")) (if_statement "if (puVar8 == (undefined *)0x0) {\nLAB_00036788:\n            return 3;\n          }" (if "if") (parenthesized_expression "(puVar8 == (undefined *)0x0)" (( "(") (binary_expression "puVar8 == (undefined *)0x0" (identifier "puVar8") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_00036788:\n            return 3;\n          }" ({ "{") (labeled_statement "LAB_00036788:\n            return 3;" (statement_identifier "LAB_00036788") (: ":") (return_statement "return 3;" (return "return") (number_literal "3") (; ";"))) (} "}"))) (expression_statement "iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);" (assignment_expression "iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(*(int *)(iVar1 + 4) + 4)" (* "*") (cast_expression "(int *)(*(int *)(iVar1 + 4) + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar1 + 4) + 4)" (( "(") (binary_expression "*(int *)(iVar1 + 4) + 4" (pointer_expression "*(int *)(iVar1 + 4)" (* "*") (cast_expression "(int *)(iVar1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 4)" (( "(") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }" (else "else") (compound_statement "{\n          free(__ptr);\n          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        }" ({ "{") (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (expression_statement "iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);" (assignment_expression "iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(*(int *)(iVar1 + 4) + 4)" (* "*") (cast_expression "(int *)(*(int *)(iVar1 + 4) + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar1 + 4) + 4)" (( "(") (binary_expression "*(int *)(iVar1 + 4) + 4" (pointer_expression "*(int *)(iVar1 + 4)" (* "*") (cast_expression "(int *)(iVar1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 4)" (( "(") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}")))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 1:\n        iVar6 = param_3[6];\n        iVar9 = 0x82;\n        if (iVar6 != 0) goto code_r0x00036500;\ncode_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        break;" (case "case") (number_literal "1") (: ":") (expression_statement "iVar6 = param_3[6];" (assignment_expression "iVar6 = param_3[6]" (identifier "iVar6") (= "=") (subscript_expression "param_3[6]" (identifier "param_3") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "iVar9 = 0x82;" (assignment_expression "iVar9 = 0x82" (identifier "iVar9") (= "=") (number_literal "0x82")) (; ";")) (if_statement "if (iVar6 != 0) goto code_r0x00036500;" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto code_r0x00036500;" (goto "goto") (statement_identifier "code_r0x00036500") (; ";"))) (labeled_statement "code_r0x00036680:\n        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");" (statement_identifier "code_r0x00036680") (: ":") (expression_statement "puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");" (assignment_expression "puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text")" (identifier "puVar8") (= "=") (cast_expression "(undefined *)bfd_get_section_by_name(iVar1,".text")" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "bfd_get_section_by_name(iVar1,".text")" (identifier "bfd_get_section_by_name") (argument_list "(iVar1,".text")" (( "(") (identifier "iVar1") (, ",") (string_literal "".text"" (" """) (string_content ".text") (" """)) () ")"))))) (; ";"))) (expression_statement "iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);" (assignment_expression "iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(*(int *)(iVar1 + 4) + 4)" (* "*") (cast_expression "(int *)(*(int *)(iVar1 + 4) + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar1 + 4) + 4)" (( "(") (binary_expression "*(int *)(iVar1 + 4) + 4" (pointer_expression "*(int *)(iVar1 + 4)" (* "*") (cast_expression "(int *)(iVar1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 4)" (( "(") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 2:\n        iVar9 = 0;\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;\n        break;" (case "case") (number_literal "2") (: ":") (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" (identifier "iVar9") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);" (assignment_expression "iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(*(int *)(iVar1 + 4) + 4)" (* "*") (cast_expression "(int *)(*(int *)(iVar1 + 4) + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar1 + 4) + 4)" (( "(") (binary_expression "*(int *)(iVar1 + 4) + 4" (pointer_expression "*(int *)(iVar1 + 4)" (* "*") (cast_expression "(int *)(iVar1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 4)" (( "(") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;" (assignment_expression "puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0" (identifier "puVar8") (= "=") (binary_expression "PTR__bfd_std_section_0013bfc4 + 0xc0" (identifier "PTR__bfd_std_section_0013bfc4") (+ "+") (number_literal "0xc0"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 3:\n        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);\n        piVar5[4] = 0x80;\n        piVar5[5] = (int)puVar4;\n        if (iVar6 != 5) goto code_r0x00036569;\n        goto code_r0x000365ee;" (case "case") (number_literal "3") (: ":") (expression_statement "iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);" (assignment_expression "iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(*(int *)(iVar1 + 4) + 4)" (* "*") (cast_expression "(int *)(*(int *)(iVar1 + 4) + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar1 + 4) + 4)" (( "(") (binary_expression "*(int *)(iVar1 + 4) + 4" (pointer_expression "*(int *)(iVar1 + 4)" (* "*") (cast_expression "(int *)(iVar1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 4)" (( "(") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "piVar5[4] = 0x80;" (assignment_expression "piVar5[4] = 0x80" (subscript_expression "piVar5[4]" (identifier "piVar5") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0x80")) (; ";")) (expression_statement "piVar5[5] = (int)puVar4;" (assignment_expression "piVar5[5] = (int)puVar4" (subscript_expression "piVar5[5]" (identifier "piVar5") ([ "[") (number_literal "5") (] "]")) (= "=") (cast_expression "(int)puVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar4"))) (; ";")) (if_statement "if (iVar6 != 5) goto code_r0x00036569;" (if "if") (parenthesized_expression "(iVar6 != 5)" (( "(") (binary_expression "iVar6 != 5" (identifier "iVar6") (!= "!=") (number_literal "5")) () ")")) (goto_statement "goto code_r0x00036569;" (goto "goto") (statement_identifier "code_r0x00036569") (; ";"))) (goto_statement "goto code_r0x000365ee;" (goto "goto") (statement_identifier "code_r0x000365ee") (; ";"))) (case_statement "case 4:\n        iVar6 = param_3[5];\n        piVar5[2] = param_3[4];\n        iVar9 = *(int *)(iVar1 + 4);\n        piVar5[3] = iVar6;\n        puVar8 = PTR__bfd_std_section_0013bfc4;\n        if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }\n        piVar5[4] = 2;\n        piVar5[5] = (int)puVar8;\n        goto code_r0x00036569;" (case "case") (number_literal "4") (: ":") (expression_statement "iVar6 = param_3[5];" (assignment_expression "iVar6 = param_3[5]" (identifier "iVar6") (= "=") (subscript_expression "param_3[5]" (identifier "param_3") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "piVar5[2] = param_3[4];" (assignment_expression "piVar5[2] = param_3[4]" (subscript_expression "piVar5[2]" (identifier "piVar5") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "param_3[4]" (identifier "param_3") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "iVar9 = *(int *)(iVar1 + 4);" (assignment_expression "iVar9 = *(int *)(iVar1 + 4)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(iVar1 + 4)" (* "*") (cast_expression "(int *)(iVar1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 4)" (( "(") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "piVar5[3] = iVar6;" (assignment_expression "piVar5[3] = iVar6" (subscript_expression "piVar5[3]" (identifier "piVar5") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "puVar8 = PTR__bfd_std_section_0013bfc4;" (assignment_expression "puVar8 = PTR__bfd_std_section_0013bfc4" (identifier "puVar8") (= "=") (identifier "PTR__bfd_std_section_0013bfc4")) (; ";")) (if_statement "if (*(int *)(iVar9 + 4) == 5) {\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }" (if "if") (parenthesized_expression "(*(int *)(iVar9 + 4) == 5)" (( "(") (binary_expression "*(int *)(iVar9 + 4) == 5" (pointer_expression "*(int *)(iVar9 + 4)" (* "*") (cast_expression "(int *)(iVar9 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 4)" (( "(") (binary_expression "iVar9 + 4" (identifier "iVar9") (+ "+") (number_literal "4")) () ")")))) (== "==") (number_literal "5")) () ")")) (compound_statement "{\n          piVar5[0xe] = -0xe;\n          piVar5[8] = 1;\n          piVar5[9] = 0;\n          piVar5[4] = 2;\n          piVar5[5] = (int)puVar8;\n          goto code_r0x000365ee;\n        }" ({ "{") (expression_statement "piVar5[0xe] = -0xe;" (assignment_expression "piVar5[0xe] = -0xe" (subscript_expression "piVar5[0xe]" (identifier "piVar5") ([ "[") (number_literal "0xe") (] "]")) (= "=") (number_literal "-0xe")) (; ";")) (expression_statement "piVar5[8] = 1;" (assignment_expression "piVar5[8] = 1" (subscript_expression "piVar5[8]" (identifier "piVar5") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar5[9] = 0;" (assignment_expression "piVar5[9] = 0" (subscript_expression "piVar5[9]" (identifier "piVar5") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar5[4] = 2;" (assignment_expression "piVar5[4] = 2" (subscript_expression "piVar5[4]" (identifier "piVar5") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "2")) (; ";")) (expression_statement "piVar5[5] = (int)puVar8;" (assignment_expression "piVar5[5] = (int)puVar8" (subscript_expression "piVar5[5]" (identifier "piVar5") ([ "[") (number_literal "5") (] "]")) (= "=") (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8"))) (; ";")) (goto_statement "goto code_r0x000365ee;" (goto "goto") (statement_identifier "code_r0x000365ee") (; ";")) (} "}"))) (expression_statement "piVar5[4] = 2;" (assignment_expression "piVar5[4] = 2" (subscript_expression "piVar5[4]" (identifier "piVar5") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "2")) (; ";")) (expression_statement "piVar5[5] = (int)puVar8;" (assignment_expression "piVar5[5] = (int)puVar8" (subscript_expression "piVar5[5]" (identifier "piVar5") ([ "[") (number_literal "5") (] "]")) (= "=") (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8"))) (; ";")) (goto_statement "goto code_r0x00036569;" (goto "goto") (statement_identifier "code_r0x00036569") (; ";"))) (case_statement "default:\n        goto LAB_00036788;" (default "default") (: ":") (goto_statement "goto LAB_00036788;" (goto "goto") (statement_identifier "LAB_00036788") (; ";"))) (} "}"))) (expression_statement "piVar5[4] = iVar9;" (assignment_expression "piVar5[4] = iVar9" (subscript_expression "piVar5[4]" (identifier "piVar5") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "iVar9")) (; ";")) (expression_statement "piVar5[5] = (int)puVar8;" (assignment_expression "piVar5[5] = (int)puVar8" (subscript_expression "piVar5[5]" (identifier "piVar5") ([ "[") (number_literal "5") (] "]")) (= "=") (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8"))) (; ";")) (if_statement "if (iVar6 == 5) {\ncode_r0x000365ee:\n        iVar6 = *piVar5;\n        if (((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)) {\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }\n        else {\n          uVar2 = param_3[3];\n        }\n        if (3 < uVar2) {\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2];\n      }" (if "if") (parenthesized_expression "(iVar6 == 5)" (( "(") (binary_expression "iVar6 == 5" (identifier "iVar6") (== "==") (number_literal "5")) () ")")) (compound_statement "{\ncode_r0x000365ee:\n        iVar6 = *piVar5;\n        if (((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)) {\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }\n        else {\n          uVar2 = param_3[3];\n        }\n        if (3 < uVar2) {\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }\n        *(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2];\n      }" ({ "{") (labeled_statement "code_r0x000365ee:\n        iVar6 = *piVar5;" (statement_identifier "code_r0x000365ee") (: ":") (expression_statement "iVar6 = *piVar5;" (assignment_expression "iVar6 = *piVar5" (identifier "iVar6") (= "=") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) (; ";"))) (if_statement "if (((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)) {\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }\n        else {\n          uVar2 = param_3[3];\n        }" (if "if") (parenthesized_expression "(((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0))" (( "(") (binary_expression "((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||\n           (*(int *)(iVar6 + 0xa0) == 0)" (parenthesized_expression "((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5))" (( "(") (binary_expression "(iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)" (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(int *)(*(int *)(iVar6 + 4) + 4) != 5)" (( "(") (binary_expression "*(int *)(*(int *)(iVar6 + 4) + 4) != 5" (pointer_expression "*(int *)(*(int *)(iVar6 + 4) + 4)" (* "*") (cast_expression "(int *)(*(int *)(iVar6 + 4) + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar6 + 4) + 4)" (( "(") (binary_expression "*(int *)(iVar6 + 4) + 4" (pointer_expression "*(int *)(iVar6 + 4)" (* "*") (cast_expression "(int *)(iVar6 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 4)" (( "(") (binary_expression "iVar6 + 4" (identifier "iVar6") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "4")) () ")")))) (!= "!=") (number_literal "5")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(*(int *)(iVar6 + 0xa0) == 0)" (( "(") (binary_expression "*(int *)(iVar6 + 0xa0) == 0" (pointer_expression "*(int *)(iVar6 + 0xa0)" (* "*") (cast_expression "(int *)(iVar6 + 0xa0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0xa0)" (( "(") (binary_expression "iVar6 + 0xa0" (identifier "iVar6") (+ "+") (number_literal "0xa0")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          iVar6 = piVar5[1];\n          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);\n          piVar5 = (int *)0x0;\n          FUN_00033ba0(uVar7,iVar6);\n          uVar2 = param_3[3];\n        }" ({ "{") (expression_statement "iVar6 = piVar5[1];" (assignment_expression "iVar6 = piVar5[1]" (identifier "iVar6") (= "=") (subscript_expression "piVar5[1]" (identifier "piVar5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);" (assignment_expression "uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5)" (identifier "uVar7") (= "=") (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 "piVar5 = (int *)0x0;" (assignment_expression "piVar5 = (int *)0x0" (identifier "piVar5") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "FUN_00033ba0(uVar7,iVar6);" (call_expression "FUN_00033ba0(uVar7,iVar6)" (identifier "FUN_00033ba0") (argument_list "(uVar7,iVar6)" (( "(") (identifier "uVar7") (, ",") (identifier "iVar6") () ")"))) (; ";")) (expression_statement "uVar2 = param_3[3];" (assignment_expression "uVar2 = param_3[3]" (identifier "uVar2") (= "=") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n          uVar2 = param_3[3];\n        }" (else "else") (compound_statement "{\n          uVar2 = param_3[3];\n        }" ({ "{") (expression_statement "uVar2 = param_3[3];" (assignment_expression "uVar2 = param_3[3]" (identifier "uVar2") (= "=") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]"))) (; ";")) (} "}")))) (if_statement "if (3 < uVar2) {\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }" (if "if") (parenthesized_expression "(3 < uVar2)" (( "(") (binary_expression "3 < uVar2" (number_literal "3") (< "<") (identifier "uVar2")) () ")")) (compound_statement "{\n          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);\n          FUN_00033ba0(uVar7,uVar2);\n          return 3;\n        }" ({ "{") (expression_statement "uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);" (assignment_expression "uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5)" (identifier "uVar7") (= "=") (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_00033ba0(uVar7,uVar2);" (call_expression "FUN_00033ba0(uVar7,uVar2)" (identifier "FUN_00033ba0") (argument_list "(uVar7,uVar2)" (( "(") (identifier "uVar7") (, ",") (identifier "uVar2") () ")"))) (; ";")) (return_statement "return 3;" (return "return") (number_literal "3") (; ";")) (} "}"))) (expression_statement "*(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2];" (assignment_expression "*(byte *)((int)piVar5 + 0x35) =\n             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2]" (pointer_expression "*(byte *)((int)piVar5 + 0x35)" (* "*") (cast_expression "(byte *)((int)piVar5 + 0x35)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar5 + 0x35)" (( "(") (binary_expression "(int)piVar5 + 0x35" (cast_expression "(int)piVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar5")) (+ "+") (number_literal "0x35")) () ")")))) (= "=") (binary_expression "*(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2]" (binary_expression "*(byte *)((int)piVar5 + 0x35) & 0xfc" (pointer_expression "*(byte *)((int)piVar5 + 0x35)" (* "*") (cast_expression "(byte *)((int)piVar5 + 0x35)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar5 + 0x35)" (( "(") (binary_expression "(int)piVar5 + 0x35" (cast_expression "(int)piVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar5")) (+ "+") (number_literal "0x35")) () ")")))) (& "&") (number_literal "0xfc")) (| "|") (subscript_expression "(&UNK_0006519c)[uVar2]" (parenthesized_expression "(&UNK_0006519c)" (( "(") (pointer_expression "&UNK_0006519c" (& "&") (identifier "UNK_0006519c")) () ")")) ([ "[") (identifier "uVar2") (] "]")))) (; ";")) (} "}"))) (labeled_statement "code_r0x00036569:\n      local_34 = local_34 + 1;" (statement_identifier "code_r0x00036569") (: ":") (expression_statement "local_34 = local_34 + 1;" (assignment_expression "local_34 = local_34 + 1" (identifier "local_34") (= "=") (binary_expression "local_34 + 1" (identifier "local_34") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "param_3 = param_3 + 8;" (assignment_expression "param_3 = param_3 + 8" (identifier "param_3") (= "=") (binary_expression "param_3 + 8" (identifier "param_3") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_2 != local_34)" (( "(") (binary_expression "param_2 != local_34" (identifier "param_2") (!= "!=") (identifier "local_34")) () ")")) (; ";")) (} "}"))) (expression_statement "bfd_set_symtab(iVar1,iVar3,param_2);" (call_expression "bfd_set_symtab(iVar1,iVar3,param_2)" (identifier "bfd_set_symtab") (argument_list "(iVar1,iVar3,param_2)" (( "(") (identifier "iVar1") (, ",") (identifier "iVar3") (, ",") (identifier "param_2") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

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

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

{
  int var_6;
  type_3 var_19;
  int var_7;
  type_4 *puVar4;
  int *piVar5;
  char *var_9;
  void *__ptr;
  type_4 *var_12;
  int var_15;
  int var_16;
  int var_8;
  
                    /* WARNING: Load size is inaccurate */
  var_6 = *handle;
  if (var_1 == (type_5 *)0x0) {
    var_2("../../ld/plugin.c",0x1ec);
  }
  var_7 = var_3(var_4 << 2);
  puVar4 = var_5 + 0xc0;
  var_8 = 0;
  if (0 < var_4) {
    do {
      piVar5 = (int *)(**(type_6 **)(*(int *)(var_6 + 4) + 0x10c))(var_6);
      *(int **)(var_7 + var_8 * 4) = piVar5;
      var_9 = var_20->version;
      *piVar5 = var_6;
      if (var_9 == (char *)0x0) {
        var_9 = var_20->name;
      }
      else {
        var_9 = (char *)var_10(var_20->name,&DAT_00065079,var_9,0);
      }
      piVar5[1] = (int)var_9;
      piVar5[2] = 0;
      piVar5[3] = 0;
      switch(var_20->def) {
      case 0:
        var_9 = var_20->comdat_key;
        var_16 = 2;
        if (var_9 == (char *)0x0) goto LAB_00036680;
LAB_00036500:
        __ptr = (void *)var_10(".gnu.linkonce.t.",var_9,0);
        var_12 = (type_4 *)var_11(var_6,__ptr);
        if (var_12 == (type_4 *)0x0) {
          var_12 = (type_4 *)var_13(var_6,__ptr,0x22811b);
          if (var_12 == (type_4 *)0x0) {
switchD_000364ed_caseD_5:
            return LDPS_ERR;
          }
          var_15 = *(int *)(*(int *)(var_6 + 4) + 4);
        }
        else {
          var_14(__ptr);
          var_15 = *(int *)(*(int *)(var_6 + 4) + 4);
        }
        break;
      case 1:
        var_9 = var_20->comdat_key;
        var_16 = 0x82;
        if (var_9 != (char *)0x0) goto LAB_00036500;
LAB_00036680:
        var_12 = (type_4 *)var_11(var_6,".text");
        var_15 = *(int *)(*(int *)(var_6 + 4) + 4);
        break;
      case 2:
        var_16 = 0;
        var_15 = *(int *)(*(int *)(var_6 + 4) + 4);
        var_12 = var_5 + 0xc0;
        break;
      case 3:
        var_15 = *(int *)(*(int *)(var_6 + 4) + 4);
        piVar5[4] = 0x80;
        piVar5[5] = (int)puVar4;
        if (var_15 != 5) goto LAB_00036569;
        goto LAB_000365ee;
      case 4:
        var_15 = *(int *)((int)&var_20->size + 4);
        piVar5[2] = (int)var_20->size;
        var_16 = *(int *)(var_6 + 4);
        piVar5[3] = var_15;
        var_12 = var_5;
        if (*(int *)(var_16 + 4) == 5) {
          piVar5[0xe] = -0xe;
          piVar5[8] = 1;
          piVar5[9] = 0;
          piVar5[4] = 2;
          piVar5[5] = (int)var_12;
          goto LAB_000365ee;
        }
        piVar5[4] = 2;
        piVar5[5] = (int)var_12;
        goto LAB_00036569;
      default:
        goto switchD_000364ed_caseD_5;
      }
      piVar5[4] = var_16;
      piVar5[5] = (int)var_12;
      if (var_15 == 5) {
LAB_000365ee:
        var_15 = *piVar5;
        if (((var_15 == 0) || (*(int *)(*(int *)(var_15 + 4) + 4) != 5)) ||
           (*(int *)(var_15 + 0xa0) == 0)) {
          var_15 = piVar5[1];
          var_9 = (char *)var_17(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);
          piVar5 = (int *)0x0;
          var_18(var_9,var_15);
          var_19 = var_20->visibility;
        }
        else {
          var_19 = var_20->visibility;
        }
        if (3 < var_19) {
          var_9 = (char *)var_17(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);
          var_18(var_9,var_19);
          return LDPS_ERR;
        }
        *(type_7 *)((int)piVar5 + 0x35) =
             *(type_7 *)((int)piVar5 + 0x35) & 0xfc | *(type_7 *)((int)&CSWTCH_67 + var_19);
      }
LAB_00036569:
      var_8 = var_8 + 1;
      var_20 = var_20 + 1;
    } while (var_4 != var_8);
  }
  var_21(var_6,var_7,var_4);
  return LDPS_OK;
}


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

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

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

{
  int iVar1;
  uint uVar2;
  int iVar3;
  undefined *puVar4;
  int *piVar5;
  int iVar6;
  void *__ptr;
  undefined4 uVar7;
  undefined *puVar8;
  int iVar9;
  int local_34;
  
  iVar1 = *param_1;
  if (DAT_0013d108 == 0) {
    FUN_00033bf0("../../ld/plugin.c",0x1ec);
  }
  iVar3 = xmalloc(param_2 << 2);
  puVar4 = PTR__bfd_std_section_0013bfc4 + 0xc0;
  local_34 = 0;
  if (0 < param_2) {
    do {
      piVar5 = (int *)(**(code **)(*(int *)(iVar1 + 4) + 0x10c))(iVar1);
      *(int **)(iVar3 + local_34 * 4) = piVar5;
      iVar6 = param_3[1];
      *piVar5 = iVar1;
      if (iVar6 == 0) {
        iVar6 = *param_3;
      }
      else {
        iVar6 = concat(*param_3,&DAT_00065079,iVar6,0);
      }
      piVar5[1] = iVar6;
      piVar5[2] = 0;
      piVar5[3] = 0;
      switch(param_3[2]) {
      case 0:
        iVar6 = param_3[6];
        iVar9 = 2;
        if (iVar6 == 0) goto code_r0x00036680;
code_r0x00036500:
        __ptr = (void *)concat(".gnu.linkonce.t.",iVar6,0);
        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,__ptr);
        if (puVar8 == (undefined *)0x0) {
          puVar8 = (undefined *)bfd_make_section_anyway_with_flags(iVar1,__ptr,0x22811b);
          if (puVar8 == (undefined *)0x0) {
LAB_00036788:
            return 3;
          }
          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);
        }
        else {
          free(__ptr);
          iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);
        }
        break;
      case 1:
        iVar6 = param_3[6];
        iVar9 = 0x82;
        if (iVar6 != 0) goto code_r0x00036500;
code_r0x00036680:
        puVar8 = (undefined *)bfd_get_section_by_name(iVar1,".text");
        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);
        break;
      case 2:
        iVar9 = 0;
        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);
        puVar8 = PTR__bfd_std_section_0013bfc4 + 0xc0;
        break;
      case 3:
        iVar6 = *(int *)(*(int *)(iVar1 + 4) + 4);
        piVar5[4] = 0x80;
        piVar5[5] = (int)puVar4;
        if (iVar6 != 5) goto code_r0x00036569;
        goto code_r0x000365ee;
      case 4:
        iVar6 = param_3[5];
        piVar5[2] = param_3[4];
        iVar9 = *(int *)(iVar1 + 4);
        piVar5[3] = iVar6;
        puVar8 = PTR__bfd_std_section_0013bfc4;
        if (*(int *)(iVar9 + 4) == 5) {
          piVar5[0xe] = -0xe;
          piVar5[8] = 1;
          piVar5[9] = 0;
          piVar5[4] = 2;
          piVar5[5] = (int)puVar8;
          goto code_r0x000365ee;
        }
        piVar5[4] = 2;
        piVar5[5] = (int)puVar8;
        goto code_r0x00036569;
      default:
        goto LAB_00036788;
      }
      piVar5[4] = iVar9;
      piVar5[5] = (int)puVar8;
      if (iVar6 == 5) {
code_r0x000365ee:
        iVar6 = *piVar5;
        if (((iVar6 == 0) || (*(int *)(*(int *)(iVar6 + 4) + 4) != 5)) ||
           (*(int *)(iVar6 + 0xa0) == 0)) {
          iVar6 = piVar5[1];
          uVar7 = dcgettext(0,"%F%P: %s: non-ELF symbol in ELF BFD!\n",5);
          piVar5 = (int *)0x0;
          FUN_00033ba0(uVar7,iVar6);
          uVar2 = param_3[3];
        }
        else {
          uVar2 = param_3[3];
        }
        if (3 < uVar2) {
          uVar7 = dcgettext(0,"%F%P: unknown ELF symbol visibility: %d!\n",5);
          FUN_00033ba0(uVar7,uVar2);
          return 3;
        }
        *(byte *)((int)piVar5 + 0x35) =
             *(byte *)((int)piVar5 + 0x35) & 0xfc | (&UNK_0006519c)[uVar2];
      }
code_r0x00036569:
      local_34 = local_34 + 1;
      param_3 = param_3 + 8;
    } while (param_2 != local_34);
  }
  bfd_set_symtab(iVar1,iVar3,param_2);
  return 0;
}

