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

void elf_frob_symbol(symbolS *symp,int *puntp)

{
  undefined1 uVar1;
  expressionS *expressionP;
  undefined4 uVar2;
  offsetT oVar3;
  elf_obj_sy *peVar4;
  int iVar5;
  char *pcVar6;
  char *pcVar7;
  symbolS *s;
  segT seg;
  fragS *pfVar8;
  asymbol *paVar9;
  char *format;
  size_t sVar10;
  valueT vVar11;
  uint local_24;
  int local_20;
  
  peVar4 = symbol_get_obj(symp);
  expressionP = peVar4->size;
  if (expressionP != (expressionS *)0x0) {
    iVar5 = resolve_expression(expressionP);
    if ((iVar5 == 0) || (expressionP->field_0x10 != '\x02')) {
      if (flag_allow_nonconst_size == 0) {
        pcVar6 = S_GET_NAME(symp);
        pcVar7 = (char *)dcgettext(0,".size expression for %s does not evaluate to a constant",5);
        as_bad(pcVar7,pcVar6);
      }
      else {
        pcVar6 = S_GET_NAME(symp);
        pcVar7 = (char *)dcgettext(0,".size expression for %s does not evaluate to a constant",5);
        as_warn(pcVar7,pcVar6);
      }
    }
    else {
      uVar2 = *(undefined4 *)((int)&expressionP->X_add_number + 4);
      oVar3 = expressionP->X_add_number;
      paVar9 = symbol_get_bfdsym(symp);
      *(int *)&paVar9[1].value = (int)oVar3;
      *(undefined4 *)((int)&paVar9[1].value + 4) = uVar2;
    }
    free(peVar4->size);
    peVar4->size = (expressionS *)0x0;
  }
  if (peVar4->versioned_name != (char *)0x0) {
    pcVar6 = strchr(peVar4->versioned_name,0x40);
    if (pcVar6 == (char *)0x0) {
      *puntp = 1;
      iVar5 = S_IS_WEAK(symp);
      goto joined_r0x00055458;
    }
    iVar5 = S_IS_DEFINED(symp);
    if (iVar5 == 0) {
      pcVar7 = peVar4->versioned_name;
      if (pcVar6[1] == '@') {
        pcVar6 = (char *)dcgettext(0,
                                   "invalid attempt to declare external version name as default in symbol `%s\'"
                                   ,5);
        as_bad(pcVar6,pcVar7);
        pcVar7 = peVar4->versioned_name;
        *puntp = 1;
      }
      S_SET_NAME(symp,pcVar7);
    }
    else if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {
      sVar10 = strlen(pcVar6 + 3);
      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);
      S_SET_NAME(symp,peVar4->versioned_name);
    }
    else {
      s = symbol_find_or_make(peVar4->versioned_name);
      iVar5 = S_IS_COMMON(symp);
      if (iVar5 != 0) {
        pcVar7 = S_GET_NAME(symp);
        pcVar6 = peVar4->versioned_name;
        format = (char *)dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);
        as_bad(format,pcVar6,pcVar7);
        *puntp = 1;
        return;
      }
      seg = S_GET_SEGMENT(symp);
      S_SET_SEGMENT(s,seg);
      vVar11 = S_GET_VALUE(symp);
      pfVar8 = symbol_get_frag(symp);
      local_24 = (uint)vVar11;
      local_20 = (int)(vVar11 >> 0x20);
      S_SET_VALUE(s,CONCAT44((local_20 - *(int *)((int)&pfVar8->fr_address + 4)) -
                             (uint)(local_24 < (uint)pfVar8->fr_address),
                             local_24 - (int)pfVar8->fr_address));
      pfVar8 = symbol_get_frag(symp);
      symbol_set_frag(s,pfVar8);
      copy_symbol_attributes(s,symp);
      paVar9 = symbol_get_bfdsym(symp);
      uVar1 = *(undefined1 *)((int)&paVar9[1].section + 1);
      paVar9 = symbol_get_bfdsym(s);
      *(undefined1 *)((int)&paVar9[1].section + 1) = uVar1;
      iVar5 = S_IS_WEAK(symp);
      if (iVar5 != 0) {
        S_SET_WEAK(s);
      }
      iVar5 = S_IS_EXTERNAL(symp);
      if (iVar5 != 0) {
        S_SET_EXTERNAL(s);
      }
    }
  }
  iVar5 = S_IS_WEAK(symp);
joined_r0x00055458:
  if ((iVar5 != 0) && (iVar5 = S_IS_COMMON(symp), iVar5 != 0)) {
    pcVar6 = S_GET_NAME(symp);
    pcVar7 = (char *)dcgettext(0,"symbol `%s\' can not be both weak and common",5);
    as_bad(pcVar7,pcVar6);
    return;
  }
  return;
}



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

void FUN_00055350(undefined4 param_1,undefined4 *param_2)

{
  undefined1 uVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  char *pcVar6;
  int iVar7;
  uint *puVar8;
  undefined4 uVar9;
  size_t sVar10;
  undefined8 uVar11;
  
  iVar2 = FUN_0003be90(param_1);
  iVar7 = *(int *)(iVar2 + 4);
  if (iVar7 != 0) {
    iVar3 = FUN_00021620(iVar7);
    if ((iVar3 == 0) || (*(char *)(iVar7 + 0x10) != '\x02')) {
      if (DAT_00089800 == 0) {
        uVar4 = FUN_00038a80(param_1);
        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);
        FUN_0002bd60(uVar5,uVar4);
      }
      else {
        uVar4 = FUN_00038a80(param_1);
        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);
        FUN_0002bc80(uVar5,uVar4);
      }
    }
    else {
      uVar4 = *(undefined4 *)(iVar7 + 0xc);
      uVar5 = *(undefined4 *)(iVar7 + 8);
      iVar7 = FUN_0003bdf0(param_1);
      *(undefined4 *)(iVar7 + 0x28) = uVar5;
      *(undefined4 *)(iVar7 + 0x2c) = uVar4;
    }
    free(*(void **)(iVar2 + 4));
    *(undefined4 *)(iVar2 + 4) = 0;
  }
  if (*(char **)(iVar2 + 8) != (char *)0x0) {
    pcVar6 = strchr(*(char **)(iVar2 + 8),0x40);
    if (pcVar6 == (char *)0x0) {
      *param_2 = 1;
      iVar7 = FUN_00038580(param_1);
      goto joined_r0x00055458;
    }
    iVar7 = FUN_000386c0(param_1);
    if (iVar7 == 0) {
      uVar4 = *(undefined4 *)(iVar2 + 8);
      if (pcVar6[1] == '@') {
        uVar5 = dcgettext(0,
                          "invalid attempt to declare external version name as default in symbol `%s\'"
                          ,5);
        FUN_0002bd60(uVar5,uVar4);
        uVar4 = *(undefined4 *)(iVar2 + 8);
        *param_2 = 1;
      }
      FUN_0003b3c0(param_1,uVar4);
    }
    else if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {
      sVar10 = strlen(pcVar6 + 3);
      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);
      FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8));
    }
    else {
      uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));
      iVar7 = FUN_00038670(param_1);
      if (iVar7 != 0) {
        uVar5 = FUN_00038a80(param_1);
        uVar4 = *(undefined4 *)(iVar2 + 8);
        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);
        FUN_0002bd60(uVar9,uVar4,uVar5);
        *param_2 = 1;
        return;
      }
      uVar5 = FUN_00038ac0(param_1);
      FUN_00038b00(uVar4,uVar5);
      uVar11 = FUN_0003a3c0(param_1);
      puVar8 = (uint *)FUN_0003b830(param_1);
      FUN_00038430(uVar4,(uint)uVar11 - *puVar8,
                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));
      uVar5 = FUN_0003b830(param_1);
      FUN_0003b780(uVar4,uVar5);
      FUN_00038e30(uVar4,param_1);
      iVar7 = FUN_0003bdf0(param_1);
      uVar1 = *(undefined1 *)(iVar7 + 0x35);
      iVar7 = FUN_0003bdf0(uVar4);
      *(undefined1 *)(iVar7 + 0x35) = uVar1;
      iVar7 = FUN_00038580(param_1);
      if (iVar7 != 0) {
        FUN_0003a750(uVar4);
      }
      iVar7 = FUN_00038510(param_1);
      if (iVar7 != 0) {
        FUN_0003a3d0(uVar4);
      }
    }
  }
  iVar7 = FUN_00038580(param_1);
joined_r0x00055458:
  if ((iVar7 != 0) && (iVar7 = FUN_00038670(param_1), iVar7 != 0)) {
    uVar4 = FUN_00038a80(param_1);
    uVar5 = dcgettext(0,"symbol `%s\' can not be both weak and common",5);
    FUN_0002bd60(uVar5,uVar4);
    return;
  }
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00016000
ADD EBX,0x2aca7
SUB ESP,0x28
MOV ESI,dword ptr [ESP + 0x3c]
PUSH ESI
CALL 0x0003be90
ADD ESP,0x10
MOV EBP,dword ptr [EAX + 0x4]
MOV EDI,EAX
TEST EBP,EBP
JZ 0x000553db
SUB ESP,0xc
PUSH EBP
CALL 0x00021620
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x000554a0
LEA EAX,[EBX + 0x9800]
MOV EBP,dword ptr [EAX]
TEST EBP,EBP
JNZ 0x000554e0
SUB ESP,0xc
PUSH ESI
CALL 0x00038a80
ADD ESP,0xc
MOV EBP,EAX
LEA EAX,[EBX + 0xfffe5a28]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000141a0
POP EDX
POP ECX
PUSH EBP
PUSH EAX
CALL 0x0002bd60
ADD ESP,0x10
SUB ESP,0xc
PUSH dword ptr [EDI + 0x4]
CALL 0x00014780
MOV dword ptr [EDI + 0x4],0x0
ADD ESP,0x10
MOV EAX,dword ptr [EDI + 0x8]
TEST EAX,EAX
JZ 0x00055424
SUB ESP,0x8
PUSH 0x40
PUSH EAX
CALL 0x00014420
ADD ESP,0x10
MOV EBP,EAX
TEST EAX,EAX
JZ 0x00055440
SUB ESP,0xc
PUSH ESI
CALL 0x000386c0
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00055510
CMP byte ptr [EBP + 0x1],0x40
MOV EDX,dword ptr [EDI + 0x8]
JZ 0x00055630
SUB ESP,0x8
PUSH EDX
PUSH ESI
CALL 0x0003b3c0
ADD ESP,0x10
SUB ESP,0xc
PUSH ESI
CALL 0x00038580
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0005545a
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESP + 0x34]
SUB ESP,0xc
MOV dword ptr [EAX],0x1
PUSH ESI
CALL 0x00038580
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00055434
SUB ESP,0xc
PUSH ESI
CALL 0x00038670
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00055434
SUB ESP,0xc
PUSH ESI
CALL 0x00038a80
ADD ESP,0xc
MOV ESI,EAX
LEA EAX,[EBX + 0xfffe5adc]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000141a0
POP EDX
POP ECX
PUSH ESI
PUSH EAX
CALL 0x0002bd60
ADD ESP,0x10
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP byte ptr [EBP + 0x10],0x2
JNZ 0x0005538c
MOV EDX,dword ptr [EBP + 0xc]
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0xc
MOV dword ptr [ESP + 0x14],EAX
MOV dword ptr [ESP + 0x18],EDX
PUSH ESI
CALL 0x0003bdf0
MOV EDX,dword ptr [ESP + 0x18]
MOV ECX,dword ptr [ESP + 0x1c]
ADD ESP,0x10
MOV dword ptr [EAX + 0x28],EDX
MOV dword ptr [EAX + 0x2c],ECX
JMP 0x000553c6
SUB ESP,0xc
PUSH ESI
CALL 0x00038a80
ADD ESP,0xc
MOV EBP,EAX
LEA EAX,[EBX + 0xfffe5a28]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000141a0
POP EDX
POP ECX
PUSH EBP
PUSH EAX
CALL 0x0002bc80
ADD ESP,0x10
JMP 0x000553c6
CMP byte ptr [EBP + 0x1],0x40
JNZ 0x00055520
CMP byte ptr [EBP + 0x2],0x40
JZ 0x00055688
SUB ESP,0xc
PUSH dword ptr [EDI + 0x8]
CALL 0x0003a9e0
MOV dword ptr [ESP],ESI
MOV EBP,EAX
CALL 0x00038670
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x000555f0
SUB ESP,0xc
PUSH ESI
CALL 0x00038ac0
POP EDI
POP EDX
PUSH EAX
PUSH EBP
CALL 0x00038b00
MOV dword ptr [ESP],ESI
CALL 0x0003a3c0
MOV dword ptr [ESP],ESI
MOV dword ptr [ESP + 0x18],EAX
MOV dword ptr [ESP + 0x1c],EDX
CALL 0x0003b830
ADD ESP,0xc
MOV EDX,dword ptr [ESP + 0xc]
MOV ECX,dword ptr [ESP + 0x10]
SUB EDX,dword ptr [EAX]
SBB ECX,dword ptr [EAX + 0x4]
MOV EAX,EDX
PUSH ECX
PUSH EAX
PUSH EBP
CALL 0x00038430
MOV dword ptr [ESP],ESI
CALL 0x0003b830
POP ECX
POP EDI
PUSH EAX
PUSH EBP
CALL 0x0003b780
POP EAX
POP EDX
PUSH ESI
PUSH EBP
CALL 0x00038e30
MOV dword ptr [ESP],ESI
CALL 0x0003bdf0
MOVZX EDI,byte ptr [EAX + 0x35]
MOV dword ptr [ESP],EBP
CALL 0x0003bdf0
MOV ECX,EDI
MOV byte ptr [EAX + 0x35],CL
MOV dword ptr [ESP],ESI
CALL 0x00038580
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00055670
SUB ESP,0xc
PUSH ESI
CALL 0x00038510
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00055424
SUB ESP,0xc
PUSH EBP
CALL 0x0003a3d0
ADD ESP,0x10
JMP 0x00055424
SUB ESP,0xc
PUSH ESI
CALL 0x00038a80
ADD ESP,0xc
MOV ESI,dword ptr [EDI + 0x8]
MOV EBP,EAX
LEA EAX,[EBX + 0xfffe5aac]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000141a0
ADD ESP,0xc
PUSH EBP
PUSH ESI
PUSH EAX
CALL 0x0002bd60
MOV EAX,dword ptr [ESP + 0x44]
ADD ESP,0x10
MOV dword ptr [EAX],0x1
JMP 0x00055434
MOV dword ptr [ESP + 0x8],EDX
LEA EAX,[EBX + 0xfffe5a60]
SUB ESP,0x4
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000141a0
POP EDX
POP ECX
MOV EDX,dword ptr [ESP + 0x10]
PUSH EDX
PUSH EAX
CALL 0x0002bd60
MOV EAX,dword ptr [ESP + 0x44]
MOV EDX,dword ptr [EDI + 0x8]
ADD ESP,0x10
MOV dword ptr [EAX],0x1
JMP 0x00055417
SUB ESP,0xc
PUSH EBP
CALL 0x0003a750
ADD ESP,0x10
JMP 0x000555ca
LEA EDX,[EBP + 0x3]
SUB ESP,0xc
ADD EBP,0x2
PUSH EDX
MOV dword ptr [ESP + 0x18],EDX
CALL 0x00014430
ADD ESP,0xc
ADD EAX,0x1
PUSH EAX
MOV EDX,dword ptr [ESP + 0x10]
PUSH EDX
PUSH EBP
CALL 0x000140e0
POP ECX
POP EBP
PUSH dword ptr [EDI + 0x8]
PUSH ESI
CALL 0x0003b3c0
ADD ESP,0x10
JMP 0x00055424
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_00055350(undefined4 param_1,undefined4 *param_2)\n\n{\n  undefined1 uVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  char *pcVar6;\n  int iVar7;\n  uint *puVar8;\n  undefined4 uVar9;\n  size_t sVar10;\n  undefined8 uVar11;\n  \n  iVar2 = FUN_0003be90(param_1);\n  iVar7 = *(int *)(iVar2 + 4);\n  if (iVar7 != 0) {\n    iVar3 = FUN_00021620(iVar7);\n    if ((iVar3 == 0) || (*(char *)(iVar7 + 0x10) != '\x02')) {\n      if (DAT_00089800 == 0) {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bd60(uVar5,uVar4);\n      }\n      else {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bc80(uVar5,uVar4);\n      }\n    }\n    else {\n      uVar4 = *(undefined4 *)(iVar7 + 0xc);\n      uVar5 = *(undefined4 *)(iVar7 + 8);\n      iVar7 = FUN_0003bdf0(param_1);\n      *(undefined4 *)(iVar7 + 0x28) = uVar5;\n      *(undefined4 *)(iVar7 + 0x2c) = uVar4;\n    }\n    free(*(void **)(iVar2 + 4));\n    *(undefined4 *)(iVar2 + 4) = 0;\n  }\n  if (*(char **)(iVar2 + 8) != (char *)0x0) {\n    pcVar6 = strchr(*(char **)(iVar2 + 8),0x40);\n    if (pcVar6 == (char *)0x0) {\n      *param_2 = 1;\n      iVar7 = FUN_00038580(param_1);\n      goto joined_r0x00055458;\n    }\n    iVar7 = FUN_000386c0(param_1);\n    if (iVar7 == 0) {\n      uVar4 = *(undefined4 *)(iVar2 + 8);\n      if (pcVar6[1] == '@') {\n        uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5);\n        FUN_0002bd60(uVar5,uVar4);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        *param_2 = 1;\n      }\n      FUN_0003b3c0(param_1,uVar4);\n    }\n    else if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8));\n    }\n    else {\n      uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));\n      iVar7 = FUN_00038670(param_1);\n      if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }\n      uVar5 = FUN_00038ac0(param_1);\n      FUN_00038b00(uVar4,uVar5);\n      uVar11 = FUN_0003a3c0(param_1);\n      puVar8 = (uint *)FUN_0003b830(param_1);\n      FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));\n      uVar5 = FUN_0003b830(param_1);\n      FUN_0003b780(uVar4,uVar5);\n      FUN_00038e30(uVar4,param_1);\n      iVar7 = FUN_0003bdf0(param_1);\n      uVar1 = *(undefined1 *)(iVar7 + 0x35);\n      iVar7 = FUN_0003bdf0(uVar4);\n      *(undefined1 *)(iVar7 + 0x35) = uVar1;\n      iVar7 = FUN_00038580(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }\n      iVar7 = FUN_00038510(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }\n    }\n  }\n  iVar7 = FUN_00038580(param_1);\njoined_r0x00055458:\n  if ((iVar7 != 0) && (iVar7 = FUN_00038670(param_1), iVar7 != 0)) {\n    uVar4 = FUN_00038a80(param_1);\n    uVar5 = dcgettext(0,"symbol `%s\' can not be both weak and common",5);\n    FUN_0002bd60(uVar5,uVar4);\n    return;\n  }\n  return;\n}\n\n" comment (function_definition "void FUN_00055350(undefined4 param_1,undefined4 *param_2)\n\n{\n  undefined1 uVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  char *pcVar6;\n  int iVar7;\n  uint *puVar8;\n  undefined4 uVar9;\n  size_t sVar10;\n  undefined8 uVar11;\n  \n  iVar2 = FUN_0003be90(param_1);\n  iVar7 = *(int *)(iVar2 + 4);\n  if (iVar7 != 0) {\n    iVar3 = FUN_00021620(iVar7);\n    if ((iVar3 == 0) || (*(char *)(iVar7 + 0x10) != '\x02')) {\n      if (DAT_00089800 == 0) {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bd60(uVar5,uVar4);\n      }\n      else {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bc80(uVar5,uVar4);\n      }\n    }\n    else {\n      uVar4 = *(undefined4 *)(iVar7 + 0xc);\n      uVar5 = *(undefined4 *)(iVar7 + 8);\n      iVar7 = FUN_0003bdf0(param_1);\n      *(undefined4 *)(iVar7 + 0x28) = uVar5;\n      *(undefined4 *)(iVar7 + 0x2c) = uVar4;\n    }\n    free(*(void **)(iVar2 + 4));\n    *(undefined4 *)(iVar2 + 4) = 0;\n  }\n  if (*(char **)(iVar2 + 8) != (char *)0x0) {\n    pcVar6 = strchr(*(char **)(iVar2 + 8),0x40);\n    if (pcVar6 == (char *)0x0) {\n      *param_2 = 1;\n      iVar7 = FUN_00038580(param_1);\n      goto joined_r0x00055458;\n    }\n    iVar7 = FUN_000386c0(param_1);\n    if (iVar7 == 0) {\n      uVar4 = *(undefined4 *)(iVar2 + 8);\n      if (pcVar6[1] == '@') {\n        uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5);\n        FUN_0002bd60(uVar5,uVar4);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        *param_2 = 1;\n      }\n      FUN_0003b3c0(param_1,uVar4);\n    }\n    else if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8));\n    }\n    else {\n      uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));\n      iVar7 = FUN_00038670(param_1);\n      if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }\n      uVar5 = FUN_00038ac0(param_1);\n      FUN_00038b00(uVar4,uVar5);\n      uVar11 = FUN_0003a3c0(param_1);\n      puVar8 = (uint *)FUN_0003b830(param_1);\n      FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));\n      uVar5 = FUN_0003b830(param_1);\n      FUN_0003b780(uVar4,uVar5);\n      FUN_00038e30(uVar4,param_1);\n      iVar7 = FUN_0003bdf0(param_1);\n      uVar1 = *(undefined1 *)(iVar7 + 0x35);\n      iVar7 = FUN_0003bdf0(uVar4);\n      *(undefined1 *)(iVar7 + 0x35) = uVar1;\n      iVar7 = FUN_00038580(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }\n      iVar7 = FUN_00038510(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }\n    }\n  }\n  iVar7 = FUN_00038580(param_1);\njoined_r0x00055458:\n  if ((iVar7 != 0) && (iVar7 = FUN_00038670(param_1), iVar7 != 0)) {\n    uVar4 = FUN_00038a80(param_1);\n    uVar5 = dcgettext(0,"symbol `%s\' can not be both weak and common",5);\n    FUN_0002bd60(uVar5,uVar4);\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00055350(undefined4 param_1,undefined4 *param_2)" identifier (parameter_list "(undefined4 param_1,undefined4 *param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined1 uVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  char *pcVar6;\n  int iVar7;\n  uint *puVar8;\n  undefined4 uVar9;\n  size_t sVar10;\n  undefined8 uVar11;\n  \n  iVar2 = FUN_0003be90(param_1);\n  iVar7 = *(int *)(iVar2 + 4);\n  if (iVar7 != 0) {\n    iVar3 = FUN_00021620(iVar7);\n    if ((iVar3 == 0) || (*(char *)(iVar7 + 0x10) != '\x02')) {\n      if (DAT_00089800 == 0) {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bd60(uVar5,uVar4);\n      }\n      else {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bc80(uVar5,uVar4);\n      }\n    }\n    else {\n      uVar4 = *(undefined4 *)(iVar7 + 0xc);\n      uVar5 = *(undefined4 *)(iVar7 + 8);\n      iVar7 = FUN_0003bdf0(param_1);\n      *(undefined4 *)(iVar7 + 0x28) = uVar5;\n      *(undefined4 *)(iVar7 + 0x2c) = uVar4;\n    }\n    free(*(void **)(iVar2 + 4));\n    *(undefined4 *)(iVar2 + 4) = 0;\n  }\n  if (*(char **)(iVar2 + 8) != (char *)0x0) {\n    pcVar6 = strchr(*(char **)(iVar2 + 8),0x40);\n    if (pcVar6 == (char *)0x0) {\n      *param_2 = 1;\n      iVar7 = FUN_00038580(param_1);\n      goto joined_r0x00055458;\n    }\n    iVar7 = FUN_000386c0(param_1);\n    if (iVar7 == 0) {\n      uVar4 = *(undefined4 *)(iVar2 + 8);\n      if (pcVar6[1] == '@') {\n        uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5);\n        FUN_0002bd60(uVar5,uVar4);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        *param_2 = 1;\n      }\n      FUN_0003b3c0(param_1,uVar4);\n    }\n    else if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8));\n    }\n    else {\n      uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));\n      iVar7 = FUN_00038670(param_1);\n      if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }\n      uVar5 = FUN_00038ac0(param_1);\n      FUN_00038b00(uVar4,uVar5);\n      uVar11 = FUN_0003a3c0(param_1);\n      puVar8 = (uint *)FUN_0003b830(param_1);\n      FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));\n      uVar5 = FUN_0003b830(param_1);\n      FUN_0003b780(uVar4,uVar5);\n      FUN_00038e30(uVar4,param_1);\n      iVar7 = FUN_0003bdf0(param_1);\n      uVar1 = *(undefined1 *)(iVar7 + 0x35);\n      iVar7 = FUN_0003bdf0(uVar4);\n      *(undefined1 *)(iVar7 + 0x35) = uVar1;\n      iVar7 = FUN_00038580(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }\n      iVar7 = FUN_00038510(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }\n    }\n  }\n  iVar7 = FUN_00038580(param_1);\njoined_r0x00055458:\n  if ((iVar7 != 0) && (iVar7 = FUN_00038670(param_1), iVar7 != 0)) {\n    uVar4 = FUN_00038a80(param_1);\n    uVar5 = dcgettext(0,"symbol `%s\' can not be both weak and common",5);\n    FUN_0002bd60(uVar5,uVar4);\n    return;\n  }\n  return;\n}" { (declaration "undefined1 uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "size_t sVar10;" primitive_type identifier ;) (declaration "undefined8 uVar11;" type_identifier identifier ;) (expression_statement "iVar2 = FUN_0003be90(param_1);" (assignment_expression "iVar2 = FUN_0003be90(param_1)" identifier = (call_expression "FUN_0003be90(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "iVar7 = *(int *)(iVar2 + 4);" (assignment_expression "iVar7 = *(int *)(iVar2 + 4)" identifier = (pointer_expression "*(int *)(iVar2 + 4)" * (cast_expression "(int *)(iVar2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) ))))) ;) (if_statement "if (iVar7 != 0) {\n    iVar3 = FUN_00021620(iVar7);\n    if ((iVar3 == 0) || (*(char *)(iVar7 + 0x10) != '\x02')) {\n      if (DAT_00089800 == 0) {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bd60(uVar5,uVar4);\n      }\n      else {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bc80(uVar5,uVar4);\n      }\n    }\n    else {\n      uVar4 = *(undefined4 *)(iVar7 + 0xc);\n      uVar5 = *(undefined4 *)(iVar7 + 8);\n      iVar7 = FUN_0003bdf0(param_1);\n      *(undefined4 *)(iVar7 + 0x28) = uVar5;\n      *(undefined4 *)(iVar7 + 0x2c) = uVar4;\n    }\n    free(*(void **)(iVar2 + 4));\n    *(undefined4 *)(iVar2 + 4) = 0;\n  }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar3 = FUN_00021620(iVar7);\n    if ((iVar3 == 0) || (*(char *)(iVar7 + 0x10) != '\x02')) {\n      if (DAT_00089800 == 0) {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bd60(uVar5,uVar4);\n      }\n      else {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bc80(uVar5,uVar4);\n      }\n    }\n    else {\n      uVar4 = *(undefined4 *)(iVar7 + 0xc);\n      uVar5 = *(undefined4 *)(iVar7 + 8);\n      iVar7 = FUN_0003bdf0(param_1);\n      *(undefined4 *)(iVar7 + 0x28) = uVar5;\n      *(undefined4 *)(iVar7 + 0x2c) = uVar4;\n    }\n    free(*(void **)(iVar2 + 4));\n    *(undefined4 *)(iVar2 + 4) = 0;\n  }" { (expression_statement "iVar3 = FUN_00021620(iVar7);" (assignment_expression "iVar3 = FUN_00021620(iVar7)" identifier = (call_expression "FUN_00021620(iVar7)" identifier (argument_list "(iVar7)" ( identifier )))) ;) (if_statement "if ((iVar3 == 0) || (*(char *)(iVar7 + 0x10) != '\x02')) {\n      if (DAT_00089800 == 0) {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bd60(uVar5,uVar4);\n      }\n      else {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bc80(uVar5,uVar4);\n      }\n    }\n    else {\n      uVar4 = *(undefined4 *)(iVar7 + 0xc);\n      uVar5 = *(undefined4 *)(iVar7 + 8);\n      iVar7 = FUN_0003bdf0(param_1);\n      *(undefined4 *)(iVar7 + 0x28) = uVar5;\n      *(undefined4 *)(iVar7 + 0x2c) = uVar4;\n    }" if (parenthesized_expression "((iVar3 == 0) || (*(char *)(iVar7 + 0x10) != '\x02'))" ( (binary_expression "(iVar3 == 0) || (*(char *)(iVar7 + 0x10) != '\x02')" (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) || (parenthesized_expression "(*(char *)(iVar7 + 0x10) != '\x02')" ( (binary_expression "*(char *)(iVar7 + 0x10) != '\x02'" (pointer_expression "*(char *)(iVar7 + 0x10)" * (cast_expression "(char *)(iVar7 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x10)" ( (binary_expression "iVar7 + 0x10" identifier + number_literal) )))) != (char_literal "'\x02'" ' escape_sequence ')) ))) )) (compound_statement "{\n      if (DAT_00089800 == 0) {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bd60(uVar5,uVar4);\n      }\n      else {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bc80(uVar5,uVar4);\n      }\n    }" { (if_statement "if (DAT_00089800 == 0) {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bd60(uVar5,uVar4);\n      }\n      else {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bc80(uVar5,uVar4);\n      }" if (parenthesized_expression "(DAT_00089800 == 0)" ( (binary_expression "DAT_00089800 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bd60(uVar5,uVar4);\n      }" { (expression_statement "uVar4 = FUN_00038a80(param_1);" (assignment_expression "uVar4 = FUN_00038a80(param_1)" identifier = (call_expression "FUN_00038a80(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);" (assignment_expression "uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5)" identifier = (call_expression "dcgettext(0,".size expression for %s does not evaluate to a constant",5)" identifier (argument_list "(0,".size expression for %s does not evaluate to a constant",5)" ( number_literal , (string_literal "".size expression for %s does not evaluate to a constant"" " string_content ") , number_literal )))) ;) (expression_statement "FUN_0002bd60(uVar5,uVar4);" (call_expression "FUN_0002bd60(uVar5,uVar4)" identifier (argument_list "(uVar5,uVar4)" ( identifier , identifier ))) ;) }) (else_clause "else {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bc80(uVar5,uVar4);\n      }" else (compound_statement "{\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bc80(uVar5,uVar4);\n      }" { (expression_statement "uVar4 = FUN_00038a80(param_1);" (assignment_expression "uVar4 = FUN_00038a80(param_1)" identifier = (call_expression "FUN_00038a80(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);" (assignment_expression "uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5)" identifier = (call_expression "dcgettext(0,".size expression for %s does not evaluate to a constant",5)" identifier (argument_list "(0,".size expression for %s does not evaluate to a constant",5)" ( number_literal , (string_literal "".size expression for %s does not evaluate to a constant"" " string_content ") , number_literal )))) ;) (expression_statement "FUN_0002bc80(uVar5,uVar4);" (call_expression "FUN_0002bc80(uVar5,uVar4)" identifier (argument_list "(uVar5,uVar4)" ( identifier , identifier ))) ;) }))) }) (else_clause "else {\n      uVar4 = *(undefined4 *)(iVar7 + 0xc);\n      uVar5 = *(undefined4 *)(iVar7 + 8);\n      iVar7 = FUN_0003bdf0(param_1);\n      *(undefined4 *)(iVar7 + 0x28) = uVar5;\n      *(undefined4 *)(iVar7 + 0x2c) = uVar4;\n    }" else (compound_statement "{\n      uVar4 = *(undefined4 *)(iVar7 + 0xc);\n      uVar5 = *(undefined4 *)(iVar7 + 8);\n      iVar7 = FUN_0003bdf0(param_1);\n      *(undefined4 *)(iVar7 + 0x28) = uVar5;\n      *(undefined4 *)(iVar7 + 0x2c) = uVar4;\n    }" { (expression_statement "uVar4 = *(undefined4 *)(iVar7 + 0xc);" (assignment_expression "uVar4 = *(undefined4 *)(iVar7 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(iVar7 + 0xc)" * (cast_expression "(undefined4 *)(iVar7 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0xc)" ( (binary_expression "iVar7 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(undefined4 *)(iVar7 + 8);" (assignment_expression "uVar5 = *(undefined4 *)(iVar7 + 8)" identifier = (pointer_expression "*(undefined4 *)(iVar7 + 8)" * (cast_expression "(undefined4 *)(iVar7 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 8)" ( (binary_expression "iVar7 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = FUN_0003bdf0(param_1);" (assignment_expression "iVar7 = FUN_0003bdf0(param_1)" identifier = (call_expression "FUN_0003bdf0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined4 *)(iVar7 + 0x28) = uVar5;" (assignment_expression "*(undefined4 *)(iVar7 + 0x28) = uVar5" (pointer_expression "*(undefined4 *)(iVar7 + 0x28)" * (cast_expression "(undefined4 *)(iVar7 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x28)" ( (binary_expression "iVar7 + 0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar7 + 0x2c) = uVar4;" (assignment_expression "*(undefined4 *)(iVar7 + 0x2c) = uVar4" (pointer_expression "*(undefined4 *)(iVar7 + 0x2c)" * (cast_expression "(undefined4 *)(iVar7 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x2c)" ( (binary_expression "iVar7 + 0x2c" identifier + number_literal) )))) = identifier) ;) }))) (expression_statement "free(*(void **)(iVar2 + 4));" (call_expression "free(*(void **)(iVar2 + 4))" identifier (argument_list "(*(void **)(iVar2 + 4))" ( (pointer_expression "*(void **)(iVar2 + 4)" * (cast_expression "(void **)(iVar2 + 4)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(iVar2 + 4) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 4) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 4)" * (cast_expression "(undefined4 *)(iVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) )))) = number_literal) ;) })) (if_statement "if (*(char **)(iVar2 + 8) != (char *)0x0) {\n    pcVar6 = strchr(*(char **)(iVar2 + 8),0x40);\n    if (pcVar6 == (char *)0x0) {\n      *param_2 = 1;\n      iVar7 = FUN_00038580(param_1);\n      goto joined_r0x00055458;\n    }\n    iVar7 = FUN_000386c0(param_1);\n    if (iVar7 == 0) {\n      uVar4 = *(undefined4 *)(iVar2 + 8);\n      if (pcVar6[1] == '@') {\n        uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5);\n        FUN_0002bd60(uVar5,uVar4);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        *param_2 = 1;\n      }\n      FUN_0003b3c0(param_1,uVar4);\n    }\n    else if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8));\n    }\n    else {\n      uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));\n      iVar7 = FUN_00038670(param_1);\n      if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }\n      uVar5 = FUN_00038ac0(param_1);\n      FUN_00038b00(uVar4,uVar5);\n      uVar11 = FUN_0003a3c0(param_1);\n      puVar8 = (uint *)FUN_0003b830(param_1);\n      FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));\n      uVar5 = FUN_0003b830(param_1);\n      FUN_0003b780(uVar4,uVar5);\n      FUN_00038e30(uVar4,param_1);\n      iVar7 = FUN_0003bdf0(param_1);\n      uVar1 = *(undefined1 *)(iVar7 + 0x35);\n      iVar7 = FUN_0003bdf0(uVar4);\n      *(undefined1 *)(iVar7 + 0x35) = uVar1;\n      iVar7 = FUN_00038580(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }\n      iVar7 = FUN_00038510(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }\n    }\n  }" if (parenthesized_expression "(*(char **)(iVar2 + 8) != (char *)0x0)" ( (binary_expression "*(char **)(iVar2 + 8) != (char *)0x0" (pointer_expression "*(char **)(iVar2 + 8)" * (cast_expression "(char **)(iVar2 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) )))) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar6 = strchr(*(char **)(iVar2 + 8),0x40);\n    if (pcVar6 == (char *)0x0) {\n      *param_2 = 1;\n      iVar7 = FUN_00038580(param_1);\n      goto joined_r0x00055458;\n    }\n    iVar7 = FUN_000386c0(param_1);\n    if (iVar7 == 0) {\n      uVar4 = *(undefined4 *)(iVar2 + 8);\n      if (pcVar6[1] == '@') {\n        uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5);\n        FUN_0002bd60(uVar5,uVar4);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        *param_2 = 1;\n      }\n      FUN_0003b3c0(param_1,uVar4);\n    }\n    else if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8));\n    }\n    else {\n      uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));\n      iVar7 = FUN_00038670(param_1);\n      if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }\n      uVar5 = FUN_00038ac0(param_1);\n      FUN_00038b00(uVar4,uVar5);\n      uVar11 = FUN_0003a3c0(param_1);\n      puVar8 = (uint *)FUN_0003b830(param_1);\n      FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));\n      uVar5 = FUN_0003b830(param_1);\n      FUN_0003b780(uVar4,uVar5);\n      FUN_00038e30(uVar4,param_1);\n      iVar7 = FUN_0003bdf0(param_1);\n      uVar1 = *(undefined1 *)(iVar7 + 0x35);\n      iVar7 = FUN_0003bdf0(uVar4);\n      *(undefined1 *)(iVar7 + 0x35) = uVar1;\n      iVar7 = FUN_00038580(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }\n      iVar7 = FUN_00038510(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }\n    }\n  }" { (expression_statement "pcVar6 = strchr(*(char **)(iVar2 + 8),0x40);" (assignment_expression "pcVar6 = strchr(*(char **)(iVar2 + 8),0x40)" identifier = (call_expression "strchr(*(char **)(iVar2 + 8),0x40)" identifier (argument_list "(*(char **)(iVar2 + 8),0x40)" ( (pointer_expression "*(char **)(iVar2 + 8)" * (cast_expression "(char **)(iVar2 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) )))) , number_literal )))) ;) (if_statement "if (pcVar6 == (char *)0x0) {\n      *param_2 = 1;\n      iVar7 = FUN_00038580(param_1);\n      goto joined_r0x00055458;\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      *param_2 = 1;\n      iVar7 = FUN_00038580(param_1);\n      goto joined_r0x00055458;\n    }" { (expression_statement "*param_2 = 1;" (assignment_expression "*param_2 = 1" (pointer_expression "*param_2" * identifier) = number_literal) ;) (expression_statement "iVar7 = FUN_00038580(param_1);" (assignment_expression "iVar7 = FUN_00038580(param_1)" identifier = (call_expression "FUN_00038580(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (goto_statement "goto joined_r0x00055458;" goto statement_identifier ;) })) (expression_statement "iVar7 = FUN_000386c0(param_1);" (assignment_expression "iVar7 = FUN_000386c0(param_1)" identifier = (call_expression "FUN_000386c0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar7 == 0) {\n      uVar4 = *(undefined4 *)(iVar2 + 8);\n      if (pcVar6[1] == '@') {\n        uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5);\n        FUN_0002bd60(uVar5,uVar4);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        *param_2 = 1;\n      }\n      FUN_0003b3c0(param_1,uVar4);\n    }\n    else if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8));\n    }\n    else {\n      uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));\n      iVar7 = FUN_00038670(param_1);\n      if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }\n      uVar5 = FUN_00038ac0(param_1);\n      FUN_00038b00(uVar4,uVar5);\n      uVar11 = FUN_0003a3c0(param_1);\n      puVar8 = (uint *)FUN_0003b830(param_1);\n      FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));\n      uVar5 = FUN_0003b830(param_1);\n      FUN_0003b780(uVar4,uVar5);\n      FUN_00038e30(uVar4,param_1);\n      iVar7 = FUN_0003bdf0(param_1);\n      uVar1 = *(undefined1 *)(iVar7 + 0x35);\n      iVar7 = FUN_0003bdf0(uVar4);\n      *(undefined1 *)(iVar7 + 0x35) = uVar1;\n      iVar7 = FUN_00038580(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }\n      iVar7 = FUN_00038510(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }\n    }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar4 = *(undefined4 *)(iVar2 + 8);\n      if (pcVar6[1] == '@') {\n        uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5);\n        FUN_0002bd60(uVar5,uVar4);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        *param_2 = 1;\n      }\n      FUN_0003b3c0(param_1,uVar4);\n    }" { (expression_statement "uVar4 = *(undefined4 *)(iVar2 + 8);" (assignment_expression "uVar4 = *(undefined4 *)(iVar2 + 8)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + 8)" * (cast_expression "(undefined4 *)(iVar2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) ))))) ;) (if_statement "if (pcVar6[1] == '@') {\n        uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5);\n        FUN_0002bd60(uVar5,uVar4);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        *param_2 = 1;\n      }" if (parenthesized_expression "(pcVar6[1] == '@')" ( (binary_expression "pcVar6[1] == '@'" (subscript_expression "pcVar6[1]" identifier [ number_literal ]) == (char_literal "'@'" ' character ')) )) (compound_statement "{\n        uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5);\n        FUN_0002bd60(uVar5,uVar4);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        *param_2 = 1;\n      }" { (expression_statement "uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5);" (assignment_expression "uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5)" identifier = (call_expression "dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5)" identifier (argument_list "(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5)" ( number_literal , (string_literal ""invalid attempt to declare external version name as default in symbol `%s\'"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_0002bd60(uVar5,uVar4);" (call_expression "FUN_0002bd60(uVar5,uVar4)" identifier (argument_list "(uVar5,uVar4)" ( identifier , identifier ))) ;) (expression_statement "uVar4 = *(undefined4 *)(iVar2 + 8);" (assignment_expression "uVar4 = *(undefined4 *)(iVar2 + 8)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + 8)" * (cast_expression "(undefined4 *)(iVar2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) ))))) ;) (expression_statement "*param_2 = 1;" (assignment_expression "*param_2 = 1" (pointer_expression "*param_2" * identifier) = number_literal) ;) })) (expression_statement "FUN_0003b3c0(param_1,uVar4);" (call_expression "FUN_0003b3c0(param_1,uVar4)" identifier (argument_list "(param_1,uVar4)" ( identifier , identifier ))) ;) }) (else_clause "else if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8));\n    }\n    else {\n      uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));\n      iVar7 = FUN_00038670(param_1);\n      if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }\n      uVar5 = FUN_00038ac0(param_1);\n      FUN_00038b00(uVar4,uVar5);\n      uVar11 = FUN_0003a3c0(param_1);\n      puVar8 = (uint *)FUN_0003b830(param_1);\n      FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));\n      uVar5 = FUN_0003b830(param_1);\n      FUN_0003b780(uVar4,uVar5);\n      FUN_00038e30(uVar4,param_1);\n      iVar7 = FUN_0003bdf0(param_1);\n      uVar1 = *(undefined1 *)(iVar7 + 0x35);\n      iVar7 = FUN_0003bdf0(uVar4);\n      *(undefined1 *)(iVar7 + 0x35) = uVar1;\n      iVar7 = FUN_00038580(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }\n      iVar7 = FUN_00038510(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }\n    }" else (if_statement "if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8));\n    }\n    else {\n      uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));\n      iVar7 = FUN_00038670(param_1);\n      if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }\n      uVar5 = FUN_00038ac0(param_1);\n      FUN_00038b00(uVar4,uVar5);\n      uVar11 = FUN_0003a3c0(param_1);\n      puVar8 = (uint *)FUN_0003b830(param_1);\n      FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));\n      uVar5 = FUN_0003b830(param_1);\n      FUN_0003b780(uVar4,uVar5);\n      FUN_00038e30(uVar4,param_1);\n      iVar7 = FUN_0003bdf0(param_1);\n      uVar1 = *(undefined1 *)(iVar7 + 0x35);\n      iVar7 = FUN_0003bdf0(uVar4);\n      *(undefined1 *)(iVar7 + 0x35) = uVar1;\n      iVar7 = FUN_00038580(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }\n      iVar7 = FUN_00038510(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }\n    }" if (parenthesized_expression "((pcVar6[1] == '@') && (pcVar6[2] == '@'))" ( (binary_expression "(pcVar6[1] == '@') && (pcVar6[2] == '@')" (parenthesized_expression "(pcVar6[1] == '@')" ( (binary_expression "pcVar6[1] == '@'" (subscript_expression "pcVar6[1]" identifier [ number_literal ]) == (char_literal "'@'" ' character ')) )) && (parenthesized_expression "(pcVar6[2] == '@')" ( (binary_expression "pcVar6[2] == '@'" (subscript_expression "pcVar6[2]" identifier [ number_literal ]) == (char_literal "'@'" ' character ')) ))) )) (compound_statement "{\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8));\n    }" { (expression_statement "sVar10 = strlen(pcVar6 + 3);" (assignment_expression "sVar10 = strlen(pcVar6 + 3)" identifier = (call_expression "strlen(pcVar6 + 3)" identifier (argument_list "(pcVar6 + 3)" ( (binary_expression "pcVar6 + 3" identifier + number_literal) )))) ;) (expression_statement "memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);" (call_expression "memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1)" identifier (argument_list "(pcVar6 + 2,pcVar6 + 3,sVar10 + 1)" ( (binary_expression "pcVar6 + 2" identifier + number_literal) , (binary_expression "pcVar6 + 3" identifier + number_literal) , (binary_expression "sVar10 + 1" identifier + number_literal) ))) ;) (expression_statement "FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8));" (call_expression "FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8))" identifier (argument_list "(param_1,*(undefined4 *)(iVar2 + 8))" ( identifier , (pointer_expression "*(undefined4 *)(iVar2 + 8)" * (cast_expression "(undefined4 *)(iVar2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) )))) ))) ;) }) (else_clause "else {\n      uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));\n      iVar7 = FUN_00038670(param_1);\n      if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }\n      uVar5 = FUN_00038ac0(param_1);\n      FUN_00038b00(uVar4,uVar5);\n      uVar11 = FUN_0003a3c0(param_1);\n      puVar8 = (uint *)FUN_0003b830(param_1);\n      FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));\n      uVar5 = FUN_0003b830(param_1);\n      FUN_0003b780(uVar4,uVar5);\n      FUN_00038e30(uVar4,param_1);\n      iVar7 = FUN_0003bdf0(param_1);\n      uVar1 = *(undefined1 *)(iVar7 + 0x35);\n      iVar7 = FUN_0003bdf0(uVar4);\n      *(undefined1 *)(iVar7 + 0x35) = uVar1;\n      iVar7 = FUN_00038580(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }\n      iVar7 = FUN_00038510(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }\n    }" else (compound_statement "{\n      uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));\n      iVar7 = FUN_00038670(param_1);\n      if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }\n      uVar5 = FUN_00038ac0(param_1);\n      FUN_00038b00(uVar4,uVar5);\n      uVar11 = FUN_0003a3c0(param_1);\n      puVar8 = (uint *)FUN_0003b830(param_1);\n      FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));\n      uVar5 = FUN_0003b830(param_1);\n      FUN_0003b780(uVar4,uVar5);\n      FUN_00038e30(uVar4,param_1);\n      iVar7 = FUN_0003bdf0(param_1);\n      uVar1 = *(undefined1 *)(iVar7 + 0x35);\n      iVar7 = FUN_0003bdf0(uVar4);\n      *(undefined1 *)(iVar7 + 0x35) = uVar1;\n      iVar7 = FUN_00038580(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }\n      iVar7 = FUN_00038510(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }\n    }" { (expression_statement "uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));" (assignment_expression "uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8))" identifier = (call_expression "FUN_0003a9e0(*(undefined4 *)(iVar2 + 8))" identifier (argument_list "(*(undefined4 *)(iVar2 + 8))" ( (pointer_expression "*(undefined4 *)(iVar2 + 8)" * (cast_expression "(undefined4 *)(iVar2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "iVar7 = FUN_00038670(param_1);" (assignment_expression "iVar7 = FUN_00038670(param_1)" identifier = (call_expression "FUN_00038670(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }" { (expression_statement "uVar5 = FUN_00038a80(param_1);" (assignment_expression "uVar5 = FUN_00038a80(param_1)" identifier = (call_expression "FUN_00038a80(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "uVar4 = *(undefined4 *)(iVar2 + 8);" (assignment_expression "uVar4 = *(undefined4 *)(iVar2 + 8)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + 8)" * (cast_expression "(undefined4 *)(iVar2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);" (assignment_expression "uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5)" identifier = (call_expression "dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5)" identifier (argument_list "(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5)" ( number_literal , (string_literal ""`%s\' can\'t be versioned to common symbol \'%s\'"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_0002bd60(uVar9,uVar4,uVar5);" (call_expression "FUN_0002bd60(uVar9,uVar4,uVar5)" identifier (argument_list "(uVar9,uVar4,uVar5)" ( identifier , identifier , identifier ))) ;) (expression_statement "*param_2 = 1;" (assignment_expression "*param_2 = 1" (pointer_expression "*param_2" * identifier) = number_literal) ;) (return_statement "return;" return ;) })) (expression_statement "uVar5 = FUN_00038ac0(param_1);" (assignment_expression "uVar5 = FUN_00038ac0(param_1)" identifier = (call_expression "FUN_00038ac0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "FUN_00038b00(uVar4,uVar5);" (call_expression "FUN_00038b00(uVar4,uVar5)" identifier (argument_list "(uVar4,uVar5)" ( identifier , identifier ))) ;) (expression_statement "uVar11 = FUN_0003a3c0(param_1);" (assignment_expression "uVar11 = FUN_0003a3c0(param_1)" identifier = (call_expression "FUN_0003a3c0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "puVar8 = (uint *)FUN_0003b830(param_1);" (assignment_expression "puVar8 = (uint *)FUN_0003b830(param_1)" identifier = (cast_expression "(uint *)FUN_0003b830(param_1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0003b830(param_1)" identifier (argument_list "(param_1)" ( identifier ))))) ;) (expression_statement "FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));" (call_expression "FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8))" identifier (argument_list "(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8))" ( identifier , (binary_expression "(uint)uVar11 - *puVar8" (cast_expression "(uint)uVar11" ( (type_descriptor "uint" type_identifier) ) identifier) - (pointer_expression "*puVar8" * identifier)) , (binary_expression "((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8)" (parenthesized_expression "((int)((ulonglong)uVar11 >> 0x20) - puVar8[1])" ( (binary_expression "(int)((ulonglong)uVar11 >> 0x20) - puVar8[1]" (cast_expression "(int)((ulonglong)uVar11 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar11 >> 0x20)" ( (binary_expression "(ulonglong)uVar11 >> 0x20" (cast_expression "(ulonglong)uVar11" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) - (subscript_expression "puVar8[1]" identifier [ number_literal ])) )) - (call_expression "(uint)((uint)uVar11 < *puVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)uVar11 < *puVar8)" ( (binary_expression "(uint)uVar11 < *puVar8" (cast_expression "(uint)uVar11" ( (type_descriptor "uint" type_identifier) ) identifier) < (pointer_expression "*puVar8" * identifier)) )))) ))) ;) (expression_statement "uVar5 = FUN_0003b830(param_1);" (assignment_expression "uVar5 = FUN_0003b830(param_1)" identifier = (call_expression "FUN_0003b830(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "FUN_0003b780(uVar4,uVar5);" (call_expression "FUN_0003b780(uVar4,uVar5)" identifier (argument_list "(uVar4,uVar5)" ( identifier , identifier ))) ;) (expression_statement "FUN_00038e30(uVar4,param_1);" (call_expression "FUN_00038e30(uVar4,param_1)" identifier (argument_list "(uVar4,param_1)" ( identifier , identifier ))) ;) (expression_statement "iVar7 = FUN_0003bdf0(param_1);" (assignment_expression "iVar7 = FUN_0003bdf0(param_1)" identifier = (call_expression "FUN_0003bdf0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "uVar1 = *(undefined1 *)(iVar7 + 0x35);" (assignment_expression "uVar1 = *(undefined1 *)(iVar7 + 0x35)" identifier = (pointer_expression "*(undefined1 *)(iVar7 + 0x35)" * (cast_expression "(undefined1 *)(iVar7 + 0x35)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x35)" ( (binary_expression "iVar7 + 0x35" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = FUN_0003bdf0(uVar4);" (assignment_expression "iVar7 = FUN_0003bdf0(uVar4)" identifier = (call_expression "FUN_0003bdf0(uVar4)" identifier (argument_list "(uVar4)" ( identifier )))) ;) (expression_statement "*(undefined1 *)(iVar7 + 0x35) = uVar1;" (assignment_expression "*(undefined1 *)(iVar7 + 0x35) = uVar1" (pointer_expression "*(undefined1 *)(iVar7 + 0x35)" * (cast_expression "(undefined1 *)(iVar7 + 0x35)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x35)" ( (binary_expression "iVar7 + 0x35" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar7 = FUN_00038580(param_1);" (assignment_expression "iVar7 = FUN_00038580(param_1)" identifier = (call_expression "FUN_00038580(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_0003a750(uVar4);\n      }" { (expression_statement "FUN_0003a750(uVar4);" (call_expression "FUN_0003a750(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) })) (expression_statement "iVar7 = FUN_00038510(param_1);" (assignment_expression "iVar7 = FUN_00038510(param_1)" identifier = (call_expression "FUN_00038510(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_0003a3d0(uVar4);\n      }" { (expression_statement "FUN_0003a3d0(uVar4);" (call_expression "FUN_0003a3d0(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) })) }))))) })) (expression_statement "iVar7 = FUN_00038580(param_1);" (assignment_expression "iVar7 = FUN_00038580(param_1)" identifier = (call_expression "FUN_00038580(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (labeled_statement "joined_r0x00055458:\n  if ((iVar7 != 0) && (iVar7 = FUN_00038670(param_1), iVar7 != 0)) {\n    uVar4 = FUN_00038a80(param_1);\n    uVar5 = dcgettext(0,"symbol `%s\' can not be both weak and common",5);\n    FUN_0002bd60(uVar5,uVar4);\n    return;\n  }" statement_identifier : (if_statement "if ((iVar7 != 0) && (iVar7 = FUN_00038670(param_1), iVar7 != 0)) {\n    uVar4 = FUN_00038a80(param_1);\n    uVar5 = dcgettext(0,"symbol `%s\' can not be both weak and common",5);\n    FUN_0002bd60(uVar5,uVar4);\n    return;\n  }" if (parenthesized_expression "((iVar7 != 0) && (iVar7 = FUN_00038670(param_1), iVar7 != 0))" ( (binary_expression "(iVar7 != 0) && (iVar7 = FUN_00038670(param_1), iVar7 != 0)" (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar7 = FUN_00038670(param_1), iVar7 != 0)" ( (comma_expression "iVar7 = FUN_00038670(param_1), iVar7 != 0" (assignment_expression "iVar7 = FUN_00038670(param_1)" identifier = (call_expression "FUN_00038670(param_1)" identifier (argument_list "(param_1)" ( identifier )))) , (binary_expression "iVar7 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    uVar4 = FUN_00038a80(param_1);\n    uVar5 = dcgettext(0,"symbol `%s\' can not be both weak and common",5);\n    FUN_0002bd60(uVar5,uVar4);\n    return;\n  }" { (expression_statement "uVar4 = FUN_00038a80(param_1);" (assignment_expression "uVar4 = FUN_00038a80(param_1)" identifier = (call_expression "FUN_00038a80(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "uVar5 = dcgettext(0,"symbol `%s\' can not be both weak and common",5);" (assignment_expression "uVar5 = dcgettext(0,"symbol `%s\' can not be both weak and common",5)" identifier = (call_expression "dcgettext(0,"symbol `%s\' can not be both weak and common",5)" identifier (argument_list "(0,"symbol `%s\' can not be both weak and common",5)" ( number_literal , (string_literal ""symbol `%s\' can not be both weak and common"" " string_content escape_sequence string_content ") , number_literal )))) ;) (expression_statement "FUN_0002bd60(uVar5,uVar4);" (call_expression "FUN_0002bd60(uVar5,uVar4)" identifier (argument_list "(uVar5,uVar4)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) }))) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nvoid elf_frob_symbol(symbolS *symp,int *puntp)\n\n{\n  undefined1 uVar1;\n  expressionS *expressionP;\n  undefined4 uVar2;\n  offsetT oVar3;\n  elf_obj_sy *peVar4;\n  int iVar5;\n  char *pcVar6;\n  char *pcVar7;\n  symbolS *s;\n  segT seg;\n  fragS *pfVar8;\n  asymbol *paVar9;\n  char *format;\n  size_t sVar10;\n  valueT vVar11;\n  uint local_24;\n  int local_20;\n  \n  peVar4 = symbol_get_obj(symp);\n  expressionP = peVar4->size;\n  if (expressionP != (expressionS *)0x0) {\n    iVar5 = resolve_expression(expressionP);\n    if ((iVar5 == 0) || (expressionP->field_0x10 != '\x02')) {\n      if (flag_allow_nonconst_size == 0) {\n        pcVar6 = S_GET_NAME(symp);\n        pcVar7 = (char *)dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        as_bad(pcVar7,pcVar6);\n      }\n      else {\n        pcVar6 = S_GET_NAME(symp);\n        pcVar7 = (char *)dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        as_warn(pcVar7,pcVar6);\n      }\n    }\n    else {\n      uVar2 = *(undefined4 *)((int)&expressionP->X_add_number + 4);\n      oVar3 = expressionP->X_add_number;\n      paVar9 = symbol_get_bfdsym(symp);\n      *(int *)&paVar9[1].value = (int)oVar3;\n      *(undefined4 *)((int)&paVar9[1].value + 4) = uVar2;\n    }\n    free(peVar4->size);\n    peVar4->size = (expressionS *)0x0;\n  }\n  if (peVar4->versioned_name != (char *)0x0) {\n    pcVar6 = strchr(peVar4->versioned_name,0x40);\n    if (pcVar6 == (char *)0x0) {\n      *puntp = 1;\n      iVar5 = S_IS_WEAK(symp);\n      goto joined_r0x00055458;\n    }\n    iVar5 = S_IS_DEFINED(symp);\n    if (iVar5 == 0) {\n      pcVar7 = peVar4->versioned_name;\n      if (pcVar6[1] == '@') {\n        pcVar6 = (char *)dcgettext(0,\n                                   "invalid attempt to declare external version name as default in symbol `%s\'"\n                                   ,5);\n        as_bad(pcVar6,pcVar7);\n        pcVar7 = peVar4->versioned_name;\n        *puntp = 1;\n      }\n      S_SET_NAME(symp,pcVar7);\n    }\n    else if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      S_SET_NAME(symp,peVar4->versioned_name);\n    }\n    else {\n      s = symbol_find_or_make(peVar4->versioned_name);\n      iVar5 = S_IS_COMMON(symp);\n      if (iVar5 != 0) {\n        pcVar7 = S_GET_NAME(symp);\n        pcVar6 = peVar4->versioned_name;\n        format = (char *)dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        as_bad(format,pcVar6,pcVar7);\n        *puntp = 1;\n        return;\n      }\n      seg = S_GET_SEGMENT(symp);\n      S_SET_SEGMENT(s,seg);\n      vVar11 = S_GET_VALUE(symp);\n      pfVar8 = symbol_get_frag(symp);\n      local_24 = (uint)vVar11;\n      local_20 = (int)(vVar11 >> 0x20);\n      S_SET_VALUE(s,CONCAT44((local_20 - *(int *)((int)&pfVar8->fr_address + 4)) -\n                             (uint)(local_24 < (uint)pfVar8->fr_address),\n                             local_24 - (int)pfVar8->fr_address));\n      pfVar8 = symbol_get_frag(symp);\n      symbol_set_frag(s,pfVar8);\n      copy_symbol_attributes(s,symp);\n      paVar9 = symbol_get_bfdsym(symp);\n      uVar1 = *(undefined1 *)((int)&paVar9[1].section + 1);\n      paVar9 = symbol_get_bfdsym(s);\n      *(undefined1 *)((int)&paVar9[1].section + 1) = uVar1;\n      iVar5 = S_IS_WEAK(symp);\n      if (iVar5 != 0) {\n        S_SET_WEAK(s);\n      }\n      iVar5 = S_IS_EXTERNAL(symp);\n      if (iVar5 != 0) {\n        S_SET_EXTERNAL(s);\n      }\n    }\n  }\n  iVar5 = S_IS_WEAK(symp);\njoined_r0x00055458:\n  if ((iVar5 != 0) && (iVar5 = S_IS_COMMON(symp), iVar5 != 0)) {\n    pcVar6 = S_GET_NAME(symp);\n    pcVar7 = (char *)dcgettext(0,"symbol `%s\' can not be both weak and common",5);\n    as_bad(pcVar7,pcVar6);\n    return;\n  }\n  return;\n}\n\n" comment comment (function_definition "void elf_frob_symbol(symbolS *symp,int *puntp)\n\n{\n  undefined1 uVar1;\n  expressionS *expressionP;\n  undefined4 uVar2;\n  offsetT oVar3;\n  elf_obj_sy *peVar4;\n  int iVar5;\n  char *pcVar6;\n  char *pcVar7;\n  symbolS *s;\n  segT seg;\n  fragS *pfVar8;\n  asymbol *paVar9;\n  char *format;\n  size_t sVar10;\n  valueT vVar11;\n  uint local_24;\n  int local_20;\n  \n  peVar4 = symbol_get_obj(symp);\n  expressionP = peVar4->size;\n  if (expressionP != (expressionS *)0x0) {\n    iVar5 = resolve_expression(expressionP);\n    if ((iVar5 == 0) || (expressionP->field_0x10 != '\x02')) {\n      if (flag_allow_nonconst_size == 0) {\n        pcVar6 = S_GET_NAME(symp);\n        pcVar7 = (char *)dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        as_bad(pcVar7,pcVar6);\n      }\n      else {\n        pcVar6 = S_GET_NAME(symp);\n        pcVar7 = (char *)dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        as_warn(pcVar7,pcVar6);\n      }\n    }\n    else {\n      uVar2 = *(undefined4 *)((int)&expressionP->X_add_number + 4);\n      oVar3 = expressionP->X_add_number;\n      paVar9 = symbol_get_bfdsym(symp);\n      *(int *)&paVar9[1].value = (int)oVar3;\n      *(undefined4 *)((int)&paVar9[1].value + 4) = uVar2;\n    }\n    free(peVar4->size);\n    peVar4->size = (expressionS *)0x0;\n  }\n  if (peVar4->versioned_name != (char *)0x0) {\n    pcVar6 = strchr(peVar4->versioned_name,0x40);\n    if (pcVar6 == (char *)0x0) {\n      *puntp = 1;\n      iVar5 = S_IS_WEAK(symp);\n      goto joined_r0x00055458;\n    }\n    iVar5 = S_IS_DEFINED(symp);\n    if (iVar5 == 0) {\n      pcVar7 = peVar4->versioned_name;\n      if (pcVar6[1] == '@') {\n        pcVar6 = (char *)dcgettext(0,\n                                   "invalid attempt to declare external version name as default in symbol `%s\'"\n                                   ,5);\n        as_bad(pcVar6,pcVar7);\n        pcVar7 = peVar4->versioned_name;\n        *puntp = 1;\n      }\n      S_SET_NAME(symp,pcVar7);\n    }\n    else if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      S_SET_NAME(symp,peVar4->versioned_name);\n    }\n    else {\n      s = symbol_find_or_make(peVar4->versioned_name);\n      iVar5 = S_IS_COMMON(symp);\n      if (iVar5 != 0) {\n        pcVar7 = S_GET_NAME(symp);\n        pcVar6 = peVar4->versioned_name;\n        format = (char *)dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        as_bad(format,pcVar6,pcVar7);\n        *puntp = 1;\n        return;\n      }\n      seg = S_GET_SEGMENT(symp);\n      S_SET_SEGMENT(s,seg);\n      vVar11 = S_GET_VALUE(symp);\n      pfVar8 = symbol_get_frag(symp);\n      local_24 = (uint)vVar11;\n      local_20 = (int)(vVar11 >> 0x20);\n      S_SET_VALUE(s,CONCAT44((local_20 - *(int *)((int)&pfVar8->fr_address + 4)) -\n                             (uint)(local_24 < (uint)pfVar8->fr_address),\n                             local_24 - (int)pfVar8->fr_address));\n      pfVar8 = symbol_get_frag(symp);\n      symbol_set_frag(s,pfVar8);\n      copy_symbol_attributes(s,symp);\n      paVar9 = symbol_get_bfdsym(symp);\n      uVar1 = *(undefined1 *)((int)&paVar9[1].section + 1);\n      paVar9 = symbol_get_bfdsym(s);\n      *(undefined1 *)((int)&paVar9[1].section + 1) = uVar1;\n      iVar5 = S_IS_WEAK(symp);\n      if (iVar5 != 0) {\n        S_SET_WEAK(s);\n      }\n      iVar5 = S_IS_EXTERNAL(symp);\n      if (iVar5 != 0) {\n        S_SET_EXTERNAL(s);\n      }\n    }\n  }\n  iVar5 = S_IS_WEAK(symp);\njoined_r0x00055458:\n  if ((iVar5 != 0) && (iVar5 = S_IS_COMMON(symp), iVar5 != 0)) {\n    pcVar6 = S_GET_NAME(symp);\n    pcVar7 = (char *)dcgettext(0,"symbol `%s\' can not be both weak and common",5);\n    as_bad(pcVar7,pcVar6);\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "elf_frob_symbol(symbolS *symp,int *puntp)" identifier (parameter_list "(symbolS *symp,int *puntp)" ( (parameter_declaration "symbolS *symp" type_identifier (pointer_declarator "*symp" * identifier)) , (parameter_declaration "int *puntp" primitive_type (pointer_declarator "*puntp" * identifier)) ))) (compound_statement "{\n  undefined1 uVar1;\n  expressionS *expressionP;\n  undefined4 uVar2;\n  offsetT oVar3;\n  elf_obj_sy *peVar4;\n  int iVar5;\n  char *pcVar6;\n  char *pcVar7;\n  symbolS *s;\n  segT seg;\n  fragS *pfVar8;\n  asymbol *paVar9;\n  char *format;\n  size_t sVar10;\n  valueT vVar11;\n  uint local_24;\n  int local_20;\n  \n  peVar4 = symbol_get_obj(symp);\n  expressionP = peVar4->size;\n  if (expressionP != (expressionS *)0x0) {\n    iVar5 = resolve_expression(expressionP);\n    if ((iVar5 == 0) || (expressionP->field_0x10 != '\x02')) {\n      if (flag_allow_nonconst_size == 0) {\n        pcVar6 = S_GET_NAME(symp);\n        pcVar7 = (char *)dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        as_bad(pcVar7,pcVar6);\n      }\n      else {\n        pcVar6 = S_GET_NAME(symp);\n        pcVar7 = (char *)dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        as_warn(pcVar7,pcVar6);\n      }\n    }\n    else {\n      uVar2 = *(undefined4 *)((int)&expressionP->X_add_number + 4);\n      oVar3 = expressionP->X_add_number;\n      paVar9 = symbol_get_bfdsym(symp);\n      *(int *)&paVar9[1].value = (int)oVar3;\n      *(undefined4 *)((int)&paVar9[1].value + 4) = uVar2;\n    }\n    free(peVar4->size);\n    peVar4->size = (expressionS *)0x0;\n  }\n  if (peVar4->versioned_name != (char *)0x0) {\n    pcVar6 = strchr(peVar4->versioned_name,0x40);\n    if (pcVar6 == (char *)0x0) {\n      *puntp = 1;\n      iVar5 = S_IS_WEAK(symp);\n      goto joined_r0x00055458;\n    }\n    iVar5 = S_IS_DEFINED(symp);\n    if (iVar5 == 0) {\n      pcVar7 = peVar4->versioned_name;\n      if (pcVar6[1] == '@') {\n        pcVar6 = (char *)dcgettext(0,\n                                   "invalid attempt to declare external version name as default in symbol `%s\'"\n                                   ,5);\n        as_bad(pcVar6,pcVar7);\n        pcVar7 = peVar4->versioned_name;\n        *puntp = 1;\n      }\n      S_SET_NAME(symp,pcVar7);\n    }\n    else if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      S_SET_NAME(symp,peVar4->versioned_name);\n    }\n    else {\n      s = symbol_find_or_make(peVar4->versioned_name);\n      iVar5 = S_IS_COMMON(symp);\n      if (iVar5 != 0) {\n        pcVar7 = S_GET_NAME(symp);\n        pcVar6 = peVar4->versioned_name;\n        format = (char *)dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        as_bad(format,pcVar6,pcVar7);\n        *puntp = 1;\n        return;\n      }\n      seg = S_GET_SEGMENT(symp);\n      S_SET_SEGMENT(s,seg);\n      vVar11 = S_GET_VALUE(symp);\n      pfVar8 = symbol_get_frag(symp);\n      local_24 = (uint)vVar11;\n      local_20 = (int)(vVar11 >> 0x20);\n      S_SET_VALUE(s,CONCAT44((local_20 - *(int *)((int)&pfVar8->fr_address + 4)) -\n                             (uint)(local_24 < (uint)pfVar8->fr_address),\n                             local_24 - (int)pfVar8->fr_address));\n      pfVar8 = symbol_get_frag(symp);\n      symbol_set_frag(s,pfVar8);\n      copy_symbol_attributes(s,symp);\n      paVar9 = symbol_get_bfdsym(symp);\n      uVar1 = *(undefined1 *)((int)&paVar9[1].section + 1);\n      paVar9 = symbol_get_bfdsym(s);\n      *(undefined1 *)((int)&paVar9[1].section + 1) = uVar1;\n      iVar5 = S_IS_WEAK(symp);\n      if (iVar5 != 0) {\n        S_SET_WEAK(s);\n      }\n      iVar5 = S_IS_EXTERNAL(symp);\n      if (iVar5 != 0) {\n        S_SET_EXTERNAL(s);\n      }\n    }\n  }\n  iVar5 = S_IS_WEAK(symp);\njoined_r0x00055458:\n  if ((iVar5 != 0) && (iVar5 = S_IS_COMMON(symp), iVar5 != 0)) {\n    pcVar6 = S_GET_NAME(symp);\n    pcVar7 = (char *)dcgettext(0,"symbol `%s\' can not be both weak and common",5);\n    as_bad(pcVar7,pcVar6);\n    return;\n  }\n  return;\n}" { (declaration "undefined1 uVar1;" type_identifier identifier ;) (declaration "expressionS *expressionP;" type_identifier (pointer_declarator "*expressionP" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "offsetT oVar3;" type_identifier identifier ;) (declaration "elf_obj_sy *peVar4;" type_identifier (pointer_declarator "*peVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "symbolS *s;" type_identifier (pointer_declarator "*s" * identifier) ;) (declaration "segT seg;" type_identifier identifier ;) (declaration "fragS *pfVar8;" type_identifier (pointer_declarator "*pfVar8" * identifier) ;) (declaration "asymbol *paVar9;" type_identifier (pointer_declarator "*paVar9" * identifier) ;) (declaration "char *format;" primitive_type (pointer_declarator "*format" * identifier) ;) (declaration "size_t sVar10;" primitive_type identifier ;) (declaration "valueT vVar11;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "peVar4 = symbol_get_obj(symp);" (assignment_expression "peVar4 = symbol_get_obj(symp)" identifier = (call_expression "symbol_get_obj(symp)" identifier (argument_list "(symp)" ( identifier )))) ;) (expression_statement "expressionP = peVar4->size;" (assignment_expression "expressionP = peVar4->size" identifier = (field_expression "peVar4->size" identifier -> field_identifier)) ;) (if_statement "if (expressionP != (expressionS *)0x0) {\n    iVar5 = resolve_expression(expressionP);\n    if ((iVar5 == 0) || (expressionP->field_0x10 != '\x02')) {\n      if (flag_allow_nonconst_size == 0) {\n        pcVar6 = S_GET_NAME(symp);\n        pcVar7 = (char *)dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        as_bad(pcVar7,pcVar6);\n      }\n      else {\n        pcVar6 = S_GET_NAME(symp);\n        pcVar7 = (char *)dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        as_warn(pcVar7,pcVar6);\n      }\n    }\n    else {\n      uVar2 = *(undefined4 *)((int)&expressionP->X_add_number + 4);\n      oVar3 = expressionP->X_add_number;\n      paVar9 = symbol_get_bfdsym(symp);\n      *(int *)&paVar9[1].value = (int)oVar3;\n      *(undefined4 *)((int)&paVar9[1].value + 4) = uVar2;\n    }\n    free(peVar4->size);\n    peVar4->size = (expressionS *)0x0;\n  }" if (parenthesized_expression "(expressionP != (expressionS *)0x0)" ( (binary_expression "expressionP != (expressionS *)0x0" identifier != (cast_expression "(expressionS *)0x0" ( (type_descriptor "expressionS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar5 = resolve_expression(expressionP);\n    if ((iVar5 == 0) || (expressionP->field_0x10 != '\x02')) {\n      if (flag_allow_nonconst_size == 0) {\n        pcVar6 = S_GET_NAME(symp);\n        pcVar7 = (char *)dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        as_bad(pcVar7,pcVar6);\n      }\n      else {\n        pcVar6 = S_GET_NAME(symp);\n        pcVar7 = (char *)dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        as_warn(pcVar7,pcVar6);\n      }\n    }\n    else {\n      uVar2 = *(undefined4 *)((int)&expressionP->X_add_number + 4);\n      oVar3 = expressionP->X_add_number;\n      paVar9 = symbol_get_bfdsym(symp);\n      *(int *)&paVar9[1].value = (int)oVar3;\n      *(undefined4 *)((int)&paVar9[1].value + 4) = uVar2;\n    }\n    free(peVar4->size);\n    peVar4->size = (expressionS *)0x0;\n  }" { (expression_statement "iVar5 = resolve_expression(expressionP);" (assignment_expression "iVar5 = resolve_expression(expressionP)" identifier = (call_expression "resolve_expression(expressionP)" identifier (argument_list "(expressionP)" ( identifier )))) ;) (if_statement "if ((iVar5 == 0) || (expressionP->field_0x10 != '\x02')) {\n      if (flag_allow_nonconst_size == 0) {\n        pcVar6 = S_GET_NAME(symp);\n        pcVar7 = (char *)dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        as_bad(pcVar7,pcVar6);\n      }\n      else {\n        pcVar6 = S_GET_NAME(symp);\n        pcVar7 = (char *)dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        as_warn(pcVar7,pcVar6);\n      }\n    }\n    else {\n      uVar2 = *(undefined4 *)((int)&expressionP->X_add_number + 4);\n      oVar3 = expressionP->X_add_number;\n      paVar9 = symbol_get_bfdsym(symp);\n      *(int *)&paVar9[1].value = (int)oVar3;\n      *(undefined4 *)((int)&paVar9[1].value + 4) = uVar2;\n    }" if (parenthesized_expression "((iVar5 == 0) || (expressionP->field_0x10 != '\x02'))" ( (binary_expression "(iVar5 == 0) || (expressionP->field_0x10 != '\x02')" (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) || (parenthesized_expression "(expressionP->field_0x10 != '\x02')" ( (binary_expression "expressionP->field_0x10 != '\x02'" (field_expression "expressionP->field_0x10" identifier -> field_identifier) != (char_literal "'\x02'" ' escape_sequence ')) ))) )) (compound_statement "{\n      if (flag_allow_nonconst_size == 0) {\n        pcVar6 = S_GET_NAME(symp);\n        pcVar7 = (char *)dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        as_bad(pcVar7,pcVar6);\n      }\n      else {\n        pcVar6 = S_GET_NAME(symp);\n        pcVar7 = (char *)dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        as_warn(pcVar7,pcVar6);\n      }\n    }" { (if_statement "if (flag_allow_nonconst_size == 0) {\n        pcVar6 = S_GET_NAME(symp);\n        pcVar7 = (char *)dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        as_bad(pcVar7,pcVar6);\n      }\n      else {\n        pcVar6 = S_GET_NAME(symp);\n        pcVar7 = (char *)dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        as_warn(pcVar7,pcVar6);\n      }" if (parenthesized_expression "(flag_allow_nonconst_size == 0)" ( (binary_expression "flag_allow_nonconst_size == 0" identifier == number_literal) )) (compound_statement "{\n        pcVar6 = S_GET_NAME(symp);\n        pcVar7 = (char *)dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        as_bad(pcVar7,pcVar6);\n      }" { (expression_statement "pcVar6 = S_GET_NAME(symp);" (assignment_expression "pcVar6 = S_GET_NAME(symp)" identifier = (call_expression "S_GET_NAME(symp)" identifier (argument_list "(symp)" ( identifier )))) ;) (expression_statement "pcVar7 = (char *)dcgettext(0,".size expression for %s does not evaluate to a constant",5);" (assignment_expression "pcVar7 = (char *)dcgettext(0,".size expression for %s does not evaluate to a constant",5)" identifier = (cast_expression "(char *)dcgettext(0,".size expression for %s does not evaluate to a constant",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,".size expression for %s does not evaluate to a constant",5)" identifier (argument_list "(0,".size expression for %s does not evaluate to a constant",5)" ( number_literal , (string_literal "".size expression for %s does not evaluate to a constant"" " string_content ") , number_literal ))))) ;) (expression_statement "as_bad(pcVar7,pcVar6);" (call_expression "as_bad(pcVar7,pcVar6)" identifier (argument_list "(pcVar7,pcVar6)" ( identifier , identifier ))) ;) }) (else_clause "else {\n        pcVar6 = S_GET_NAME(symp);\n        pcVar7 = (char *)dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        as_warn(pcVar7,pcVar6);\n      }" else (compound_statement "{\n        pcVar6 = S_GET_NAME(symp);\n        pcVar7 = (char *)dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        as_warn(pcVar7,pcVar6);\n      }" { (expression_statement "pcVar6 = S_GET_NAME(symp);" (assignment_expression "pcVar6 = S_GET_NAME(symp)" identifier = (call_expression "S_GET_NAME(symp)" identifier (argument_list "(symp)" ( identifier )))) ;) (expression_statement "pcVar7 = (char *)dcgettext(0,".size expression for %s does not evaluate to a constant",5);" (assignment_expression "pcVar7 = (char *)dcgettext(0,".size expression for %s does not evaluate to a constant",5)" identifier = (cast_expression "(char *)dcgettext(0,".size expression for %s does not evaluate to a constant",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,".size expression for %s does not evaluate to a constant",5)" identifier (argument_list "(0,".size expression for %s does not evaluate to a constant",5)" ( number_literal , (string_literal "".size expression for %s does not evaluate to a constant"" " string_content ") , number_literal ))))) ;) (expression_statement "as_warn(pcVar7,pcVar6);" (call_expression "as_warn(pcVar7,pcVar6)" identifier (argument_list "(pcVar7,pcVar6)" ( identifier , identifier ))) ;) }))) }) (else_clause "else {\n      uVar2 = *(undefined4 *)((int)&expressionP->X_add_number + 4);\n      oVar3 = expressionP->X_add_number;\n      paVar9 = symbol_get_bfdsym(symp);\n      *(int *)&paVar9[1].value = (int)oVar3;\n      *(undefined4 *)((int)&paVar9[1].value + 4) = uVar2;\n    }" else (compound_statement "{\n      uVar2 = *(undefined4 *)((int)&expressionP->X_add_number + 4);\n      oVar3 = expressionP->X_add_number;\n      paVar9 = symbol_get_bfdsym(symp);\n      *(int *)&paVar9[1].value = (int)oVar3;\n      *(undefined4 *)((int)&paVar9[1].value + 4) = uVar2;\n    }" { (expression_statement "uVar2 = *(undefined4 *)((int)&expressionP->X_add_number + 4);" (assignment_expression "uVar2 = *(undefined4 *)((int)&expressionP->X_add_number + 4)" identifier = (pointer_expression "*(undefined4 *)((int)&expressionP->X_add_number + 4)" * (cast_expression "(undefined4 *)((int)&expressionP->X_add_number + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&expressionP->X_add_number + 4)" ( (binary_expression "(int)&expressionP->X_add_number + 4" (cast_expression "(int)&expressionP->X_add_number" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&expressionP->X_add_number" & (field_expression "expressionP->X_add_number" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "oVar3 = expressionP->X_add_number;" (assignment_expression "oVar3 = expressionP->X_add_number" identifier = (field_expression "expressionP->X_add_number" identifier -> field_identifier)) ;) (expression_statement "paVar9 = symbol_get_bfdsym(symp);" (assignment_expression "paVar9 = symbol_get_bfdsym(symp)" identifier = (call_expression "symbol_get_bfdsym(symp)" identifier (argument_list "(symp)" ( identifier )))) ;) (expression_statement "*(int *)&paVar9[1].value = (int)oVar3;" (assignment_expression "*(int *)&paVar9[1].value = (int)oVar3" (pointer_expression "*(int *)&paVar9[1].value" * (cast_expression "(int *)&paVar9[1].value" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&paVar9[1].value" & (field_expression "paVar9[1].value" (subscript_expression "paVar9[1]" identifier [ number_literal ]) . field_identifier)))) = (cast_expression "(int)oVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(undefined4 *)((int)&paVar9[1].value + 4) = uVar2;" (assignment_expression "*(undefined4 *)((int)&paVar9[1].value + 4) = uVar2" (pointer_expression "*(undefined4 *)((int)&paVar9[1].value + 4)" * (cast_expression "(undefined4 *)((int)&paVar9[1].value + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&paVar9[1].value + 4)" ( (binary_expression "(int)&paVar9[1].value + 4" (cast_expression "(int)&paVar9[1].value" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&paVar9[1].value" & (field_expression "paVar9[1].value" (subscript_expression "paVar9[1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) = identifier) ;) }))) (expression_statement "free(peVar4->size);" (call_expression "free(peVar4->size)" identifier (argument_list "(peVar4->size)" ( (field_expression "peVar4->size" identifier -> field_identifier) ))) ;) (expression_statement "peVar4->size = (expressionS *)0x0;" (assignment_expression "peVar4->size = (expressionS *)0x0" (field_expression "peVar4->size" identifier -> field_identifier) = (cast_expression "(expressionS *)0x0" ( (type_descriptor "expressionS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (if_statement "if (peVar4->versioned_name != (char *)0x0) {\n    pcVar6 = strchr(peVar4->versioned_name,0x40);\n    if (pcVar6 == (char *)0x0) {\n      *puntp = 1;\n      iVar5 = S_IS_WEAK(symp);\n      goto joined_r0x00055458;\n    }\n    iVar5 = S_IS_DEFINED(symp);\n    if (iVar5 == 0) {\n      pcVar7 = peVar4->versioned_name;\n      if (pcVar6[1] == '@') {\n        pcVar6 = (char *)dcgettext(0,\n                                   "invalid attempt to declare external version name as default in symbol `%s\'"\n                                   ,5);\n        as_bad(pcVar6,pcVar7);\n        pcVar7 = peVar4->versioned_name;\n        *puntp = 1;\n      }\n      S_SET_NAME(symp,pcVar7);\n    }\n    else if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      S_SET_NAME(symp,peVar4->versioned_name);\n    }\n    else {\n      s = symbol_find_or_make(peVar4->versioned_name);\n      iVar5 = S_IS_COMMON(symp);\n      if (iVar5 != 0) {\n        pcVar7 = S_GET_NAME(symp);\n        pcVar6 = peVar4->versioned_name;\n        format = (char *)dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        as_bad(format,pcVar6,pcVar7);\n        *puntp = 1;\n        return;\n      }\n      seg = S_GET_SEGMENT(symp);\n      S_SET_SEGMENT(s,seg);\n      vVar11 = S_GET_VALUE(symp);\n      pfVar8 = symbol_get_frag(symp);\n      local_24 = (uint)vVar11;\n      local_20 = (int)(vVar11 >> 0x20);\n      S_SET_VALUE(s,CONCAT44((local_20 - *(int *)((int)&pfVar8->fr_address + 4)) -\n                             (uint)(local_24 < (uint)pfVar8->fr_address),\n                             local_24 - (int)pfVar8->fr_address));\n      pfVar8 = symbol_get_frag(symp);\n      symbol_set_frag(s,pfVar8);\n      copy_symbol_attributes(s,symp);\n      paVar9 = symbol_get_bfdsym(symp);\n      uVar1 = *(undefined1 *)((int)&paVar9[1].section + 1);\n      paVar9 = symbol_get_bfdsym(s);\n      *(undefined1 *)((int)&paVar9[1].section + 1) = uVar1;\n      iVar5 = S_IS_WEAK(symp);\n      if (iVar5 != 0) {\n        S_SET_WEAK(s);\n      }\n      iVar5 = S_IS_EXTERNAL(symp);\n      if (iVar5 != 0) {\n        S_SET_EXTERNAL(s);\n      }\n    }\n  }" if (parenthesized_expression "(peVar4->versioned_name != (char *)0x0)" ( (binary_expression "peVar4->versioned_name != (char *)0x0" (field_expression "peVar4->versioned_name" identifier -> field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar6 = strchr(peVar4->versioned_name,0x40);\n    if (pcVar6 == (char *)0x0) {\n      *puntp = 1;\n      iVar5 = S_IS_WEAK(symp);\n      goto joined_r0x00055458;\n    }\n    iVar5 = S_IS_DEFINED(symp);\n    if (iVar5 == 0) {\n      pcVar7 = peVar4->versioned_name;\n      if (pcVar6[1] == '@') {\n        pcVar6 = (char *)dcgettext(0,\n                                   "invalid attempt to declare external version name as default in symbol `%s\'"\n                                   ,5);\n        as_bad(pcVar6,pcVar7);\n        pcVar7 = peVar4->versioned_name;\n        *puntp = 1;\n      }\n      S_SET_NAME(symp,pcVar7);\n    }\n    else if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      S_SET_NAME(symp,peVar4->versioned_name);\n    }\n    else {\n      s = symbol_find_or_make(peVar4->versioned_name);\n      iVar5 = S_IS_COMMON(symp);\n      if (iVar5 != 0) {\n        pcVar7 = S_GET_NAME(symp);\n        pcVar6 = peVar4->versioned_name;\n        format = (char *)dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        as_bad(format,pcVar6,pcVar7);\n        *puntp = 1;\n        return;\n      }\n      seg = S_GET_SEGMENT(symp);\n      S_SET_SEGMENT(s,seg);\n      vVar11 = S_GET_VALUE(symp);\n      pfVar8 = symbol_get_frag(symp);\n      local_24 = (uint)vVar11;\n      local_20 = (int)(vVar11 >> 0x20);\n      S_SET_VALUE(s,CONCAT44((local_20 - *(int *)((int)&pfVar8->fr_address + 4)) -\n                             (uint)(local_24 < (uint)pfVar8->fr_address),\n                             local_24 - (int)pfVar8->fr_address));\n      pfVar8 = symbol_get_frag(symp);\n      symbol_set_frag(s,pfVar8);\n      copy_symbol_attributes(s,symp);\n      paVar9 = symbol_get_bfdsym(symp);\n      uVar1 = *(undefined1 *)((int)&paVar9[1].section + 1);\n      paVar9 = symbol_get_bfdsym(s);\n      *(undefined1 *)((int)&paVar9[1].section + 1) = uVar1;\n      iVar5 = S_IS_WEAK(symp);\n      if (iVar5 != 0) {\n        S_SET_WEAK(s);\n      }\n      iVar5 = S_IS_EXTERNAL(symp);\n      if (iVar5 != 0) {\n        S_SET_EXTERNAL(s);\n      }\n    }\n  }" { (expression_statement "pcVar6 = strchr(peVar4->versioned_name,0x40);" (assignment_expression "pcVar6 = strchr(peVar4->versioned_name,0x40)" identifier = (call_expression "strchr(peVar4->versioned_name,0x40)" identifier (argument_list "(peVar4->versioned_name,0x40)" ( (field_expression "peVar4->versioned_name" identifier -> field_identifier) , number_literal )))) ;) (if_statement "if (pcVar6 == (char *)0x0) {\n      *puntp = 1;\n      iVar5 = S_IS_WEAK(symp);\n      goto joined_r0x00055458;\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      *puntp = 1;\n      iVar5 = S_IS_WEAK(symp);\n      goto joined_r0x00055458;\n    }" { (expression_statement "*puntp = 1;" (assignment_expression "*puntp = 1" (pointer_expression "*puntp" * identifier) = number_literal) ;) (expression_statement "iVar5 = S_IS_WEAK(symp);" (assignment_expression "iVar5 = S_IS_WEAK(symp)" identifier = (call_expression "S_IS_WEAK(symp)" identifier (argument_list "(symp)" ( identifier )))) ;) (goto_statement "goto joined_r0x00055458;" goto statement_identifier ;) })) (expression_statement "iVar5 = S_IS_DEFINED(symp);" (assignment_expression "iVar5 = S_IS_DEFINED(symp)" identifier = (call_expression "S_IS_DEFINED(symp)" identifier (argument_list "(symp)" ( identifier )))) ;) (if_statement "if (iVar5 == 0) {\n      pcVar7 = peVar4->versioned_name;\n      if (pcVar6[1] == '@') {\n        pcVar6 = (char *)dcgettext(0,\n                                   "invalid attempt to declare external version name as default in symbol `%s\'"\n                                   ,5);\n        as_bad(pcVar6,pcVar7);\n        pcVar7 = peVar4->versioned_name;\n        *puntp = 1;\n      }\n      S_SET_NAME(symp,pcVar7);\n    }\n    else if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      S_SET_NAME(symp,peVar4->versioned_name);\n    }\n    else {\n      s = symbol_find_or_make(peVar4->versioned_name);\n      iVar5 = S_IS_COMMON(symp);\n      if (iVar5 != 0) {\n        pcVar7 = S_GET_NAME(symp);\n        pcVar6 = peVar4->versioned_name;\n        format = (char *)dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        as_bad(format,pcVar6,pcVar7);\n        *puntp = 1;\n        return;\n      }\n      seg = S_GET_SEGMENT(symp);\n      S_SET_SEGMENT(s,seg);\n      vVar11 = S_GET_VALUE(symp);\n      pfVar8 = symbol_get_frag(symp);\n      local_24 = (uint)vVar11;\n      local_20 = (int)(vVar11 >> 0x20);\n      S_SET_VALUE(s,CONCAT44((local_20 - *(int *)((int)&pfVar8->fr_address + 4)) -\n                             (uint)(local_24 < (uint)pfVar8->fr_address),\n                             local_24 - (int)pfVar8->fr_address));\n      pfVar8 = symbol_get_frag(symp);\n      symbol_set_frag(s,pfVar8);\n      copy_symbol_attributes(s,symp);\n      paVar9 = symbol_get_bfdsym(symp);\n      uVar1 = *(undefined1 *)((int)&paVar9[1].section + 1);\n      paVar9 = symbol_get_bfdsym(s);\n      *(undefined1 *)((int)&paVar9[1].section + 1) = uVar1;\n      iVar5 = S_IS_WEAK(symp);\n      if (iVar5 != 0) {\n        S_SET_WEAK(s);\n      }\n      iVar5 = S_IS_EXTERNAL(symp);\n      if (iVar5 != 0) {\n        S_SET_EXTERNAL(s);\n      }\n    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      pcVar7 = peVar4->versioned_name;\n      if (pcVar6[1] == '@') {\n        pcVar6 = (char *)dcgettext(0,\n                                   "invalid attempt to declare external version name as default in symbol `%s\'"\n                                   ,5);\n        as_bad(pcVar6,pcVar7);\n        pcVar7 = peVar4->versioned_name;\n        *puntp = 1;\n      }\n      S_SET_NAME(symp,pcVar7);\n    }" { (expression_statement "pcVar7 = peVar4->versioned_name;" (assignment_expression "pcVar7 = peVar4->versioned_name" identifier = (field_expression "peVar4->versioned_name" identifier -> field_identifier)) ;) (if_statement "if (pcVar6[1] == '@') {\n        pcVar6 = (char *)dcgettext(0,\n                                   "invalid attempt to declare external version name as default in symbol `%s\'"\n                                   ,5);\n        as_bad(pcVar6,pcVar7);\n        pcVar7 = peVar4->versioned_name;\n        *puntp = 1;\n      }" if (parenthesized_expression "(pcVar6[1] == '@')" ( (binary_expression "pcVar6[1] == '@'" (subscript_expression "pcVar6[1]" identifier [ number_literal ]) == (char_literal "'@'" ' character ')) )) (compound_statement "{\n        pcVar6 = (char *)dcgettext(0,\n                                   "invalid attempt to declare external version name as default in symbol `%s\'"\n                                   ,5);\n        as_bad(pcVar6,pcVar7);\n        pcVar7 = peVar4->versioned_name;\n        *puntp = 1;\n      }" { (expression_statement "pcVar6 = (char *)dcgettext(0,\n                                   "invalid attempt to declare external version name as default in symbol `%s\'"\n                                   ,5);" (assignment_expression "pcVar6 = (char *)dcgettext(0,\n                                   "invalid attempt to declare external version name as default in symbol `%s\'"\n                                   ,5)" identifier = (cast_expression "(char *)dcgettext(0,\n                                   "invalid attempt to declare external version name as default in symbol `%s\'"\n                                   ,5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,\n                                   "invalid attempt to declare external version name as default in symbol `%s\'"\n                                   ,5)" identifier (argument_list "(0,\n                                   "invalid attempt to declare external version name as default in symbol `%s\'"\n                                   ,5)" ( number_literal , (string_literal ""invalid attempt to declare external version name as default in symbol `%s\'"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "as_bad(pcVar6,pcVar7);" (call_expression "as_bad(pcVar6,pcVar7)" identifier (argument_list "(pcVar6,pcVar7)" ( identifier , identifier ))) ;) (expression_statement "pcVar7 = peVar4->versioned_name;" (assignment_expression "pcVar7 = peVar4->versioned_name" identifier = (field_expression "peVar4->versioned_name" identifier -> field_identifier)) ;) (expression_statement "*puntp = 1;" (assignment_expression "*puntp = 1" (pointer_expression "*puntp" * identifier) = number_literal) ;) })) (expression_statement "S_SET_NAME(symp,pcVar7);" (call_expression "S_SET_NAME(symp,pcVar7)" identifier (argument_list "(symp,pcVar7)" ( identifier , identifier ))) ;) }) (else_clause "else if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      S_SET_NAME(symp,peVar4->versioned_name);\n    }\n    else {\n      s = symbol_find_or_make(peVar4->versioned_name);\n      iVar5 = S_IS_COMMON(symp);\n      if (iVar5 != 0) {\n        pcVar7 = S_GET_NAME(symp);\n        pcVar6 = peVar4->versioned_name;\n        format = (char *)dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        as_bad(format,pcVar6,pcVar7);\n        *puntp = 1;\n        return;\n      }\n      seg = S_GET_SEGMENT(symp);\n      S_SET_SEGMENT(s,seg);\n      vVar11 = S_GET_VALUE(symp);\n      pfVar8 = symbol_get_frag(symp);\n      local_24 = (uint)vVar11;\n      local_20 = (int)(vVar11 >> 0x20);\n      S_SET_VALUE(s,CONCAT44((local_20 - *(int *)((int)&pfVar8->fr_address + 4)) -\n                             (uint)(local_24 < (uint)pfVar8->fr_address),\n                             local_24 - (int)pfVar8->fr_address));\n      pfVar8 = symbol_get_frag(symp);\n      symbol_set_frag(s,pfVar8);\n      copy_symbol_attributes(s,symp);\n      paVar9 = symbol_get_bfdsym(symp);\n      uVar1 = *(undefined1 *)((int)&paVar9[1].section + 1);\n      paVar9 = symbol_get_bfdsym(s);\n      *(undefined1 *)((int)&paVar9[1].section + 1) = uVar1;\n      iVar5 = S_IS_WEAK(symp);\n      if (iVar5 != 0) {\n        S_SET_WEAK(s);\n      }\n      iVar5 = S_IS_EXTERNAL(symp);\n      if (iVar5 != 0) {\n        S_SET_EXTERNAL(s);\n      }\n    }" else (if_statement "if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      S_SET_NAME(symp,peVar4->versioned_name);\n    }\n    else {\n      s = symbol_find_or_make(peVar4->versioned_name);\n      iVar5 = S_IS_COMMON(symp);\n      if (iVar5 != 0) {\n        pcVar7 = S_GET_NAME(symp);\n        pcVar6 = peVar4->versioned_name;\n        format = (char *)dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        as_bad(format,pcVar6,pcVar7);\n        *puntp = 1;\n        return;\n      }\n      seg = S_GET_SEGMENT(symp);\n      S_SET_SEGMENT(s,seg);\n      vVar11 = S_GET_VALUE(symp);\n      pfVar8 = symbol_get_frag(symp);\n      local_24 = (uint)vVar11;\n      local_20 = (int)(vVar11 >> 0x20);\n      S_SET_VALUE(s,CONCAT44((local_20 - *(int *)((int)&pfVar8->fr_address + 4)) -\n                             (uint)(local_24 < (uint)pfVar8->fr_address),\n                             local_24 - (int)pfVar8->fr_address));\n      pfVar8 = symbol_get_frag(symp);\n      symbol_set_frag(s,pfVar8);\n      copy_symbol_attributes(s,symp);\n      paVar9 = symbol_get_bfdsym(symp);\n      uVar1 = *(undefined1 *)((int)&paVar9[1].section + 1);\n      paVar9 = symbol_get_bfdsym(s);\n      *(undefined1 *)((int)&paVar9[1].section + 1) = uVar1;\n      iVar5 = S_IS_WEAK(symp);\n      if (iVar5 != 0) {\n        S_SET_WEAK(s);\n      }\n      iVar5 = S_IS_EXTERNAL(symp);\n      if (iVar5 != 0) {\n        S_SET_EXTERNAL(s);\n      }\n    }" if (parenthesized_expression "((pcVar6[1] == '@') && (pcVar6[2] == '@'))" ( (binary_expression "(pcVar6[1] == '@') && (pcVar6[2] == '@')" (parenthesized_expression "(pcVar6[1] == '@')" ( (binary_expression "pcVar6[1] == '@'" (subscript_expression "pcVar6[1]" identifier [ number_literal ]) == (char_literal "'@'" ' character ')) )) && (parenthesized_expression "(pcVar6[2] == '@')" ( (binary_expression "pcVar6[2] == '@'" (subscript_expression "pcVar6[2]" identifier [ number_literal ]) == (char_literal "'@'" ' character ')) ))) )) (compound_statement "{\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      S_SET_NAME(symp,peVar4->versioned_name);\n    }" { (expression_statement "sVar10 = strlen(pcVar6 + 3);" (assignment_expression "sVar10 = strlen(pcVar6 + 3)" identifier = (call_expression "strlen(pcVar6 + 3)" identifier (argument_list "(pcVar6 + 3)" ( (binary_expression "pcVar6 + 3" identifier + number_literal) )))) ;) (expression_statement "memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);" (call_expression "memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1)" identifier (argument_list "(pcVar6 + 2,pcVar6 + 3,sVar10 + 1)" ( (binary_expression "pcVar6 + 2" identifier + number_literal) , (binary_expression "pcVar6 + 3" identifier + number_literal) , (binary_expression "sVar10 + 1" identifier + number_literal) ))) ;) (expression_statement "S_SET_NAME(symp,peVar4->versioned_name);" (call_expression "S_SET_NAME(symp,peVar4->versioned_name)" identifier (argument_list "(symp,peVar4->versioned_name)" ( identifier , (field_expression "peVar4->versioned_name" identifier -> field_identifier) ))) ;) }) (else_clause "else {\n      s = symbol_find_or_make(peVar4->versioned_name);\n      iVar5 = S_IS_COMMON(symp);\n      if (iVar5 != 0) {\n        pcVar7 = S_GET_NAME(symp);\n        pcVar6 = peVar4->versioned_name;\n        format = (char *)dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        as_bad(format,pcVar6,pcVar7);\n        *puntp = 1;\n        return;\n      }\n      seg = S_GET_SEGMENT(symp);\n      S_SET_SEGMENT(s,seg);\n      vVar11 = S_GET_VALUE(symp);\n      pfVar8 = symbol_get_frag(symp);\n      local_24 = (uint)vVar11;\n      local_20 = (int)(vVar11 >> 0x20);\n      S_SET_VALUE(s,CONCAT44((local_20 - *(int *)((int)&pfVar8->fr_address + 4)) -\n                             (uint)(local_24 < (uint)pfVar8->fr_address),\n                             local_24 - (int)pfVar8->fr_address));\n      pfVar8 = symbol_get_frag(symp);\n      symbol_set_frag(s,pfVar8);\n      copy_symbol_attributes(s,symp);\n      paVar9 = symbol_get_bfdsym(symp);\n      uVar1 = *(undefined1 *)((int)&paVar9[1].section + 1);\n      paVar9 = symbol_get_bfdsym(s);\n      *(undefined1 *)((int)&paVar9[1].section + 1) = uVar1;\n      iVar5 = S_IS_WEAK(symp);\n      if (iVar5 != 0) {\n        S_SET_WEAK(s);\n      }\n      iVar5 = S_IS_EXTERNAL(symp);\n      if (iVar5 != 0) {\n        S_SET_EXTERNAL(s);\n      }\n    }" else (compound_statement "{\n      s = symbol_find_or_make(peVar4->versioned_name);\n      iVar5 = S_IS_COMMON(symp);\n      if (iVar5 != 0) {\n        pcVar7 = S_GET_NAME(symp);\n        pcVar6 = peVar4->versioned_name;\n        format = (char *)dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        as_bad(format,pcVar6,pcVar7);\n        *puntp = 1;\n        return;\n      }\n      seg = S_GET_SEGMENT(symp);\n      S_SET_SEGMENT(s,seg);\n      vVar11 = S_GET_VALUE(symp);\n      pfVar8 = symbol_get_frag(symp);\n      local_24 = (uint)vVar11;\n      local_20 = (int)(vVar11 >> 0x20);\n      S_SET_VALUE(s,CONCAT44((local_20 - *(int *)((int)&pfVar8->fr_address + 4)) -\n                             (uint)(local_24 < (uint)pfVar8->fr_address),\n                             local_24 - (int)pfVar8->fr_address));\n      pfVar8 = symbol_get_frag(symp);\n      symbol_set_frag(s,pfVar8);\n      copy_symbol_attributes(s,symp);\n      paVar9 = symbol_get_bfdsym(symp);\n      uVar1 = *(undefined1 *)((int)&paVar9[1].section + 1);\n      paVar9 = symbol_get_bfdsym(s);\n      *(undefined1 *)((int)&paVar9[1].section + 1) = uVar1;\n      iVar5 = S_IS_WEAK(symp);\n      if (iVar5 != 0) {\n        S_SET_WEAK(s);\n      }\n      iVar5 = S_IS_EXTERNAL(symp);\n      if (iVar5 != 0) {\n        S_SET_EXTERNAL(s);\n      }\n    }" { (expression_statement "s = symbol_find_or_make(peVar4->versioned_name);" (assignment_expression "s = symbol_find_or_make(peVar4->versioned_name)" identifier = (call_expression "symbol_find_or_make(peVar4->versioned_name)" identifier (argument_list "(peVar4->versioned_name)" ( (field_expression "peVar4->versioned_name" identifier -> field_identifier) )))) ;) (expression_statement "iVar5 = S_IS_COMMON(symp);" (assignment_expression "iVar5 = S_IS_COMMON(symp)" identifier = (call_expression "S_IS_COMMON(symp)" identifier (argument_list "(symp)" ( identifier )))) ;) (if_statement "if (iVar5 != 0) {\n        pcVar7 = S_GET_NAME(symp);\n        pcVar6 = peVar4->versioned_name;\n        format = (char *)dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        as_bad(format,pcVar6,pcVar7);\n        *puntp = 1;\n        return;\n      }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n        pcVar7 = S_GET_NAME(symp);\n        pcVar6 = peVar4->versioned_name;\n        format = (char *)dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        as_bad(format,pcVar6,pcVar7);\n        *puntp = 1;\n        return;\n      }" { (expression_statement "pcVar7 = S_GET_NAME(symp);" (assignment_expression "pcVar7 = S_GET_NAME(symp)" identifier = (call_expression "S_GET_NAME(symp)" identifier (argument_list "(symp)" ( identifier )))) ;) (expression_statement "pcVar6 = peVar4->versioned_name;" (assignment_expression "pcVar6 = peVar4->versioned_name" identifier = (field_expression "peVar4->versioned_name" identifier -> field_identifier)) ;) (expression_statement "format = (char *)dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);" (assignment_expression "format = (char *)dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5)" identifier = (cast_expression "(char *)dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5)" identifier (argument_list "(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5)" ( number_literal , (string_literal ""`%s\' can\'t be versioned to common symbol \'%s\'"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "as_bad(format,pcVar6,pcVar7);" (call_expression "as_bad(format,pcVar6,pcVar7)" identifier (argument_list "(format,pcVar6,pcVar7)" ( identifier , identifier , identifier ))) ;) (expression_statement "*puntp = 1;" (assignment_expression "*puntp = 1" (pointer_expression "*puntp" * identifier) = number_literal) ;) (return_statement "return;" return ;) })) (expression_statement "seg = S_GET_SEGMENT(symp);" (assignment_expression "seg = S_GET_SEGMENT(symp)" identifier = (call_expression "S_GET_SEGMENT(symp)" identifier (argument_list "(symp)" ( identifier )))) ;) (expression_statement "S_SET_SEGMENT(s,seg);" (call_expression "S_SET_SEGMENT(s,seg)" identifier (argument_list "(s,seg)" ( identifier , identifier ))) ;) (expression_statement "vVar11 = S_GET_VALUE(symp);" (assignment_expression "vVar11 = S_GET_VALUE(symp)" identifier = (call_expression "S_GET_VALUE(symp)" identifier (argument_list "(symp)" ( identifier )))) ;) (expression_statement "pfVar8 = symbol_get_frag(symp);" (assignment_expression "pfVar8 = symbol_get_frag(symp)" identifier = (call_expression "symbol_get_frag(symp)" identifier (argument_list "(symp)" ( identifier )))) ;) (expression_statement "local_24 = (uint)vVar11;" (assignment_expression "local_24 = (uint)vVar11" identifier = (cast_expression "(uint)vVar11" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_20 = (int)(vVar11 >> 0x20);" (assignment_expression "local_20 = (int)(vVar11 >> 0x20)" identifier = (cast_expression "(int)(vVar11 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(vVar11 >> 0x20)" ( (binary_expression "vVar11 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "S_SET_VALUE(s,CONCAT44((local_20 - *(int *)((int)&pfVar8->fr_address + 4)) -\n                             (uint)(local_24 < (uint)pfVar8->fr_address),\n                             local_24 - (int)pfVar8->fr_address));" (call_expression "S_SET_VALUE(s,CONCAT44((local_20 - *(int *)((int)&pfVar8->fr_address + 4)) -\n                             (uint)(local_24 < (uint)pfVar8->fr_address),\n                             local_24 - (int)pfVar8->fr_address))" identifier (argument_list "(s,CONCAT44((local_20 - *(int *)((int)&pfVar8->fr_address + 4)) -\n                             (uint)(local_24 < (uint)pfVar8->fr_address),\n                             local_24 - (int)pfVar8->fr_address))" ( identifier , (call_expression "CONCAT44((local_20 - *(int *)((int)&pfVar8->fr_address + 4)) -\n                             (uint)(local_24 < (uint)pfVar8->fr_address),\n                             local_24 - (int)pfVar8->fr_address)" identifier (argument_list "((local_20 - *(int *)((int)&pfVar8->fr_address + 4)) -\n                             (uint)(local_24 < (uint)pfVar8->fr_address),\n                             local_24 - (int)pfVar8->fr_address)" ( (binary_expression "(local_20 - *(int *)((int)&pfVar8->fr_address + 4)) -\n                             (uint)(local_24 < (uint)pfVar8->fr_address)" (parenthesized_expression "(local_20 - *(int *)((int)&pfVar8->fr_address + 4))" ( (binary_expression "local_20 - *(int *)((int)&pfVar8->fr_address + 4)" identifier - (pointer_expression "*(int *)((int)&pfVar8->fr_address + 4)" * (cast_expression "(int *)((int)&pfVar8->fr_address + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pfVar8->fr_address + 4)" ( (binary_expression "(int)&pfVar8->fr_address + 4" (cast_expression "(int)&pfVar8->fr_address" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pfVar8->fr_address" & (field_expression "pfVar8->fr_address" identifier -> field_identifier))) + number_literal) ))))) )) - (call_expression "(uint)(local_24 < (uint)pfVar8->fr_address)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < (uint)pfVar8->fr_address)" ( (binary_expression "local_24 < (uint)pfVar8->fr_address" identifier < (cast_expression "(uint)pfVar8->fr_address" ( (type_descriptor "uint" type_identifier) ) (field_expression "pfVar8->fr_address" identifier -> field_identifier))) )))) , (binary_expression "local_24 - (int)pfVar8->fr_address" identifier - (cast_expression "(int)pfVar8->fr_address" ( (type_descriptor "int" primitive_type) ) (field_expression "pfVar8->fr_address" identifier -> field_identifier))) ))) ))) ;) (expression_statement "pfVar8 = symbol_get_frag(symp);" (assignment_expression "pfVar8 = symbol_get_frag(symp)" identifier = (call_expression "symbol_get_frag(symp)" identifier (argument_list "(symp)" ( identifier )))) ;) (expression_statement "symbol_set_frag(s,pfVar8);" (call_expression "symbol_set_frag(s,pfVar8)" identifier (argument_list "(s,pfVar8)" ( identifier , identifier ))) ;) (expression_statement "copy_symbol_attributes(s,symp);" (call_expression "copy_symbol_attributes(s,symp)" identifier (argument_list "(s,symp)" ( identifier , identifier ))) ;) (expression_statement "paVar9 = symbol_get_bfdsym(symp);" (assignment_expression "paVar9 = symbol_get_bfdsym(symp)" identifier = (call_expression "symbol_get_bfdsym(symp)" identifier (argument_list "(symp)" ( identifier )))) ;) (expression_statement "uVar1 = *(undefined1 *)((int)&paVar9[1].section + 1);" (assignment_expression "uVar1 = *(undefined1 *)((int)&paVar9[1].section + 1)" identifier = (pointer_expression "*(undefined1 *)((int)&paVar9[1].section + 1)" * (cast_expression "(undefined1 *)((int)&paVar9[1].section + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&paVar9[1].section + 1)" ( (binary_expression "(int)&paVar9[1].section + 1" (cast_expression "(int)&paVar9[1].section" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&paVar9[1].section" & (field_expression "paVar9[1].section" (subscript_expression "paVar9[1]" identifier [ number_literal ]) . field_identifier))) + number_literal) ))))) ;) (expression_statement "paVar9 = symbol_get_bfdsym(s);" (assignment_expression "paVar9 = symbol_get_bfdsym(s)" identifier = (call_expression "symbol_get_bfdsym(s)" identifier (argument_list "(s)" ( identifier )))) ;) (expression_statement "*(undefined1 *)((int)&paVar9[1].section + 1) = uVar1;" (assignment_expression "*(undefined1 *)((int)&paVar9[1].section + 1) = uVar1" (pointer_expression "*(undefined1 *)((int)&paVar9[1].section + 1)" * (cast_expression "(undefined1 *)((int)&paVar9[1].section + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&paVar9[1].section + 1)" ( (binary_expression "(int)&paVar9[1].section + 1" (cast_expression "(int)&paVar9[1].section" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&paVar9[1].section" & (field_expression "paVar9[1].section" (subscript_expression "paVar9[1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "iVar5 = S_IS_WEAK(symp);" (assignment_expression "iVar5 = S_IS_WEAK(symp)" identifier = (call_expression "S_IS_WEAK(symp)" identifier (argument_list "(symp)" ( identifier )))) ;) (if_statement "if (iVar5 != 0) {\n        S_SET_WEAK(s);\n      }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n        S_SET_WEAK(s);\n      }" { (expression_statement "S_SET_WEAK(s);" (call_expression "S_SET_WEAK(s)" identifier (argument_list "(s)" ( identifier ))) ;) })) (expression_statement "iVar5 = S_IS_EXTERNAL(symp);" (assignment_expression "iVar5 = S_IS_EXTERNAL(symp)" identifier = (call_expression "S_IS_EXTERNAL(symp)" identifier (argument_list "(symp)" ( identifier )))) ;) (if_statement "if (iVar5 != 0) {\n        S_SET_EXTERNAL(s);\n      }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n        S_SET_EXTERNAL(s);\n      }" { (expression_statement "S_SET_EXTERNAL(s);" (call_expression "S_SET_EXTERNAL(s)" identifier (argument_list "(s)" ( identifier ))) ;) })) }))))) })) (expression_statement "iVar5 = S_IS_WEAK(symp);" (assignment_expression "iVar5 = S_IS_WEAK(symp)" identifier = (call_expression "S_IS_WEAK(symp)" identifier (argument_list "(symp)" ( identifier )))) ;) (labeled_statement "joined_r0x00055458:\n  if ((iVar5 != 0) && (iVar5 = S_IS_COMMON(symp), iVar5 != 0)) {\n    pcVar6 = S_GET_NAME(symp);\n    pcVar7 = (char *)dcgettext(0,"symbol `%s\' can not be both weak and common",5);\n    as_bad(pcVar7,pcVar6);\n    return;\n  }" statement_identifier : (if_statement "if ((iVar5 != 0) && (iVar5 = S_IS_COMMON(symp), iVar5 != 0)) {\n    pcVar6 = S_GET_NAME(symp);\n    pcVar7 = (char *)dcgettext(0,"symbol `%s\' can not be both weak and common",5);\n    as_bad(pcVar7,pcVar6);\n    return;\n  }" if (parenthesized_expression "((iVar5 != 0) && (iVar5 = S_IS_COMMON(symp), iVar5 != 0))" ( (binary_expression "(iVar5 != 0) && (iVar5 = S_IS_COMMON(symp), iVar5 != 0)" (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar5 = S_IS_COMMON(symp), iVar5 != 0)" ( (comma_expression "iVar5 = S_IS_COMMON(symp), iVar5 != 0" (assignment_expression "iVar5 = S_IS_COMMON(symp)" identifier = (call_expression "S_IS_COMMON(symp)" identifier (argument_list "(symp)" ( identifier )))) , (binary_expression "iVar5 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    pcVar6 = S_GET_NAME(symp);\n    pcVar7 = (char *)dcgettext(0,"symbol `%s\' can not be both weak and common",5);\n    as_bad(pcVar7,pcVar6);\n    return;\n  }" { (expression_statement "pcVar6 = S_GET_NAME(symp);" (assignment_expression "pcVar6 = S_GET_NAME(symp)" identifier = (call_expression "S_GET_NAME(symp)" identifier (argument_list "(symp)" ( identifier )))) ;) (expression_statement "pcVar7 = (char *)dcgettext(0,"symbol `%s\' can not be both weak and common",5);" (assignment_expression "pcVar7 = (char *)dcgettext(0,"symbol `%s\' can not be both weak and common",5)" identifier = (cast_expression "(char *)dcgettext(0,"symbol `%s\' can not be both weak and common",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"symbol `%s\' can not be both weak and common",5)" identifier (argument_list "(0,"symbol `%s\' can not be both weak and common",5)" ( number_literal , (string_literal ""symbol `%s\' can not be both weak and common"" " string_content escape_sequence string_content ") , number_literal ))))) ;) (expression_statement "as_bad(pcVar7,pcVar6);" (call_expression "as_bad(pcVar7,pcVar6)" identifier (argument_list "(pcVar7,pcVar6)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) }))) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00055350(undefined4 param_1,undefined4 *param_2)\n\n{\n  undefined1 uVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  char *pcVar6;\n  int iVar7;\n  uint *puVar8;\n  undefined4 uVar9;\n  size_t sVar10;\n  undefined8 uVar11;\n  \n  iVar2 = FUN_0003be90(param_1);\n  iVar7 = *(int *)(iVar2 + 4);\n  if (iVar7 != 0) {\n    iVar3 = FUN_00021620(iVar7);\n    if ((iVar3 == 0) || (*(char *)(iVar7 + 0x10) != '\x02')) {\n      if (DAT_00089800 == 0) {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bd60(uVar5,uVar4);\n      }\n      else {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bc80(uVar5,uVar4);\n      }\n    }\n    else {\n      uVar4 = *(undefined4 *)(iVar7 + 0xc);\n      uVar5 = *(undefined4 *)(iVar7 + 8);\n      iVar7 = FUN_0003bdf0(param_1);\n      *(undefined4 *)(iVar7 + 0x28) = uVar5;\n      *(undefined4 *)(iVar7 + 0x2c) = uVar4;\n    }\n    free(*(void **)(iVar2 + 4));\n    *(undefined4 *)(iVar2 + 4) = 0;\n  }\n  if (*(char **)(iVar2 + 8) != (char *)0x0) {\n    pcVar6 = strchr(*(char **)(iVar2 + 8),0x40);\n    if (pcVar6 == (char *)0x0) {\n      *param_2 = 1;\n      iVar7 = FUN_00038580(param_1);\n      goto joined_r0x00055458;\n    }\n    iVar7 = FUN_000386c0(param_1);\n    if (iVar7 == 0) {\n      uVar4 = *(undefined4 *)(iVar2 + 8);\n      if (pcVar6[1] == '@') {\n        uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5);\n        FUN_0002bd60(uVar5,uVar4);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        *param_2 = 1;\n      }\n      FUN_0003b3c0(param_1,uVar4);\n    }\n    else if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8));\n    }\n    else {\n      uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));\n      iVar7 = FUN_00038670(param_1);\n      if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }\n      uVar5 = FUN_00038ac0(param_1);\n      FUN_00038b00(uVar4,uVar5);\n      uVar11 = FUN_0003a3c0(param_1);\n      puVar8 = (uint *)FUN_0003b830(param_1);\n      FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));\n      uVar5 = FUN_0003b830(param_1);\n      FUN_0003b780(uVar4,uVar5);\n      FUN_00038e30(uVar4,param_1);\n      iVar7 = FUN_0003bdf0(param_1);\n      uVar1 = *(undefined1 *)(iVar7 + 0x35);\n      iVar7 = FUN_0003bdf0(uVar4);\n      *(undefined1 *)(iVar7 + 0x35) = uVar1;\n      iVar7 = FUN_00038580(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }\n      iVar7 = FUN_00038510(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }\n    }\n  }\n  iVar7 = FUN_00038580(param_1);\njoined_r0x00055458:\n  if ((iVar7 != 0) && (iVar7 = FUN_00038670(param_1), iVar7 != 0)) {\n    uVar4 = FUN_00038a80(param_1);\n    uVar5 = dcgettext(0,"symbol `%s\' can not be both weak and common",5);\n    FUN_0002bd60(uVar5,uVar4);\n    return;\n  }\n  return;\n}\n\n" (function_definition "void FUN_00055350(undefined4 param_1,undefined4 *param_2)\n\n{\n  undefined1 uVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  char *pcVar6;\n  int iVar7;\n  uint *puVar8;\n  undefined4 uVar9;\n  size_t sVar10;\n  undefined8 uVar11;\n  \n  iVar2 = FUN_0003be90(param_1);\n  iVar7 = *(int *)(iVar2 + 4);\n  if (iVar7 != 0) {\n    iVar3 = FUN_00021620(iVar7);\n    if ((iVar3 == 0) || (*(char *)(iVar7 + 0x10) != '\x02')) {\n      if (DAT_00089800 == 0) {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bd60(uVar5,uVar4);\n      }\n      else {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bc80(uVar5,uVar4);\n      }\n    }\n    else {\n      uVar4 = *(undefined4 *)(iVar7 + 0xc);\n      uVar5 = *(undefined4 *)(iVar7 + 8);\n      iVar7 = FUN_0003bdf0(param_1);\n      *(undefined4 *)(iVar7 + 0x28) = uVar5;\n      *(undefined4 *)(iVar7 + 0x2c) = uVar4;\n    }\n    free(*(void **)(iVar2 + 4));\n    *(undefined4 *)(iVar2 + 4) = 0;\n  }\n  if (*(char **)(iVar2 + 8) != (char *)0x0) {\n    pcVar6 = strchr(*(char **)(iVar2 + 8),0x40);\n    if (pcVar6 == (char *)0x0) {\n      *param_2 = 1;\n      iVar7 = FUN_00038580(param_1);\n      goto joined_r0x00055458;\n    }\n    iVar7 = FUN_000386c0(param_1);\n    if (iVar7 == 0) {\n      uVar4 = *(undefined4 *)(iVar2 + 8);\n      if (pcVar6[1] == '@') {\n        uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5);\n        FUN_0002bd60(uVar5,uVar4);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        *param_2 = 1;\n      }\n      FUN_0003b3c0(param_1,uVar4);\n    }\n    else if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8));\n    }\n    else {\n      uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));\n      iVar7 = FUN_00038670(param_1);\n      if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }\n      uVar5 = FUN_00038ac0(param_1);\n      FUN_00038b00(uVar4,uVar5);\n      uVar11 = FUN_0003a3c0(param_1);\n      puVar8 = (uint *)FUN_0003b830(param_1);\n      FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));\n      uVar5 = FUN_0003b830(param_1);\n      FUN_0003b780(uVar4,uVar5);\n      FUN_00038e30(uVar4,param_1);\n      iVar7 = FUN_0003bdf0(param_1);\n      uVar1 = *(undefined1 *)(iVar7 + 0x35);\n      iVar7 = FUN_0003bdf0(uVar4);\n      *(undefined1 *)(iVar7 + 0x35) = uVar1;\n      iVar7 = FUN_00038580(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }\n      iVar7 = FUN_00038510(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }\n    }\n  }\n  iVar7 = FUN_00038580(param_1);\njoined_r0x00055458:\n  if ((iVar7 != 0) && (iVar7 = FUN_00038670(param_1), iVar7 != 0)) {\n    uVar4 = FUN_00038a80(param_1);\n    uVar5 = dcgettext(0,"symbol `%s\' can not be both weak and common",5);\n    FUN_0002bd60(uVar5,uVar4);\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00055350(undefined4 param_1,undefined4 *param_2)" identifier (parameter_list "(undefined4 param_1,undefined4 *param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined1 uVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  char *pcVar6;\n  int iVar7;\n  uint *puVar8;\n  undefined4 uVar9;\n  size_t sVar10;\n  undefined8 uVar11;\n  \n  iVar2 = FUN_0003be90(param_1);\n  iVar7 = *(int *)(iVar2 + 4);\n  if (iVar7 != 0) {\n    iVar3 = FUN_00021620(iVar7);\n    if ((iVar3 == 0) || (*(char *)(iVar7 + 0x10) != '\x02')) {\n      if (DAT_00089800 == 0) {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bd60(uVar5,uVar4);\n      }\n      else {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bc80(uVar5,uVar4);\n      }\n    }\n    else {\n      uVar4 = *(undefined4 *)(iVar7 + 0xc);\n      uVar5 = *(undefined4 *)(iVar7 + 8);\n      iVar7 = FUN_0003bdf0(param_1);\n      *(undefined4 *)(iVar7 + 0x28) = uVar5;\n      *(undefined4 *)(iVar7 + 0x2c) = uVar4;\n    }\n    free(*(void **)(iVar2 + 4));\n    *(undefined4 *)(iVar2 + 4) = 0;\n  }\n  if (*(char **)(iVar2 + 8) != (char *)0x0) {\n    pcVar6 = strchr(*(char **)(iVar2 + 8),0x40);\n    if (pcVar6 == (char *)0x0) {\n      *param_2 = 1;\n      iVar7 = FUN_00038580(param_1);\n      goto joined_r0x00055458;\n    }\n    iVar7 = FUN_000386c0(param_1);\n    if (iVar7 == 0) {\n      uVar4 = *(undefined4 *)(iVar2 + 8);\n      if (pcVar6[1] == '@') {\n        uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5);\n        FUN_0002bd60(uVar5,uVar4);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        *param_2 = 1;\n      }\n      FUN_0003b3c0(param_1,uVar4);\n    }\n    else if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8));\n    }\n    else {\n      uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));\n      iVar7 = FUN_00038670(param_1);\n      if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }\n      uVar5 = FUN_00038ac0(param_1);\n      FUN_00038b00(uVar4,uVar5);\n      uVar11 = FUN_0003a3c0(param_1);\n      puVar8 = (uint *)FUN_0003b830(param_1);\n      FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));\n      uVar5 = FUN_0003b830(param_1);\n      FUN_0003b780(uVar4,uVar5);\n      FUN_00038e30(uVar4,param_1);\n      iVar7 = FUN_0003bdf0(param_1);\n      uVar1 = *(undefined1 *)(iVar7 + 0x35);\n      iVar7 = FUN_0003bdf0(uVar4);\n      *(undefined1 *)(iVar7 + 0x35) = uVar1;\n      iVar7 = FUN_00038580(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }\n      iVar7 = FUN_00038510(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }\n    }\n  }\n  iVar7 = FUN_00038580(param_1);\njoined_r0x00055458:\n  if ((iVar7 != 0) && (iVar7 = FUN_00038670(param_1), iVar7 != 0)) {\n    uVar4 = FUN_00038a80(param_1);\n    uVar5 = dcgettext(0,"symbol `%s\' can not be both weak and common",5);\n    FUN_0002bd60(uVar5,uVar4);\n    return;\n  }\n  return;\n}" { (declaration "undefined1 uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "size_t sVar10;" primitive_type identifier ;) (declaration "undefined8 uVar11;" type_identifier identifier ;) (expression_statement "iVar2 = FUN_0003be90(param_1);" (assignment_expression "iVar2 = FUN_0003be90(param_1)" identifier = (call_expression "FUN_0003be90(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "iVar7 = *(int *)(iVar2 + 4);" (assignment_expression "iVar7 = *(int *)(iVar2 + 4)" identifier = (pointer_expression "*(int *)(iVar2 + 4)" * (cast_expression "(int *)(iVar2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) ))))) ;) (if_statement "if (iVar7 != 0) {\n    iVar3 = FUN_00021620(iVar7);\n    if ((iVar3 == 0) || (*(char *)(iVar7 + 0x10) != '\x02')) {\n      if (DAT_00089800 == 0) {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bd60(uVar5,uVar4);\n      }\n      else {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bc80(uVar5,uVar4);\n      }\n    }\n    else {\n      uVar4 = *(undefined4 *)(iVar7 + 0xc);\n      uVar5 = *(undefined4 *)(iVar7 + 8);\n      iVar7 = FUN_0003bdf0(param_1);\n      *(undefined4 *)(iVar7 + 0x28) = uVar5;\n      *(undefined4 *)(iVar7 + 0x2c) = uVar4;\n    }\n    free(*(void **)(iVar2 + 4));\n    *(undefined4 *)(iVar2 + 4) = 0;\n  }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar3 = FUN_00021620(iVar7);\n    if ((iVar3 == 0) || (*(char *)(iVar7 + 0x10) != '\x02')) {\n      if (DAT_00089800 == 0) {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bd60(uVar5,uVar4);\n      }\n      else {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bc80(uVar5,uVar4);\n      }\n    }\n    else {\n      uVar4 = *(undefined4 *)(iVar7 + 0xc);\n      uVar5 = *(undefined4 *)(iVar7 + 8);\n      iVar7 = FUN_0003bdf0(param_1);\n      *(undefined4 *)(iVar7 + 0x28) = uVar5;\n      *(undefined4 *)(iVar7 + 0x2c) = uVar4;\n    }\n    free(*(void **)(iVar2 + 4));\n    *(undefined4 *)(iVar2 + 4) = 0;\n  }" { (expression_statement "iVar3 = FUN_00021620(iVar7);" (assignment_expression "iVar3 = FUN_00021620(iVar7)" identifier = (call_expression "FUN_00021620(iVar7)" identifier (argument_list "(iVar7)" ( identifier )))) ;) (if_statement "if ((iVar3 == 0) || (*(char *)(iVar7 + 0x10) != '\x02')) {\n      if (DAT_00089800 == 0) {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bd60(uVar5,uVar4);\n      }\n      else {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bc80(uVar5,uVar4);\n      }\n    }\n    else {\n      uVar4 = *(undefined4 *)(iVar7 + 0xc);\n      uVar5 = *(undefined4 *)(iVar7 + 8);\n      iVar7 = FUN_0003bdf0(param_1);\n      *(undefined4 *)(iVar7 + 0x28) = uVar5;\n      *(undefined4 *)(iVar7 + 0x2c) = uVar4;\n    }" if (parenthesized_expression "((iVar3 == 0) || (*(char *)(iVar7 + 0x10) != '\x02'))" ( (binary_expression "(iVar3 == 0) || (*(char *)(iVar7 + 0x10) != '\x02')" (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) || (parenthesized_expression "(*(char *)(iVar7 + 0x10) != '\x02')" ( (binary_expression "*(char *)(iVar7 + 0x10) != '\x02'" (pointer_expression "*(char *)(iVar7 + 0x10)" * (cast_expression "(char *)(iVar7 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x10)" ( (binary_expression "iVar7 + 0x10" identifier + number_literal) )))) != (char_literal "'\x02'" ' escape_sequence ')) ))) )) (compound_statement "{\n      if (DAT_00089800 == 0) {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bd60(uVar5,uVar4);\n      }\n      else {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bc80(uVar5,uVar4);\n      }\n    }" { (if_statement "if (DAT_00089800 == 0) {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bd60(uVar5,uVar4);\n      }\n      else {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bc80(uVar5,uVar4);\n      }" if (parenthesized_expression "(DAT_00089800 == 0)" ( (binary_expression "DAT_00089800 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bd60(uVar5,uVar4);\n      }" { (expression_statement "uVar4 = FUN_00038a80(param_1);" (assignment_expression "uVar4 = FUN_00038a80(param_1)" identifier = (call_expression "FUN_00038a80(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);" (assignment_expression "uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5)" identifier = (call_expression "dcgettext(0,".size expression for %s does not evaluate to a constant",5)" identifier (argument_list "(0,".size expression for %s does not evaluate to a constant",5)" ( number_literal , (string_literal "".size expression for %s does not evaluate to a constant"" " string_content ") , number_literal )))) ;) (expression_statement "FUN_0002bd60(uVar5,uVar4);" (call_expression "FUN_0002bd60(uVar5,uVar4)" identifier (argument_list "(uVar5,uVar4)" ( identifier , identifier ))) ;) }) (else_clause "else {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bc80(uVar5,uVar4);\n      }" else (compound_statement "{\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bc80(uVar5,uVar4);\n      }" { (expression_statement "uVar4 = FUN_00038a80(param_1);" (assignment_expression "uVar4 = FUN_00038a80(param_1)" identifier = (call_expression "FUN_00038a80(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);" (assignment_expression "uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5)" identifier = (call_expression "dcgettext(0,".size expression for %s does not evaluate to a constant",5)" identifier (argument_list "(0,".size expression for %s does not evaluate to a constant",5)" ( number_literal , (string_literal "".size expression for %s does not evaluate to a constant"" " string_content ") , number_literal )))) ;) (expression_statement "FUN_0002bc80(uVar5,uVar4);" (call_expression "FUN_0002bc80(uVar5,uVar4)" identifier (argument_list "(uVar5,uVar4)" ( identifier , identifier ))) ;) }))) }) (else_clause "else {\n      uVar4 = *(undefined4 *)(iVar7 + 0xc);\n      uVar5 = *(undefined4 *)(iVar7 + 8);\n      iVar7 = FUN_0003bdf0(param_1);\n      *(undefined4 *)(iVar7 + 0x28) = uVar5;\n      *(undefined4 *)(iVar7 + 0x2c) = uVar4;\n    }" else (compound_statement "{\n      uVar4 = *(undefined4 *)(iVar7 + 0xc);\n      uVar5 = *(undefined4 *)(iVar7 + 8);\n      iVar7 = FUN_0003bdf0(param_1);\n      *(undefined4 *)(iVar7 + 0x28) = uVar5;\n      *(undefined4 *)(iVar7 + 0x2c) = uVar4;\n    }" { (expression_statement "uVar4 = *(undefined4 *)(iVar7 + 0xc);" (assignment_expression "uVar4 = *(undefined4 *)(iVar7 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(iVar7 + 0xc)" * (cast_expression "(undefined4 *)(iVar7 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0xc)" ( (binary_expression "iVar7 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(undefined4 *)(iVar7 + 8);" (assignment_expression "uVar5 = *(undefined4 *)(iVar7 + 8)" identifier = (pointer_expression "*(undefined4 *)(iVar7 + 8)" * (cast_expression "(undefined4 *)(iVar7 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 8)" ( (binary_expression "iVar7 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = FUN_0003bdf0(param_1);" (assignment_expression "iVar7 = FUN_0003bdf0(param_1)" identifier = (call_expression "FUN_0003bdf0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined4 *)(iVar7 + 0x28) = uVar5;" (assignment_expression "*(undefined4 *)(iVar7 + 0x28) = uVar5" (pointer_expression "*(undefined4 *)(iVar7 + 0x28)" * (cast_expression "(undefined4 *)(iVar7 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x28)" ( (binary_expression "iVar7 + 0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar7 + 0x2c) = uVar4;" (assignment_expression "*(undefined4 *)(iVar7 + 0x2c) = uVar4" (pointer_expression "*(undefined4 *)(iVar7 + 0x2c)" * (cast_expression "(undefined4 *)(iVar7 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x2c)" ( (binary_expression "iVar7 + 0x2c" identifier + number_literal) )))) = identifier) ;) }))) (expression_statement "free(*(void **)(iVar2 + 4));" (call_expression "free(*(void **)(iVar2 + 4))" identifier (argument_list "(*(void **)(iVar2 + 4))" ( (pointer_expression "*(void **)(iVar2 + 4)" * (cast_expression "(void **)(iVar2 + 4)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(iVar2 + 4) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 4) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 4)" * (cast_expression "(undefined4 *)(iVar2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) )))) = number_literal) ;) })) (if_statement "if (*(char **)(iVar2 + 8) != (char *)0x0) {\n    pcVar6 = strchr(*(char **)(iVar2 + 8),0x40);\n    if (pcVar6 == (char *)0x0) {\n      *param_2 = 1;\n      iVar7 = FUN_00038580(param_1);\n      goto joined_r0x00055458;\n    }\n    iVar7 = FUN_000386c0(param_1);\n    if (iVar7 == 0) {\n      uVar4 = *(undefined4 *)(iVar2 + 8);\n      if (pcVar6[1] == '@') {\n        uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5);\n        FUN_0002bd60(uVar5,uVar4);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        *param_2 = 1;\n      }\n      FUN_0003b3c0(param_1,uVar4);\n    }\n    else if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8));\n    }\n    else {\n      uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));\n      iVar7 = FUN_00038670(param_1);\n      if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }\n      uVar5 = FUN_00038ac0(param_1);\n      FUN_00038b00(uVar4,uVar5);\n      uVar11 = FUN_0003a3c0(param_1);\n      puVar8 = (uint *)FUN_0003b830(param_1);\n      FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));\n      uVar5 = FUN_0003b830(param_1);\n      FUN_0003b780(uVar4,uVar5);\n      FUN_00038e30(uVar4,param_1);\n      iVar7 = FUN_0003bdf0(param_1);\n      uVar1 = *(undefined1 *)(iVar7 + 0x35);\n      iVar7 = FUN_0003bdf0(uVar4);\n      *(undefined1 *)(iVar7 + 0x35) = uVar1;\n      iVar7 = FUN_00038580(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }\n      iVar7 = FUN_00038510(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }\n    }\n  }" if (parenthesized_expression "(*(char **)(iVar2 + 8) != (char *)0x0)" ( (binary_expression "*(char **)(iVar2 + 8) != (char *)0x0" (pointer_expression "*(char **)(iVar2 + 8)" * (cast_expression "(char **)(iVar2 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) )))) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar6 = strchr(*(char **)(iVar2 + 8),0x40);\n    if (pcVar6 == (char *)0x0) {\n      *param_2 = 1;\n      iVar7 = FUN_00038580(param_1);\n      goto joined_r0x00055458;\n    }\n    iVar7 = FUN_000386c0(param_1);\n    if (iVar7 == 0) {\n      uVar4 = *(undefined4 *)(iVar2 + 8);\n      if (pcVar6[1] == '@') {\n        uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5);\n        FUN_0002bd60(uVar5,uVar4);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        *param_2 = 1;\n      }\n      FUN_0003b3c0(param_1,uVar4);\n    }\n    else if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8));\n    }\n    else {\n      uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));\n      iVar7 = FUN_00038670(param_1);\n      if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }\n      uVar5 = FUN_00038ac0(param_1);\n      FUN_00038b00(uVar4,uVar5);\n      uVar11 = FUN_0003a3c0(param_1);\n      puVar8 = (uint *)FUN_0003b830(param_1);\n      FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));\n      uVar5 = FUN_0003b830(param_1);\n      FUN_0003b780(uVar4,uVar5);\n      FUN_00038e30(uVar4,param_1);\n      iVar7 = FUN_0003bdf0(param_1);\n      uVar1 = *(undefined1 *)(iVar7 + 0x35);\n      iVar7 = FUN_0003bdf0(uVar4);\n      *(undefined1 *)(iVar7 + 0x35) = uVar1;\n      iVar7 = FUN_00038580(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }\n      iVar7 = FUN_00038510(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }\n    }\n  }" { (expression_statement "pcVar6 = strchr(*(char **)(iVar2 + 8),0x40);" (assignment_expression "pcVar6 = strchr(*(char **)(iVar2 + 8),0x40)" identifier = (call_expression "strchr(*(char **)(iVar2 + 8),0x40)" identifier (argument_list "(*(char **)(iVar2 + 8),0x40)" ( (pointer_expression "*(char **)(iVar2 + 8)" * (cast_expression "(char **)(iVar2 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) )))) , number_literal )))) ;) (if_statement "if (pcVar6 == (char *)0x0) {\n      *param_2 = 1;\n      iVar7 = FUN_00038580(param_1);\n      goto joined_r0x00055458;\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      *param_2 = 1;\n      iVar7 = FUN_00038580(param_1);\n      goto joined_r0x00055458;\n    }" { (expression_statement "*param_2 = 1;" (assignment_expression "*param_2 = 1" (pointer_expression "*param_2" * identifier) = number_literal) ;) (expression_statement "iVar7 = FUN_00038580(param_1);" (assignment_expression "iVar7 = FUN_00038580(param_1)" identifier = (call_expression "FUN_00038580(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (goto_statement "goto joined_r0x00055458;" goto statement_identifier ;) })) (expression_statement "iVar7 = FUN_000386c0(param_1);" (assignment_expression "iVar7 = FUN_000386c0(param_1)" identifier = (call_expression "FUN_000386c0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar7 == 0) {\n      uVar4 = *(undefined4 *)(iVar2 + 8);\n      if (pcVar6[1] == '@') {\n        uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5);\n        FUN_0002bd60(uVar5,uVar4);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        *param_2 = 1;\n      }\n      FUN_0003b3c0(param_1,uVar4);\n    }\n    else if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8));\n    }\n    else {\n      uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));\n      iVar7 = FUN_00038670(param_1);\n      if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }\n      uVar5 = FUN_00038ac0(param_1);\n      FUN_00038b00(uVar4,uVar5);\n      uVar11 = FUN_0003a3c0(param_1);\n      puVar8 = (uint *)FUN_0003b830(param_1);\n      FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));\n      uVar5 = FUN_0003b830(param_1);\n      FUN_0003b780(uVar4,uVar5);\n      FUN_00038e30(uVar4,param_1);\n      iVar7 = FUN_0003bdf0(param_1);\n      uVar1 = *(undefined1 *)(iVar7 + 0x35);\n      iVar7 = FUN_0003bdf0(uVar4);\n      *(undefined1 *)(iVar7 + 0x35) = uVar1;\n      iVar7 = FUN_00038580(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }\n      iVar7 = FUN_00038510(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }\n    }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar4 = *(undefined4 *)(iVar2 + 8);\n      if (pcVar6[1] == '@') {\n        uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5);\n        FUN_0002bd60(uVar5,uVar4);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        *param_2 = 1;\n      }\n      FUN_0003b3c0(param_1,uVar4);\n    }" { (expression_statement "uVar4 = *(undefined4 *)(iVar2 + 8);" (assignment_expression "uVar4 = *(undefined4 *)(iVar2 + 8)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + 8)" * (cast_expression "(undefined4 *)(iVar2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) ))))) ;) (if_statement "if (pcVar6[1] == '@') {\n        uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5);\n        FUN_0002bd60(uVar5,uVar4);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        *param_2 = 1;\n      }" if (parenthesized_expression "(pcVar6[1] == '@')" ( (binary_expression "pcVar6[1] == '@'" (subscript_expression "pcVar6[1]" identifier [ number_literal ]) == (char_literal "'@'" ' character ')) )) (compound_statement "{\n        uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5);\n        FUN_0002bd60(uVar5,uVar4);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        *param_2 = 1;\n      }" { (expression_statement "uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5);" (assignment_expression "uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5)" identifier = (call_expression "dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5)" identifier (argument_list "(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5)" ( number_literal , (string_literal ""invalid attempt to declare external version name as default in symbol `%s\'"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_0002bd60(uVar5,uVar4);" (call_expression "FUN_0002bd60(uVar5,uVar4)" identifier (argument_list "(uVar5,uVar4)" ( identifier , identifier ))) ;) (expression_statement "uVar4 = *(undefined4 *)(iVar2 + 8);" (assignment_expression "uVar4 = *(undefined4 *)(iVar2 + 8)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + 8)" * (cast_expression "(undefined4 *)(iVar2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) ))))) ;) (expression_statement "*param_2 = 1;" (assignment_expression "*param_2 = 1" (pointer_expression "*param_2" * identifier) = number_literal) ;) })) (expression_statement "FUN_0003b3c0(param_1,uVar4);" (call_expression "FUN_0003b3c0(param_1,uVar4)" identifier (argument_list "(param_1,uVar4)" ( identifier , identifier ))) ;) }) (else_clause "else if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8));\n    }\n    else {\n      uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));\n      iVar7 = FUN_00038670(param_1);\n      if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }\n      uVar5 = FUN_00038ac0(param_1);\n      FUN_00038b00(uVar4,uVar5);\n      uVar11 = FUN_0003a3c0(param_1);\n      puVar8 = (uint *)FUN_0003b830(param_1);\n      FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));\n      uVar5 = FUN_0003b830(param_1);\n      FUN_0003b780(uVar4,uVar5);\n      FUN_00038e30(uVar4,param_1);\n      iVar7 = FUN_0003bdf0(param_1);\n      uVar1 = *(undefined1 *)(iVar7 + 0x35);\n      iVar7 = FUN_0003bdf0(uVar4);\n      *(undefined1 *)(iVar7 + 0x35) = uVar1;\n      iVar7 = FUN_00038580(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }\n      iVar7 = FUN_00038510(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }\n    }" else (if_statement "if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8));\n    }\n    else {\n      uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));\n      iVar7 = FUN_00038670(param_1);\n      if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }\n      uVar5 = FUN_00038ac0(param_1);\n      FUN_00038b00(uVar4,uVar5);\n      uVar11 = FUN_0003a3c0(param_1);\n      puVar8 = (uint *)FUN_0003b830(param_1);\n      FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));\n      uVar5 = FUN_0003b830(param_1);\n      FUN_0003b780(uVar4,uVar5);\n      FUN_00038e30(uVar4,param_1);\n      iVar7 = FUN_0003bdf0(param_1);\n      uVar1 = *(undefined1 *)(iVar7 + 0x35);\n      iVar7 = FUN_0003bdf0(uVar4);\n      *(undefined1 *)(iVar7 + 0x35) = uVar1;\n      iVar7 = FUN_00038580(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }\n      iVar7 = FUN_00038510(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }\n    }" if (parenthesized_expression "((pcVar6[1] == '@') && (pcVar6[2] == '@'))" ( (binary_expression "(pcVar6[1] == '@') && (pcVar6[2] == '@')" (parenthesized_expression "(pcVar6[1] == '@')" ( (binary_expression "pcVar6[1] == '@'" (subscript_expression "pcVar6[1]" identifier [ number_literal ]) == (char_literal "'@'" ' character ')) )) && (parenthesized_expression "(pcVar6[2] == '@')" ( (binary_expression "pcVar6[2] == '@'" (subscript_expression "pcVar6[2]" identifier [ number_literal ]) == (char_literal "'@'" ' character ')) ))) )) (compound_statement "{\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8));\n    }" { (expression_statement "sVar10 = strlen(pcVar6 + 3);" (assignment_expression "sVar10 = strlen(pcVar6 + 3)" identifier = (call_expression "strlen(pcVar6 + 3)" identifier (argument_list "(pcVar6 + 3)" ( (binary_expression "pcVar6 + 3" identifier + number_literal) )))) ;) (expression_statement "memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);" (call_expression "memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1)" identifier (argument_list "(pcVar6 + 2,pcVar6 + 3,sVar10 + 1)" ( (binary_expression "pcVar6 + 2" identifier + number_literal) , (binary_expression "pcVar6 + 3" identifier + number_literal) , (binary_expression "sVar10 + 1" identifier + number_literal) ))) ;) (expression_statement "FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8));" (call_expression "FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8))" identifier (argument_list "(param_1,*(undefined4 *)(iVar2 + 8))" ( identifier , (pointer_expression "*(undefined4 *)(iVar2 + 8)" * (cast_expression "(undefined4 *)(iVar2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) )))) ))) ;) }) (else_clause "else {\n      uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));\n      iVar7 = FUN_00038670(param_1);\n      if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }\n      uVar5 = FUN_00038ac0(param_1);\n      FUN_00038b00(uVar4,uVar5);\n      uVar11 = FUN_0003a3c0(param_1);\n      puVar8 = (uint *)FUN_0003b830(param_1);\n      FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));\n      uVar5 = FUN_0003b830(param_1);\n      FUN_0003b780(uVar4,uVar5);\n      FUN_00038e30(uVar4,param_1);\n      iVar7 = FUN_0003bdf0(param_1);\n      uVar1 = *(undefined1 *)(iVar7 + 0x35);\n      iVar7 = FUN_0003bdf0(uVar4);\n      *(undefined1 *)(iVar7 + 0x35) = uVar1;\n      iVar7 = FUN_00038580(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }\n      iVar7 = FUN_00038510(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }\n    }" else (compound_statement "{\n      uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));\n      iVar7 = FUN_00038670(param_1);\n      if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }\n      uVar5 = FUN_00038ac0(param_1);\n      FUN_00038b00(uVar4,uVar5);\n      uVar11 = FUN_0003a3c0(param_1);\n      puVar8 = (uint *)FUN_0003b830(param_1);\n      FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));\n      uVar5 = FUN_0003b830(param_1);\n      FUN_0003b780(uVar4,uVar5);\n      FUN_00038e30(uVar4,param_1);\n      iVar7 = FUN_0003bdf0(param_1);\n      uVar1 = *(undefined1 *)(iVar7 + 0x35);\n      iVar7 = FUN_0003bdf0(uVar4);\n      *(undefined1 *)(iVar7 + 0x35) = uVar1;\n      iVar7 = FUN_00038580(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }\n      iVar7 = FUN_00038510(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }\n    }" { (expression_statement "uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));" (assignment_expression "uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8))" identifier = (call_expression "FUN_0003a9e0(*(undefined4 *)(iVar2 + 8))" identifier (argument_list "(*(undefined4 *)(iVar2 + 8))" ( (pointer_expression "*(undefined4 *)(iVar2 + 8)" * (cast_expression "(undefined4 *)(iVar2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "iVar7 = FUN_00038670(param_1);" (assignment_expression "iVar7 = FUN_00038670(param_1)" identifier = (call_expression "FUN_00038670(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }" { (expression_statement "uVar5 = FUN_00038a80(param_1);" (assignment_expression "uVar5 = FUN_00038a80(param_1)" identifier = (call_expression "FUN_00038a80(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "uVar4 = *(undefined4 *)(iVar2 + 8);" (assignment_expression "uVar4 = *(undefined4 *)(iVar2 + 8)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + 8)" * (cast_expression "(undefined4 *)(iVar2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);" (assignment_expression "uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5)" identifier = (call_expression "dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5)" identifier (argument_list "(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5)" ( number_literal , (string_literal ""`%s\' can\'t be versioned to common symbol \'%s\'"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_0002bd60(uVar9,uVar4,uVar5);" (call_expression "FUN_0002bd60(uVar9,uVar4,uVar5)" identifier (argument_list "(uVar9,uVar4,uVar5)" ( identifier , identifier , identifier ))) ;) (expression_statement "*param_2 = 1;" (assignment_expression "*param_2 = 1" (pointer_expression "*param_2" * identifier) = number_literal) ;) (return_statement "return;" return ;) })) (expression_statement "uVar5 = FUN_00038ac0(param_1);" (assignment_expression "uVar5 = FUN_00038ac0(param_1)" identifier = (call_expression "FUN_00038ac0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "FUN_00038b00(uVar4,uVar5);" (call_expression "FUN_00038b00(uVar4,uVar5)" identifier (argument_list "(uVar4,uVar5)" ( identifier , identifier ))) ;) (expression_statement "uVar11 = FUN_0003a3c0(param_1);" (assignment_expression "uVar11 = FUN_0003a3c0(param_1)" identifier = (call_expression "FUN_0003a3c0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "puVar8 = (uint *)FUN_0003b830(param_1);" (assignment_expression "puVar8 = (uint *)FUN_0003b830(param_1)" identifier = (cast_expression "(uint *)FUN_0003b830(param_1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0003b830(param_1)" identifier (argument_list "(param_1)" ( identifier ))))) ;) (expression_statement "FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));" (call_expression "FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8))" identifier (argument_list "(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8))" ( identifier , (binary_expression "(uint)uVar11 - *puVar8" (cast_expression "(uint)uVar11" ( (type_descriptor "uint" type_identifier) ) identifier) - (pointer_expression "*puVar8" * identifier)) , (binary_expression "((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8)" (parenthesized_expression "((int)((ulonglong)uVar11 >> 0x20) - puVar8[1])" ( (binary_expression "(int)((ulonglong)uVar11 >> 0x20) - puVar8[1]" (cast_expression "(int)((ulonglong)uVar11 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar11 >> 0x20)" ( (binary_expression "(ulonglong)uVar11 >> 0x20" (cast_expression "(ulonglong)uVar11" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) - (subscript_expression "puVar8[1]" identifier [ number_literal ])) )) - (call_expression "(uint)((uint)uVar11 < *puVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)uVar11 < *puVar8)" ( (binary_expression "(uint)uVar11 < *puVar8" (cast_expression "(uint)uVar11" ( (type_descriptor "uint" type_identifier) ) identifier) < (pointer_expression "*puVar8" * identifier)) )))) ))) ;) (expression_statement "uVar5 = FUN_0003b830(param_1);" (assignment_expression "uVar5 = FUN_0003b830(param_1)" identifier = (call_expression "FUN_0003b830(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "FUN_0003b780(uVar4,uVar5);" (call_expression "FUN_0003b780(uVar4,uVar5)" identifier (argument_list "(uVar4,uVar5)" ( identifier , identifier ))) ;) (expression_statement "FUN_00038e30(uVar4,param_1);" (call_expression "FUN_00038e30(uVar4,param_1)" identifier (argument_list "(uVar4,param_1)" ( identifier , identifier ))) ;) (expression_statement "iVar7 = FUN_0003bdf0(param_1);" (assignment_expression "iVar7 = FUN_0003bdf0(param_1)" identifier = (call_expression "FUN_0003bdf0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "uVar1 = *(undefined1 *)(iVar7 + 0x35);" (assignment_expression "uVar1 = *(undefined1 *)(iVar7 + 0x35)" identifier = (pointer_expression "*(undefined1 *)(iVar7 + 0x35)" * (cast_expression "(undefined1 *)(iVar7 + 0x35)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x35)" ( (binary_expression "iVar7 + 0x35" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = FUN_0003bdf0(uVar4);" (assignment_expression "iVar7 = FUN_0003bdf0(uVar4)" identifier = (call_expression "FUN_0003bdf0(uVar4)" identifier (argument_list "(uVar4)" ( identifier )))) ;) (expression_statement "*(undefined1 *)(iVar7 + 0x35) = uVar1;" (assignment_expression "*(undefined1 *)(iVar7 + 0x35) = uVar1" (pointer_expression "*(undefined1 *)(iVar7 + 0x35)" * (cast_expression "(undefined1 *)(iVar7 + 0x35)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x35)" ( (binary_expression "iVar7 + 0x35" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar7 = FUN_00038580(param_1);" (assignment_expression "iVar7 = FUN_00038580(param_1)" identifier = (call_expression "FUN_00038580(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_0003a750(uVar4);\n      }" { (expression_statement "FUN_0003a750(uVar4);" (call_expression "FUN_0003a750(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) })) (expression_statement "iVar7 = FUN_00038510(param_1);" (assignment_expression "iVar7 = FUN_00038510(param_1)" identifier = (call_expression "FUN_00038510(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_0003a3d0(uVar4);\n      }" { (expression_statement "FUN_0003a3d0(uVar4);" (call_expression "FUN_0003a3d0(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) })) }))))) })) (expression_statement "iVar7 = FUN_00038580(param_1);" (assignment_expression "iVar7 = FUN_00038580(param_1)" identifier = (call_expression "FUN_00038580(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (labeled_statement "joined_r0x00055458:\n  if ((iVar7 != 0) && (iVar7 = FUN_00038670(param_1), iVar7 != 0)) {\n    uVar4 = FUN_00038a80(param_1);\n    uVar5 = dcgettext(0,"symbol `%s\' can not be both weak and common",5);\n    FUN_0002bd60(uVar5,uVar4);\n    return;\n  }" statement_identifier : (if_statement "if ((iVar7 != 0) && (iVar7 = FUN_00038670(param_1), iVar7 != 0)) {\n    uVar4 = FUN_00038a80(param_1);\n    uVar5 = dcgettext(0,"symbol `%s\' can not be both weak and common",5);\n    FUN_0002bd60(uVar5,uVar4);\n    return;\n  }" if (parenthesized_expression "((iVar7 != 0) && (iVar7 = FUN_00038670(param_1), iVar7 != 0))" ( (binary_expression "(iVar7 != 0) && (iVar7 = FUN_00038670(param_1), iVar7 != 0)" (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar7 = FUN_00038670(param_1), iVar7 != 0)" ( (comma_expression "iVar7 = FUN_00038670(param_1), iVar7 != 0" (assignment_expression "iVar7 = FUN_00038670(param_1)" identifier = (call_expression "FUN_00038670(param_1)" identifier (argument_list "(param_1)" ( identifier )))) , (binary_expression "iVar7 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    uVar4 = FUN_00038a80(param_1);\n    uVar5 = dcgettext(0,"symbol `%s\' can not be both weak and common",5);\n    FUN_0002bd60(uVar5,uVar4);\n    return;\n  }" { (expression_statement "uVar4 = FUN_00038a80(param_1);" (assignment_expression "uVar4 = FUN_00038a80(param_1)" identifier = (call_expression "FUN_00038a80(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "uVar5 = dcgettext(0,"symbol `%s\' can not be both weak and common",5);" (assignment_expression "uVar5 = dcgettext(0,"symbol `%s\' can not be both weak and common",5)" identifier = (call_expression "dcgettext(0,"symbol `%s\' can not be both weak and common",5)" identifier (argument_list "(0,"symbol `%s\' can not be both weak and common",5)" ( number_literal , (string_literal ""symbol `%s\' can not be both weak and common"" " string_content escape_sequence string_content ") , number_literal )))) ;) (expression_statement "FUN_0002bd60(uVar5,uVar4);" (call_expression "FUN_0002bd60(uVar5,uVar4)" identifier (argument_list "(uVar5,uVar4)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) }))) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (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 IDENT + LIT) )))) != (char_literal ' escape_sequence ')) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) }))) }) (else_clause else (compound_statement { (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 IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }))) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' character ')) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' character ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (pointer_expression * IDENT)) , (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) - (subscript_expression IDENT [ LIT ])) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (pointer_expression * IDENT)) )))) ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) }))))) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (return_statement return ;) }))) (return_statement return ;) })))
(function_definition "void FUN_00055350(undefined4 param_1,undefined4 *param_2)\n\n{\n  undefined1 uVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  char *pcVar6;\n  int iVar7;\n  uint *puVar8;\n  undefined4 uVar9;\n  size_t sVar10;\n  undefined8 uVar11;\n  \n  iVar2 = FUN_0003be90(param_1);\n  iVar7 = *(int *)(iVar2 + 4);\n  if (iVar7 != 0) {\n    iVar3 = FUN_00021620(iVar7);\n    if ((iVar3 == 0) || (*(char *)(iVar7 + 0x10) != '\x02')) {\n      if (DAT_00089800 == 0) {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bd60(uVar5,uVar4);\n      }\n      else {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bc80(uVar5,uVar4);\n      }\n    }\n    else {\n      uVar4 = *(undefined4 *)(iVar7 + 0xc);\n      uVar5 = *(undefined4 *)(iVar7 + 8);\n      iVar7 = FUN_0003bdf0(param_1);\n      *(undefined4 *)(iVar7 + 0x28) = uVar5;\n      *(undefined4 *)(iVar7 + 0x2c) = uVar4;\n    }\n    free(*(void **)(iVar2 + 4));\n    *(undefined4 *)(iVar2 + 4) = 0;\n  }\n  if (*(char **)(iVar2 + 8) != (char *)0x0) {\n    pcVar6 = strchr(*(char **)(iVar2 + 8),0x40);\n    if (pcVar6 == (char *)0x0) {\n      *param_2 = 1;\n      iVar7 = FUN_00038580(param_1);\n      goto joined_r0x00055458;\n    }\n    iVar7 = FUN_000386c0(param_1);\n    if (iVar7 == 0) {\n      uVar4 = *(undefined4 *)(iVar2 + 8);\n      if (pcVar6[1] == '@') {\n        uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5);\n        FUN_0002bd60(uVar5,uVar4);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        *param_2 = 1;\n      }\n      FUN_0003b3c0(param_1,uVar4);\n    }\n    else if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8));\n    }\n    else {\n      uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));\n      iVar7 = FUN_00038670(param_1);\n      if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }\n      uVar5 = FUN_00038ac0(param_1);\n      FUN_00038b00(uVar4,uVar5);\n      uVar11 = FUN_0003a3c0(param_1);\n      puVar8 = (uint *)FUN_0003b830(param_1);\n      FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));\n      uVar5 = FUN_0003b830(param_1);\n      FUN_0003b780(uVar4,uVar5);\n      FUN_00038e30(uVar4,param_1);\n      iVar7 = FUN_0003bdf0(param_1);\n      uVar1 = *(undefined1 *)(iVar7 + 0x35);\n      iVar7 = FUN_0003bdf0(uVar4);\n      *(undefined1 *)(iVar7 + 0x35) = uVar1;\n      iVar7 = FUN_00038580(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }\n      iVar7 = FUN_00038510(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }\n    }\n  }\n  iVar7 = FUN_00038580(param_1);\njoined_r0x00055458:\n  if ((iVar7 != 0) && (iVar7 = FUN_00038670(param_1), iVar7 != 0)) {\n    uVar4 = FUN_00038a80(param_1);\n    uVar5 = dcgettext(0,"symbol `%s\' can not be both weak and common",5);\n    FUN_0002bd60(uVar5,uVar4);\n    return;\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00055350(undefined4 param_1,undefined4 *param_2)" (identifier "FUN_00055350") (parameter_list "(undefined4 param_1,undefined4 *param_2)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  undefined1 uVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  char *pcVar6;\n  int iVar7;\n  uint *puVar8;\n  undefined4 uVar9;\n  size_t sVar10;\n  undefined8 uVar11;\n  \n  iVar2 = FUN_0003be90(param_1);\n  iVar7 = *(int *)(iVar2 + 4);\n  if (iVar7 != 0) {\n    iVar3 = FUN_00021620(iVar7);\n    if ((iVar3 == 0) || (*(char *)(iVar7 + 0x10) != '\x02')) {\n      if (DAT_00089800 == 0) {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bd60(uVar5,uVar4);\n      }\n      else {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bc80(uVar5,uVar4);\n      }\n    }\n    else {\n      uVar4 = *(undefined4 *)(iVar7 + 0xc);\n      uVar5 = *(undefined4 *)(iVar7 + 8);\n      iVar7 = FUN_0003bdf0(param_1);\n      *(undefined4 *)(iVar7 + 0x28) = uVar5;\n      *(undefined4 *)(iVar7 + 0x2c) = uVar4;\n    }\n    free(*(void **)(iVar2 + 4));\n    *(undefined4 *)(iVar2 + 4) = 0;\n  }\n  if (*(char **)(iVar2 + 8) != (char *)0x0) {\n    pcVar6 = strchr(*(char **)(iVar2 + 8),0x40);\n    if (pcVar6 == (char *)0x0) {\n      *param_2 = 1;\n      iVar7 = FUN_00038580(param_1);\n      goto joined_r0x00055458;\n    }\n    iVar7 = FUN_000386c0(param_1);\n    if (iVar7 == 0) {\n      uVar4 = *(undefined4 *)(iVar2 + 8);\n      if (pcVar6[1] == '@') {\n        uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5);\n        FUN_0002bd60(uVar5,uVar4);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        *param_2 = 1;\n      }\n      FUN_0003b3c0(param_1,uVar4);\n    }\n    else if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8));\n    }\n    else {\n      uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));\n      iVar7 = FUN_00038670(param_1);\n      if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }\n      uVar5 = FUN_00038ac0(param_1);\n      FUN_00038b00(uVar4,uVar5);\n      uVar11 = FUN_0003a3c0(param_1);\n      puVar8 = (uint *)FUN_0003b830(param_1);\n      FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));\n      uVar5 = FUN_0003b830(param_1);\n      FUN_0003b780(uVar4,uVar5);\n      FUN_00038e30(uVar4,param_1);\n      iVar7 = FUN_0003bdf0(param_1);\n      uVar1 = *(undefined1 *)(iVar7 + 0x35);\n      iVar7 = FUN_0003bdf0(uVar4);\n      *(undefined1 *)(iVar7 + 0x35) = uVar1;\n      iVar7 = FUN_00038580(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }\n      iVar7 = FUN_00038510(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }\n    }\n  }\n  iVar7 = FUN_00038580(param_1);\njoined_r0x00055458:\n  if ((iVar7 != 0) && (iVar7 = FUN_00038670(param_1), iVar7 != 0)) {\n    uVar4 = FUN_00038a80(param_1);\n    uVar5 = dcgettext(0,"symbol `%s\' can not be both weak and common",5);\n    FUN_0002bd60(uVar5,uVar4);\n    return;\n  }\n  return;\n}" ({ "{") (declaration "undefined1 uVar1;" (type_identifier "undefined1") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "char *pcVar6;" (primitive_type "char") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "uint *puVar8;" (type_identifier "uint") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (declaration "size_t sVar10;" (primitive_type "size_t") (identifier "sVar10") (; ";")) (declaration "undefined8 uVar11;" (type_identifier "undefined8") (identifier "uVar11") (; ";")) (expression_statement "iVar2 = FUN_0003be90(param_1);" (assignment_expression "iVar2 = FUN_0003be90(param_1)" (identifier "iVar2") (= "=") (call_expression "FUN_0003be90(param_1)" (identifier "FUN_0003be90") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "iVar7 = *(int *)(iVar2 + 4);" (assignment_expression "iVar7 = *(int *)(iVar2 + 4)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(iVar2 + 4)" (* "*") (cast_expression "(int *)(iVar2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 4)" (( "(") (binary_expression "iVar2 + 4" (identifier "iVar2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (iVar7 != 0) {\n    iVar3 = FUN_00021620(iVar7);\n    if ((iVar3 == 0) || (*(char *)(iVar7 + 0x10) != '\x02')) {\n      if (DAT_00089800 == 0) {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bd60(uVar5,uVar4);\n      }\n      else {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bc80(uVar5,uVar4);\n      }\n    }\n    else {\n      uVar4 = *(undefined4 *)(iVar7 + 0xc);\n      uVar5 = *(undefined4 *)(iVar7 + 8);\n      iVar7 = FUN_0003bdf0(param_1);\n      *(undefined4 *)(iVar7 + 0x28) = uVar5;\n      *(undefined4 *)(iVar7 + 0x2c) = uVar4;\n    }\n    free(*(void **)(iVar2 + 4));\n    *(undefined4 *)(iVar2 + 4) = 0;\n  }" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar3 = FUN_00021620(iVar7);\n    if ((iVar3 == 0) || (*(char *)(iVar7 + 0x10) != '\x02')) {\n      if (DAT_00089800 == 0) {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bd60(uVar5,uVar4);\n      }\n      else {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bc80(uVar5,uVar4);\n      }\n    }\n    else {\n      uVar4 = *(undefined4 *)(iVar7 + 0xc);\n      uVar5 = *(undefined4 *)(iVar7 + 8);\n      iVar7 = FUN_0003bdf0(param_1);\n      *(undefined4 *)(iVar7 + 0x28) = uVar5;\n      *(undefined4 *)(iVar7 + 0x2c) = uVar4;\n    }\n    free(*(void **)(iVar2 + 4));\n    *(undefined4 *)(iVar2 + 4) = 0;\n  }" ({ "{") (expression_statement "iVar3 = FUN_00021620(iVar7);" (assignment_expression "iVar3 = FUN_00021620(iVar7)" (identifier "iVar3") (= "=") (call_expression "FUN_00021620(iVar7)" (identifier "FUN_00021620") (argument_list "(iVar7)" (( "(") (identifier "iVar7") () ")")))) (; ";")) (if_statement "if ((iVar3 == 0) || (*(char *)(iVar7 + 0x10) != '\x02')) {\n      if (DAT_00089800 == 0) {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bd60(uVar5,uVar4);\n      }\n      else {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bc80(uVar5,uVar4);\n      }\n    }\n    else {\n      uVar4 = *(undefined4 *)(iVar7 + 0xc);\n      uVar5 = *(undefined4 *)(iVar7 + 8);\n      iVar7 = FUN_0003bdf0(param_1);\n      *(undefined4 *)(iVar7 + 0x28) = uVar5;\n      *(undefined4 *)(iVar7 + 0x2c) = uVar4;\n    }" (if "if") (parenthesized_expression "((iVar3 == 0) || (*(char *)(iVar7 + 0x10) != '\x02'))" (( "(") (binary_expression "(iVar3 == 0) || (*(char *)(iVar7 + 0x10) != '\x02')" (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(char *)(iVar7 + 0x10) != '\x02')" (( "(") (binary_expression "*(char *)(iVar7 + 0x10) != '\x02'" (pointer_expression "*(char *)(iVar7 + 0x10)" (* "*") (cast_expression "(char *)(iVar7 + 0x10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x10)" (( "(") (binary_expression "iVar7 + 0x10" (identifier "iVar7") (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) () ")"))) () ")")) (compound_statement "{\n      if (DAT_00089800 == 0) {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bd60(uVar5,uVar4);\n      }\n      else {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bc80(uVar5,uVar4);\n      }\n    }" ({ "{") (if_statement "if (DAT_00089800 == 0) {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bd60(uVar5,uVar4);\n      }\n      else {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bc80(uVar5,uVar4);\n      }" (if "if") (parenthesized_expression "(DAT_00089800 == 0)" (( "(") (binary_expression "DAT_00089800 == 0" (identifier "DAT_00089800") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bd60(uVar5,uVar4);\n      }" ({ "{") (expression_statement "uVar4 = FUN_00038a80(param_1);" (assignment_expression "uVar4 = FUN_00038a80(param_1)" (identifier "uVar4") (= "=") (call_expression "FUN_00038a80(param_1)" (identifier "FUN_00038a80") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);" (assignment_expression "uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5)" (identifier "uVar5") (= "=") (call_expression "dcgettext(0,".size expression for %s does not evaluate to a constant",5)" (identifier "dcgettext") (argument_list "(0,".size expression for %s does not evaluate to a constant",5)" (( "(") (number_literal "0") (, ",") (string_literal "".size expression for %s does not evaluate to a constant"" (" """) (string_content ".size expression for %s does not evaluate to a constant") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_0002bd60(uVar5,uVar4);" (call_expression "FUN_0002bd60(uVar5,uVar4)" (identifier "FUN_0002bd60") (argument_list "(uVar5,uVar4)" (( "(") (identifier "uVar5") (, ",") (identifier "uVar4") () ")"))) (; ";")) (} "}")) (else_clause "else {\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bc80(uVar5,uVar4);\n      }" (else "else") (compound_statement "{\n        uVar4 = FUN_00038a80(param_1);\n        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);\n        FUN_0002bc80(uVar5,uVar4);\n      }" ({ "{") (expression_statement "uVar4 = FUN_00038a80(param_1);" (assignment_expression "uVar4 = FUN_00038a80(param_1)" (identifier "uVar4") (= "=") (call_expression "FUN_00038a80(param_1)" (identifier "FUN_00038a80") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);" (assignment_expression "uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5)" (identifier "uVar5") (= "=") (call_expression "dcgettext(0,".size expression for %s does not evaluate to a constant",5)" (identifier "dcgettext") (argument_list "(0,".size expression for %s does not evaluate to a constant",5)" (( "(") (number_literal "0") (, ",") (string_literal "".size expression for %s does not evaluate to a constant"" (" """) (string_content ".size expression for %s does not evaluate to a constant") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_0002bc80(uVar5,uVar4);" (call_expression "FUN_0002bc80(uVar5,uVar4)" (identifier "FUN_0002bc80") (argument_list "(uVar5,uVar4)" (( "(") (identifier "uVar5") (, ",") (identifier "uVar4") () ")"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n      uVar4 = *(undefined4 *)(iVar7 + 0xc);\n      uVar5 = *(undefined4 *)(iVar7 + 8);\n      iVar7 = FUN_0003bdf0(param_1);\n      *(undefined4 *)(iVar7 + 0x28) = uVar5;\n      *(undefined4 *)(iVar7 + 0x2c) = uVar4;\n    }" (else "else") (compound_statement "{\n      uVar4 = *(undefined4 *)(iVar7 + 0xc);\n      uVar5 = *(undefined4 *)(iVar7 + 8);\n      iVar7 = FUN_0003bdf0(param_1);\n      *(undefined4 *)(iVar7 + 0x28) = uVar5;\n      *(undefined4 *)(iVar7 + 0x2c) = uVar4;\n    }" ({ "{") (expression_statement "uVar4 = *(undefined4 *)(iVar7 + 0xc);" (assignment_expression "uVar4 = *(undefined4 *)(iVar7 + 0xc)" (identifier "uVar4") (= "=") (pointer_expression "*(undefined4 *)(iVar7 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar7 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0xc)" (( "(") (binary_expression "iVar7 + 0xc" (identifier "iVar7") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "uVar5 = *(undefined4 *)(iVar7 + 8);" (assignment_expression "uVar5 = *(undefined4 *)(iVar7 + 8)" (identifier "uVar5") (= "=") (pointer_expression "*(undefined4 *)(iVar7 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar7 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 8)" (( "(") (binary_expression "iVar7 + 8" (identifier "iVar7") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "iVar7 = FUN_0003bdf0(param_1);" (assignment_expression "iVar7 = FUN_0003bdf0(param_1)" (identifier "iVar7") (= "=") (call_expression "FUN_0003bdf0(param_1)" (identifier "FUN_0003bdf0") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(iVar7 + 0x28) = uVar5;" (assignment_expression "*(undefined4 *)(iVar7 + 0x28) = uVar5" (pointer_expression "*(undefined4 *)(iVar7 + 0x28)" (* "*") (cast_expression "(undefined4 *)(iVar7 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x28)" (( "(") (binary_expression "iVar7 + 0x28" (identifier "iVar7") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "*(undefined4 *)(iVar7 + 0x2c) = uVar4;" (assignment_expression "*(undefined4 *)(iVar7 + 0x2c) = uVar4" (pointer_expression "*(undefined4 *)(iVar7 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(iVar7 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x2c)" (( "(") (binary_expression "iVar7 + 0x2c" (identifier "iVar7") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (identifier "uVar4")) (; ";")) (} "}")))) (expression_statement "free(*(void **)(iVar2 + 4));" (call_expression "free(*(void **)(iVar2 + 4))" (identifier "free") (argument_list "(*(void **)(iVar2 + 4))" (( "(") (pointer_expression "*(void **)(iVar2 + 4)" (* "*") (cast_expression "(void **)(iVar2 + 4)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 4)" (( "(") (binary_expression "iVar2 + 4" (identifier "iVar2") (+ "+") (number_literal "4")) () ")")))) () ")"))) (; ";")) (expression_statement "*(undefined4 *)(iVar2 + 4) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 4) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 4)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 4)" (( "(") (binary_expression "iVar2 + 4" (identifier "iVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (if_statement "if (*(char **)(iVar2 + 8) != (char *)0x0) {\n    pcVar6 = strchr(*(char **)(iVar2 + 8),0x40);\n    if (pcVar6 == (char *)0x0) {\n      *param_2 = 1;\n      iVar7 = FUN_00038580(param_1);\n      goto joined_r0x00055458;\n    }\n    iVar7 = FUN_000386c0(param_1);\n    if (iVar7 == 0) {\n      uVar4 = *(undefined4 *)(iVar2 + 8);\n      if (pcVar6[1] == '@') {\n        uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5);\n        FUN_0002bd60(uVar5,uVar4);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        *param_2 = 1;\n      }\n      FUN_0003b3c0(param_1,uVar4);\n    }\n    else if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8));\n    }\n    else {\n      uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));\n      iVar7 = FUN_00038670(param_1);\n      if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }\n      uVar5 = FUN_00038ac0(param_1);\n      FUN_00038b00(uVar4,uVar5);\n      uVar11 = FUN_0003a3c0(param_1);\n      puVar8 = (uint *)FUN_0003b830(param_1);\n      FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));\n      uVar5 = FUN_0003b830(param_1);\n      FUN_0003b780(uVar4,uVar5);\n      FUN_00038e30(uVar4,param_1);\n      iVar7 = FUN_0003bdf0(param_1);\n      uVar1 = *(undefined1 *)(iVar7 + 0x35);\n      iVar7 = FUN_0003bdf0(uVar4);\n      *(undefined1 *)(iVar7 + 0x35) = uVar1;\n      iVar7 = FUN_00038580(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }\n      iVar7 = FUN_00038510(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }\n    }\n  }" (if "if") (parenthesized_expression "(*(char **)(iVar2 + 8) != (char *)0x0)" (( "(") (binary_expression "*(char **)(iVar2 + 8) != (char *)0x0" (pointer_expression "*(char **)(iVar2 + 8)" (* "*") (cast_expression "(char **)(iVar2 + 8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 8)" (( "(") (binary_expression "iVar2 + 8" (identifier "iVar2") (+ "+") (number_literal "8")) () ")")))) (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    pcVar6 = strchr(*(char **)(iVar2 + 8),0x40);\n    if (pcVar6 == (char *)0x0) {\n      *param_2 = 1;\n      iVar7 = FUN_00038580(param_1);\n      goto joined_r0x00055458;\n    }\n    iVar7 = FUN_000386c0(param_1);\n    if (iVar7 == 0) {\n      uVar4 = *(undefined4 *)(iVar2 + 8);\n      if (pcVar6[1] == '@') {\n        uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5);\n        FUN_0002bd60(uVar5,uVar4);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        *param_2 = 1;\n      }\n      FUN_0003b3c0(param_1,uVar4);\n    }\n    else if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8));\n    }\n    else {\n      uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));\n      iVar7 = FUN_00038670(param_1);\n      if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }\n      uVar5 = FUN_00038ac0(param_1);\n      FUN_00038b00(uVar4,uVar5);\n      uVar11 = FUN_0003a3c0(param_1);\n      puVar8 = (uint *)FUN_0003b830(param_1);\n      FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));\n      uVar5 = FUN_0003b830(param_1);\n      FUN_0003b780(uVar4,uVar5);\n      FUN_00038e30(uVar4,param_1);\n      iVar7 = FUN_0003bdf0(param_1);\n      uVar1 = *(undefined1 *)(iVar7 + 0x35);\n      iVar7 = FUN_0003bdf0(uVar4);\n      *(undefined1 *)(iVar7 + 0x35) = uVar1;\n      iVar7 = FUN_00038580(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }\n      iVar7 = FUN_00038510(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }\n    }\n  }" ({ "{") (expression_statement "pcVar6 = strchr(*(char **)(iVar2 + 8),0x40);" (assignment_expression "pcVar6 = strchr(*(char **)(iVar2 + 8),0x40)" (identifier "pcVar6") (= "=") (call_expression "strchr(*(char **)(iVar2 + 8),0x40)" (identifier "strchr") (argument_list "(*(char **)(iVar2 + 8),0x40)" (( "(") (pointer_expression "*(char **)(iVar2 + 8)" (* "*") (cast_expression "(char **)(iVar2 + 8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 8)" (( "(") (binary_expression "iVar2 + 8" (identifier "iVar2") (+ "+") (number_literal "8")) () ")")))) (, ",") (number_literal "0x40") () ")")))) (; ";")) (if_statement "if (pcVar6 == (char *)0x0) {\n      *param_2 = 1;\n      iVar7 = FUN_00038580(param_1);\n      goto joined_r0x00055458;\n    }" (if "if") (parenthesized_expression "(pcVar6 == (char *)0x0)" (( "(") (binary_expression "pcVar6 == (char *)0x0" (identifier "pcVar6") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      *param_2 = 1;\n      iVar7 = FUN_00038580(param_1);\n      goto joined_r0x00055458;\n    }" ({ "{") (expression_statement "*param_2 = 1;" (assignment_expression "*param_2 = 1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar7 = FUN_00038580(param_1);" (assignment_expression "iVar7 = FUN_00038580(param_1)" (identifier "iVar7") (= "=") (call_expression "FUN_00038580(param_1)" (identifier "FUN_00038580") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (goto_statement "goto joined_r0x00055458;" (goto "goto") (statement_identifier "joined_r0x00055458") (; ";")) (} "}"))) (expression_statement "iVar7 = FUN_000386c0(param_1);" (assignment_expression "iVar7 = FUN_000386c0(param_1)" (identifier "iVar7") (= "=") (call_expression "FUN_000386c0(param_1)" (identifier "FUN_000386c0") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (iVar7 == 0) {\n      uVar4 = *(undefined4 *)(iVar2 + 8);\n      if (pcVar6[1] == '@') {\n        uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5);\n        FUN_0002bd60(uVar5,uVar4);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        *param_2 = 1;\n      }\n      FUN_0003b3c0(param_1,uVar4);\n    }\n    else if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8));\n    }\n    else {\n      uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));\n      iVar7 = FUN_00038670(param_1);\n      if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }\n      uVar5 = FUN_00038ac0(param_1);\n      FUN_00038b00(uVar4,uVar5);\n      uVar11 = FUN_0003a3c0(param_1);\n      puVar8 = (uint *)FUN_0003b830(param_1);\n      FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));\n      uVar5 = FUN_0003b830(param_1);\n      FUN_0003b780(uVar4,uVar5);\n      FUN_00038e30(uVar4,param_1);\n      iVar7 = FUN_0003bdf0(param_1);\n      uVar1 = *(undefined1 *)(iVar7 + 0x35);\n      iVar7 = FUN_0003bdf0(uVar4);\n      *(undefined1 *)(iVar7 + 0x35) = uVar1;\n      iVar7 = FUN_00038580(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }\n      iVar7 = FUN_00038510(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }\n    }" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar4 = *(undefined4 *)(iVar2 + 8);\n      if (pcVar6[1] == '@') {\n        uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5);\n        FUN_0002bd60(uVar5,uVar4);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        *param_2 = 1;\n      }\n      FUN_0003b3c0(param_1,uVar4);\n    }" ({ "{") (expression_statement "uVar4 = *(undefined4 *)(iVar2 + 8);" (assignment_expression "uVar4 = *(undefined4 *)(iVar2 + 8)" (identifier "uVar4") (= "=") (pointer_expression "*(undefined4 *)(iVar2 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 8)" (( "(") (binary_expression "iVar2 + 8" (identifier "iVar2") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (pcVar6[1] == '@') {\n        uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5);\n        FUN_0002bd60(uVar5,uVar4);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        *param_2 = 1;\n      }" (if "if") (parenthesized_expression "(pcVar6[1] == '@')" (( "(") (binary_expression "pcVar6[1] == '@'" (subscript_expression "pcVar6[1]" (identifier "pcVar6") ([ "[") (number_literal "1") (] "]")) (== "==") (char_literal "'@'" (' "'") (character "@") (' "'"))) () ")")) (compound_statement "{\n        uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5);\n        FUN_0002bd60(uVar5,uVar4);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        *param_2 = 1;\n      }" ({ "{") (expression_statement "uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5);" (assignment_expression "uVar5 = dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5)" (identifier "uVar5") (= "=") (call_expression "dcgettext(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5)" (identifier "dcgettext") (argument_list "(0,\n                          "invalid attempt to declare external version name as default in symbol `%s\'"\n                          ,5)" (( "(") (number_literal "0") (, ",") (string_literal ""invalid attempt to declare external version name as default in symbol `%s\'"" (" """) (string_content "invalid attempt to declare external version name as default in symbol `%s") (escape_sequence "\'") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_0002bd60(uVar5,uVar4);" (call_expression "FUN_0002bd60(uVar5,uVar4)" (identifier "FUN_0002bd60") (argument_list "(uVar5,uVar4)" (( "(") (identifier "uVar5") (, ",") (identifier "uVar4") () ")"))) (; ";")) (expression_statement "uVar4 = *(undefined4 *)(iVar2 + 8);" (assignment_expression "uVar4 = *(undefined4 *)(iVar2 + 8)" (identifier "uVar4") (= "=") (pointer_expression "*(undefined4 *)(iVar2 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 8)" (( "(") (binary_expression "iVar2 + 8" (identifier "iVar2") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "*param_2 = 1;" (assignment_expression "*param_2 = 1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "FUN_0003b3c0(param_1,uVar4);" (call_expression "FUN_0003b3c0(param_1,uVar4)" (identifier "FUN_0003b3c0") (argument_list "(param_1,uVar4)" (( "(") (identifier "param_1") (, ",") (identifier "uVar4") () ")"))) (; ";")) (} "}")) (else_clause "else if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8));\n    }\n    else {\n      uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));\n      iVar7 = FUN_00038670(param_1);\n      if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }\n      uVar5 = FUN_00038ac0(param_1);\n      FUN_00038b00(uVar4,uVar5);\n      uVar11 = FUN_0003a3c0(param_1);\n      puVar8 = (uint *)FUN_0003b830(param_1);\n      FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));\n      uVar5 = FUN_0003b830(param_1);\n      FUN_0003b780(uVar4,uVar5);\n      FUN_00038e30(uVar4,param_1);\n      iVar7 = FUN_0003bdf0(param_1);\n      uVar1 = *(undefined1 *)(iVar7 + 0x35);\n      iVar7 = FUN_0003bdf0(uVar4);\n      *(undefined1 *)(iVar7 + 0x35) = uVar1;\n      iVar7 = FUN_00038580(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }\n      iVar7 = FUN_00038510(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }\n    }" (else "else") (if_statement "if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8));\n    }\n    else {\n      uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));\n      iVar7 = FUN_00038670(param_1);\n      if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }\n      uVar5 = FUN_00038ac0(param_1);\n      FUN_00038b00(uVar4,uVar5);\n      uVar11 = FUN_0003a3c0(param_1);\n      puVar8 = (uint *)FUN_0003b830(param_1);\n      FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));\n      uVar5 = FUN_0003b830(param_1);\n      FUN_0003b780(uVar4,uVar5);\n      FUN_00038e30(uVar4,param_1);\n      iVar7 = FUN_0003bdf0(param_1);\n      uVar1 = *(undefined1 *)(iVar7 + 0x35);\n      iVar7 = FUN_0003bdf0(uVar4);\n      *(undefined1 *)(iVar7 + 0x35) = uVar1;\n      iVar7 = FUN_00038580(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }\n      iVar7 = FUN_00038510(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }\n    }" (if "if") (parenthesized_expression "((pcVar6[1] == '@') && (pcVar6[2] == '@'))" (( "(") (binary_expression "(pcVar6[1] == '@') && (pcVar6[2] == '@')" (parenthesized_expression "(pcVar6[1] == '@')" (( "(") (binary_expression "pcVar6[1] == '@'" (subscript_expression "pcVar6[1]" (identifier "pcVar6") ([ "[") (number_literal "1") (] "]")) (== "==") (char_literal "'@'" (' "'") (character "@") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(pcVar6[2] == '@')" (( "(") (binary_expression "pcVar6[2] == '@'" (subscript_expression "pcVar6[2]" (identifier "pcVar6") ([ "[") (number_literal "2") (] "]")) (== "==") (char_literal "'@'" (' "'") (character "@") (' "'"))) () ")"))) () ")")) (compound_statement "{\n      sVar10 = strlen(pcVar6 + 3);\n      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);\n      FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8));\n    }" ({ "{") (expression_statement "sVar10 = strlen(pcVar6 + 3);" (assignment_expression "sVar10 = strlen(pcVar6 + 3)" (identifier "sVar10") (= "=") (call_expression "strlen(pcVar6 + 3)" (identifier "strlen") (argument_list "(pcVar6 + 3)" (( "(") (binary_expression "pcVar6 + 3" (identifier "pcVar6") (+ "+") (number_literal "3")) () ")")))) (; ";")) (expression_statement "memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);" (call_expression "memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1)" (identifier "memmove") (argument_list "(pcVar6 + 2,pcVar6 + 3,sVar10 + 1)" (( "(") (binary_expression "pcVar6 + 2" (identifier "pcVar6") (+ "+") (number_literal "2")) (, ",") (binary_expression "pcVar6 + 3" (identifier "pcVar6") (+ "+") (number_literal "3")) (, ",") (binary_expression "sVar10 + 1" (identifier "sVar10") (+ "+") (number_literal "1")) () ")"))) (; ";")) (expression_statement "FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8));" (call_expression "FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8))" (identifier "FUN_0003b3c0") (argument_list "(param_1,*(undefined4 *)(iVar2 + 8))" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined4 *)(iVar2 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 8)" (( "(") (binary_expression "iVar2 + 8" (identifier "iVar2") (+ "+") (number_literal "8")) () ")")))) () ")"))) (; ";")) (} "}")) (else_clause "else {\n      uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));\n      iVar7 = FUN_00038670(param_1);\n      if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }\n      uVar5 = FUN_00038ac0(param_1);\n      FUN_00038b00(uVar4,uVar5);\n      uVar11 = FUN_0003a3c0(param_1);\n      puVar8 = (uint *)FUN_0003b830(param_1);\n      FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));\n      uVar5 = FUN_0003b830(param_1);\n      FUN_0003b780(uVar4,uVar5);\n      FUN_00038e30(uVar4,param_1);\n      iVar7 = FUN_0003bdf0(param_1);\n      uVar1 = *(undefined1 *)(iVar7 + 0x35);\n      iVar7 = FUN_0003bdf0(uVar4);\n      *(undefined1 *)(iVar7 + 0x35) = uVar1;\n      iVar7 = FUN_00038580(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }\n      iVar7 = FUN_00038510(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }\n    }" (else "else") (compound_statement "{\n      uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));\n      iVar7 = FUN_00038670(param_1);\n      if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }\n      uVar5 = FUN_00038ac0(param_1);\n      FUN_00038b00(uVar4,uVar5);\n      uVar11 = FUN_0003a3c0(param_1);\n      puVar8 = (uint *)FUN_0003b830(param_1);\n      FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));\n      uVar5 = FUN_0003b830(param_1);\n      FUN_0003b780(uVar4,uVar5);\n      FUN_00038e30(uVar4,param_1);\n      iVar7 = FUN_0003bdf0(param_1);\n      uVar1 = *(undefined1 *)(iVar7 + 0x35);\n      iVar7 = FUN_0003bdf0(uVar4);\n      *(undefined1 *)(iVar7 + 0x35) = uVar1;\n      iVar7 = FUN_00038580(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }\n      iVar7 = FUN_00038510(param_1);\n      if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }\n    }" ({ "{") (expression_statement "uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));" (assignment_expression "uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8))" (identifier "uVar4") (= "=") (call_expression "FUN_0003a9e0(*(undefined4 *)(iVar2 + 8))" (identifier "FUN_0003a9e0") (argument_list "(*(undefined4 *)(iVar2 + 8))" (( "(") (pointer_expression "*(undefined4 *)(iVar2 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 8)" (( "(") (binary_expression "iVar2 + 8" (identifier "iVar2") (+ "+") (number_literal "8")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar7 = FUN_00038670(param_1);" (assignment_expression "iVar7 = FUN_00038670(param_1)" (identifier "iVar7") (= "=") (call_expression "FUN_00038670(param_1)" (identifier "FUN_00038670") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (iVar7 != 0) {\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        uVar5 = FUN_00038a80(param_1);\n        uVar4 = *(undefined4 *)(iVar2 + 8);\n        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);\n        FUN_0002bd60(uVar9,uVar4,uVar5);\n        *param_2 = 1;\n        return;\n      }" ({ "{") (expression_statement "uVar5 = FUN_00038a80(param_1);" (assignment_expression "uVar5 = FUN_00038a80(param_1)" (identifier "uVar5") (= "=") (call_expression "FUN_00038a80(param_1)" (identifier "FUN_00038a80") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "uVar4 = *(undefined4 *)(iVar2 + 8);" (assignment_expression "uVar4 = *(undefined4 *)(iVar2 + 8)" (identifier "uVar4") (= "=") (pointer_expression "*(undefined4 *)(iVar2 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 8)" (( "(") (binary_expression "iVar2 + 8" (identifier "iVar2") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);" (assignment_expression "uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5)" (identifier "uVar9") (= "=") (call_expression "dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5)" (identifier "dcgettext") (argument_list "(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5)" (( "(") (number_literal "0") (, ",") (string_literal ""`%s\' can\'t be versioned to common symbol \'%s\'"" (" """) (string_content "`%s") (escape_sequence "\'") (string_content " can") (escape_sequence "\'") (string_content "t be versioned to common symbol ") (escape_sequence "\'") (string_content "%s") (escape_sequence "\'") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_0002bd60(uVar9,uVar4,uVar5);" (call_expression "FUN_0002bd60(uVar9,uVar4,uVar5)" (identifier "FUN_0002bd60") (argument_list "(uVar9,uVar4,uVar5)" (( "(") (identifier "uVar9") (, ",") (identifier "uVar4") (, ",") (identifier "uVar5") () ")"))) (; ";")) (expression_statement "*param_2 = 1;" (assignment_expression "*param_2 = 1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (number_literal "1")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar5 = FUN_00038ac0(param_1);" (assignment_expression "uVar5 = FUN_00038ac0(param_1)" (identifier "uVar5") (= "=") (call_expression "FUN_00038ac0(param_1)" (identifier "FUN_00038ac0") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "FUN_00038b00(uVar4,uVar5);" (call_expression "FUN_00038b00(uVar4,uVar5)" (identifier "FUN_00038b00") (argument_list "(uVar4,uVar5)" (( "(") (identifier "uVar4") (, ",") (identifier "uVar5") () ")"))) (; ";")) (expression_statement "uVar11 = FUN_0003a3c0(param_1);" (assignment_expression "uVar11 = FUN_0003a3c0(param_1)" (identifier "uVar11") (= "=") (call_expression "FUN_0003a3c0(param_1)" (identifier "FUN_0003a3c0") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "puVar8 = (uint *)FUN_0003b830(param_1);" (assignment_expression "puVar8 = (uint *)FUN_0003b830(param_1)" (identifier "puVar8") (= "=") (cast_expression "(uint *)FUN_0003b830(param_1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0003b830(param_1)" (identifier "FUN_0003b830") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))))) (; ";")) (expression_statement "FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));" (call_expression "FUN_00038430(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8))" (identifier "FUN_00038430") (argument_list "(uVar4,(uint)uVar11 - *puVar8,\n                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8))" (( "(") (identifier "uVar4") (, ",") (binary_expression "(uint)uVar11 - *puVar8" (cast_expression "(uint)uVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar11")) (- "-") (pointer_expression "*puVar8" (* "*") (identifier "puVar8"))) (, ",") (binary_expression "((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8)" (parenthesized_expression "((int)((ulonglong)uVar11 >> 0x20) - puVar8[1])" (( "(") (binary_expression "(int)((ulonglong)uVar11 >> 0x20) - puVar8[1]" (cast_expression "(int)((ulonglong)uVar11 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar11 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar11 >> 0x20" (cast_expression "(ulonglong)uVar11" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar11")) (>> ">>") (number_literal "0x20")) () ")"))) (- "-") (subscript_expression "puVar8[1]" (identifier "puVar8") ([ "[") (number_literal "1") (] "]"))) () ")")) (- "-") (call_expression "(uint)((uint)uVar11 < *puVar8)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((uint)uVar11 < *puVar8)" (( "(") (binary_expression "(uint)uVar11 < *puVar8" (cast_expression "(uint)uVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar11")) (< "<") (pointer_expression "*puVar8" (* "*") (identifier "puVar8"))) () ")")))) () ")"))) (; ";")) (expression_statement "uVar5 = FUN_0003b830(param_1);" (assignment_expression "uVar5 = FUN_0003b830(param_1)" (identifier "uVar5") (= "=") (call_expression "FUN_0003b830(param_1)" (identifier "FUN_0003b830") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "FUN_0003b780(uVar4,uVar5);" (call_expression "FUN_0003b780(uVar4,uVar5)" (identifier "FUN_0003b780") (argument_list "(uVar4,uVar5)" (( "(") (identifier "uVar4") (, ",") (identifier "uVar5") () ")"))) (; ";")) (expression_statement "FUN_00038e30(uVar4,param_1);" (call_expression "FUN_00038e30(uVar4,param_1)" (identifier "FUN_00038e30") (argument_list "(uVar4,param_1)" (( "(") (identifier "uVar4") (, ",") (identifier "param_1") () ")"))) (; ";")) (expression_statement "iVar7 = FUN_0003bdf0(param_1);" (assignment_expression "iVar7 = FUN_0003bdf0(param_1)" (identifier "iVar7") (= "=") (call_expression "FUN_0003bdf0(param_1)" (identifier "FUN_0003bdf0") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "uVar1 = *(undefined1 *)(iVar7 + 0x35);" (assignment_expression "uVar1 = *(undefined1 *)(iVar7 + 0x35)" (identifier "uVar1") (= "=") (pointer_expression "*(undefined1 *)(iVar7 + 0x35)" (* "*") (cast_expression "(undefined1 *)(iVar7 + 0x35)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x35)" (( "(") (binary_expression "iVar7 + 0x35" (identifier "iVar7") (+ "+") (number_literal "0x35")) () ")"))))) (; ";")) (expression_statement "iVar7 = FUN_0003bdf0(uVar4);" (assignment_expression "iVar7 = FUN_0003bdf0(uVar4)" (identifier "iVar7") (= "=") (call_expression "FUN_0003bdf0(uVar4)" (identifier "FUN_0003bdf0") (argument_list "(uVar4)" (( "(") (identifier "uVar4") () ")")))) (; ";")) (expression_statement "*(undefined1 *)(iVar7 + 0x35) = uVar1;" (assignment_expression "*(undefined1 *)(iVar7 + 0x35) = uVar1" (pointer_expression "*(undefined1 *)(iVar7 + 0x35)" (* "*") (cast_expression "(undefined1 *)(iVar7 + 0x35)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x35)" (( "(") (binary_expression "iVar7 + 0x35" (identifier "iVar7") (+ "+") (number_literal "0x35")) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "iVar7 = FUN_00038580(param_1);" (assignment_expression "iVar7 = FUN_00038580(param_1)" (identifier "iVar7") (= "=") (call_expression "FUN_00038580(param_1)" (identifier "FUN_00038580") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (iVar7 != 0) {\n        FUN_0003a750(uVar4);\n      }" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_0003a750(uVar4);\n      }" ({ "{") (expression_statement "FUN_0003a750(uVar4);" (call_expression "FUN_0003a750(uVar4)" (identifier "FUN_0003a750") (argument_list "(uVar4)" (( "(") (identifier "uVar4") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar7 = FUN_00038510(param_1);" (assignment_expression "iVar7 = FUN_00038510(param_1)" (identifier "iVar7") (= "=") (call_expression "FUN_00038510(param_1)" (identifier "FUN_00038510") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (iVar7 != 0) {\n        FUN_0003a3d0(uVar4);\n      }" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_0003a3d0(uVar4);\n      }" ({ "{") (expression_statement "FUN_0003a3d0(uVar4);" (call_expression "FUN_0003a3d0(uVar4)" (identifier "FUN_0003a3d0") (argument_list "(uVar4)" (( "(") (identifier "uVar4") () ")"))) (; ";")) (} "}"))) (} "}")))))) (} "}"))) (expression_statement "iVar7 = FUN_00038580(param_1);" (assignment_expression "iVar7 = FUN_00038580(param_1)" (identifier "iVar7") (= "=") (call_expression "FUN_00038580(param_1)" (identifier "FUN_00038580") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (labeled_statement "joined_r0x00055458:\n  if ((iVar7 != 0) && (iVar7 = FUN_00038670(param_1), iVar7 != 0)) {\n    uVar4 = FUN_00038a80(param_1);\n    uVar5 = dcgettext(0,"symbol `%s\' can not be both weak and common",5);\n    FUN_0002bd60(uVar5,uVar4);\n    return;\n  }" (statement_identifier "joined_r0x00055458") (: ":") (if_statement "if ((iVar7 != 0) && (iVar7 = FUN_00038670(param_1), iVar7 != 0)) {\n    uVar4 = FUN_00038a80(param_1);\n    uVar5 = dcgettext(0,"symbol `%s\' can not be both weak and common",5);\n    FUN_0002bd60(uVar5,uVar4);\n    return;\n  }" (if "if") (parenthesized_expression "((iVar7 != 0) && (iVar7 = FUN_00038670(param_1), iVar7 != 0))" (( "(") (binary_expression "(iVar7 != 0) && (iVar7 = FUN_00038670(param_1), iVar7 != 0)" (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar7 = FUN_00038670(param_1), iVar7 != 0)" (( "(") (comma_expression "iVar7 = FUN_00038670(param_1), iVar7 != 0" (assignment_expression "iVar7 = FUN_00038670(param_1)" (identifier "iVar7") (= "=") (call_expression "FUN_00038670(param_1)" (identifier "FUN_00038670") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (, ",") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    uVar4 = FUN_00038a80(param_1);\n    uVar5 = dcgettext(0,"symbol `%s\' can not be both weak and common",5);\n    FUN_0002bd60(uVar5,uVar4);\n    return;\n  }" ({ "{") (expression_statement "uVar4 = FUN_00038a80(param_1);" (assignment_expression "uVar4 = FUN_00038a80(param_1)" (identifier "uVar4") (= "=") (call_expression "FUN_00038a80(param_1)" (identifier "FUN_00038a80") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "uVar5 = dcgettext(0,"symbol `%s\' can not be both weak and common",5);" (assignment_expression "uVar5 = dcgettext(0,"symbol `%s\' can not be both weak and common",5)" (identifier "uVar5") (= "=") (call_expression "dcgettext(0,"symbol `%s\' can not be both weak and common",5)" (identifier "dcgettext") (argument_list "(0,"symbol `%s\' can not be both weak and common",5)" (( "(") (number_literal "0") (, ",") (string_literal ""symbol `%s\' can not be both weak and common"" (" """) (string_content "symbol `%s") (escape_sequence "\'") (string_content " can not be both weak and common") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_0002bd60(uVar5,uVar4);" (call_expression "FUN_0002bd60(uVar5,uVar4)" (identifier "FUN_0002bd60") (argument_list "(uVar5,uVar4)" (( "(") (identifier "uVar5") (, ",") (identifier "uVar4") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))) (return_statement "return;" (return "return") (; ";")) (} "}")))

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

void function_1(type_1 *symp,int *puntp)

{
  type_2 uVar1;
  type_3 *var_2;
  type_4 uVar2;
  type_5 oVar3;
  type_6 *peVar4;
  int var_4;
  char *var_13;
  char *pcVar7;
  type_1 *s;
  type_7 seg;
  type_8 *pfVar8;
  type_9 *paVar9;
  char *format;
  size_t var_19;
  type_10 var_26;
  type_11 var_30;
  int var_29;
  
  peVar4 = var_1(symp);
  var_2 = peVar4->size;
  if (var_2 != (type_3 *)0x0) {
    var_4 = var_3(var_2);
    if ((var_4 == 0) || (var_2->field_0x10 != '\x02')) {
      if (var_5 == 0) {
        var_13 = var_6(symp);
        pcVar7 = (char *)var_7(0,".size expression for %s does not evaluate to a constant",5);
        var_8(pcVar7,var_13);
      }
      else {
        var_13 = var_6(symp);
        pcVar7 = (char *)var_7(0,".size expression for %s does not evaluate to a constant",5);
        var_9(pcVar7,var_13);
      }
    }
    else {
      uVar2 = *(type_4 *)((int)&var_2->X_add_number + 4);
      oVar3 = var_2->X_add_number;
      paVar9 = var_10(symp);
      *(int *)&paVar9[1].value = (int)oVar3;
      *(type_4 *)((int)&paVar9[1].value + 4) = uVar2;
    }
    var_11(peVar4->size);
    peVar4->size = (type_3 *)0x0;
  }
  if (peVar4->versioned_name != (char *)0x0) {
    var_13 = var_12(peVar4->versioned_name,0x40);
    if (var_13 == (char *)0x0) {
      *puntp = 1;
      var_4 = var_14(symp);
      goto joined_r0x00055458;
    }
    var_4 = var_15(symp);
    if (var_4 == 0) {
      pcVar7 = peVar4->versioned_name;
      if (var_13[1] == '@') {
        var_13 = (char *)var_7(0,
                                   "invalid attempt to declare external version name as default in symbol `%s\'"
                                   ,5);
        var_8(var_13,pcVar7);
        pcVar7 = peVar4->versioned_name;
        *puntp = 1;
      }
      var_16(symp,pcVar7);
    }
    else if ((var_13[1] == '@') && (var_13[2] == '@')) {
      var_19 = var_17(var_13 + 3);
      var_18(var_13 + 2,var_13 + 3,var_19 + 1);
      var_16(symp,peVar4->versioned_name);
    }
    else {
      s = var_20(peVar4->versioned_name);
      var_4 = var_21(symp);
      if (var_4 != 0) {
        pcVar7 = var_6(symp);
        var_13 = peVar4->versioned_name;
        format = (char *)var_7(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);
        var_8(format,var_13,pcVar7);
        *puntp = 1;
        return;
      }
      seg = var_22(symp);
      var_23(s,seg);
      var_26 = var_24(symp);
      pfVar8 = var_25(symp);
      var_30 = (type_11)var_26;
      var_29 = (int)(var_26 >> 0x20);
      var_27(s,var_28((var_29 - *(int *)((int)&pfVar8->fr_address + 4)) -
                             (type_11)(var_30 < (type_11)pfVar8->fr_address),
                             var_30 - (int)pfVar8->fr_address));
      pfVar8 = var_25(symp);
      var_31(s,pfVar8);
      var_32(s,symp);
      paVar9 = var_10(symp);
      uVar1 = *(type_2 *)((int)&paVar9[1].section + 1);
      paVar9 = var_10(s);
      *(type_2 *)((int)&paVar9[1].section + 1) = uVar1;
      var_4 = var_14(symp);
      if (var_4 != 0) {
        var_33(s);
      }
      var_4 = var_34(symp);
      if (var_4 != 0) {
        var_35(s);
      }
    }
  }
  var_4 = var_14(symp);
joined_r0x00055458:
  if ((var_4 != 0) && (var_4 = var_21(symp), var_4 != 0)) {
    var_13 = var_6(symp);
    pcVar7 = (char *)var_7(0,"symbol `%s\' can not be both weak and common",5);
    var_8(pcVar7,var_13);
    return;
  }
  return;
}


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

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

void MASKED(undefined4 param_1,undefined4 *param_2)

{
  undefined1 uVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  char *pcVar6;
  int iVar7;
  uint *puVar8;
  undefined4 uVar9;
  size_t sVar10;
  undefined8 uVar11;
  
  iVar2 = FUN_0003be90(param_1);
  iVar7 = *(int *)(iVar2 + 4);
  if (iVar7 != 0) {
    iVar3 = FUN_00021620(iVar7);
    if ((iVar3 == 0) || (*(char *)(iVar7 + 0x10) != '\x02')) {
      if (DAT_00089800 == 0) {
        uVar4 = FUN_00038a80(param_1);
        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);
        FUN_0002bd60(uVar5,uVar4);
      }
      else {
        uVar4 = FUN_00038a80(param_1);
        uVar5 = dcgettext(0,".size expression for %s does not evaluate to a constant",5);
        FUN_0002bc80(uVar5,uVar4);
      }
    }
    else {
      uVar4 = *(undefined4 *)(iVar7 + 0xc);
      uVar5 = *(undefined4 *)(iVar7 + 8);
      iVar7 = FUN_0003bdf0(param_1);
      *(undefined4 *)(iVar7 + 0x28) = uVar5;
      *(undefined4 *)(iVar7 + 0x2c) = uVar4;
    }
    free(*(void **)(iVar2 + 4));
    *(undefined4 *)(iVar2 + 4) = 0;
  }
  if (*(char **)(iVar2 + 8) != (char *)0x0) {
    pcVar6 = strchr(*(char **)(iVar2 + 8),0x40);
    if (pcVar6 == (char *)0x0) {
      *param_2 = 1;
      iVar7 = FUN_00038580(param_1);
      goto joined_r0x00055458;
    }
    iVar7 = FUN_000386c0(param_1);
    if (iVar7 == 0) {
      uVar4 = *(undefined4 *)(iVar2 + 8);
      if (pcVar6[1] == '@') {
        uVar5 = dcgettext(0,
                          "invalid attempt to declare external version name as default in symbol `%s\'"
                          ,5);
        FUN_0002bd60(uVar5,uVar4);
        uVar4 = *(undefined4 *)(iVar2 + 8);
        *param_2 = 1;
      }
      FUN_0003b3c0(param_1,uVar4);
    }
    else if ((pcVar6[1] == '@') && (pcVar6[2] == '@')) {
      sVar10 = strlen(pcVar6 + 3);
      memmove(pcVar6 + 2,pcVar6 + 3,sVar10 + 1);
      FUN_0003b3c0(param_1,*(undefined4 *)(iVar2 + 8));
    }
    else {
      uVar4 = FUN_0003a9e0(*(undefined4 *)(iVar2 + 8));
      iVar7 = FUN_00038670(param_1);
      if (iVar7 != 0) {
        uVar5 = FUN_00038a80(param_1);
        uVar4 = *(undefined4 *)(iVar2 + 8);
        uVar9 = dcgettext(0,"`%s\' can\'t be versioned to common symbol \'%s\'",5);
        FUN_0002bd60(uVar9,uVar4,uVar5);
        *param_2 = 1;
        return;
      }
      uVar5 = FUN_00038ac0(param_1);
      FUN_00038b00(uVar4,uVar5);
      uVar11 = FUN_0003a3c0(param_1);
      puVar8 = (uint *)FUN_0003b830(param_1);
      FUN_00038430(uVar4,(uint)uVar11 - *puVar8,
                   ((int)((ulonglong)uVar11 >> 0x20) - puVar8[1]) - (uint)((uint)uVar11 < *puVar8));
      uVar5 = FUN_0003b830(param_1);
      FUN_0003b780(uVar4,uVar5);
      FUN_00038e30(uVar4,param_1);
      iVar7 = FUN_0003bdf0(param_1);
      uVar1 = *(undefined1 *)(iVar7 + 0x35);
      iVar7 = FUN_0003bdf0(uVar4);
      *(undefined1 *)(iVar7 + 0x35) = uVar1;
      iVar7 = FUN_00038580(param_1);
      if (iVar7 != 0) {
        FUN_0003a750(uVar4);
      }
      iVar7 = FUN_00038510(param_1);
      if (iVar7 != 0) {
        FUN_0003a3d0(uVar4);
      }
    }
  }
  iVar7 = FUN_00038580(param_1);
joined_r0x00055458:
  if ((iVar7 != 0) && (iVar7 = FUN_00038670(param_1), iVar7 != 0)) {
    uVar4 = FUN_00038a80(param_1);
    uVar5 = dcgettext(0,"symbol `%s\' can not be both weak and common",5);
    FUN_0002bd60(uVar5,uVar4);
    return;
  }
  return;
}

