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

symbolS * symbol_clone(symbolS *orgsymP,int replace)

{
  ushort uVar1;
  symbolS *psVar2;
  char *pcVar3;
  asymbol *paVar4;
  undefined4 uVar5;
  segT paVar6;
  symbolS *s;
  
  if (orgsymP == (symbolS *)PTR_dot_symbol_0007af54) {
                    /* WARNING: Subroutine does not return */
    as_abort("../../gas/symbols.c",0x231,"symbol_clone");
  }
  paVar6 = (segT)orgsymP->bsym;
  if (((uint)orgsymP->sy_flags & 1) != 0) {
    if (reg_section == paVar6) {
      orgsymP = (orgsymP->sy_value).X_op_symbol;
      paVar6 = (segT)orgsymP->bsym;
    }
    else {
      orgsymP = local_symbol_convert((local_symbol *)orgsymP);
      paVar6 = (segT)orgsymP->bsym;
    }
  }
  if ((uint)((int)notes.chunk_limit - (int)notes.next_free) < 0x30) {
    _obstack_newchunk(&notes,0x30);
    pcVar3 = notes.next_free + 0x30;
    s = (symbolS *)notes.object_base;
    if (pcVar3 != notes.object_base) goto LAB_0003860c;
  }
  else {
    pcVar3 = notes.next_free + 0x30;
    s = (symbolS *)notes.object_base;
    if (pcVar3 != notes.object_base) goto LAB_0003860c;
  }
  notes._40_1_ = notes._40_1_ | 2;
  s = (symbolS *)notes.object_base;
LAB_0003860c:
  notes.next_free = (char *)((uint)(pcVar3 + notes.alignment_mask) & ~notes.alignment_mask);
  if ((uint)((int)notes.chunk_limit - (int)notes.chunk) <
      (uint)((int)notes.next_free - (int)notes.chunk)) {
    notes.next_free = notes.chunk_limit;
  }
  notes.object_base = notes.next_free;
  s->sy_flags = orgsymP->sy_flags;
  s->bsym = orgsymP->bsym;
  (s->sy_value).X_add_symbol = (orgsymP->sy_value).X_add_symbol;
  (s->sy_value).X_op_symbol = (orgsymP->sy_value).X_op_symbol;
  (s->sy_value).X_add_number = (orgsymP->sy_value).X_add_number;
  uVar1 = (orgsymP->sy_value).X_md;
  *(undefined2 *)&(s->sy_value).field_0xc = *(undefined2 *)&(orgsymP->sy_value).field_0xc;
  (s->sy_value).X_md = uVar1;
  s->sy_next = orgsymP->sy_next;
  s->sy_previous = orgsymP->sy_previous;
  s->sy_frag = orgsymP->sy_frag;
  (s->sy_obj).local = (orgsymP->sy_obj).local;
  (s->sy_obj).size = (orgsymP->sy_obj).size;
  (s->sy_obj).versioned_name = (orgsymP->sy_obj).versioned_name;
  paVar4 = (asymbol *)(**(code **)(*(int *)(paVar6->name + 4) + 0x10c))(paVar6->name);
  if (paVar4 == (asymbol *)0x0) {
    uVar5 = bfd_get_error();
    uVar5 = bfd_errmsg(uVar5);
                    /* WARNING: Subroutine does not return */
    as_fatal("bfd_make_empty_symbol: %s",uVar5);
  }
  pcVar3 = (char *)paVar6->id;
  s->bsym = paVar4;
  paVar4->name = pcVar3;
  paVar4->flags = (uint)paVar6->next & 0xfffffeff;
  paVar4->section = paVar6->prev;
  (*paVar4->the_bfd->xvec->_bfd_copy_private_symbol_data)
            ((bfd *)paVar6->name,(asymbol *)paVar6,paVar4->the_bfd,paVar4);
  if (replace == 0) {
    S_CLEAR_EXTERNAL(s);
    s->sy_next = s;
    s->sy_previous = s;
    return s;
  }
  psVar2 = s;
  if ((symbol_rootP != orgsymP) && (psVar2 = symbol_rootP, orgsymP->sy_previous != (symbol *)0x0)) {
    orgsymP->sy_previous->sy_next = s;
    orgsymP->sy_previous = (symbol *)0x0;
    psVar2 = symbol_rootP;
  }
  symbol_rootP = psVar2;
  psVar2 = s;
  if ((symbol_lastP != orgsymP) && (psVar2 = symbol_lastP, orgsymP->sy_next != (symbol *)0x0)) {
    orgsymP->sy_next->sy_previous = s;
    psVar2 = symbol_lastP;
  }
  symbol_lastP = psVar2;
  S_CLEAR_EXTERNAL(orgsymP);
  orgsymP->sy_next = orgsymP;
  orgsymP->sy_previous = orgsymP;
  symbol_table_insert(s);
  return s;
}



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

byte * FUN_000385b0(byte *param_1,int param_2)

{
  int iVar1;
  byte *pbVar2;
  int *piVar3;
  undefined4 uVar4;
  int *piVar5;
  byte *pbVar6;
  
  if (param_1 == PTR_DAT_0007af54) {
                    /* WARNING: Subroutine does not return */
    FUN_0002aaa0("../../gas/symbols.c",0x231,"symbol_clone",param_1);
  }
  piVar5 = *(int **)(param_1 + 4);
  if ((*param_1 & 1) != 0) {
    if (DAT_00084798 == piVar5) {
      param_1 = *(byte **)(param_1 + 0xc);
      piVar5 = *(int **)(param_1 + 4);
    }
    else {
      param_1 = (byte *)FUN_000370b0();
      piVar5 = *(int **)(param_1 + 4);
    }
  }
  if (DAT_000849b0 - DAT_000849ac < 0x30) {
    _obstack_newchunk(&DAT_000849a0,0x30);
    pbVar2 = (byte *)(DAT_000849ac + 0x30);
    pbVar6 = DAT_000849a8;
    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;
  }
  else {
    pbVar2 = (byte *)(DAT_000849ac + 0x30);
    pbVar6 = DAT_000849a8;
    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;
  }
  DAT_000849c8 = DAT_000849c8 | 2;
  pbVar6 = DAT_000849a8;
LAB_0003860c:
  DAT_000849ac = (uint)(pbVar2 + DAT_000849b8) & ~DAT_000849b8;
  if (DAT_000849b0 - DAT_000849a4 < DAT_000849ac - DAT_000849a4) {
    DAT_000849ac = DAT_000849b0;
  }
  DAT_000849a8 = (byte *)DAT_000849ac;
  *(undefined4 *)pbVar6 = *(undefined4 *)param_1;
  *(undefined4 *)(pbVar6 + 4) = *(undefined4 *)(param_1 + 4);
  *(undefined4 *)(pbVar6 + 8) = *(undefined4 *)(param_1 + 8);
  *(undefined4 *)(pbVar6 + 0xc) = *(undefined4 *)(param_1 + 0xc);
  *(undefined4 *)(pbVar6 + 0x10) = *(undefined4 *)(param_1 + 0x10);
  *(undefined4 *)(pbVar6 + 0x14) = *(undefined4 *)(param_1 + 0x14);
  *(undefined4 *)(pbVar6 + 0x18) = *(undefined4 *)(param_1 + 0x18);
  *(undefined4 *)(pbVar6 + 0x1c) = *(undefined4 *)(param_1 + 0x1c);
  *(undefined4 *)(pbVar6 + 0x20) = *(undefined4 *)(param_1 + 0x20);
  *(undefined4 *)(pbVar6 + 0x24) = *(undefined4 *)(param_1 + 0x24);
  *(undefined4 *)(pbVar6 + 0x28) = *(undefined4 *)(param_1 + 0x28);
  *(undefined4 *)(pbVar6 + 0x2c) = *(undefined4 *)(param_1 + 0x2c);
  piVar3 = (int *)(**(code **)(*(int *)(*piVar5 + 4) + 0x10c))(*piVar5);
  if (piVar3 == (int *)0x0) {
    uVar4 = bfd_get_error();
    uVar4 = bfd_errmsg(uVar4);
                    /* WARNING: Subroutine does not return */
    FUN_0002aa20("bfd_make_empty_symbol: %s",uVar4);
  }
  iVar1 = piVar5[1];
  *(int **)(pbVar6 + 4) = piVar3;
  piVar3[1] = iVar1;
  piVar3[3] = piVar5[3] & 0xfffffeff;
  piVar3[4] = piVar5[4];
  (**(code **)(*(int *)(*piVar3 + 4) + 0xb8))(*piVar5,piVar5,*piVar3,piVar3);
  if (param_2 == 0) {
    FUN_00038570(pbVar6);
    *(byte **)(pbVar6 + 0x18) = pbVar6;
    *(byte **)(pbVar6 + 0x1c) = pbVar6;
    return pbVar6;
  }
  pbVar2 = pbVar6;
  if ((DAT_00084a10 != param_1) && (pbVar2 = DAT_00084a10, *(int *)(param_1 + 0x1c) != 0)) {
    *(byte **)(*(int *)(param_1 + 0x1c) + 0x18) = pbVar6;
    param_1[0x1c] = 0;
    param_1[0x1d] = 0;
    param_1[0x1e] = 0;
    param_1[0x1f] = 0;
    pbVar2 = DAT_00084a10;
  }
  DAT_00084a10 = pbVar2;
  pbVar2 = pbVar6;
  if ((DAT_00084a14 != param_1) && (pbVar2 = DAT_00084a14, *(int *)(param_1 + 0x18) != 0)) {
    *(byte **)(*(int *)(param_1 + 0x18) + 0x1c) = pbVar6;
    pbVar2 = DAT_00084a14;
  }
  DAT_00084a14 = pbVar2;
  FUN_00038570(param_1);
  *(byte **)(param_1 + 0x18) = param_1;
  *(byte **)(param_1 + 0x1c) = param_1;
  FUN_00035730(pbVar6);
  return pbVar6;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00016020
ADD EBX,0x42a47
SUB ESP,0x1c
MOV ESI,dword ptr [ESP + 0x30]
CMP ESI,dword ptr [EBX + 0xffffff54]
JZ 0x000387db
MOV EBP,dword ptr [ESI + 0x4]
TEST byte ptr [ESI],0x1
JNZ 0x00038740
LEA EDX,[EBX + 0x99a0]
MOV EAX,dword ptr [EDX + 0x10]
MOV ECX,EAX
MOV dword ptr [ESP + 0x4],EAX
MOV EAX,dword ptr [EDX + 0xc]
SUB ECX,EAX
CMP ECX,0x2f
JBE 0x00038770
MOV EDI,dword ptr [EDX + 0x8]
ADD EAX,0x30
MOV dword ptr [EDX + 0xc],EAX
CMP EAX,EDI
JZ 0x000387a1
MOV ECX,dword ptr [EDX + 0x18]
ADD EAX,ECX
NOT ECX
AND EAX,ECX
MOV ECX,dword ptr [EDX + 0x4]
MOV dword ptr [ESP + 0x8],EAX
MOV dword ptr [EDX + 0xc],EAX
SUB EAX,ECX
MOV dword ptr [ESP + 0xc],EAX
MOV EAX,dword ptr [ESP + 0x4]
SUB EAX,ECX
CMP dword ptr [ESP + 0xc],EAX
JA 0x00038730
MOV EAX,dword ptr [ESP + 0x8]
SUB ESP,0xc
MOV dword ptr [EDX + 0x8],EAX
MOV EAX,dword ptr [ESI]
MOV dword ptr [EDI],EAX
MOV EAX,dword ptr [ESI + 0x4]
MOV dword ptr [EDI + 0x4],EAX
MOV EAX,dword ptr [ESI + 0x8]
MOV dword ptr [EDI + 0x8],EAX
MOV EAX,dword ptr [ESI + 0xc]
MOV dword ptr [EDI + 0xc],EAX
MOV EAX,dword ptr [ESI + 0x10]
MOV dword ptr [EDI + 0x10],EAX
MOV EAX,dword ptr [ESI + 0x14]
MOV dword ptr [EDI + 0x14],EAX
MOV EAX,dword ptr [ESI + 0x18]
MOV dword ptr [EDI + 0x18],EAX
MOV EAX,dword ptr [ESI + 0x1c]
MOV dword ptr [EDI + 0x1c],EAX
MOV EAX,dword ptr [ESI + 0x20]
MOV dword ptr [EDI + 0x20],EAX
MOV EAX,dword ptr [ESI + 0x24]
MOV dword ptr [EDI + 0x24],EAX
MOV EAX,dword ptr [ESI + 0x28]
MOV dword ptr [EDI + 0x28],EAX
MOV EAX,dword ptr [ESI + 0x2c]
MOV dword ptr [EDI + 0x2c],EAX
MOV EAX,dword ptr [EBP]
MOV EDX,dword ptr [EAX + 0x4]
PUSH EAX
CALL dword ptr [EDX + 0x10c]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000387f4
MOV EDX,dword ptr [EBP + 0x4]
MOV dword ptr [EDI + 0x4],EAX
MOV dword ptr [EAX + 0x4],EDX
MOV EDX,dword ptr [EBP + 0xc]
AND DH,0xfe
MOV dword ptr [EAX + 0xc],EDX
MOV EDX,dword ptr [EBP + 0x10]
MOV dword ptr [EAX + 0x10],EDX
MOV EDX,dword ptr [EAX]
MOV ECX,dword ptr [EDX + 0x4]
PUSH EAX
PUSH EDX
PUSH EBP
PUSH dword ptr [EBP]
CALL dword ptr [ECX + 0xb8]
MOV EAX,dword ptr [ESP + 0x44]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000387b0
LEA EAX,[EBX + 0x9a10]
CMP dword ptr [EAX],ESI
JZ 0x00038760
MOV EAX,dword ptr [ESI + 0x1c]
TEST EAX,EAX
JZ 0x000386f4
MOV dword ptr [EAX + 0x18],EDI
MOV dword ptr [ESI + 0x1c],0x0
LEA EAX,[EBX + 0x9a14]
CMP dword ptr [EAX],ESI
JZ 0x0003876c
MOV EAX,dword ptr [ESI + 0x18]
TEST EAX,EAX
JZ 0x00038708
MOV dword ptr [EAX + 0x1c],EDI
SUB ESP,0xc
PUSH ESI
CALL 0x00038570
MOV dword ptr [ESI + 0x18],ESI
MOV dword ptr [ESI + 0x1c],ESI
MOV dword ptr [ESP],EDI
CALL 0x00035730
ADD ESP,0x10
MOV EAX,EDI
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESP + 0x4]
MOV dword ptr [EDX + 0xc],EAX
MOV dword ptr [ESP + 0x8],EAX
JMP 0x00038635
LEA EAX,[EBX + 0x9798]
CMP dword ptr [EAX],EBP
JZ 0x000387d0
MOV EAX,ESI
CALL 0x000370b0
MOV ESI,EAX
MOV EBP,dword ptr [EAX + 0x4]
JMP 0x000385de
MOV dword ptr [EAX],EDI
LEA EAX,[EBX + 0x9a14]
CMP dword ptr [EAX],ESI
JNZ 0x000386fe
MOV dword ptr [EAX],EDI
JMP 0x00038708
SUB ESP,0x8
PUSH 0x30
PUSH EDX
MOV dword ptr [ESP + 0x14],EDX
CALL 0x00014190
MOV EDX,dword ptr [ESP + 0x14]
MOV EDI,dword ptr [EDX + 0x10]
MOV EAX,dword ptr [EDX + 0xc]
MOV dword ptr [ESP + 0x14],EDI
MOV EDI,dword ptr [EDX + 0x8]
ADD EAX,0x30
ADD ESP,0x10
MOV dword ptr [EDX + 0xc],EAX
CMP EAX,EDI
JNZ 0x0003860c
OR byte ptr [EDX + 0x28],0x2
JMP 0x0003860c
SUB ESP,0xc
PUSH EDI
CALL 0x00038570
ADD ESP,0x10
MOV dword ptr [EDI + 0x18],EDI
MOV EAX,EDI
MOV dword ptr [EDI + 0x1c],EDI
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ESI,dword ptr [ESI + 0xc]
MOV EBP,dword ptr [ESI + 0x4]
JMP 0x000385de
LEA EAX,[EBX + 0xfffe2628]
PUSH ESI
PUSH EAX
LEA EAX,[EBX + 0xfffe1e90]
PUSH 0x231
PUSH EAX
CALL 0x0002aaa0
CALL 0x000142a0
SUB ESP,0xc
PUSH EAX
CALL 0x00014680
POP EDX
POP ECX
PUSH EAX
LEA EAX,[EBX + 0xfffe1ecc]
PUSH EAX
CALL 0x0002aa20
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nbyte * FUN_000385b0(byte *param_1,int param_2)\n\n{\n  int iVar1;\n  byte *pbVar2;\n  int *piVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  byte *pbVar6;\n  \n  if (param_1 == PTR_DAT_0007af54) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0002aaa0("../../gas/symbols.c",0x231,"symbol_clone",param_1);\n  }\n  piVar5 = *(int **)(param_1 + 4);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_00084798 == piVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      piVar5 = *(int **)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_000370b0();\n      piVar5 = *(int **)(param_1 + 4);\n    }\n  }\n  if (DAT_000849b0 - DAT_000849ac < 0x30) {\n    _obstack_newchunk(&DAT_000849a0,0x30);\n    pbVar2 = (byte *)(DAT_000849ac + 0x30);\n    pbVar6 = DAT_000849a8;\n    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;\n  }\n  else {\n    pbVar2 = (byte *)(DAT_000849ac + 0x30);\n    pbVar6 = DAT_000849a8;\n    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;\n  }\n  DAT_000849c8 = DAT_000849c8 | 2;\n  pbVar6 = DAT_000849a8;\nLAB_0003860c:\n  DAT_000849ac = (uint)(pbVar2 + DAT_000849b8) & ~DAT_000849b8;\n  if (DAT_000849b0 - DAT_000849a4 < DAT_000849ac - DAT_000849a4) {\n    DAT_000849ac = DAT_000849b0;\n  }\n  DAT_000849a8 = (byte *)DAT_000849ac;\n  *(undefined4 *)pbVar6 = *(undefined4 *)param_1;\n  *(undefined4 *)(pbVar6 + 4) = *(undefined4 *)(param_1 + 4);\n  *(undefined4 *)(pbVar6 + 8) = *(undefined4 *)(param_1 + 8);\n  *(undefined4 *)(pbVar6 + 0xc) = *(undefined4 *)(param_1 + 0xc);\n  *(undefined4 *)(pbVar6 + 0x10) = *(undefined4 *)(param_1 + 0x10);\n  *(undefined4 *)(pbVar6 + 0x14) = *(undefined4 *)(param_1 + 0x14);\n  *(undefined4 *)(pbVar6 + 0x18) = *(undefined4 *)(param_1 + 0x18);\n  *(undefined4 *)(pbVar6 + 0x1c) = *(undefined4 *)(param_1 + 0x1c);\n  *(undefined4 *)(pbVar6 + 0x20) = *(undefined4 *)(param_1 + 0x20);\n  *(undefined4 *)(pbVar6 + 0x24) = *(undefined4 *)(param_1 + 0x24);\n  *(undefined4 *)(pbVar6 + 0x28) = *(undefined4 *)(param_1 + 0x28);\n  *(undefined4 *)(pbVar6 + 0x2c) = *(undefined4 *)(param_1 + 0x2c);\n  piVar3 = (int *)(**(code **)(*(int *)(*piVar5 + 4) + 0x10c))(*piVar5);\n  if (piVar3 == (int *)0x0) {\n    uVar4 = bfd_get_error();\n    uVar4 = bfd_errmsg(uVar4);\n                    /* WARNING: Subroutine does not return */\n    FUN_0002aa20("bfd_make_empty_symbol: %s",uVar4);\n  }\n  iVar1 = piVar5[1];\n  *(int **)(pbVar6 + 4) = piVar3;\n  piVar3[1] = iVar1;\n  piVar3[3] = piVar5[3] & 0xfffffeff;\n  piVar3[4] = piVar5[4];\n  (**(code **)(*(int *)(*piVar3 + 4) + 0xb8))(*piVar5,piVar5,*piVar3,piVar3);\n  if (param_2 == 0) {\n    FUN_00038570(pbVar6);\n    *(byte **)(pbVar6 + 0x18) = pbVar6;\n    *(byte **)(pbVar6 + 0x1c) = pbVar6;\n    return pbVar6;\n  }\n  pbVar2 = pbVar6;\n  if ((DAT_00084a10 != param_1) && (pbVar2 = DAT_00084a10, *(int *)(param_1 + 0x1c) != 0)) {\n    *(byte **)(*(int *)(param_1 + 0x1c) + 0x18) = pbVar6;\n    param_1[0x1c] = 0;\n    param_1[0x1d] = 0;\n    param_1[0x1e] = 0;\n    param_1[0x1f] = 0;\n    pbVar2 = DAT_00084a10;\n  }\n  DAT_00084a10 = pbVar2;\n  pbVar2 = pbVar6;\n  if ((DAT_00084a14 != param_1) && (pbVar2 = DAT_00084a14, *(int *)(param_1 + 0x18) != 0)) {\n    *(byte **)(*(int *)(param_1 + 0x18) + 0x1c) = pbVar6;\n    pbVar2 = DAT_00084a14;\n  }\n  DAT_00084a14 = pbVar2;\n  FUN_00038570(param_1);\n  *(byte **)(param_1 + 0x18) = param_1;\n  *(byte **)(param_1 + 0x1c) = param_1;\n  FUN_00035730(pbVar6);\n  return pbVar6;\n}\n\n" comment (function_definition "byte * FUN_000385b0(byte *param_1,int param_2)\n\n{\n  int iVar1;\n  byte *pbVar2;\n  int *piVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  byte *pbVar6;\n  \n  if (param_1 == PTR_DAT_0007af54) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0002aaa0("../../gas/symbols.c",0x231,"symbol_clone",param_1);\n  }\n  piVar5 = *(int **)(param_1 + 4);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_00084798 == piVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      piVar5 = *(int **)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_000370b0();\n      piVar5 = *(int **)(param_1 + 4);\n    }\n  }\n  if (DAT_000849b0 - DAT_000849ac < 0x30) {\n    _obstack_newchunk(&DAT_000849a0,0x30);\n    pbVar2 = (byte *)(DAT_000849ac + 0x30);\n    pbVar6 = DAT_000849a8;\n    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;\n  }\n  else {\n    pbVar2 = (byte *)(DAT_000849ac + 0x30);\n    pbVar6 = DAT_000849a8;\n    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;\n  }\n  DAT_000849c8 = DAT_000849c8 | 2;\n  pbVar6 = DAT_000849a8;\nLAB_0003860c:\n  DAT_000849ac = (uint)(pbVar2 + DAT_000849b8) & ~DAT_000849b8;\n  if (DAT_000849b0 - DAT_000849a4 < DAT_000849ac - DAT_000849a4) {\n    DAT_000849ac = DAT_000849b0;\n  }\n  DAT_000849a8 = (byte *)DAT_000849ac;\n  *(undefined4 *)pbVar6 = *(undefined4 *)param_1;\n  *(undefined4 *)(pbVar6 + 4) = *(undefined4 *)(param_1 + 4);\n  *(undefined4 *)(pbVar6 + 8) = *(undefined4 *)(param_1 + 8);\n  *(undefined4 *)(pbVar6 + 0xc) = *(undefined4 *)(param_1 + 0xc);\n  *(undefined4 *)(pbVar6 + 0x10) = *(undefined4 *)(param_1 + 0x10);\n  *(undefined4 *)(pbVar6 + 0x14) = *(undefined4 *)(param_1 + 0x14);\n  *(undefined4 *)(pbVar6 + 0x18) = *(undefined4 *)(param_1 + 0x18);\n  *(undefined4 *)(pbVar6 + 0x1c) = *(undefined4 *)(param_1 + 0x1c);\n  *(undefined4 *)(pbVar6 + 0x20) = *(undefined4 *)(param_1 + 0x20);\n  *(undefined4 *)(pbVar6 + 0x24) = *(undefined4 *)(param_1 + 0x24);\n  *(undefined4 *)(pbVar6 + 0x28) = *(undefined4 *)(param_1 + 0x28);\n  *(undefined4 *)(pbVar6 + 0x2c) = *(undefined4 *)(param_1 + 0x2c);\n  piVar3 = (int *)(**(code **)(*(int *)(*piVar5 + 4) + 0x10c))(*piVar5);\n  if (piVar3 == (int *)0x0) {\n    uVar4 = bfd_get_error();\n    uVar4 = bfd_errmsg(uVar4);\n                    /* WARNING: Subroutine does not return */\n    FUN_0002aa20("bfd_make_empty_symbol: %s",uVar4);\n  }\n  iVar1 = piVar5[1];\n  *(int **)(pbVar6 + 4) = piVar3;\n  piVar3[1] = iVar1;\n  piVar3[3] = piVar5[3] & 0xfffffeff;\n  piVar3[4] = piVar5[4];\n  (**(code **)(*(int *)(*piVar3 + 4) + 0xb8))(*piVar5,piVar5,*piVar3,piVar3);\n  if (param_2 == 0) {\n    FUN_00038570(pbVar6);\n    *(byte **)(pbVar6 + 0x18) = pbVar6;\n    *(byte **)(pbVar6 + 0x1c) = pbVar6;\n    return pbVar6;\n  }\n  pbVar2 = pbVar6;\n  if ((DAT_00084a10 != param_1) && (pbVar2 = DAT_00084a10, *(int *)(param_1 + 0x1c) != 0)) {\n    *(byte **)(*(int *)(param_1 + 0x1c) + 0x18) = pbVar6;\n    param_1[0x1c] = 0;\n    param_1[0x1d] = 0;\n    param_1[0x1e] = 0;\n    param_1[0x1f] = 0;\n    pbVar2 = DAT_00084a10;\n  }\n  DAT_00084a10 = pbVar2;\n  pbVar2 = pbVar6;\n  if ((DAT_00084a14 != param_1) && (pbVar2 = DAT_00084a14, *(int *)(param_1 + 0x18) != 0)) {\n    *(byte **)(*(int *)(param_1 + 0x18) + 0x1c) = pbVar6;\n    pbVar2 = DAT_00084a14;\n  }\n  DAT_00084a14 = pbVar2;\n  FUN_00038570(param_1);\n  *(byte **)(param_1 + 0x18) = param_1;\n  *(byte **)(param_1 + 0x1c) = param_1;\n  FUN_00035730(pbVar6);\n  return pbVar6;\n}" type_identifier (pointer_declarator "* FUN_000385b0(byte *param_1,int param_2)" * (function_declarator "FUN_000385b0(byte *param_1,int param_2)" identifier (parameter_list "(byte *param_1,int param_2)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) )))) (compound_statement "{\n  int iVar1;\n  byte *pbVar2;\n  int *piVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  byte *pbVar6;\n  \n  if (param_1 == PTR_DAT_0007af54) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0002aaa0("../../gas/symbols.c",0x231,"symbol_clone",param_1);\n  }\n  piVar5 = *(int **)(param_1 + 4);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_00084798 == piVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      piVar5 = *(int **)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_000370b0();\n      piVar5 = *(int **)(param_1 + 4);\n    }\n  }\n  if (DAT_000849b0 - DAT_000849ac < 0x30) {\n    _obstack_newchunk(&DAT_000849a0,0x30);\n    pbVar2 = (byte *)(DAT_000849ac + 0x30);\n    pbVar6 = DAT_000849a8;\n    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;\n  }\n  else {\n    pbVar2 = (byte *)(DAT_000849ac + 0x30);\n    pbVar6 = DAT_000849a8;\n    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;\n  }\n  DAT_000849c8 = DAT_000849c8 | 2;\n  pbVar6 = DAT_000849a8;\nLAB_0003860c:\n  DAT_000849ac = (uint)(pbVar2 + DAT_000849b8) & ~DAT_000849b8;\n  if (DAT_000849b0 - DAT_000849a4 < DAT_000849ac - DAT_000849a4) {\n    DAT_000849ac = DAT_000849b0;\n  }\n  DAT_000849a8 = (byte *)DAT_000849ac;\n  *(undefined4 *)pbVar6 = *(undefined4 *)param_1;\n  *(undefined4 *)(pbVar6 + 4) = *(undefined4 *)(param_1 + 4);\n  *(undefined4 *)(pbVar6 + 8) = *(undefined4 *)(param_1 + 8);\n  *(undefined4 *)(pbVar6 + 0xc) = *(undefined4 *)(param_1 + 0xc);\n  *(undefined4 *)(pbVar6 + 0x10) = *(undefined4 *)(param_1 + 0x10);\n  *(undefined4 *)(pbVar6 + 0x14) = *(undefined4 *)(param_1 + 0x14);\n  *(undefined4 *)(pbVar6 + 0x18) = *(undefined4 *)(param_1 + 0x18);\n  *(undefined4 *)(pbVar6 + 0x1c) = *(undefined4 *)(param_1 + 0x1c);\n  *(undefined4 *)(pbVar6 + 0x20) = *(undefined4 *)(param_1 + 0x20);\n  *(undefined4 *)(pbVar6 + 0x24) = *(undefined4 *)(param_1 + 0x24);\n  *(undefined4 *)(pbVar6 + 0x28) = *(undefined4 *)(param_1 + 0x28);\n  *(undefined4 *)(pbVar6 + 0x2c) = *(undefined4 *)(param_1 + 0x2c);\n  piVar3 = (int *)(**(code **)(*(int *)(*piVar5 + 4) + 0x10c))(*piVar5);\n  if (piVar3 == (int *)0x0) {\n    uVar4 = bfd_get_error();\n    uVar4 = bfd_errmsg(uVar4);\n                    /* WARNING: Subroutine does not return */\n    FUN_0002aa20("bfd_make_empty_symbol: %s",uVar4);\n  }\n  iVar1 = piVar5[1];\n  *(int **)(pbVar6 + 4) = piVar3;\n  piVar3[1] = iVar1;\n  piVar3[3] = piVar5[3] & 0xfffffeff;\n  piVar3[4] = piVar5[4];\n  (**(code **)(*(int *)(*piVar3 + 4) + 0xb8))(*piVar5,piVar5,*piVar3,piVar3);\n  if (param_2 == 0) {\n    FUN_00038570(pbVar6);\n    *(byte **)(pbVar6 + 0x18) = pbVar6;\n    *(byte **)(pbVar6 + 0x1c) = pbVar6;\n    return pbVar6;\n  }\n  pbVar2 = pbVar6;\n  if ((DAT_00084a10 != param_1) && (pbVar2 = DAT_00084a10, *(int *)(param_1 + 0x1c) != 0)) {\n    *(byte **)(*(int *)(param_1 + 0x1c) + 0x18) = pbVar6;\n    param_1[0x1c] = 0;\n    param_1[0x1d] = 0;\n    param_1[0x1e] = 0;\n    param_1[0x1f] = 0;\n    pbVar2 = DAT_00084a10;\n  }\n  DAT_00084a10 = pbVar2;\n  pbVar2 = pbVar6;\n  if ((DAT_00084a14 != param_1) && (pbVar2 = DAT_00084a14, *(int *)(param_1 + 0x18) != 0)) {\n    *(byte **)(*(int *)(param_1 + 0x18) + 0x1c) = pbVar6;\n    pbVar2 = DAT_00084a14;\n  }\n  DAT_00084a14 = pbVar2;\n  FUN_00038570(param_1);\n  *(byte **)(param_1 + 0x18) = param_1;\n  *(byte **)(param_1 + 0x1c) = param_1;\n  FUN_00035730(pbVar6);\n  return pbVar6;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (if_statement "if (param_1 == PTR_DAT_0007af54) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0002aaa0("../../gas/symbols.c",0x231,"symbol_clone",param_1);\n  }" if (parenthesized_expression "(param_1 == PTR_DAT_0007af54)" ( (binary_expression "param_1 == PTR_DAT_0007af54" identifier == identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0002aaa0("../../gas/symbols.c",0x231,"symbol_clone",param_1);\n  }" { comment (expression_statement "FUN_0002aaa0("../../gas/symbols.c",0x231,"symbol_clone",param_1);" (call_expression "FUN_0002aaa0("../../gas/symbols.c",0x231,"symbol_clone",param_1)" identifier (argument_list "("../../gas/symbols.c",0x231,"symbol_clone",param_1)" ( (string_literal ""../../gas/symbols.c"" " string_content ") , number_literal , (string_literal ""symbol_clone"" " string_content ") , identifier ))) ;) })) (expression_statement "piVar5 = *(int **)(param_1 + 4);" (assignment_expression "piVar5 = *(int **)(param_1 + 4)" identifier = (pointer_expression "*(int **)(param_1 + 4)" * (cast_expression "(int **)(param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (if_statement "if ((*param_1 & 1) != 0) {\n    if (DAT_00084798 == piVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      piVar5 = *(int **)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_000370b0();\n      piVar5 = *(int **)(param_1 + 4);\n    }\n  }" if (parenthesized_expression "((*param_1 & 1) != 0)" ( (binary_expression "(*param_1 & 1) != 0" (parenthesized_expression "(*param_1 & 1)" ( (binary_expression "*param_1 & 1" (pointer_expression "*param_1" * identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    if (DAT_00084798 == piVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      piVar5 = *(int **)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_000370b0();\n      piVar5 = *(int **)(param_1 + 4);\n    }\n  }" { (if_statement "if (DAT_00084798 == piVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      piVar5 = *(int **)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_000370b0();\n      piVar5 = *(int **)(param_1 + 4);\n    }" if (parenthesized_expression "(DAT_00084798 == piVar5)" ( (binary_expression "DAT_00084798 == piVar5" identifier == identifier) )) (compound_statement "{\n      param_1 = *(byte **)(param_1 + 0xc);\n      piVar5 = *(int **)(param_1 + 4);\n    }" { (expression_statement "param_1 = *(byte **)(param_1 + 0xc);" (assignment_expression "param_1 = *(byte **)(param_1 + 0xc)" identifier = (pointer_expression "*(byte **)(param_1 + 0xc)" * (cast_expression "(byte **)(param_1 + 0xc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "piVar5 = *(int **)(param_1 + 4);" (assignment_expression "piVar5 = *(int **)(param_1 + 4)" identifier = (pointer_expression "*(int **)(param_1 + 4)" * (cast_expression "(int **)(param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      param_1 = (byte *)FUN_000370b0();\n      piVar5 = *(int **)(param_1 + 4);\n    }" else (compound_statement "{\n      param_1 = (byte *)FUN_000370b0();\n      piVar5 = *(int **)(param_1 + 4);\n    }" { (expression_statement "param_1 = (byte *)FUN_000370b0();" (assignment_expression "param_1 = (byte *)FUN_000370b0()" identifier = (cast_expression "(byte *)FUN_000370b0()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000370b0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "piVar5 = *(int **)(param_1 + 4);" (assignment_expression "piVar5 = *(int **)(param_1 + 4)" identifier = (pointer_expression "*(int **)(param_1 + 4)" * (cast_expression "(int **)(param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) }))) })) (if_statement "if (DAT_000849b0 - DAT_000849ac < 0x30) {\n    _obstack_newchunk(&DAT_000849a0,0x30);\n    pbVar2 = (byte *)(DAT_000849ac + 0x30);\n    pbVar6 = DAT_000849a8;\n    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;\n  }\n  else {\n    pbVar2 = (byte *)(DAT_000849ac + 0x30);\n    pbVar6 = DAT_000849a8;\n    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;\n  }" if (parenthesized_expression "(DAT_000849b0 - DAT_000849ac < 0x30)" ( (binary_expression "DAT_000849b0 - DAT_000849ac < 0x30" (binary_expression "DAT_000849b0 - DAT_000849ac" identifier - identifier) < number_literal) )) (compound_statement "{\n    _obstack_newchunk(&DAT_000849a0,0x30);\n    pbVar2 = (byte *)(DAT_000849ac + 0x30);\n    pbVar6 = DAT_000849a8;\n    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;\n  }" { (expression_statement "_obstack_newchunk(&DAT_000849a0,0x30);" (call_expression "_obstack_newchunk(&DAT_000849a0,0x30)" identifier (argument_list "(&DAT_000849a0,0x30)" ( (pointer_expression "&DAT_000849a0" & identifier) , number_literal ))) ;) (expression_statement "pbVar2 = (byte *)(DAT_000849ac + 0x30);" (assignment_expression "pbVar2 = (byte *)(DAT_000849ac + 0x30)" identifier = (cast_expression "(byte *)(DAT_000849ac + 0x30)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000849ac + 0x30)" ( (binary_expression "DAT_000849ac + 0x30" identifier + number_literal) )))) ;) (expression_statement "pbVar6 = DAT_000849a8;" (assignment_expression "pbVar6 = DAT_000849a8" identifier = identifier) ;) (if_statement "if (pbVar2 != DAT_000849a8) goto LAB_0003860c;" if (parenthesized_expression "(pbVar2 != DAT_000849a8)" ( (binary_expression "pbVar2 != DAT_000849a8" identifier != identifier) )) (goto_statement "goto LAB_0003860c;" goto statement_identifier ;)) }) (else_clause "else {\n    pbVar2 = (byte *)(DAT_000849ac + 0x30);\n    pbVar6 = DAT_000849a8;\n    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;\n  }" else (compound_statement "{\n    pbVar2 = (byte *)(DAT_000849ac + 0x30);\n    pbVar6 = DAT_000849a8;\n    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;\n  }" { (expression_statement "pbVar2 = (byte *)(DAT_000849ac + 0x30);" (assignment_expression "pbVar2 = (byte *)(DAT_000849ac + 0x30)" identifier = (cast_expression "(byte *)(DAT_000849ac + 0x30)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000849ac + 0x30)" ( (binary_expression "DAT_000849ac + 0x30" identifier + number_literal) )))) ;) (expression_statement "pbVar6 = DAT_000849a8;" (assignment_expression "pbVar6 = DAT_000849a8" identifier = identifier) ;) (if_statement "if (pbVar2 != DAT_000849a8) goto LAB_0003860c;" if (parenthesized_expression "(pbVar2 != DAT_000849a8)" ( (binary_expression "pbVar2 != DAT_000849a8" identifier != identifier) )) (goto_statement "goto LAB_0003860c;" goto statement_identifier ;)) }))) (expression_statement "DAT_000849c8 = DAT_000849c8 | 2;" (assignment_expression "DAT_000849c8 = DAT_000849c8 | 2" identifier = (binary_expression "DAT_000849c8 | 2" identifier | number_literal)) ;) (expression_statement "pbVar6 = DAT_000849a8;" (assignment_expression "pbVar6 = DAT_000849a8" identifier = identifier) ;) (labeled_statement "LAB_0003860c:\n  DAT_000849ac = (uint)(pbVar2 + DAT_000849b8) & ~DAT_000849b8;" statement_identifier : (expression_statement "DAT_000849ac = (uint)(pbVar2 + DAT_000849b8) & ~DAT_000849b8;" (assignment_expression "DAT_000849ac = (uint)(pbVar2 + DAT_000849b8) & ~DAT_000849b8" identifier = (binary_expression "(uint)(pbVar2 + DAT_000849b8) & ~DAT_000849b8" (call_expression "(uint)(pbVar2 + DAT_000849b8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar2 + DAT_000849b8)" ( (binary_expression "pbVar2 + DAT_000849b8" identifier + identifier) ))) & (unary_expression "~DAT_000849b8" ~ identifier))) ;)) (if_statement "if (DAT_000849b0 - DAT_000849a4 < DAT_000849ac - DAT_000849a4) {\n    DAT_000849ac = DAT_000849b0;\n  }" if (parenthesized_expression "(DAT_000849b0 - DAT_000849a4 < DAT_000849ac - DAT_000849a4)" ( (binary_expression "DAT_000849b0 - DAT_000849a4 < DAT_000849ac - DAT_000849a4" (binary_expression "DAT_000849b0 - DAT_000849a4" identifier - identifier) < (binary_expression "DAT_000849ac - DAT_000849a4" identifier - identifier)) )) (compound_statement "{\n    DAT_000849ac = DAT_000849b0;\n  }" { (expression_statement "DAT_000849ac = DAT_000849b0;" (assignment_expression "DAT_000849ac = DAT_000849b0" identifier = identifier) ;) })) (expression_statement "DAT_000849a8 = (byte *)DAT_000849ac;" (assignment_expression "DAT_000849a8 = (byte *)DAT_000849ac" identifier = (cast_expression "(byte *)DAT_000849ac" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "*(undefined4 *)pbVar6 = *(undefined4 *)param_1;" (assignment_expression "*(undefined4 *)pbVar6 = *(undefined4 *)param_1" (pointer_expression "*(undefined4 *)pbVar6" * (cast_expression "(undefined4 *)pbVar6" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined4 *)param_1" * (cast_expression "(undefined4 *)param_1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(undefined4 *)(pbVar6 + 4) = *(undefined4 *)(param_1 + 4);" (assignment_expression "*(undefined4 *)(pbVar6 + 4) = *(undefined4 *)(param_1 + 4)" (pointer_expression "*(undefined4 *)(pbVar6 + 4)" * (cast_expression "(undefined4 *)(pbVar6 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar6 + 4)" ( (binary_expression "pbVar6 + 4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(pbVar6 + 8) = *(undefined4 *)(param_1 + 8);" (assignment_expression "*(undefined4 *)(pbVar6 + 8) = *(undefined4 *)(param_1 + 8)" (pointer_expression "*(undefined4 *)(pbVar6 + 8)" * (cast_expression "(undefined4 *)(pbVar6 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar6 + 8)" ( (binary_expression "pbVar6 + 8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(pbVar6 + 0xc) = *(undefined4 *)(param_1 + 0xc);" (assignment_expression "*(undefined4 *)(pbVar6 + 0xc) = *(undefined4 *)(param_1 + 0xc)" (pointer_expression "*(undefined4 *)(pbVar6 + 0xc)" * (cast_expression "(undefined4 *)(pbVar6 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar6 + 0xc)" ( (binary_expression "pbVar6 + 0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(pbVar6 + 0x10) = *(undefined4 *)(param_1 + 0x10);" (assignment_expression "*(undefined4 *)(pbVar6 + 0x10) = *(undefined4 *)(param_1 + 0x10)" (pointer_expression "*(undefined4 *)(pbVar6 + 0x10)" * (cast_expression "(undefined4 *)(pbVar6 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar6 + 0x10)" ( (binary_expression "pbVar6 + 0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(pbVar6 + 0x14) = *(undefined4 *)(param_1 + 0x14);" (assignment_expression "*(undefined4 *)(pbVar6 + 0x14) = *(undefined4 *)(param_1 + 0x14)" (pointer_expression "*(undefined4 *)(pbVar6 + 0x14)" * (cast_expression "(undefined4 *)(pbVar6 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar6 + 0x14)" ( (binary_expression "pbVar6 + 0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(pbVar6 + 0x18) = *(undefined4 *)(param_1 + 0x18);" (assignment_expression "*(undefined4 *)(pbVar6 + 0x18) = *(undefined4 *)(param_1 + 0x18)" (pointer_expression "*(undefined4 *)(pbVar6 + 0x18)" * (cast_expression "(undefined4 *)(pbVar6 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar6 + 0x18)" ( (binary_expression "pbVar6 + 0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x18)" * (cast_expression "(undefined4 *)(param_1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(pbVar6 + 0x1c) = *(undefined4 *)(param_1 + 0x1c);" (assignment_expression "*(undefined4 *)(pbVar6 + 0x1c) = *(undefined4 *)(param_1 + 0x1c)" (pointer_expression "*(undefined4 *)(pbVar6 + 0x1c)" * (cast_expression "(undefined4 *)(pbVar6 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar6 + 0x1c)" ( (binary_expression "pbVar6 + 0x1c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x1c)" * (cast_expression "(undefined4 *)(param_1 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(pbVar6 + 0x20) = *(undefined4 *)(param_1 + 0x20);" (assignment_expression "*(undefined4 *)(pbVar6 + 0x20) = *(undefined4 *)(param_1 + 0x20)" (pointer_expression "*(undefined4 *)(pbVar6 + 0x20)" * (cast_expression "(undefined4 *)(pbVar6 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar6 + 0x20)" ( (binary_expression "pbVar6 + 0x20" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x20)" * (cast_expression "(undefined4 *)(param_1 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(pbVar6 + 0x24) = *(undefined4 *)(param_1 + 0x24);" (assignment_expression "*(undefined4 *)(pbVar6 + 0x24) = *(undefined4 *)(param_1 + 0x24)" (pointer_expression "*(undefined4 *)(pbVar6 + 0x24)" * (cast_expression "(undefined4 *)(pbVar6 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar6 + 0x24)" ( (binary_expression "pbVar6 + 0x24" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x24)" * (cast_expression "(undefined4 *)(param_1 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(pbVar6 + 0x28) = *(undefined4 *)(param_1 + 0x28);" (assignment_expression "*(undefined4 *)(pbVar6 + 0x28) = *(undefined4 *)(param_1 + 0x28)" (pointer_expression "*(undefined4 *)(pbVar6 + 0x28)" * (cast_expression "(undefined4 *)(pbVar6 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar6 + 0x28)" ( (binary_expression "pbVar6 + 0x28" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x28)" * (cast_expression "(undefined4 *)(param_1 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(pbVar6 + 0x2c) = *(undefined4 *)(param_1 + 0x2c);" (assignment_expression "*(undefined4 *)(pbVar6 + 0x2c) = *(undefined4 *)(param_1 + 0x2c)" (pointer_expression "*(undefined4 *)(pbVar6 + 0x2c)" * (cast_expression "(undefined4 *)(pbVar6 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar6 + 0x2c)" ( (binary_expression "pbVar6 + 0x2c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x2c)" * (cast_expression "(undefined4 *)(param_1 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "piVar3 = (int *)(**(code **)(*(int *)(*piVar5 + 4) + 0x10c))(*piVar5);" (assignment_expression "piVar3 = (int *)(**(code **)(*(int *)(*piVar5 + 4) + 0x10c))(*piVar5)" identifier = (cast_expression "(int *)(**(code **)(*(int *)(*piVar5 + 4) + 0x10c))(*piVar5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*(int *)(*piVar5 + 4) + 0x10c))(*piVar5)" (parenthesized_expression "(**(code **)(*(int *)(*piVar5 + 4) + 0x10c))" ( (pointer_expression "**(code **)(*(int *)(*piVar5 + 4) + 0x10c)" * (pointer_expression "*(code **)(*(int *)(*piVar5 + 4) + 0x10c)" * (cast_expression "(code **)(*(int *)(*piVar5 + 4) + 0x10c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(*piVar5 + 4) + 0x10c)" ( (binary_expression "*(int *)(*piVar5 + 4) + 0x10c" (pointer_expression "*(int *)(*piVar5 + 4)" * (cast_expression "(int *)(*piVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar5 + 4)" ( (binary_expression "*piVar5 + 4" (pointer_expression "*piVar5" * identifier) + number_literal) )))) + number_literal) ))))) )) (argument_list "(*piVar5)" ( (pointer_expression "*piVar5" * identifier) ))))) ;) (if_statement "if (piVar3 == (int *)0x0) {\n    uVar4 = bfd_get_error();\n    uVar4 = bfd_errmsg(uVar4);\n                    /* WARNING: Subroutine does not return */\n    FUN_0002aa20("bfd_make_empty_symbol: %s",uVar4);\n  }" if (parenthesized_expression "(piVar3 == (int *)0x0)" ( (binary_expression "piVar3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar4 = bfd_get_error();\n    uVar4 = bfd_errmsg(uVar4);\n                    /* WARNING: Subroutine does not return */\n    FUN_0002aa20("bfd_make_empty_symbol: %s",uVar4);\n  }" { (expression_statement "uVar4 = bfd_get_error();" (assignment_expression "uVar4 = bfd_get_error()" identifier = (call_expression "bfd_get_error()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar4 = bfd_errmsg(uVar4);" (assignment_expression "uVar4 = bfd_errmsg(uVar4)" identifier = (call_expression "bfd_errmsg(uVar4)" identifier (argument_list "(uVar4)" ( identifier )))) ;) comment (expression_statement "FUN_0002aa20("bfd_make_empty_symbol: %s",uVar4);" (call_expression "FUN_0002aa20("bfd_make_empty_symbol: %s",uVar4)" identifier (argument_list "("bfd_make_empty_symbol: %s",uVar4)" ( (string_literal ""bfd_make_empty_symbol: %s"" " string_content ") , identifier ))) ;) })) (expression_statement "iVar1 = piVar5[1];" (assignment_expression "iVar1 = piVar5[1]" identifier = (subscript_expression "piVar5[1]" identifier [ number_literal ])) ;) (expression_statement "*(int **)(pbVar6 + 4) = piVar3;" (assignment_expression "*(int **)(pbVar6 + 4) = piVar3" (pointer_expression "*(int **)(pbVar6 + 4)" * (cast_expression "(int **)(pbVar6 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar6 + 4)" ( (binary_expression "pbVar6 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar3[1] = iVar1;" (assignment_expression "piVar3[1] = iVar1" (subscript_expression "piVar3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar3[3] = piVar5[3] & 0xfffffeff;" (assignment_expression "piVar3[3] = piVar5[3] & 0xfffffeff" (subscript_expression "piVar3[3]" identifier [ number_literal ]) = (binary_expression "piVar5[3] & 0xfffffeff" (subscript_expression "piVar5[3]" identifier [ number_literal ]) & number_literal)) ;) (expression_statement "piVar3[4] = piVar5[4];" (assignment_expression "piVar3[4] = piVar5[4]" (subscript_expression "piVar3[4]" identifier [ number_literal ]) = (subscript_expression "piVar5[4]" identifier [ number_literal ])) ;) (expression_statement "(**(code **)(*(int *)(*piVar3 + 4) + 0xb8))(*piVar5,piVar5,*piVar3,piVar3);" (call_expression "(**(code **)(*(int *)(*piVar3 + 4) + 0xb8))(*piVar5,piVar5,*piVar3,piVar3)" (parenthesized_expression "(**(code **)(*(int *)(*piVar3 + 4) + 0xb8))" ( (pointer_expression "**(code **)(*(int *)(*piVar3 + 4) + 0xb8)" * (pointer_expression "*(code **)(*(int *)(*piVar3 + 4) + 0xb8)" * (cast_expression "(code **)(*(int *)(*piVar3 + 4) + 0xb8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(*piVar3 + 4) + 0xb8)" ( (binary_expression "*(int *)(*piVar3 + 4) + 0xb8" (pointer_expression "*(int *)(*piVar3 + 4)" * (cast_expression "(int *)(*piVar3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar3 + 4)" ( (binary_expression "*piVar3 + 4" (pointer_expression "*piVar3" * identifier) + number_literal) )))) + number_literal) ))))) )) (argument_list "(*piVar5,piVar5,*piVar3,piVar3)" ( (pointer_expression "*piVar5" * identifier) , identifier , (pointer_expression "*piVar3" * identifier) , identifier ))) ;) (if_statement "if (param_2 == 0) {\n    FUN_00038570(pbVar6);\n    *(byte **)(pbVar6 + 0x18) = pbVar6;\n    *(byte **)(pbVar6 + 0x1c) = pbVar6;\n    return pbVar6;\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    FUN_00038570(pbVar6);\n    *(byte **)(pbVar6 + 0x18) = pbVar6;\n    *(byte **)(pbVar6 + 0x1c) = pbVar6;\n    return pbVar6;\n  }" { (expression_statement "FUN_00038570(pbVar6);" (call_expression "FUN_00038570(pbVar6)" identifier (argument_list "(pbVar6)" ( identifier ))) ;) (expression_statement "*(byte **)(pbVar6 + 0x18) = pbVar6;" (assignment_expression "*(byte **)(pbVar6 + 0x18) = pbVar6" (pointer_expression "*(byte **)(pbVar6 + 0x18)" * (cast_expression "(byte **)(pbVar6 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar6 + 0x18)" ( (binary_expression "pbVar6 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(pbVar6 + 0x1c) = pbVar6;" (assignment_expression "*(byte **)(pbVar6 + 0x1c) = pbVar6" (pointer_expression "*(byte **)(pbVar6 + 0x1c)" * (cast_expression "(byte **)(pbVar6 + 0x1c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar6 + 0x1c)" ( (binary_expression "pbVar6 + 0x1c" identifier + number_literal) )))) = identifier) ;) (return_statement "return pbVar6;" return identifier ;) })) (expression_statement "pbVar2 = pbVar6;" (assignment_expression "pbVar2 = pbVar6" identifier = identifier) ;) (if_statement "if ((DAT_00084a10 != param_1) && (pbVar2 = DAT_00084a10, *(int *)(param_1 + 0x1c) != 0)) {\n    *(byte **)(*(int *)(param_1 + 0x1c) + 0x18) = pbVar6;\n    param_1[0x1c] = 0;\n    param_1[0x1d] = 0;\n    param_1[0x1e] = 0;\n    param_1[0x1f] = 0;\n    pbVar2 = DAT_00084a10;\n  }" if (parenthesized_expression "((DAT_00084a10 != param_1) && (pbVar2 = DAT_00084a10, *(int *)(param_1 + 0x1c) != 0))" ( (binary_expression "(DAT_00084a10 != param_1) && (pbVar2 = DAT_00084a10, *(int *)(param_1 + 0x1c) != 0)" (parenthesized_expression "(DAT_00084a10 != param_1)" ( (binary_expression "DAT_00084a10 != param_1" identifier != identifier) )) && (parenthesized_expression "(pbVar2 = DAT_00084a10, *(int *)(param_1 + 0x1c) != 0)" ( (comma_expression "pbVar2 = DAT_00084a10, *(int *)(param_1 + 0x1c) != 0" (assignment_expression "pbVar2 = DAT_00084a10" identifier = identifier) , (binary_expression "*(int *)(param_1 + 0x1c) != 0" (pointer_expression "*(int *)(param_1 + 0x1c)" * (cast_expression "(int *)(param_1 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) != number_literal)) ))) )) (compound_statement "{\n    *(byte **)(*(int *)(param_1 + 0x1c) + 0x18) = pbVar6;\n    param_1[0x1c] = 0;\n    param_1[0x1d] = 0;\n    param_1[0x1e] = 0;\n    param_1[0x1f] = 0;\n    pbVar2 = DAT_00084a10;\n  }" { (expression_statement "*(byte **)(*(int *)(param_1 + 0x1c) + 0x18) = pbVar6;" (assignment_expression "*(byte **)(*(int *)(param_1 + 0x1c) + 0x18) = pbVar6" (pointer_expression "*(byte **)(*(int *)(param_1 + 0x1c) + 0x18)" * (cast_expression "(byte **)(*(int *)(param_1 + 0x1c) + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x1c) + 0x18)" ( (binary_expression "*(int *)(param_1 + 0x1c) + 0x18" (pointer_expression "*(int *)(param_1 + 0x1c)" * (cast_expression "(int *)(param_1 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) + number_literal) )))) = identifier) ;) (expression_statement "param_1[0x1c] = 0;" (assignment_expression "param_1[0x1c] = 0" (subscript_expression "param_1[0x1c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x1d] = 0;" (assignment_expression "param_1[0x1d] = 0" (subscript_expression "param_1[0x1d]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x1e] = 0;" (assignment_expression "param_1[0x1e] = 0" (subscript_expression "param_1[0x1e]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x1f] = 0;" (assignment_expression "param_1[0x1f] = 0" (subscript_expression "param_1[0x1f]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar2 = DAT_00084a10;" (assignment_expression "pbVar2 = DAT_00084a10" identifier = identifier) ;) })) (expression_statement "DAT_00084a10 = pbVar2;" (assignment_expression "DAT_00084a10 = pbVar2" identifier = identifier) ;) (expression_statement "pbVar2 = pbVar6;" (assignment_expression "pbVar2 = pbVar6" identifier = identifier) ;) (if_statement "if ((DAT_00084a14 != param_1) && (pbVar2 = DAT_00084a14, *(int *)(param_1 + 0x18) != 0)) {\n    *(byte **)(*(int *)(param_1 + 0x18) + 0x1c) = pbVar6;\n    pbVar2 = DAT_00084a14;\n  }" if (parenthesized_expression "((DAT_00084a14 != param_1) && (pbVar2 = DAT_00084a14, *(int *)(param_1 + 0x18) != 0))" ( (binary_expression "(DAT_00084a14 != param_1) && (pbVar2 = DAT_00084a14, *(int *)(param_1 + 0x18) != 0)" (parenthesized_expression "(DAT_00084a14 != param_1)" ( (binary_expression "DAT_00084a14 != param_1" identifier != identifier) )) && (parenthesized_expression "(pbVar2 = DAT_00084a14, *(int *)(param_1 + 0x18) != 0)" ( (comma_expression "pbVar2 = DAT_00084a14, *(int *)(param_1 + 0x18) != 0" (assignment_expression "pbVar2 = DAT_00084a14" identifier = identifier) , (binary_expression "*(int *)(param_1 + 0x18) != 0" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) != number_literal)) ))) )) (compound_statement "{\n    *(byte **)(*(int *)(param_1 + 0x18) + 0x1c) = pbVar6;\n    pbVar2 = DAT_00084a14;\n  }" { (expression_statement "*(byte **)(*(int *)(param_1 + 0x18) + 0x1c) = pbVar6;" (assignment_expression "*(byte **)(*(int *)(param_1 + 0x18) + 0x1c) = pbVar6" (pointer_expression "*(byte **)(*(int *)(param_1 + 0x18) + 0x1c)" * (cast_expression "(byte **)(*(int *)(param_1 + 0x18) + 0x1c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x18) + 0x1c)" ( (binary_expression "*(int *)(param_1 + 0x18) + 0x1c" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + number_literal) )))) = identifier) ;) (expression_statement "pbVar2 = DAT_00084a14;" (assignment_expression "pbVar2 = DAT_00084a14" identifier = identifier) ;) })) (expression_statement "DAT_00084a14 = pbVar2;" (assignment_expression "DAT_00084a14 = pbVar2" identifier = identifier) ;) (expression_statement "FUN_00038570(param_1);" (call_expression "FUN_00038570(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "*(byte **)(param_1 + 0x18) = param_1;" (assignment_expression "*(byte **)(param_1 + 0x18) = param_1" (pointer_expression "*(byte **)(param_1 + 0x18)" * (cast_expression "(byte **)(param_1 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(param_1 + 0x1c) = param_1;" (assignment_expression "*(byte **)(param_1 + 0x1c) = param_1" (pointer_expression "*(byte **)(param_1 + 0x1c)" * (cast_expression "(byte **)(param_1 + 0x1c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "FUN_00035730(pbVar6);" (call_expression "FUN_00035730(pbVar6)" identifier (argument_list "(pbVar6)" ( identifier ))) ;) (return_statement "return pbVar6;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nsymbolS * symbol_clone(symbolS *orgsymP,int replace)\n\n{\n  ushort uVar1;\n  symbolS *psVar2;\n  char *pcVar3;\n  asymbol *paVar4;\n  undefined4 uVar5;\n  segT paVar6;\n  symbolS *s;\n  \n  if (orgsymP == (symbolS *)PTR_dot_symbol_0007af54) {\n                    /* WARNING: Subroutine does not return */\n    as_abort("../../gas/symbols.c",0x231,"symbol_clone");\n  }\n  paVar6 = (segT)orgsymP->bsym;\n  if (((uint)orgsymP->sy_flags & 1) != 0) {\n    if (reg_section == paVar6) {\n      orgsymP = (orgsymP->sy_value).X_op_symbol;\n      paVar6 = (segT)orgsymP->bsym;\n    }\n    else {\n      orgsymP = local_symbol_convert((local_symbol *)orgsymP);\n      paVar6 = (segT)orgsymP->bsym;\n    }\n  }\n  if ((uint)((int)notes.chunk_limit - (int)notes.next_free) < 0x30) {\n    _obstack_newchunk(&notes,0x30);\n    pcVar3 = notes.next_free + 0x30;\n    s = (symbolS *)notes.object_base;\n    if (pcVar3 != notes.object_base) goto LAB_0003860c;\n  }\n  else {\n    pcVar3 = notes.next_free + 0x30;\n    s = (symbolS *)notes.object_base;\n    if (pcVar3 != notes.object_base) goto LAB_0003860c;\n  }\n  notes._40_1_ = notes._40_1_ | 2;\n  s = (symbolS *)notes.object_base;\nLAB_0003860c:\n  notes.next_free = (char *)((uint)(pcVar3 + notes.alignment_mask) & ~notes.alignment_mask);\n  if ((uint)((int)notes.chunk_limit - (int)notes.chunk) <\n      (uint)((int)notes.next_free - (int)notes.chunk)) {\n    notes.next_free = notes.chunk_limit;\n  }\n  notes.object_base = notes.next_free;\n  s->sy_flags = orgsymP->sy_flags;\n  s->bsym = orgsymP->bsym;\n  (s->sy_value).X_add_symbol = (orgsymP->sy_value).X_add_symbol;\n  (s->sy_value).X_op_symbol = (orgsymP->sy_value).X_op_symbol;\n  (s->sy_value).X_add_number = (orgsymP->sy_value).X_add_number;\n  uVar1 = (orgsymP->sy_value).X_md;\n  *(undefined2 *)&(s->sy_value).field_0xc = *(undefined2 *)&(orgsymP->sy_value).field_0xc;\n  (s->sy_value).X_md = uVar1;\n  s->sy_next = orgsymP->sy_next;\n  s->sy_previous = orgsymP->sy_previous;\n  s->sy_frag = orgsymP->sy_frag;\n  (s->sy_obj).local = (orgsymP->sy_obj).local;\n  (s->sy_obj).size = (orgsymP->sy_obj).size;\n  (s->sy_obj).versioned_name = (orgsymP->sy_obj).versioned_name;\n  paVar4 = (asymbol *)(**(code **)(*(int *)(paVar6->name + 4) + 0x10c))(paVar6->name);\n  if (paVar4 == (asymbol *)0x0) {\n    uVar5 = bfd_get_error();\n    uVar5 = bfd_errmsg(uVar5);\n                    /* WARNING: Subroutine does not return */\n    as_fatal("bfd_make_empty_symbol: %s",uVar5);\n  }\n  pcVar3 = (char *)paVar6->id;\n  s->bsym = paVar4;\n  paVar4->name = pcVar3;\n  paVar4->flags = (uint)paVar6->next & 0xfffffeff;\n  paVar4->section = paVar6->prev;\n  (*paVar4->the_bfd->xvec->_bfd_copy_private_symbol_data)\n            ((bfd *)paVar6->name,(asymbol *)paVar6,paVar4->the_bfd,paVar4);\n  if (replace == 0) {\n    S_CLEAR_EXTERNAL(s);\n    s->sy_next = s;\n    s->sy_previous = s;\n    return s;\n  }\n  psVar2 = s;\n  if ((symbol_rootP != orgsymP) && (psVar2 = symbol_rootP, orgsymP->sy_previous != (symbol *)0x0)) {\n    orgsymP->sy_previous->sy_next = s;\n    orgsymP->sy_previous = (symbol *)0x0;\n    psVar2 = symbol_rootP;\n  }\n  symbol_rootP = psVar2;\n  psVar2 = s;\n  if ((symbol_lastP != orgsymP) && (psVar2 = symbol_lastP, orgsymP->sy_next != (symbol *)0x0)) {\n    orgsymP->sy_next->sy_previous = s;\n    psVar2 = symbol_lastP;\n  }\n  symbol_lastP = psVar2;\n  S_CLEAR_EXTERNAL(orgsymP);\n  orgsymP->sy_next = orgsymP;\n  orgsymP->sy_previous = orgsymP;\n  symbol_table_insert(s);\n  return s;\n}\n\n" comment (function_definition "symbolS * symbol_clone(symbolS *orgsymP,int replace)\n\n{\n  ushort uVar1;\n  symbolS *psVar2;\n  char *pcVar3;\n  asymbol *paVar4;\n  undefined4 uVar5;\n  segT paVar6;\n  symbolS *s;\n  \n  if (orgsymP == (symbolS *)PTR_dot_symbol_0007af54) {\n                    /* WARNING: Subroutine does not return */\n    as_abort("../../gas/symbols.c",0x231,"symbol_clone");\n  }\n  paVar6 = (segT)orgsymP->bsym;\n  if (((uint)orgsymP->sy_flags & 1) != 0) {\n    if (reg_section == paVar6) {\n      orgsymP = (orgsymP->sy_value).X_op_symbol;\n      paVar6 = (segT)orgsymP->bsym;\n    }\n    else {\n      orgsymP = local_symbol_convert((local_symbol *)orgsymP);\n      paVar6 = (segT)orgsymP->bsym;\n    }\n  }\n  if ((uint)((int)notes.chunk_limit - (int)notes.next_free) < 0x30) {\n    _obstack_newchunk(&notes,0x30);\n    pcVar3 = notes.next_free + 0x30;\n    s = (symbolS *)notes.object_base;\n    if (pcVar3 != notes.object_base) goto LAB_0003860c;\n  }\n  else {\n    pcVar3 = notes.next_free + 0x30;\n    s = (symbolS *)notes.object_base;\n    if (pcVar3 != notes.object_base) goto LAB_0003860c;\n  }\n  notes._40_1_ = notes._40_1_ | 2;\n  s = (symbolS *)notes.object_base;\nLAB_0003860c:\n  notes.next_free = (char *)((uint)(pcVar3 + notes.alignment_mask) & ~notes.alignment_mask);\n  if ((uint)((int)notes.chunk_limit - (int)notes.chunk) <\n      (uint)((int)notes.next_free - (int)notes.chunk)) {\n    notes.next_free = notes.chunk_limit;\n  }\n  notes.object_base = notes.next_free;\n  s->sy_flags = orgsymP->sy_flags;\n  s->bsym = orgsymP->bsym;\n  (s->sy_value).X_add_symbol = (orgsymP->sy_value).X_add_symbol;\n  (s->sy_value).X_op_symbol = (orgsymP->sy_value).X_op_symbol;\n  (s->sy_value).X_add_number = (orgsymP->sy_value).X_add_number;\n  uVar1 = (orgsymP->sy_value).X_md;\n  *(undefined2 *)&(s->sy_value).field_0xc = *(undefined2 *)&(orgsymP->sy_value).field_0xc;\n  (s->sy_value).X_md = uVar1;\n  s->sy_next = orgsymP->sy_next;\n  s->sy_previous = orgsymP->sy_previous;\n  s->sy_frag = orgsymP->sy_frag;\n  (s->sy_obj).local = (orgsymP->sy_obj).local;\n  (s->sy_obj).size = (orgsymP->sy_obj).size;\n  (s->sy_obj).versioned_name = (orgsymP->sy_obj).versioned_name;\n  paVar4 = (asymbol *)(**(code **)(*(int *)(paVar6->name + 4) + 0x10c))(paVar6->name);\n  if (paVar4 == (asymbol *)0x0) {\n    uVar5 = bfd_get_error();\n    uVar5 = bfd_errmsg(uVar5);\n                    /* WARNING: Subroutine does not return */\n    as_fatal("bfd_make_empty_symbol: %s",uVar5);\n  }\n  pcVar3 = (char *)paVar6->id;\n  s->bsym = paVar4;\n  paVar4->name = pcVar3;\n  paVar4->flags = (uint)paVar6->next & 0xfffffeff;\n  paVar4->section = paVar6->prev;\n  (*paVar4->the_bfd->xvec->_bfd_copy_private_symbol_data)\n            ((bfd *)paVar6->name,(asymbol *)paVar6,paVar4->the_bfd,paVar4);\n  if (replace == 0) {\n    S_CLEAR_EXTERNAL(s);\n    s->sy_next = s;\n    s->sy_previous = s;\n    return s;\n  }\n  psVar2 = s;\n  if ((symbol_rootP != orgsymP) && (psVar2 = symbol_rootP, orgsymP->sy_previous != (symbol *)0x0)) {\n    orgsymP->sy_previous->sy_next = s;\n    orgsymP->sy_previous = (symbol *)0x0;\n    psVar2 = symbol_rootP;\n  }\n  symbol_rootP = psVar2;\n  psVar2 = s;\n  if ((symbol_lastP != orgsymP) && (psVar2 = symbol_lastP, orgsymP->sy_next != (symbol *)0x0)) {\n    orgsymP->sy_next->sy_previous = s;\n    psVar2 = symbol_lastP;\n  }\n  symbol_lastP = psVar2;\n  S_CLEAR_EXTERNAL(orgsymP);\n  orgsymP->sy_next = orgsymP;\n  orgsymP->sy_previous = orgsymP;\n  symbol_table_insert(s);\n  return s;\n}" type_identifier (pointer_declarator "* symbol_clone(symbolS *orgsymP,int replace)" * (function_declarator "symbol_clone(symbolS *orgsymP,int replace)" identifier (parameter_list "(symbolS *orgsymP,int replace)" ( (parameter_declaration "symbolS *orgsymP" type_identifier (pointer_declarator "*orgsymP" * identifier)) , (parameter_declaration "int replace" primitive_type identifier) )))) (compound_statement "{\n  ushort uVar1;\n  symbolS *psVar2;\n  char *pcVar3;\n  asymbol *paVar4;\n  undefined4 uVar5;\n  segT paVar6;\n  symbolS *s;\n  \n  if (orgsymP == (symbolS *)PTR_dot_symbol_0007af54) {\n                    /* WARNING: Subroutine does not return */\n    as_abort("../../gas/symbols.c",0x231,"symbol_clone");\n  }\n  paVar6 = (segT)orgsymP->bsym;\n  if (((uint)orgsymP->sy_flags & 1) != 0) {\n    if (reg_section == paVar6) {\n      orgsymP = (orgsymP->sy_value).X_op_symbol;\n      paVar6 = (segT)orgsymP->bsym;\n    }\n    else {\n      orgsymP = local_symbol_convert((local_symbol *)orgsymP);\n      paVar6 = (segT)orgsymP->bsym;\n    }\n  }\n  if ((uint)((int)notes.chunk_limit - (int)notes.next_free) < 0x30) {\n    _obstack_newchunk(&notes,0x30);\n    pcVar3 = notes.next_free + 0x30;\n    s = (symbolS *)notes.object_base;\n    if (pcVar3 != notes.object_base) goto LAB_0003860c;\n  }\n  else {\n    pcVar3 = notes.next_free + 0x30;\n    s = (symbolS *)notes.object_base;\n    if (pcVar3 != notes.object_base) goto LAB_0003860c;\n  }\n  notes._40_1_ = notes._40_1_ | 2;\n  s = (symbolS *)notes.object_base;\nLAB_0003860c:\n  notes.next_free = (char *)((uint)(pcVar3 + notes.alignment_mask) & ~notes.alignment_mask);\n  if ((uint)((int)notes.chunk_limit - (int)notes.chunk) <\n      (uint)((int)notes.next_free - (int)notes.chunk)) {\n    notes.next_free = notes.chunk_limit;\n  }\n  notes.object_base = notes.next_free;\n  s->sy_flags = orgsymP->sy_flags;\n  s->bsym = orgsymP->bsym;\n  (s->sy_value).X_add_symbol = (orgsymP->sy_value).X_add_symbol;\n  (s->sy_value).X_op_symbol = (orgsymP->sy_value).X_op_symbol;\n  (s->sy_value).X_add_number = (orgsymP->sy_value).X_add_number;\n  uVar1 = (orgsymP->sy_value).X_md;\n  *(undefined2 *)&(s->sy_value).field_0xc = *(undefined2 *)&(orgsymP->sy_value).field_0xc;\n  (s->sy_value).X_md = uVar1;\n  s->sy_next = orgsymP->sy_next;\n  s->sy_previous = orgsymP->sy_previous;\n  s->sy_frag = orgsymP->sy_frag;\n  (s->sy_obj).local = (orgsymP->sy_obj).local;\n  (s->sy_obj).size = (orgsymP->sy_obj).size;\n  (s->sy_obj).versioned_name = (orgsymP->sy_obj).versioned_name;\n  paVar4 = (asymbol *)(**(code **)(*(int *)(paVar6->name + 4) + 0x10c))(paVar6->name);\n  if (paVar4 == (asymbol *)0x0) {\n    uVar5 = bfd_get_error();\n    uVar5 = bfd_errmsg(uVar5);\n                    /* WARNING: Subroutine does not return */\n    as_fatal("bfd_make_empty_symbol: %s",uVar5);\n  }\n  pcVar3 = (char *)paVar6->id;\n  s->bsym = paVar4;\n  paVar4->name = pcVar3;\n  paVar4->flags = (uint)paVar6->next & 0xfffffeff;\n  paVar4->section = paVar6->prev;\n  (*paVar4->the_bfd->xvec->_bfd_copy_private_symbol_data)\n            ((bfd *)paVar6->name,(asymbol *)paVar6,paVar4->the_bfd,paVar4);\n  if (replace == 0) {\n    S_CLEAR_EXTERNAL(s);\n    s->sy_next = s;\n    s->sy_previous = s;\n    return s;\n  }\n  psVar2 = s;\n  if ((symbol_rootP != orgsymP) && (psVar2 = symbol_rootP, orgsymP->sy_previous != (symbol *)0x0)) {\n    orgsymP->sy_previous->sy_next = s;\n    orgsymP->sy_previous = (symbol *)0x0;\n    psVar2 = symbol_rootP;\n  }\n  symbol_rootP = psVar2;\n  psVar2 = s;\n  if ((symbol_lastP != orgsymP) && (psVar2 = symbol_lastP, orgsymP->sy_next != (symbol *)0x0)) {\n    orgsymP->sy_next->sy_previous = s;\n    psVar2 = symbol_lastP;\n  }\n  symbol_lastP = psVar2;\n  S_CLEAR_EXTERNAL(orgsymP);\n  orgsymP->sy_next = orgsymP;\n  orgsymP->sy_previous = orgsymP;\n  symbol_table_insert(s);\n  return s;\n}" { (declaration "ushort uVar1;" type_identifier identifier ;) (declaration "symbolS *psVar2;" type_identifier (pointer_declarator "*psVar2" * identifier) ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "asymbol *paVar4;" type_identifier (pointer_declarator "*paVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "segT paVar6;" type_identifier identifier ;) (declaration "symbolS *s;" type_identifier (pointer_declarator "*s" * identifier) ;) (if_statement "if (orgsymP == (symbolS *)PTR_dot_symbol_0007af54) {\n                    /* WARNING: Subroutine does not return */\n    as_abort("../../gas/symbols.c",0x231,"symbol_clone");\n  }" if (parenthesized_expression "(orgsymP == (symbolS *)PTR_dot_symbol_0007af54)" ( (binary_expression "orgsymP == (symbolS *)PTR_dot_symbol_0007af54" identifier == (cast_expression "(symbolS *)PTR_dot_symbol_0007af54" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    as_abort("../../gas/symbols.c",0x231,"symbol_clone");\n  }" { comment (expression_statement "as_abort("../../gas/symbols.c",0x231,"symbol_clone");" (call_expression "as_abort("../../gas/symbols.c",0x231,"symbol_clone")" identifier (argument_list "("../../gas/symbols.c",0x231,"symbol_clone")" ( (string_literal ""../../gas/symbols.c"" " string_content ") , number_literal , (string_literal ""symbol_clone"" " string_content ") ))) ;) })) (expression_statement "paVar6 = (segT)orgsymP->bsym;" (assignment_expression "paVar6 = (segT)orgsymP->bsym" identifier = (cast_expression "(segT)orgsymP->bsym" ( (type_descriptor "segT" type_identifier) ) (field_expression "orgsymP->bsym" identifier -> field_identifier))) ;) (if_statement "if (((uint)orgsymP->sy_flags & 1) != 0) {\n    if (reg_section == paVar6) {\n      orgsymP = (orgsymP->sy_value).X_op_symbol;\n      paVar6 = (segT)orgsymP->bsym;\n    }\n    else {\n      orgsymP = local_symbol_convert((local_symbol *)orgsymP);\n      paVar6 = (segT)orgsymP->bsym;\n    }\n  }" if (parenthesized_expression "(((uint)orgsymP->sy_flags & 1) != 0)" ( (binary_expression "((uint)orgsymP->sy_flags & 1) != 0" (parenthesized_expression "((uint)orgsymP->sy_flags & 1)" ( (binary_expression "(uint)orgsymP->sy_flags & 1" (cast_expression "(uint)orgsymP->sy_flags" ( (type_descriptor "uint" type_identifier) ) (field_expression "orgsymP->sy_flags" identifier -> field_identifier)) & number_literal) )) != number_literal) )) (compound_statement "{\n    if (reg_section == paVar6) {\n      orgsymP = (orgsymP->sy_value).X_op_symbol;\n      paVar6 = (segT)orgsymP->bsym;\n    }\n    else {\n      orgsymP = local_symbol_convert((local_symbol *)orgsymP);\n      paVar6 = (segT)orgsymP->bsym;\n    }\n  }" { (if_statement "if (reg_section == paVar6) {\n      orgsymP = (orgsymP->sy_value).X_op_symbol;\n      paVar6 = (segT)orgsymP->bsym;\n    }\n    else {\n      orgsymP = local_symbol_convert((local_symbol *)orgsymP);\n      paVar6 = (segT)orgsymP->bsym;\n    }" if (parenthesized_expression "(reg_section == paVar6)" ( (binary_expression "reg_section == paVar6" identifier == identifier) )) (compound_statement "{\n      orgsymP = (orgsymP->sy_value).X_op_symbol;\n      paVar6 = (segT)orgsymP->bsym;\n    }" { (expression_statement "orgsymP = (orgsymP->sy_value).X_op_symbol;" (assignment_expression "orgsymP = (orgsymP->sy_value).X_op_symbol" identifier = (field_expression "(orgsymP->sy_value).X_op_symbol" (parenthesized_expression "(orgsymP->sy_value)" ( (field_expression "orgsymP->sy_value" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "paVar6 = (segT)orgsymP->bsym;" (assignment_expression "paVar6 = (segT)orgsymP->bsym" identifier = (cast_expression "(segT)orgsymP->bsym" ( (type_descriptor "segT" type_identifier) ) (field_expression "orgsymP->bsym" identifier -> field_identifier))) ;) }) (else_clause "else {\n      orgsymP = local_symbol_convert((local_symbol *)orgsymP);\n      paVar6 = (segT)orgsymP->bsym;\n    }" else (compound_statement "{\n      orgsymP = local_symbol_convert((local_symbol *)orgsymP);\n      paVar6 = (segT)orgsymP->bsym;\n    }" { (expression_statement "orgsymP = local_symbol_convert((local_symbol *)orgsymP);" (assignment_expression "orgsymP = local_symbol_convert((local_symbol *)orgsymP)" identifier = (call_expression "local_symbol_convert((local_symbol *)orgsymP)" identifier (argument_list "((local_symbol *)orgsymP)" ( (cast_expression "(local_symbol *)orgsymP" ( (type_descriptor "local_symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "paVar6 = (segT)orgsymP->bsym;" (assignment_expression "paVar6 = (segT)orgsymP->bsym" identifier = (cast_expression "(segT)orgsymP->bsym" ( (type_descriptor "segT" type_identifier) ) (field_expression "orgsymP->bsym" identifier -> field_identifier))) ;) }))) })) (if_statement "if ((uint)((int)notes.chunk_limit - (int)notes.next_free) < 0x30) {\n    _obstack_newchunk(&notes,0x30);\n    pcVar3 = notes.next_free + 0x30;\n    s = (symbolS *)notes.object_base;\n    if (pcVar3 != notes.object_base) goto LAB_0003860c;\n  }\n  else {\n    pcVar3 = notes.next_free + 0x30;\n    s = (symbolS *)notes.object_base;\n    if (pcVar3 != notes.object_base) goto LAB_0003860c;\n  }" if (parenthesized_expression "((uint)((int)notes.chunk_limit - (int)notes.next_free) < 0x30)" ( (binary_expression "(uint)((int)notes.chunk_limit - (int)notes.next_free) < 0x30" (call_expression "(uint)((int)notes.chunk_limit - (int)notes.next_free)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)notes.chunk_limit - (int)notes.next_free)" ( (binary_expression "(int)notes.chunk_limit - (int)notes.next_free" (cast_expression "(int)notes.chunk_limit" ( (type_descriptor "int" primitive_type) ) (field_expression "notes.chunk_limit" identifier . field_identifier)) - (cast_expression "(int)notes.next_free" ( (type_descriptor "int" primitive_type) ) (field_expression "notes.next_free" identifier . field_identifier))) ))) < number_literal) )) (compound_statement "{\n    _obstack_newchunk(&notes,0x30);\n    pcVar3 = notes.next_free + 0x30;\n    s = (symbolS *)notes.object_base;\n    if (pcVar3 != notes.object_base) goto LAB_0003860c;\n  }" { (expression_statement "_obstack_newchunk(&notes,0x30);" (call_expression "_obstack_newchunk(&notes,0x30)" identifier (argument_list "(&notes,0x30)" ( (pointer_expression "&notes" & identifier) , number_literal ))) ;) (expression_statement "pcVar3 = notes.next_free + 0x30;" (assignment_expression "pcVar3 = notes.next_free + 0x30" identifier = (binary_expression "notes.next_free + 0x30" (field_expression "notes.next_free" identifier . field_identifier) + number_literal)) ;) (expression_statement "s = (symbolS *)notes.object_base;" (assignment_expression "s = (symbolS *)notes.object_base" identifier = (cast_expression "(symbolS *)notes.object_base" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "notes.object_base" identifier . field_identifier))) ;) (if_statement "if (pcVar3 != notes.object_base) goto LAB_0003860c;" if (parenthesized_expression "(pcVar3 != notes.object_base)" ( (binary_expression "pcVar3 != notes.object_base" identifier != (field_expression "notes.object_base" identifier . field_identifier)) )) (goto_statement "goto LAB_0003860c;" goto statement_identifier ;)) }) (else_clause "else {\n    pcVar3 = notes.next_free + 0x30;\n    s = (symbolS *)notes.object_base;\n    if (pcVar3 != notes.object_base) goto LAB_0003860c;\n  }" else (compound_statement "{\n    pcVar3 = notes.next_free + 0x30;\n    s = (symbolS *)notes.object_base;\n    if (pcVar3 != notes.object_base) goto LAB_0003860c;\n  }" { (expression_statement "pcVar3 = notes.next_free + 0x30;" (assignment_expression "pcVar3 = notes.next_free + 0x30" identifier = (binary_expression "notes.next_free + 0x30" (field_expression "notes.next_free" identifier . field_identifier) + number_literal)) ;) (expression_statement "s = (symbolS *)notes.object_base;" (assignment_expression "s = (symbolS *)notes.object_base" identifier = (cast_expression "(symbolS *)notes.object_base" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "notes.object_base" identifier . field_identifier))) ;) (if_statement "if (pcVar3 != notes.object_base) goto LAB_0003860c;" if (parenthesized_expression "(pcVar3 != notes.object_base)" ( (binary_expression "pcVar3 != notes.object_base" identifier != (field_expression "notes.object_base" identifier . field_identifier)) )) (goto_statement "goto LAB_0003860c;" goto statement_identifier ;)) }))) (expression_statement "notes._40_1_ = notes._40_1_ | 2;" (assignment_expression "notes._40_1_ = notes._40_1_ | 2" (field_expression "notes._40_1_" identifier . field_identifier) = (binary_expression "notes._40_1_ | 2" (field_expression "notes._40_1_" identifier . field_identifier) | number_literal)) ;) (expression_statement "s = (symbolS *)notes.object_base;" (assignment_expression "s = (symbolS *)notes.object_base" identifier = (cast_expression "(symbolS *)notes.object_base" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "notes.object_base" identifier . field_identifier))) ;) (labeled_statement "LAB_0003860c:\n  notes.next_free = (char *)((uint)(pcVar3 + notes.alignment_mask) & ~notes.alignment_mask);" statement_identifier : (expression_statement "notes.next_free = (char *)((uint)(pcVar3 + notes.alignment_mask) & ~notes.alignment_mask);" (assignment_expression "notes.next_free = (char *)((uint)(pcVar3 + notes.alignment_mask) & ~notes.alignment_mask)" (field_expression "notes.next_free" identifier . field_identifier) = (cast_expression "(char *)((uint)(pcVar3 + notes.alignment_mask) & ~notes.alignment_mask)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(pcVar3 + notes.alignment_mask) & ~notes.alignment_mask)" ( (binary_expression "(uint)(pcVar3 + notes.alignment_mask) & ~notes.alignment_mask" (call_expression "(uint)(pcVar3 + notes.alignment_mask)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pcVar3 + notes.alignment_mask)" ( (binary_expression "pcVar3 + notes.alignment_mask" identifier + (field_expression "notes.alignment_mask" identifier . field_identifier)) ))) & (unary_expression "~notes.alignment_mask" ~ (field_expression "notes.alignment_mask" identifier . field_identifier))) )))) ;)) (if_statement "if ((uint)((int)notes.chunk_limit - (int)notes.chunk) <\n      (uint)((int)notes.next_free - (int)notes.chunk)) {\n    notes.next_free = notes.chunk_limit;\n  }" if (parenthesized_expression "((uint)((int)notes.chunk_limit - (int)notes.chunk) <\n      (uint)((int)notes.next_free - (int)notes.chunk))" ( (binary_expression "(uint)((int)notes.chunk_limit - (int)notes.chunk) <\n      (uint)((int)notes.next_free - (int)notes.chunk)" (call_expression "(uint)((int)notes.chunk_limit - (int)notes.chunk)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)notes.chunk_limit - (int)notes.chunk)" ( (binary_expression "(int)notes.chunk_limit - (int)notes.chunk" (cast_expression "(int)notes.chunk_limit" ( (type_descriptor "int" primitive_type) ) (field_expression "notes.chunk_limit" identifier . field_identifier)) - (cast_expression "(int)notes.chunk" ( (type_descriptor "int" primitive_type) ) (field_expression "notes.chunk" identifier . field_identifier))) ))) < (call_expression "(uint)((int)notes.next_free - (int)notes.chunk)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)notes.next_free - (int)notes.chunk)" ( (binary_expression "(int)notes.next_free - (int)notes.chunk" (cast_expression "(int)notes.next_free" ( (type_descriptor "int" primitive_type) ) (field_expression "notes.next_free" identifier . field_identifier)) - (cast_expression "(int)notes.chunk" ( (type_descriptor "int" primitive_type) ) (field_expression "notes.chunk" identifier . field_identifier))) )))) )) (compound_statement "{\n    notes.next_free = notes.chunk_limit;\n  }" { (expression_statement "notes.next_free = notes.chunk_limit;" (assignment_expression "notes.next_free = notes.chunk_limit" (field_expression "notes.next_free" identifier . field_identifier) = (field_expression "notes.chunk_limit" identifier . field_identifier)) ;) })) (expression_statement "notes.object_base = notes.next_free;" (assignment_expression "notes.object_base = notes.next_free" (field_expression "notes.object_base" identifier . field_identifier) = (field_expression "notes.next_free" identifier . field_identifier)) ;) (expression_statement "s->sy_flags = orgsymP->sy_flags;" (assignment_expression "s->sy_flags = orgsymP->sy_flags" (field_expression "s->sy_flags" identifier -> field_identifier) = (field_expression "orgsymP->sy_flags" identifier -> field_identifier)) ;) (expression_statement "s->bsym = orgsymP->bsym;" (assignment_expression "s->bsym = orgsymP->bsym" (field_expression "s->bsym" identifier -> field_identifier) = (field_expression "orgsymP->bsym" identifier -> field_identifier)) ;) (expression_statement "(s->sy_value).X_add_symbol = (orgsymP->sy_value).X_add_symbol;" (assignment_expression "(s->sy_value).X_add_symbol = (orgsymP->sy_value).X_add_symbol" (field_expression "(s->sy_value).X_add_symbol" (parenthesized_expression "(s->sy_value)" ( (field_expression "s->sy_value" identifier -> field_identifier) )) . field_identifier) = (field_expression "(orgsymP->sy_value).X_add_symbol" (parenthesized_expression "(orgsymP->sy_value)" ( (field_expression "orgsymP->sy_value" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "(s->sy_value).X_op_symbol = (orgsymP->sy_value).X_op_symbol;" (assignment_expression "(s->sy_value).X_op_symbol = (orgsymP->sy_value).X_op_symbol" (field_expression "(s->sy_value).X_op_symbol" (parenthesized_expression "(s->sy_value)" ( (field_expression "s->sy_value" identifier -> field_identifier) )) . field_identifier) = (field_expression "(orgsymP->sy_value).X_op_symbol" (parenthesized_expression "(orgsymP->sy_value)" ( (field_expression "orgsymP->sy_value" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "(s->sy_value).X_add_number = (orgsymP->sy_value).X_add_number;" (assignment_expression "(s->sy_value).X_add_number = (orgsymP->sy_value).X_add_number" (field_expression "(s->sy_value).X_add_number" (parenthesized_expression "(s->sy_value)" ( (field_expression "s->sy_value" identifier -> field_identifier) )) . field_identifier) = (field_expression "(orgsymP->sy_value).X_add_number" (parenthesized_expression "(orgsymP->sy_value)" ( (field_expression "orgsymP->sy_value" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar1 = (orgsymP->sy_value).X_md;" (assignment_expression "uVar1 = (orgsymP->sy_value).X_md" identifier = (field_expression "(orgsymP->sy_value).X_md" (parenthesized_expression "(orgsymP->sy_value)" ( (field_expression "orgsymP->sy_value" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "*(undefined2 *)&(s->sy_value).field_0xc = *(undefined2 *)&(orgsymP->sy_value).field_0xc;" (assignment_expression "*(undefined2 *)&(s->sy_value).field_0xc = *(undefined2 *)&(orgsymP->sy_value).field_0xc" (pointer_expression "*(undefined2 *)&(s->sy_value).field_0xc" * (cast_expression "(undefined2 *)&(s->sy_value).field_0xc" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(s->sy_value).field_0xc" & (field_expression "(s->sy_value).field_0xc" (parenthesized_expression "(s->sy_value)" ( (field_expression "s->sy_value" identifier -> field_identifier) )) . field_identifier)))) = (pointer_expression "*(undefined2 *)&(orgsymP->sy_value).field_0xc" * (cast_expression "(undefined2 *)&(orgsymP->sy_value).field_0xc" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(orgsymP->sy_value).field_0xc" & (field_expression "(orgsymP->sy_value).field_0xc" (parenthesized_expression "(orgsymP->sy_value)" ( (field_expression "orgsymP->sy_value" identifier -> field_identifier) )) . field_identifier))))) ;) (expression_statement "(s->sy_value).X_md = uVar1;" (assignment_expression "(s->sy_value).X_md = uVar1" (field_expression "(s->sy_value).X_md" (parenthesized_expression "(s->sy_value)" ( (field_expression "s->sy_value" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "s->sy_next = orgsymP->sy_next;" (assignment_expression "s->sy_next = orgsymP->sy_next" (field_expression "s->sy_next" identifier -> field_identifier) = (field_expression "orgsymP->sy_next" identifier -> field_identifier)) ;) (expression_statement "s->sy_previous = orgsymP->sy_previous;" (assignment_expression "s->sy_previous = orgsymP->sy_previous" (field_expression "s->sy_previous" identifier -> field_identifier) = (field_expression "orgsymP->sy_previous" identifier -> field_identifier)) ;) (expression_statement "s->sy_frag = orgsymP->sy_frag;" (assignment_expression "s->sy_frag = orgsymP->sy_frag" (field_expression "s->sy_frag" identifier -> field_identifier) = (field_expression "orgsymP->sy_frag" identifier -> field_identifier)) ;) (expression_statement "(s->sy_obj).local = (orgsymP->sy_obj).local;" (assignment_expression "(s->sy_obj).local = (orgsymP->sy_obj).local" (field_expression "(s->sy_obj).local" (parenthesized_expression "(s->sy_obj)" ( (field_expression "s->sy_obj" identifier -> field_identifier) )) . field_identifier) = (field_expression "(orgsymP->sy_obj).local" (parenthesized_expression "(orgsymP->sy_obj)" ( (field_expression "orgsymP->sy_obj" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "(s->sy_obj).size = (orgsymP->sy_obj).size;" (assignment_expression "(s->sy_obj).size = (orgsymP->sy_obj).size" (field_expression "(s->sy_obj).size" (parenthesized_expression "(s->sy_obj)" ( (field_expression "s->sy_obj" identifier -> field_identifier) )) . field_identifier) = (field_expression "(orgsymP->sy_obj).size" (parenthesized_expression "(orgsymP->sy_obj)" ( (field_expression "orgsymP->sy_obj" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "(s->sy_obj).versioned_name = (orgsymP->sy_obj).versioned_name;" (assignment_expression "(s->sy_obj).versioned_name = (orgsymP->sy_obj).versioned_name" (field_expression "(s->sy_obj).versioned_name" (parenthesized_expression "(s->sy_obj)" ( (field_expression "s->sy_obj" identifier -> field_identifier) )) . field_identifier) = (field_expression "(orgsymP->sy_obj).versioned_name" (parenthesized_expression "(orgsymP->sy_obj)" ( (field_expression "orgsymP->sy_obj" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "paVar4 = (asymbol *)(**(code **)(*(int *)(paVar6->name + 4) + 0x10c))(paVar6->name);" (assignment_expression "paVar4 = (asymbol *)(**(code **)(*(int *)(paVar6->name + 4) + 0x10c))(paVar6->name)" identifier = (cast_expression "(asymbol *)(**(code **)(*(int *)(paVar6->name + 4) + 0x10c))(paVar6->name)" ( (type_descriptor "asymbol *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*(int *)(paVar6->name + 4) + 0x10c))(paVar6->name)" (parenthesized_expression "(**(code **)(*(int *)(paVar6->name + 4) + 0x10c))" ( (pointer_expression "**(code **)(*(int *)(paVar6->name + 4) + 0x10c)" * (pointer_expression "*(code **)(*(int *)(paVar6->name + 4) + 0x10c)" * (cast_expression "(code **)(*(int *)(paVar6->name + 4) + 0x10c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(paVar6->name + 4) + 0x10c)" ( (binary_expression "*(int *)(paVar6->name + 4) + 0x10c" (pointer_expression "*(int *)(paVar6->name + 4)" * (cast_expression "(int *)(paVar6->name + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar6->name + 4)" ( (binary_expression "paVar6->name + 4" (field_expression "paVar6->name" identifier -> field_identifier) + number_literal) )))) + number_literal) ))))) )) (argument_list "(paVar6->name)" ( (field_expression "paVar6->name" identifier -> field_identifier) ))))) ;) (if_statement "if (paVar4 == (asymbol *)0x0) {\n    uVar5 = bfd_get_error();\n    uVar5 = bfd_errmsg(uVar5);\n                    /* WARNING: Subroutine does not return */\n    as_fatal("bfd_make_empty_symbol: %s",uVar5);\n  }" if (parenthesized_expression "(paVar4 == (asymbol *)0x0)" ( (binary_expression "paVar4 == (asymbol *)0x0" identifier == (cast_expression "(asymbol *)0x0" ( (type_descriptor "asymbol *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar5 = bfd_get_error();\n    uVar5 = bfd_errmsg(uVar5);\n                    /* WARNING: Subroutine does not return */\n    as_fatal("bfd_make_empty_symbol: %s",uVar5);\n  }" { (expression_statement "uVar5 = bfd_get_error();" (assignment_expression "uVar5 = bfd_get_error()" identifier = (call_expression "bfd_get_error()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar5 = bfd_errmsg(uVar5);" (assignment_expression "uVar5 = bfd_errmsg(uVar5)" identifier = (call_expression "bfd_errmsg(uVar5)" identifier (argument_list "(uVar5)" ( identifier )))) ;) comment (expression_statement "as_fatal("bfd_make_empty_symbol: %s",uVar5);" (call_expression "as_fatal("bfd_make_empty_symbol: %s",uVar5)" identifier (argument_list "("bfd_make_empty_symbol: %s",uVar5)" ( (string_literal ""bfd_make_empty_symbol: %s"" " string_content ") , identifier ))) ;) })) (expression_statement "pcVar3 = (char *)paVar6->id;" (assignment_expression "pcVar3 = (char *)paVar6->id" identifier = (cast_expression "(char *)paVar6->id" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "paVar6->id" identifier -> field_identifier))) ;) (expression_statement "s->bsym = paVar4;" (assignment_expression "s->bsym = paVar4" (field_expression "s->bsym" identifier -> field_identifier) = identifier) ;) (expression_statement "paVar4->name = pcVar3;" (assignment_expression "paVar4->name = pcVar3" (field_expression "paVar4->name" identifier -> field_identifier) = identifier) ;) (expression_statement "paVar4->flags = (uint)paVar6->next & 0xfffffeff;" (assignment_expression "paVar4->flags = (uint)paVar6->next & 0xfffffeff" (field_expression "paVar4->flags" identifier -> field_identifier) = (binary_expression "(uint)paVar6->next & 0xfffffeff" (cast_expression "(uint)paVar6->next" ( (type_descriptor "uint" type_identifier) ) (field_expression "paVar6->next" identifier -> field_identifier)) & number_literal)) ;) (expression_statement "paVar4->section = paVar6->prev;" (assignment_expression "paVar4->section = paVar6->prev" (field_expression "paVar4->section" identifier -> field_identifier) = (field_expression "paVar6->prev" identifier -> field_identifier)) ;) (expression_statement "(*paVar4->the_bfd->xvec->_bfd_copy_private_symbol_data)\n            ((bfd *)paVar6->name,(asymbol *)paVar6,paVar4->the_bfd,paVar4);" (call_expression "(*paVar4->the_bfd->xvec->_bfd_copy_private_symbol_data)\n            ((bfd *)paVar6->name,(asymbol *)paVar6,paVar4->the_bfd,paVar4)" (parenthesized_expression "(*paVar4->the_bfd->xvec->_bfd_copy_private_symbol_data)" ( (pointer_expression "*paVar4->the_bfd->xvec->_bfd_copy_private_symbol_data" * (field_expression "paVar4->the_bfd->xvec->_bfd_copy_private_symbol_data" (field_expression "paVar4->the_bfd->xvec" (field_expression "paVar4->the_bfd" identifier -> field_identifier) -> field_identifier) -> field_identifier)) )) (argument_list "((bfd *)paVar6->name,(asymbol *)paVar6,paVar4->the_bfd,paVar4)" ( (cast_expression "(bfd *)paVar6->name" ( (type_descriptor "bfd *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "paVar6->name" identifier -> field_identifier)) , (cast_expression "(asymbol *)paVar6" ( (type_descriptor "asymbol *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (field_expression "paVar4->the_bfd" identifier -> field_identifier) , identifier ))) ;) (if_statement "if (replace == 0) {\n    S_CLEAR_EXTERNAL(s);\n    s->sy_next = s;\n    s->sy_previous = s;\n    return s;\n  }" if (parenthesized_expression "(replace == 0)" ( (binary_expression "replace == 0" identifier == number_literal) )) (compound_statement "{\n    S_CLEAR_EXTERNAL(s);\n    s->sy_next = s;\n    s->sy_previous = s;\n    return s;\n  }" { (expression_statement "S_CLEAR_EXTERNAL(s);" (call_expression "S_CLEAR_EXTERNAL(s)" identifier (argument_list "(s)" ( identifier ))) ;) (expression_statement "s->sy_next = s;" (assignment_expression "s->sy_next = s" (field_expression "s->sy_next" identifier -> field_identifier) = identifier) ;) (expression_statement "s->sy_previous = s;" (assignment_expression "s->sy_previous = s" (field_expression "s->sy_previous" identifier -> field_identifier) = identifier) ;) (return_statement "return s;" return identifier ;) })) (expression_statement "psVar2 = s;" (assignment_expression "psVar2 = s" identifier = identifier) ;) (if_statement "if ((symbol_rootP != orgsymP) && (psVar2 = symbol_rootP, orgsymP->sy_previous != (symbol *)0x0)) {\n    orgsymP->sy_previous->sy_next = s;\n    orgsymP->sy_previous = (symbol *)0x0;\n    psVar2 = symbol_rootP;\n  }" if (parenthesized_expression "((symbol_rootP != orgsymP) && (psVar2 = symbol_rootP, orgsymP->sy_previous != (symbol *)0x0))" ( (binary_expression "(symbol_rootP != orgsymP) && (psVar2 = symbol_rootP, orgsymP->sy_previous != (symbol *)0x0)" (parenthesized_expression "(symbol_rootP != orgsymP)" ( (binary_expression "symbol_rootP != orgsymP" identifier != identifier) )) && (parenthesized_expression "(psVar2 = symbol_rootP, orgsymP->sy_previous != (symbol *)0x0)" ( (comma_expression "psVar2 = symbol_rootP, orgsymP->sy_previous != (symbol *)0x0" (assignment_expression "psVar2 = symbol_rootP" identifier = identifier) , (binary_expression "orgsymP->sy_previous != (symbol *)0x0" (field_expression "orgsymP->sy_previous" identifier -> field_identifier) != (cast_expression "(symbol *)0x0" ( (type_descriptor "symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    orgsymP->sy_previous->sy_next = s;\n    orgsymP->sy_previous = (symbol *)0x0;\n    psVar2 = symbol_rootP;\n  }" { (expression_statement "orgsymP->sy_previous->sy_next = s;" (assignment_expression "orgsymP->sy_previous->sy_next = s" (field_expression "orgsymP->sy_previous->sy_next" (field_expression "orgsymP->sy_previous" identifier -> field_identifier) -> field_identifier) = identifier) ;) (expression_statement "orgsymP->sy_previous = (symbol *)0x0;" (assignment_expression "orgsymP->sy_previous = (symbol *)0x0" (field_expression "orgsymP->sy_previous" identifier -> field_identifier) = (cast_expression "(symbol *)0x0" ( (type_descriptor "symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "psVar2 = symbol_rootP;" (assignment_expression "psVar2 = symbol_rootP" identifier = identifier) ;) })) (expression_statement "symbol_rootP = psVar2;" (assignment_expression "symbol_rootP = psVar2" identifier = identifier) ;) (expression_statement "psVar2 = s;" (assignment_expression "psVar2 = s" identifier = identifier) ;) (if_statement "if ((symbol_lastP != orgsymP) && (psVar2 = symbol_lastP, orgsymP->sy_next != (symbol *)0x0)) {\n    orgsymP->sy_next->sy_previous = s;\n    psVar2 = symbol_lastP;\n  }" if (parenthesized_expression "((symbol_lastP != orgsymP) && (psVar2 = symbol_lastP, orgsymP->sy_next != (symbol *)0x0))" ( (binary_expression "(symbol_lastP != orgsymP) && (psVar2 = symbol_lastP, orgsymP->sy_next != (symbol *)0x0)" (parenthesized_expression "(symbol_lastP != orgsymP)" ( (binary_expression "symbol_lastP != orgsymP" identifier != identifier) )) && (parenthesized_expression "(psVar2 = symbol_lastP, orgsymP->sy_next != (symbol *)0x0)" ( (comma_expression "psVar2 = symbol_lastP, orgsymP->sy_next != (symbol *)0x0" (assignment_expression "psVar2 = symbol_lastP" identifier = identifier) , (binary_expression "orgsymP->sy_next != (symbol *)0x0" (field_expression "orgsymP->sy_next" identifier -> field_identifier) != (cast_expression "(symbol *)0x0" ( (type_descriptor "symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    orgsymP->sy_next->sy_previous = s;\n    psVar2 = symbol_lastP;\n  }" { (expression_statement "orgsymP->sy_next->sy_previous = s;" (assignment_expression "orgsymP->sy_next->sy_previous = s" (field_expression "orgsymP->sy_next->sy_previous" (field_expression "orgsymP->sy_next" identifier -> field_identifier) -> field_identifier) = identifier) ;) (expression_statement "psVar2 = symbol_lastP;" (assignment_expression "psVar2 = symbol_lastP" identifier = identifier) ;) })) (expression_statement "symbol_lastP = psVar2;" (assignment_expression "symbol_lastP = psVar2" identifier = identifier) ;) (expression_statement "S_CLEAR_EXTERNAL(orgsymP);" (call_expression "S_CLEAR_EXTERNAL(orgsymP)" identifier (argument_list "(orgsymP)" ( identifier ))) ;) (expression_statement "orgsymP->sy_next = orgsymP;" (assignment_expression "orgsymP->sy_next = orgsymP" (field_expression "orgsymP->sy_next" identifier -> field_identifier) = identifier) ;) (expression_statement "orgsymP->sy_previous = orgsymP;" (assignment_expression "orgsymP->sy_previous = orgsymP" (field_expression "orgsymP->sy_previous" identifier -> field_identifier) = identifier) ;) (expression_statement "symbol_table_insert(s);" (call_expression "symbol_table_insert(s)" identifier (argument_list "(s)" ( identifier ))) ;) (return_statement "return s;" return identifier ;) })))
(translation_unit "byte * FUN_000385b0(byte *param_1,int param_2)\n\n{\n  int iVar1;\n  byte *pbVar2;\n  int *piVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  byte *pbVar6;\n  \n  if (param_1 == PTR_DAT_0007af54) {\n                    \n    FUN_0002aaa0("../../gas/symbols.c",0x231,"symbol_clone",param_1);\n  }\n  piVar5 = *(int **)(param_1 + 4);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_00084798 == piVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      piVar5 = *(int **)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_000370b0();\n      piVar5 = *(int **)(param_1 + 4);\n    }\n  }\n  if (DAT_000849b0 - DAT_000849ac < 0x30) {\n    _obstack_newchunk(&DAT_000849a0,0x30);\n    pbVar2 = (byte *)(DAT_000849ac + 0x30);\n    pbVar6 = DAT_000849a8;\n    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;\n  }\n  else {\n    pbVar2 = (byte *)(DAT_000849ac + 0x30);\n    pbVar6 = DAT_000849a8;\n    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;\n  }\n  DAT_000849c8 = DAT_000849c8 | 2;\n  pbVar6 = DAT_000849a8;\nLAB_0003860c:\n  DAT_000849ac = (uint)(pbVar2 + DAT_000849b8) & ~DAT_000849b8;\n  if (DAT_000849b0 - DAT_000849a4 < DAT_000849ac - DAT_000849a4) {\n    DAT_000849ac = DAT_000849b0;\n  }\n  DAT_000849a8 = (byte *)DAT_000849ac;\n  *(undefined4 *)pbVar6 = *(undefined4 *)param_1;\n  *(undefined4 *)(pbVar6 + 4) = *(undefined4 *)(param_1 + 4);\n  *(undefined4 *)(pbVar6 + 8) = *(undefined4 *)(param_1 + 8);\n  *(undefined4 *)(pbVar6 + 0xc) = *(undefined4 *)(param_1 + 0xc);\n  *(undefined4 *)(pbVar6 + 0x10) = *(undefined4 *)(param_1 + 0x10);\n  *(undefined4 *)(pbVar6 + 0x14) = *(undefined4 *)(param_1 + 0x14);\n  *(undefined4 *)(pbVar6 + 0x18) = *(undefined4 *)(param_1 + 0x18);\n  *(undefined4 *)(pbVar6 + 0x1c) = *(undefined4 *)(param_1 + 0x1c);\n  *(undefined4 *)(pbVar6 + 0x20) = *(undefined4 *)(param_1 + 0x20);\n  *(undefined4 *)(pbVar6 + 0x24) = *(undefined4 *)(param_1 + 0x24);\n  *(undefined4 *)(pbVar6 + 0x28) = *(undefined4 *)(param_1 + 0x28);\n  *(undefined4 *)(pbVar6 + 0x2c) = *(undefined4 *)(param_1 + 0x2c);\n  piVar3 = (int *)(**(code **)(*(int *)(*piVar5 + 4) + 0x10c))(*piVar5);\n  if (piVar3 == (int *)0x0) {\n    uVar4 = bfd_get_error();\n    uVar4 = bfd_errmsg(uVar4);\n                    \n    FUN_0002aa20("bfd_make_empty_symbol: %s",uVar4);\n  }\n  iVar1 = piVar5[1];\n  *(int **)(pbVar6 + 4) = piVar3;\n  piVar3[1] = iVar1;\n  piVar3[3] = piVar5[3] & 0xfffffeff;\n  piVar3[4] = piVar5[4];\n  (**(code **)(*(int *)(*piVar3 + 4) + 0xb8))(*piVar5,piVar5,*piVar3,piVar3);\n  if (param_2 == 0) {\n    FUN_00038570(pbVar6);\n    *(byte **)(pbVar6 + 0x18) = pbVar6;\n    *(byte **)(pbVar6 + 0x1c) = pbVar6;\n    return pbVar6;\n  }\n  pbVar2 = pbVar6;\n  if ((DAT_00084a10 != param_1) && (pbVar2 = DAT_00084a10, *(int *)(param_1 + 0x1c) != 0)) {\n    *(byte **)(*(int *)(param_1 + 0x1c) + 0x18) = pbVar6;\n    param_1[0x1c] = 0;\n    param_1[0x1d] = 0;\n    param_1[0x1e] = 0;\n    param_1[0x1f] = 0;\n    pbVar2 = DAT_00084a10;\n  }\n  DAT_00084a10 = pbVar2;\n  pbVar2 = pbVar6;\n  if ((DAT_00084a14 != param_1) && (pbVar2 = DAT_00084a14, *(int *)(param_1 + 0x18) != 0)) {\n    *(byte **)(*(int *)(param_1 + 0x18) + 0x1c) = pbVar6;\n    pbVar2 = DAT_00084a14;\n  }\n  DAT_00084a14 = pbVar2;\n  FUN_00038570(param_1);\n  *(byte **)(param_1 + 0x18) = param_1;\n  *(byte **)(param_1 + 0x1c) = param_1;\n  FUN_00035730(pbVar6);\n  return pbVar6;\n}\n\n" (function_definition "byte * FUN_000385b0(byte *param_1,int param_2)\n\n{\n  int iVar1;\n  byte *pbVar2;\n  int *piVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  byte *pbVar6;\n  \n  if (param_1 == PTR_DAT_0007af54) {\n                    \n    FUN_0002aaa0("../../gas/symbols.c",0x231,"symbol_clone",param_1);\n  }\n  piVar5 = *(int **)(param_1 + 4);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_00084798 == piVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      piVar5 = *(int **)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_000370b0();\n      piVar5 = *(int **)(param_1 + 4);\n    }\n  }\n  if (DAT_000849b0 - DAT_000849ac < 0x30) {\n    _obstack_newchunk(&DAT_000849a0,0x30);\n    pbVar2 = (byte *)(DAT_000849ac + 0x30);\n    pbVar6 = DAT_000849a8;\n    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;\n  }\n  else {\n    pbVar2 = (byte *)(DAT_000849ac + 0x30);\n    pbVar6 = DAT_000849a8;\n    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;\n  }\n  DAT_000849c8 = DAT_000849c8 | 2;\n  pbVar6 = DAT_000849a8;\nLAB_0003860c:\n  DAT_000849ac = (uint)(pbVar2 + DAT_000849b8) & ~DAT_000849b8;\n  if (DAT_000849b0 - DAT_000849a4 < DAT_000849ac - DAT_000849a4) {\n    DAT_000849ac = DAT_000849b0;\n  }\n  DAT_000849a8 = (byte *)DAT_000849ac;\n  *(undefined4 *)pbVar6 = *(undefined4 *)param_1;\n  *(undefined4 *)(pbVar6 + 4) = *(undefined4 *)(param_1 + 4);\n  *(undefined4 *)(pbVar6 + 8) = *(undefined4 *)(param_1 + 8);\n  *(undefined4 *)(pbVar6 + 0xc) = *(undefined4 *)(param_1 + 0xc);\n  *(undefined4 *)(pbVar6 + 0x10) = *(undefined4 *)(param_1 + 0x10);\n  *(undefined4 *)(pbVar6 + 0x14) = *(undefined4 *)(param_1 + 0x14);\n  *(undefined4 *)(pbVar6 + 0x18) = *(undefined4 *)(param_1 + 0x18);\n  *(undefined4 *)(pbVar6 + 0x1c) = *(undefined4 *)(param_1 + 0x1c);\n  *(undefined4 *)(pbVar6 + 0x20) = *(undefined4 *)(param_1 + 0x20);\n  *(undefined4 *)(pbVar6 + 0x24) = *(undefined4 *)(param_1 + 0x24);\n  *(undefined4 *)(pbVar6 + 0x28) = *(undefined4 *)(param_1 + 0x28);\n  *(undefined4 *)(pbVar6 + 0x2c) = *(undefined4 *)(param_1 + 0x2c);\n  piVar3 = (int *)(**(code **)(*(int *)(*piVar5 + 4) + 0x10c))(*piVar5);\n  if (piVar3 == (int *)0x0) {\n    uVar4 = bfd_get_error();\n    uVar4 = bfd_errmsg(uVar4);\n                    \n    FUN_0002aa20("bfd_make_empty_symbol: %s",uVar4);\n  }\n  iVar1 = piVar5[1];\n  *(int **)(pbVar6 + 4) = piVar3;\n  piVar3[1] = iVar1;\n  piVar3[3] = piVar5[3] & 0xfffffeff;\n  piVar3[4] = piVar5[4];\n  (**(code **)(*(int *)(*piVar3 + 4) + 0xb8))(*piVar5,piVar5,*piVar3,piVar3);\n  if (param_2 == 0) {\n    FUN_00038570(pbVar6);\n    *(byte **)(pbVar6 + 0x18) = pbVar6;\n    *(byte **)(pbVar6 + 0x1c) = pbVar6;\n    return pbVar6;\n  }\n  pbVar2 = pbVar6;\n  if ((DAT_00084a10 != param_1) && (pbVar2 = DAT_00084a10, *(int *)(param_1 + 0x1c) != 0)) {\n    *(byte **)(*(int *)(param_1 + 0x1c) + 0x18) = pbVar6;\n    param_1[0x1c] = 0;\n    param_1[0x1d] = 0;\n    param_1[0x1e] = 0;\n    param_1[0x1f] = 0;\n    pbVar2 = DAT_00084a10;\n  }\n  DAT_00084a10 = pbVar2;\n  pbVar2 = pbVar6;\n  if ((DAT_00084a14 != param_1) && (pbVar2 = DAT_00084a14, *(int *)(param_1 + 0x18) != 0)) {\n    *(byte **)(*(int *)(param_1 + 0x18) + 0x1c) = pbVar6;\n    pbVar2 = DAT_00084a14;\n  }\n  DAT_00084a14 = pbVar2;\n  FUN_00038570(param_1);\n  *(byte **)(param_1 + 0x18) = param_1;\n  *(byte **)(param_1 + 0x1c) = param_1;\n  FUN_00035730(pbVar6);\n  return pbVar6;\n}" type_identifier (pointer_declarator "* FUN_000385b0(byte *param_1,int param_2)" * (function_declarator "FUN_000385b0(byte *param_1,int param_2)" identifier (parameter_list "(byte *param_1,int param_2)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) )))) (compound_statement "{\n  int iVar1;\n  byte *pbVar2;\n  int *piVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  byte *pbVar6;\n  \n  if (param_1 == PTR_DAT_0007af54) {\n                    \n    FUN_0002aaa0("../../gas/symbols.c",0x231,"symbol_clone",param_1);\n  }\n  piVar5 = *(int **)(param_1 + 4);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_00084798 == piVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      piVar5 = *(int **)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_000370b0();\n      piVar5 = *(int **)(param_1 + 4);\n    }\n  }\n  if (DAT_000849b0 - DAT_000849ac < 0x30) {\n    _obstack_newchunk(&DAT_000849a0,0x30);\n    pbVar2 = (byte *)(DAT_000849ac + 0x30);\n    pbVar6 = DAT_000849a8;\n    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;\n  }\n  else {\n    pbVar2 = (byte *)(DAT_000849ac + 0x30);\n    pbVar6 = DAT_000849a8;\n    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;\n  }\n  DAT_000849c8 = DAT_000849c8 | 2;\n  pbVar6 = DAT_000849a8;\nLAB_0003860c:\n  DAT_000849ac = (uint)(pbVar2 + DAT_000849b8) & ~DAT_000849b8;\n  if (DAT_000849b0 - DAT_000849a4 < DAT_000849ac - DAT_000849a4) {\n    DAT_000849ac = DAT_000849b0;\n  }\n  DAT_000849a8 = (byte *)DAT_000849ac;\n  *(undefined4 *)pbVar6 = *(undefined4 *)param_1;\n  *(undefined4 *)(pbVar6 + 4) = *(undefined4 *)(param_1 + 4);\n  *(undefined4 *)(pbVar6 + 8) = *(undefined4 *)(param_1 + 8);\n  *(undefined4 *)(pbVar6 + 0xc) = *(undefined4 *)(param_1 + 0xc);\n  *(undefined4 *)(pbVar6 + 0x10) = *(undefined4 *)(param_1 + 0x10);\n  *(undefined4 *)(pbVar6 + 0x14) = *(undefined4 *)(param_1 + 0x14);\n  *(undefined4 *)(pbVar6 + 0x18) = *(undefined4 *)(param_1 + 0x18);\n  *(undefined4 *)(pbVar6 + 0x1c) = *(undefined4 *)(param_1 + 0x1c);\n  *(undefined4 *)(pbVar6 + 0x20) = *(undefined4 *)(param_1 + 0x20);\n  *(undefined4 *)(pbVar6 + 0x24) = *(undefined4 *)(param_1 + 0x24);\n  *(undefined4 *)(pbVar6 + 0x28) = *(undefined4 *)(param_1 + 0x28);\n  *(undefined4 *)(pbVar6 + 0x2c) = *(undefined4 *)(param_1 + 0x2c);\n  piVar3 = (int *)(**(code **)(*(int *)(*piVar5 + 4) + 0x10c))(*piVar5);\n  if (piVar3 == (int *)0x0) {\n    uVar4 = bfd_get_error();\n    uVar4 = bfd_errmsg(uVar4);\n                    \n    FUN_0002aa20("bfd_make_empty_symbol: %s",uVar4);\n  }\n  iVar1 = piVar5[1];\n  *(int **)(pbVar6 + 4) = piVar3;\n  piVar3[1] = iVar1;\n  piVar3[3] = piVar5[3] & 0xfffffeff;\n  piVar3[4] = piVar5[4];\n  (**(code **)(*(int *)(*piVar3 + 4) + 0xb8))(*piVar5,piVar5,*piVar3,piVar3);\n  if (param_2 == 0) {\n    FUN_00038570(pbVar6);\n    *(byte **)(pbVar6 + 0x18) = pbVar6;\n    *(byte **)(pbVar6 + 0x1c) = pbVar6;\n    return pbVar6;\n  }\n  pbVar2 = pbVar6;\n  if ((DAT_00084a10 != param_1) && (pbVar2 = DAT_00084a10, *(int *)(param_1 + 0x1c) != 0)) {\n    *(byte **)(*(int *)(param_1 + 0x1c) + 0x18) = pbVar6;\n    param_1[0x1c] = 0;\n    param_1[0x1d] = 0;\n    param_1[0x1e] = 0;\n    param_1[0x1f] = 0;\n    pbVar2 = DAT_00084a10;\n  }\n  DAT_00084a10 = pbVar2;\n  pbVar2 = pbVar6;\n  if ((DAT_00084a14 != param_1) && (pbVar2 = DAT_00084a14, *(int *)(param_1 + 0x18) != 0)) {\n    *(byte **)(*(int *)(param_1 + 0x18) + 0x1c) = pbVar6;\n    pbVar2 = DAT_00084a14;\n  }\n  DAT_00084a14 = pbVar2;\n  FUN_00038570(param_1);\n  *(byte **)(param_1 + 0x18) = param_1;\n  *(byte **)(param_1 + 0x1c) = param_1;\n  FUN_00035730(pbVar6);\n  return pbVar6;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (if_statement "if (param_1 == PTR_DAT_0007af54) {\n                    \n    FUN_0002aaa0("../../gas/symbols.c",0x231,"symbol_clone",param_1);\n  }" if (parenthesized_expression "(param_1 == PTR_DAT_0007af54)" ( (binary_expression "param_1 == PTR_DAT_0007af54" identifier == identifier) )) (compound_statement "{\n                    \n    FUN_0002aaa0("../../gas/symbols.c",0x231,"symbol_clone",param_1);\n  }" { (expression_statement "FUN_0002aaa0("../../gas/symbols.c",0x231,"symbol_clone",param_1);" (call_expression "FUN_0002aaa0("../../gas/symbols.c",0x231,"symbol_clone",param_1)" identifier (argument_list "("../../gas/symbols.c",0x231,"symbol_clone",param_1)" ( (string_literal ""../../gas/symbols.c"" " string_content ") , number_literal , (string_literal ""symbol_clone"" " string_content ") , identifier ))) ;) })) (expression_statement "piVar5 = *(int **)(param_1 + 4);" (assignment_expression "piVar5 = *(int **)(param_1 + 4)" identifier = (pointer_expression "*(int **)(param_1 + 4)" * (cast_expression "(int **)(param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (if_statement "if ((*param_1 & 1) != 0) {\n    if (DAT_00084798 == piVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      piVar5 = *(int **)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_000370b0();\n      piVar5 = *(int **)(param_1 + 4);\n    }\n  }" if (parenthesized_expression "((*param_1 & 1) != 0)" ( (binary_expression "(*param_1 & 1) != 0" (parenthesized_expression "(*param_1 & 1)" ( (binary_expression "*param_1 & 1" (pointer_expression "*param_1" * identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    if (DAT_00084798 == piVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      piVar5 = *(int **)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_000370b0();\n      piVar5 = *(int **)(param_1 + 4);\n    }\n  }" { (if_statement "if (DAT_00084798 == piVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      piVar5 = *(int **)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_000370b0();\n      piVar5 = *(int **)(param_1 + 4);\n    }" if (parenthesized_expression "(DAT_00084798 == piVar5)" ( (binary_expression "DAT_00084798 == piVar5" identifier == identifier) )) (compound_statement "{\n      param_1 = *(byte **)(param_1 + 0xc);\n      piVar5 = *(int **)(param_1 + 4);\n    }" { (expression_statement "param_1 = *(byte **)(param_1 + 0xc);" (assignment_expression "param_1 = *(byte **)(param_1 + 0xc)" identifier = (pointer_expression "*(byte **)(param_1 + 0xc)" * (cast_expression "(byte **)(param_1 + 0xc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "piVar5 = *(int **)(param_1 + 4);" (assignment_expression "piVar5 = *(int **)(param_1 + 4)" identifier = (pointer_expression "*(int **)(param_1 + 4)" * (cast_expression "(int **)(param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      param_1 = (byte *)FUN_000370b0();\n      piVar5 = *(int **)(param_1 + 4);\n    }" else (compound_statement "{\n      param_1 = (byte *)FUN_000370b0();\n      piVar5 = *(int **)(param_1 + 4);\n    }" { (expression_statement "param_1 = (byte *)FUN_000370b0();" (assignment_expression "param_1 = (byte *)FUN_000370b0()" identifier = (cast_expression "(byte *)FUN_000370b0()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000370b0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "piVar5 = *(int **)(param_1 + 4);" (assignment_expression "piVar5 = *(int **)(param_1 + 4)" identifier = (pointer_expression "*(int **)(param_1 + 4)" * (cast_expression "(int **)(param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) }))) })) (if_statement "if (DAT_000849b0 - DAT_000849ac < 0x30) {\n    _obstack_newchunk(&DAT_000849a0,0x30);\n    pbVar2 = (byte *)(DAT_000849ac + 0x30);\n    pbVar6 = DAT_000849a8;\n    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;\n  }\n  else {\n    pbVar2 = (byte *)(DAT_000849ac + 0x30);\n    pbVar6 = DAT_000849a8;\n    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;\n  }" if (parenthesized_expression "(DAT_000849b0 - DAT_000849ac < 0x30)" ( (binary_expression "DAT_000849b0 - DAT_000849ac < 0x30" (binary_expression "DAT_000849b0 - DAT_000849ac" identifier - identifier) < number_literal) )) (compound_statement "{\n    _obstack_newchunk(&DAT_000849a0,0x30);\n    pbVar2 = (byte *)(DAT_000849ac + 0x30);\n    pbVar6 = DAT_000849a8;\n    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;\n  }" { (expression_statement "_obstack_newchunk(&DAT_000849a0,0x30);" (call_expression "_obstack_newchunk(&DAT_000849a0,0x30)" identifier (argument_list "(&DAT_000849a0,0x30)" ( (pointer_expression "&DAT_000849a0" & identifier) , number_literal ))) ;) (expression_statement "pbVar2 = (byte *)(DAT_000849ac + 0x30);" (assignment_expression "pbVar2 = (byte *)(DAT_000849ac + 0x30)" identifier = (cast_expression "(byte *)(DAT_000849ac + 0x30)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000849ac + 0x30)" ( (binary_expression "DAT_000849ac + 0x30" identifier + number_literal) )))) ;) (expression_statement "pbVar6 = DAT_000849a8;" (assignment_expression "pbVar6 = DAT_000849a8" identifier = identifier) ;) (if_statement "if (pbVar2 != DAT_000849a8) goto LAB_0003860c;" if (parenthesized_expression "(pbVar2 != DAT_000849a8)" ( (binary_expression "pbVar2 != DAT_000849a8" identifier != identifier) )) (goto_statement "goto LAB_0003860c;" goto statement_identifier ;)) }) (else_clause "else {\n    pbVar2 = (byte *)(DAT_000849ac + 0x30);\n    pbVar6 = DAT_000849a8;\n    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;\n  }" else (compound_statement "{\n    pbVar2 = (byte *)(DAT_000849ac + 0x30);\n    pbVar6 = DAT_000849a8;\n    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;\n  }" { (expression_statement "pbVar2 = (byte *)(DAT_000849ac + 0x30);" (assignment_expression "pbVar2 = (byte *)(DAT_000849ac + 0x30)" identifier = (cast_expression "(byte *)(DAT_000849ac + 0x30)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000849ac + 0x30)" ( (binary_expression "DAT_000849ac + 0x30" identifier + number_literal) )))) ;) (expression_statement "pbVar6 = DAT_000849a8;" (assignment_expression "pbVar6 = DAT_000849a8" identifier = identifier) ;) (if_statement "if (pbVar2 != DAT_000849a8) goto LAB_0003860c;" if (parenthesized_expression "(pbVar2 != DAT_000849a8)" ( (binary_expression "pbVar2 != DAT_000849a8" identifier != identifier) )) (goto_statement "goto LAB_0003860c;" goto statement_identifier ;)) }))) (expression_statement "DAT_000849c8 = DAT_000849c8 | 2;" (assignment_expression "DAT_000849c8 = DAT_000849c8 | 2" identifier = (binary_expression "DAT_000849c8 | 2" identifier | number_literal)) ;) (expression_statement "pbVar6 = DAT_000849a8;" (assignment_expression "pbVar6 = DAT_000849a8" identifier = identifier) ;) (labeled_statement "LAB_0003860c:\n  DAT_000849ac = (uint)(pbVar2 + DAT_000849b8) & ~DAT_000849b8;" statement_identifier : (expression_statement "DAT_000849ac = (uint)(pbVar2 + DAT_000849b8) & ~DAT_000849b8;" (assignment_expression "DAT_000849ac = (uint)(pbVar2 + DAT_000849b8) & ~DAT_000849b8" identifier = (binary_expression "(uint)(pbVar2 + DAT_000849b8) & ~DAT_000849b8" (call_expression "(uint)(pbVar2 + DAT_000849b8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar2 + DAT_000849b8)" ( (binary_expression "pbVar2 + DAT_000849b8" identifier + identifier) ))) & (unary_expression "~DAT_000849b8" ~ identifier))) ;)) (if_statement "if (DAT_000849b0 - DAT_000849a4 < DAT_000849ac - DAT_000849a4) {\n    DAT_000849ac = DAT_000849b0;\n  }" if (parenthesized_expression "(DAT_000849b0 - DAT_000849a4 < DAT_000849ac - DAT_000849a4)" ( (binary_expression "DAT_000849b0 - DAT_000849a4 < DAT_000849ac - DAT_000849a4" (binary_expression "DAT_000849b0 - DAT_000849a4" identifier - identifier) < (binary_expression "DAT_000849ac - DAT_000849a4" identifier - identifier)) )) (compound_statement "{\n    DAT_000849ac = DAT_000849b0;\n  }" { (expression_statement "DAT_000849ac = DAT_000849b0;" (assignment_expression "DAT_000849ac = DAT_000849b0" identifier = identifier) ;) })) (expression_statement "DAT_000849a8 = (byte *)DAT_000849ac;" (assignment_expression "DAT_000849a8 = (byte *)DAT_000849ac" identifier = (cast_expression "(byte *)DAT_000849ac" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "*(undefined4 *)pbVar6 = *(undefined4 *)param_1;" (assignment_expression "*(undefined4 *)pbVar6 = *(undefined4 *)param_1" (pointer_expression "*(undefined4 *)pbVar6" * (cast_expression "(undefined4 *)pbVar6" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined4 *)param_1" * (cast_expression "(undefined4 *)param_1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(undefined4 *)(pbVar6 + 4) = *(undefined4 *)(param_1 + 4);" (assignment_expression "*(undefined4 *)(pbVar6 + 4) = *(undefined4 *)(param_1 + 4)" (pointer_expression "*(undefined4 *)(pbVar6 + 4)" * (cast_expression "(undefined4 *)(pbVar6 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar6 + 4)" ( (binary_expression "pbVar6 + 4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(pbVar6 + 8) = *(undefined4 *)(param_1 + 8);" (assignment_expression "*(undefined4 *)(pbVar6 + 8) = *(undefined4 *)(param_1 + 8)" (pointer_expression "*(undefined4 *)(pbVar6 + 8)" * (cast_expression "(undefined4 *)(pbVar6 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar6 + 8)" ( (binary_expression "pbVar6 + 8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(pbVar6 + 0xc) = *(undefined4 *)(param_1 + 0xc);" (assignment_expression "*(undefined4 *)(pbVar6 + 0xc) = *(undefined4 *)(param_1 + 0xc)" (pointer_expression "*(undefined4 *)(pbVar6 + 0xc)" * (cast_expression "(undefined4 *)(pbVar6 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar6 + 0xc)" ( (binary_expression "pbVar6 + 0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(pbVar6 + 0x10) = *(undefined4 *)(param_1 + 0x10);" (assignment_expression "*(undefined4 *)(pbVar6 + 0x10) = *(undefined4 *)(param_1 + 0x10)" (pointer_expression "*(undefined4 *)(pbVar6 + 0x10)" * (cast_expression "(undefined4 *)(pbVar6 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar6 + 0x10)" ( (binary_expression "pbVar6 + 0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x10)" * (cast_expression "(undefined4 *)(param_1 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(pbVar6 + 0x14) = *(undefined4 *)(param_1 + 0x14);" (assignment_expression "*(undefined4 *)(pbVar6 + 0x14) = *(undefined4 *)(param_1 + 0x14)" (pointer_expression "*(undefined4 *)(pbVar6 + 0x14)" * (cast_expression "(undefined4 *)(pbVar6 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar6 + 0x14)" ( (binary_expression "pbVar6 + 0x14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(pbVar6 + 0x18) = *(undefined4 *)(param_1 + 0x18);" (assignment_expression "*(undefined4 *)(pbVar6 + 0x18) = *(undefined4 *)(param_1 + 0x18)" (pointer_expression "*(undefined4 *)(pbVar6 + 0x18)" * (cast_expression "(undefined4 *)(pbVar6 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar6 + 0x18)" ( (binary_expression "pbVar6 + 0x18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x18)" * (cast_expression "(undefined4 *)(param_1 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(pbVar6 + 0x1c) = *(undefined4 *)(param_1 + 0x1c);" (assignment_expression "*(undefined4 *)(pbVar6 + 0x1c) = *(undefined4 *)(param_1 + 0x1c)" (pointer_expression "*(undefined4 *)(pbVar6 + 0x1c)" * (cast_expression "(undefined4 *)(pbVar6 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar6 + 0x1c)" ( (binary_expression "pbVar6 + 0x1c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x1c)" * (cast_expression "(undefined4 *)(param_1 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(pbVar6 + 0x20) = *(undefined4 *)(param_1 + 0x20);" (assignment_expression "*(undefined4 *)(pbVar6 + 0x20) = *(undefined4 *)(param_1 + 0x20)" (pointer_expression "*(undefined4 *)(pbVar6 + 0x20)" * (cast_expression "(undefined4 *)(pbVar6 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar6 + 0x20)" ( (binary_expression "pbVar6 + 0x20" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x20)" * (cast_expression "(undefined4 *)(param_1 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(pbVar6 + 0x24) = *(undefined4 *)(param_1 + 0x24);" (assignment_expression "*(undefined4 *)(pbVar6 + 0x24) = *(undefined4 *)(param_1 + 0x24)" (pointer_expression "*(undefined4 *)(pbVar6 + 0x24)" * (cast_expression "(undefined4 *)(pbVar6 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar6 + 0x24)" ( (binary_expression "pbVar6 + 0x24" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x24)" * (cast_expression "(undefined4 *)(param_1 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(pbVar6 + 0x28) = *(undefined4 *)(param_1 + 0x28);" (assignment_expression "*(undefined4 *)(pbVar6 + 0x28) = *(undefined4 *)(param_1 + 0x28)" (pointer_expression "*(undefined4 *)(pbVar6 + 0x28)" * (cast_expression "(undefined4 *)(pbVar6 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar6 + 0x28)" ( (binary_expression "pbVar6 + 0x28" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x28)" * (cast_expression "(undefined4 *)(param_1 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(pbVar6 + 0x2c) = *(undefined4 *)(param_1 + 0x2c);" (assignment_expression "*(undefined4 *)(pbVar6 + 0x2c) = *(undefined4 *)(param_1 + 0x2c)" (pointer_expression "*(undefined4 *)(pbVar6 + 0x2c)" * (cast_expression "(undefined4 *)(pbVar6 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar6 + 0x2c)" ( (binary_expression "pbVar6 + 0x2c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + 0x2c)" * (cast_expression "(undefined4 *)(param_1 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "piVar3 = (int *)(**(code **)(*(int *)(*piVar5 + 4) + 0x10c))(*piVar5);" (assignment_expression "piVar3 = (int *)(**(code **)(*(int *)(*piVar5 + 4) + 0x10c))(*piVar5)" identifier = (cast_expression "(int *)(**(code **)(*(int *)(*piVar5 + 4) + 0x10c))(*piVar5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*(int *)(*piVar5 + 4) + 0x10c))(*piVar5)" (parenthesized_expression "(**(code **)(*(int *)(*piVar5 + 4) + 0x10c))" ( (pointer_expression "**(code **)(*(int *)(*piVar5 + 4) + 0x10c)" * (pointer_expression "*(code **)(*(int *)(*piVar5 + 4) + 0x10c)" * (cast_expression "(code **)(*(int *)(*piVar5 + 4) + 0x10c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(*piVar5 + 4) + 0x10c)" ( (binary_expression "*(int *)(*piVar5 + 4) + 0x10c" (pointer_expression "*(int *)(*piVar5 + 4)" * (cast_expression "(int *)(*piVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar5 + 4)" ( (binary_expression "*piVar5 + 4" (pointer_expression "*piVar5" * identifier) + number_literal) )))) + number_literal) ))))) )) (argument_list "(*piVar5)" ( (pointer_expression "*piVar5" * identifier) ))))) ;) (if_statement "if (piVar3 == (int *)0x0) {\n    uVar4 = bfd_get_error();\n    uVar4 = bfd_errmsg(uVar4);\n                    \n    FUN_0002aa20("bfd_make_empty_symbol: %s",uVar4);\n  }" if (parenthesized_expression "(piVar3 == (int *)0x0)" ( (binary_expression "piVar3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar4 = bfd_get_error();\n    uVar4 = bfd_errmsg(uVar4);\n                    \n    FUN_0002aa20("bfd_make_empty_symbol: %s",uVar4);\n  }" { (expression_statement "uVar4 = bfd_get_error();" (assignment_expression "uVar4 = bfd_get_error()" identifier = (call_expression "bfd_get_error()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar4 = bfd_errmsg(uVar4);" (assignment_expression "uVar4 = bfd_errmsg(uVar4)" identifier = (call_expression "bfd_errmsg(uVar4)" identifier (argument_list "(uVar4)" ( identifier )))) ;) (expression_statement "FUN_0002aa20("bfd_make_empty_symbol: %s",uVar4);" (call_expression "FUN_0002aa20("bfd_make_empty_symbol: %s",uVar4)" identifier (argument_list "("bfd_make_empty_symbol: %s",uVar4)" ( (string_literal ""bfd_make_empty_symbol: %s"" " string_content ") , identifier ))) ;) })) (expression_statement "iVar1 = piVar5[1];" (assignment_expression "iVar1 = piVar5[1]" identifier = (subscript_expression "piVar5[1]" identifier [ number_literal ])) ;) (expression_statement "*(int **)(pbVar6 + 4) = piVar3;" (assignment_expression "*(int **)(pbVar6 + 4) = piVar3" (pointer_expression "*(int **)(pbVar6 + 4)" * (cast_expression "(int **)(pbVar6 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar6 + 4)" ( (binary_expression "pbVar6 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar3[1] = iVar1;" (assignment_expression "piVar3[1] = iVar1" (subscript_expression "piVar3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar3[3] = piVar5[3] & 0xfffffeff;" (assignment_expression "piVar3[3] = piVar5[3] & 0xfffffeff" (subscript_expression "piVar3[3]" identifier [ number_literal ]) = (binary_expression "piVar5[3] & 0xfffffeff" (subscript_expression "piVar5[3]" identifier [ number_literal ]) & number_literal)) ;) (expression_statement "piVar3[4] = piVar5[4];" (assignment_expression "piVar3[4] = piVar5[4]" (subscript_expression "piVar3[4]" identifier [ number_literal ]) = (subscript_expression "piVar5[4]" identifier [ number_literal ])) ;) (expression_statement "(**(code **)(*(int *)(*piVar3 + 4) + 0xb8))(*piVar5,piVar5,*piVar3,piVar3);" (call_expression "(**(code **)(*(int *)(*piVar3 + 4) + 0xb8))(*piVar5,piVar5,*piVar3,piVar3)" (parenthesized_expression "(**(code **)(*(int *)(*piVar3 + 4) + 0xb8))" ( (pointer_expression "**(code **)(*(int *)(*piVar3 + 4) + 0xb8)" * (pointer_expression "*(code **)(*(int *)(*piVar3 + 4) + 0xb8)" * (cast_expression "(code **)(*(int *)(*piVar3 + 4) + 0xb8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(*piVar3 + 4) + 0xb8)" ( (binary_expression "*(int *)(*piVar3 + 4) + 0xb8" (pointer_expression "*(int *)(*piVar3 + 4)" * (cast_expression "(int *)(*piVar3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar3 + 4)" ( (binary_expression "*piVar3 + 4" (pointer_expression "*piVar3" * identifier) + number_literal) )))) + number_literal) ))))) )) (argument_list "(*piVar5,piVar5,*piVar3,piVar3)" ( (pointer_expression "*piVar5" * identifier) , identifier , (pointer_expression "*piVar3" * identifier) , identifier ))) ;) (if_statement "if (param_2 == 0) {\n    FUN_00038570(pbVar6);\n    *(byte **)(pbVar6 + 0x18) = pbVar6;\n    *(byte **)(pbVar6 + 0x1c) = pbVar6;\n    return pbVar6;\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    FUN_00038570(pbVar6);\n    *(byte **)(pbVar6 + 0x18) = pbVar6;\n    *(byte **)(pbVar6 + 0x1c) = pbVar6;\n    return pbVar6;\n  }" { (expression_statement "FUN_00038570(pbVar6);" (call_expression "FUN_00038570(pbVar6)" identifier (argument_list "(pbVar6)" ( identifier ))) ;) (expression_statement "*(byte **)(pbVar6 + 0x18) = pbVar6;" (assignment_expression "*(byte **)(pbVar6 + 0x18) = pbVar6" (pointer_expression "*(byte **)(pbVar6 + 0x18)" * (cast_expression "(byte **)(pbVar6 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar6 + 0x18)" ( (binary_expression "pbVar6 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(pbVar6 + 0x1c) = pbVar6;" (assignment_expression "*(byte **)(pbVar6 + 0x1c) = pbVar6" (pointer_expression "*(byte **)(pbVar6 + 0x1c)" * (cast_expression "(byte **)(pbVar6 + 0x1c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar6 + 0x1c)" ( (binary_expression "pbVar6 + 0x1c" identifier + number_literal) )))) = identifier) ;) (return_statement "return pbVar6;" return identifier ;) })) (expression_statement "pbVar2 = pbVar6;" (assignment_expression "pbVar2 = pbVar6" identifier = identifier) ;) (if_statement "if ((DAT_00084a10 != param_1) && (pbVar2 = DAT_00084a10, *(int *)(param_1 + 0x1c) != 0)) {\n    *(byte **)(*(int *)(param_1 + 0x1c) + 0x18) = pbVar6;\n    param_1[0x1c] = 0;\n    param_1[0x1d] = 0;\n    param_1[0x1e] = 0;\n    param_1[0x1f] = 0;\n    pbVar2 = DAT_00084a10;\n  }" if (parenthesized_expression "((DAT_00084a10 != param_1) && (pbVar2 = DAT_00084a10, *(int *)(param_1 + 0x1c) != 0))" ( (binary_expression "(DAT_00084a10 != param_1) && (pbVar2 = DAT_00084a10, *(int *)(param_1 + 0x1c) != 0)" (parenthesized_expression "(DAT_00084a10 != param_1)" ( (binary_expression "DAT_00084a10 != param_1" identifier != identifier) )) && (parenthesized_expression "(pbVar2 = DAT_00084a10, *(int *)(param_1 + 0x1c) != 0)" ( (comma_expression "pbVar2 = DAT_00084a10, *(int *)(param_1 + 0x1c) != 0" (assignment_expression "pbVar2 = DAT_00084a10" identifier = identifier) , (binary_expression "*(int *)(param_1 + 0x1c) != 0" (pointer_expression "*(int *)(param_1 + 0x1c)" * (cast_expression "(int *)(param_1 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) != number_literal)) ))) )) (compound_statement "{\n    *(byte **)(*(int *)(param_1 + 0x1c) + 0x18) = pbVar6;\n    param_1[0x1c] = 0;\n    param_1[0x1d] = 0;\n    param_1[0x1e] = 0;\n    param_1[0x1f] = 0;\n    pbVar2 = DAT_00084a10;\n  }" { (expression_statement "*(byte **)(*(int *)(param_1 + 0x1c) + 0x18) = pbVar6;" (assignment_expression "*(byte **)(*(int *)(param_1 + 0x1c) + 0x18) = pbVar6" (pointer_expression "*(byte **)(*(int *)(param_1 + 0x1c) + 0x18)" * (cast_expression "(byte **)(*(int *)(param_1 + 0x1c) + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x1c) + 0x18)" ( (binary_expression "*(int *)(param_1 + 0x1c) + 0x18" (pointer_expression "*(int *)(param_1 + 0x1c)" * (cast_expression "(int *)(param_1 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) + number_literal) )))) = identifier) ;) (expression_statement "param_1[0x1c] = 0;" (assignment_expression "param_1[0x1c] = 0" (subscript_expression "param_1[0x1c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x1d] = 0;" (assignment_expression "param_1[0x1d] = 0" (subscript_expression "param_1[0x1d]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x1e] = 0;" (assignment_expression "param_1[0x1e] = 0" (subscript_expression "param_1[0x1e]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x1f] = 0;" (assignment_expression "param_1[0x1f] = 0" (subscript_expression "param_1[0x1f]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar2 = DAT_00084a10;" (assignment_expression "pbVar2 = DAT_00084a10" identifier = identifier) ;) })) (expression_statement "DAT_00084a10 = pbVar2;" (assignment_expression "DAT_00084a10 = pbVar2" identifier = identifier) ;) (expression_statement "pbVar2 = pbVar6;" (assignment_expression "pbVar2 = pbVar6" identifier = identifier) ;) (if_statement "if ((DAT_00084a14 != param_1) && (pbVar2 = DAT_00084a14, *(int *)(param_1 + 0x18) != 0)) {\n    *(byte **)(*(int *)(param_1 + 0x18) + 0x1c) = pbVar6;\n    pbVar2 = DAT_00084a14;\n  }" if (parenthesized_expression "((DAT_00084a14 != param_1) && (pbVar2 = DAT_00084a14, *(int *)(param_1 + 0x18) != 0))" ( (binary_expression "(DAT_00084a14 != param_1) && (pbVar2 = DAT_00084a14, *(int *)(param_1 + 0x18) != 0)" (parenthesized_expression "(DAT_00084a14 != param_1)" ( (binary_expression "DAT_00084a14 != param_1" identifier != identifier) )) && (parenthesized_expression "(pbVar2 = DAT_00084a14, *(int *)(param_1 + 0x18) != 0)" ( (comma_expression "pbVar2 = DAT_00084a14, *(int *)(param_1 + 0x18) != 0" (assignment_expression "pbVar2 = DAT_00084a14" identifier = identifier) , (binary_expression "*(int *)(param_1 + 0x18) != 0" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) != number_literal)) ))) )) (compound_statement "{\n    *(byte **)(*(int *)(param_1 + 0x18) + 0x1c) = pbVar6;\n    pbVar2 = DAT_00084a14;\n  }" { (expression_statement "*(byte **)(*(int *)(param_1 + 0x18) + 0x1c) = pbVar6;" (assignment_expression "*(byte **)(*(int *)(param_1 + 0x18) + 0x1c) = pbVar6" (pointer_expression "*(byte **)(*(int *)(param_1 + 0x18) + 0x1c)" * (cast_expression "(byte **)(*(int *)(param_1 + 0x18) + 0x1c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x18) + 0x1c)" ( (binary_expression "*(int *)(param_1 + 0x18) + 0x1c" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + number_literal) )))) = identifier) ;) (expression_statement "pbVar2 = DAT_00084a14;" (assignment_expression "pbVar2 = DAT_00084a14" identifier = identifier) ;) })) (expression_statement "DAT_00084a14 = pbVar2;" (assignment_expression "DAT_00084a14 = pbVar2" identifier = identifier) ;) (expression_statement "FUN_00038570(param_1);" (call_expression "FUN_00038570(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "*(byte **)(param_1 + 0x18) = param_1;" (assignment_expression "*(byte **)(param_1 + 0x18) = param_1" (pointer_expression "*(byte **)(param_1 + 0x18)" * (cast_expression "(byte **)(param_1 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(param_1 + 0x1c) = param_1;" (assignment_expression "*(byte **)(param_1 + 0x1c) = param_1" (pointer_expression "*(byte **)(param_1 + 0x1c)" * (cast_expression "(byte **)(param_1 + 0x1c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "FUN_00035730(pbVar6);" (call_expression "FUN_00035730(pbVar6)" identifier (argument_list "(pbVar6)" ( identifier ))) ;) (return_statement "return pbVar6;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - IDENT) < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + IDENT) ))) & (unary_expression ~ IDENT))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - IDENT) < (binary_expression IDENT - IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (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) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (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) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (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) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (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) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (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) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (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) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (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) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (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) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (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) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (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) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) + LIT) ))))) )) (argument_list ( (pointer_expression * IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) & LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) + LIT) ))))) )) (argument_list ( (pointer_expression * IDENT) , IDENT , (pointer_expression * IDENT) , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return IDENT ;) })))
(function_definition "byte * FUN_000385b0(byte *param_1,int param_2)\n\n{\n  int iVar1;\n  byte *pbVar2;\n  int *piVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  byte *pbVar6;\n  \n  if (param_1 == PTR_DAT_0007af54) {\n                    \n    FUN_0002aaa0("../../gas/symbols.c",0x231,"symbol_clone",param_1);\n  }\n  piVar5 = *(int **)(param_1 + 4);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_00084798 == piVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      piVar5 = *(int **)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_000370b0();\n      piVar5 = *(int **)(param_1 + 4);\n    }\n  }\n  if (DAT_000849b0 - DAT_000849ac < 0x30) {\n    _obstack_newchunk(&DAT_000849a0,0x30);\n    pbVar2 = (byte *)(DAT_000849ac + 0x30);\n    pbVar6 = DAT_000849a8;\n    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;\n  }\n  else {\n    pbVar2 = (byte *)(DAT_000849ac + 0x30);\n    pbVar6 = DAT_000849a8;\n    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;\n  }\n  DAT_000849c8 = DAT_000849c8 | 2;\n  pbVar6 = DAT_000849a8;\nLAB_0003860c:\n  DAT_000849ac = (uint)(pbVar2 + DAT_000849b8) & ~DAT_000849b8;\n  if (DAT_000849b0 - DAT_000849a4 < DAT_000849ac - DAT_000849a4) {\n    DAT_000849ac = DAT_000849b0;\n  }\n  DAT_000849a8 = (byte *)DAT_000849ac;\n  *(undefined4 *)pbVar6 = *(undefined4 *)param_1;\n  *(undefined4 *)(pbVar6 + 4) = *(undefined4 *)(param_1 + 4);\n  *(undefined4 *)(pbVar6 + 8) = *(undefined4 *)(param_1 + 8);\n  *(undefined4 *)(pbVar6 + 0xc) = *(undefined4 *)(param_1 + 0xc);\n  *(undefined4 *)(pbVar6 + 0x10) = *(undefined4 *)(param_1 + 0x10);\n  *(undefined4 *)(pbVar6 + 0x14) = *(undefined4 *)(param_1 + 0x14);\n  *(undefined4 *)(pbVar6 + 0x18) = *(undefined4 *)(param_1 + 0x18);\n  *(undefined4 *)(pbVar6 + 0x1c) = *(undefined4 *)(param_1 + 0x1c);\n  *(undefined4 *)(pbVar6 + 0x20) = *(undefined4 *)(param_1 + 0x20);\n  *(undefined4 *)(pbVar6 + 0x24) = *(undefined4 *)(param_1 + 0x24);\n  *(undefined4 *)(pbVar6 + 0x28) = *(undefined4 *)(param_1 + 0x28);\n  *(undefined4 *)(pbVar6 + 0x2c) = *(undefined4 *)(param_1 + 0x2c);\n  piVar3 = (int *)(**(code **)(*(int *)(*piVar5 + 4) + 0x10c))(*piVar5);\n  if (piVar3 == (int *)0x0) {\n    uVar4 = bfd_get_error();\n    uVar4 = bfd_errmsg(uVar4);\n                    \n    FUN_0002aa20("bfd_make_empty_symbol: %s",uVar4);\n  }\n  iVar1 = piVar5[1];\n  *(int **)(pbVar6 + 4) = piVar3;\n  piVar3[1] = iVar1;\n  piVar3[3] = piVar5[3] & 0xfffffeff;\n  piVar3[4] = piVar5[4];\n  (**(code **)(*(int *)(*piVar3 + 4) + 0xb8))(*piVar5,piVar5,*piVar3,piVar3);\n  if (param_2 == 0) {\n    FUN_00038570(pbVar6);\n    *(byte **)(pbVar6 + 0x18) = pbVar6;\n    *(byte **)(pbVar6 + 0x1c) = pbVar6;\n    return pbVar6;\n  }\n  pbVar2 = pbVar6;\n  if ((DAT_00084a10 != param_1) && (pbVar2 = DAT_00084a10, *(int *)(param_1 + 0x1c) != 0)) {\n    *(byte **)(*(int *)(param_1 + 0x1c) + 0x18) = pbVar6;\n    param_1[0x1c] = 0;\n    param_1[0x1d] = 0;\n    param_1[0x1e] = 0;\n    param_1[0x1f] = 0;\n    pbVar2 = DAT_00084a10;\n  }\n  DAT_00084a10 = pbVar2;\n  pbVar2 = pbVar6;\n  if ((DAT_00084a14 != param_1) && (pbVar2 = DAT_00084a14, *(int *)(param_1 + 0x18) != 0)) {\n    *(byte **)(*(int *)(param_1 + 0x18) + 0x1c) = pbVar6;\n    pbVar2 = DAT_00084a14;\n  }\n  DAT_00084a14 = pbVar2;\n  FUN_00038570(param_1);\n  *(byte **)(param_1 + 0x18) = param_1;\n  *(byte **)(param_1 + 0x1c) = param_1;\n  FUN_00035730(pbVar6);\n  return pbVar6;\n}" (type_identifier "byte") (pointer_declarator "* FUN_000385b0(byte *param_1,int param_2)" (* "*") (function_declarator "FUN_000385b0(byte *param_1,int param_2)" (identifier "FUN_000385b0") (parameter_list "(byte *param_1,int param_2)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")")))) (compound_statement "{\n  int iVar1;\n  byte *pbVar2;\n  int *piVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  byte *pbVar6;\n  \n  if (param_1 == PTR_DAT_0007af54) {\n                    \n    FUN_0002aaa0("../../gas/symbols.c",0x231,"symbol_clone",param_1);\n  }\n  piVar5 = *(int **)(param_1 + 4);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_00084798 == piVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      piVar5 = *(int **)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_000370b0();\n      piVar5 = *(int **)(param_1 + 4);\n    }\n  }\n  if (DAT_000849b0 - DAT_000849ac < 0x30) {\n    _obstack_newchunk(&DAT_000849a0,0x30);\n    pbVar2 = (byte *)(DAT_000849ac + 0x30);\n    pbVar6 = DAT_000849a8;\n    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;\n  }\n  else {\n    pbVar2 = (byte *)(DAT_000849ac + 0x30);\n    pbVar6 = DAT_000849a8;\n    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;\n  }\n  DAT_000849c8 = DAT_000849c8 | 2;\n  pbVar6 = DAT_000849a8;\nLAB_0003860c:\n  DAT_000849ac = (uint)(pbVar2 + DAT_000849b8) & ~DAT_000849b8;\n  if (DAT_000849b0 - DAT_000849a4 < DAT_000849ac - DAT_000849a4) {\n    DAT_000849ac = DAT_000849b0;\n  }\n  DAT_000849a8 = (byte *)DAT_000849ac;\n  *(undefined4 *)pbVar6 = *(undefined4 *)param_1;\n  *(undefined4 *)(pbVar6 + 4) = *(undefined4 *)(param_1 + 4);\n  *(undefined4 *)(pbVar6 + 8) = *(undefined4 *)(param_1 + 8);\n  *(undefined4 *)(pbVar6 + 0xc) = *(undefined4 *)(param_1 + 0xc);\n  *(undefined4 *)(pbVar6 + 0x10) = *(undefined4 *)(param_1 + 0x10);\n  *(undefined4 *)(pbVar6 + 0x14) = *(undefined4 *)(param_1 + 0x14);\n  *(undefined4 *)(pbVar6 + 0x18) = *(undefined4 *)(param_1 + 0x18);\n  *(undefined4 *)(pbVar6 + 0x1c) = *(undefined4 *)(param_1 + 0x1c);\n  *(undefined4 *)(pbVar6 + 0x20) = *(undefined4 *)(param_1 + 0x20);\n  *(undefined4 *)(pbVar6 + 0x24) = *(undefined4 *)(param_1 + 0x24);\n  *(undefined4 *)(pbVar6 + 0x28) = *(undefined4 *)(param_1 + 0x28);\n  *(undefined4 *)(pbVar6 + 0x2c) = *(undefined4 *)(param_1 + 0x2c);\n  piVar3 = (int *)(**(code **)(*(int *)(*piVar5 + 4) + 0x10c))(*piVar5);\n  if (piVar3 == (int *)0x0) {\n    uVar4 = bfd_get_error();\n    uVar4 = bfd_errmsg(uVar4);\n                    \n    FUN_0002aa20("bfd_make_empty_symbol: %s",uVar4);\n  }\n  iVar1 = piVar5[1];\n  *(int **)(pbVar6 + 4) = piVar3;\n  piVar3[1] = iVar1;\n  piVar3[3] = piVar5[3] & 0xfffffeff;\n  piVar3[4] = piVar5[4];\n  (**(code **)(*(int *)(*piVar3 + 4) + 0xb8))(*piVar5,piVar5,*piVar3,piVar3);\n  if (param_2 == 0) {\n    FUN_00038570(pbVar6);\n    *(byte **)(pbVar6 + 0x18) = pbVar6;\n    *(byte **)(pbVar6 + 0x1c) = pbVar6;\n    return pbVar6;\n  }\n  pbVar2 = pbVar6;\n  if ((DAT_00084a10 != param_1) && (pbVar2 = DAT_00084a10, *(int *)(param_1 + 0x1c) != 0)) {\n    *(byte **)(*(int *)(param_1 + 0x1c) + 0x18) = pbVar6;\n    param_1[0x1c] = 0;\n    param_1[0x1d] = 0;\n    param_1[0x1e] = 0;\n    param_1[0x1f] = 0;\n    pbVar2 = DAT_00084a10;\n  }\n  DAT_00084a10 = pbVar2;\n  pbVar2 = pbVar6;\n  if ((DAT_00084a14 != param_1) && (pbVar2 = DAT_00084a14, *(int *)(param_1 + 0x18) != 0)) {\n    *(byte **)(*(int *)(param_1 + 0x18) + 0x1c) = pbVar6;\n    pbVar2 = DAT_00084a14;\n  }\n  DAT_00084a14 = pbVar2;\n  FUN_00038570(param_1);\n  *(byte **)(param_1 + 0x18) = param_1;\n  *(byte **)(param_1 + 0x1c) = param_1;\n  FUN_00035730(pbVar6);\n  return pbVar6;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "byte *pbVar2;" (type_identifier "byte") (pointer_declarator "*pbVar2" (* "*") (identifier "pbVar2")) (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (if_statement "if (param_1 == PTR_DAT_0007af54) {\n                    \n    FUN_0002aaa0("../../gas/symbols.c",0x231,"symbol_clone",param_1);\n  }" (if "if") (parenthesized_expression "(param_1 == PTR_DAT_0007af54)" (( "(") (binary_expression "param_1 == PTR_DAT_0007af54" (identifier "param_1") (== "==") (identifier "PTR_DAT_0007af54")) () ")")) (compound_statement "{\n                    \n    FUN_0002aaa0("../../gas/symbols.c",0x231,"symbol_clone",param_1);\n  }" ({ "{") (expression_statement "FUN_0002aaa0("../../gas/symbols.c",0x231,"symbol_clone",param_1);" (call_expression "FUN_0002aaa0("../../gas/symbols.c",0x231,"symbol_clone",param_1)" (identifier "FUN_0002aaa0") (argument_list "("../../gas/symbols.c",0x231,"symbol_clone",param_1)" (( "(") (string_literal ""../../gas/symbols.c"" (" """) (string_content "../../gas/symbols.c") (" """)) (, ",") (number_literal "0x231") (, ",") (string_literal ""symbol_clone"" (" """) (string_content "symbol_clone") (" """)) (, ",") (identifier "param_1") () ")"))) (; ";")) (} "}"))) (expression_statement "piVar5 = *(int **)(param_1 + 4);" (assignment_expression "piVar5 = *(int **)(param_1 + 4)" (identifier "piVar5") (= "=") (pointer_expression "*(int **)(param_1 + 4)" (* "*") (cast_expression "(int **)(param_1 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if ((*param_1 & 1) != 0) {\n    if (DAT_00084798 == piVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      piVar5 = *(int **)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_000370b0();\n      piVar5 = *(int **)(param_1 + 4);\n    }\n  }" (if "if") (parenthesized_expression "((*param_1 & 1) != 0)" (( "(") (binary_expression "(*param_1 & 1) != 0" (parenthesized_expression "(*param_1 & 1)" (( "(") (binary_expression "*param_1 & 1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if (DAT_00084798 == piVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      piVar5 = *(int **)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_000370b0();\n      piVar5 = *(int **)(param_1 + 4);\n    }\n  }" ({ "{") (if_statement "if (DAT_00084798 == piVar5) {\n      param_1 = *(byte **)(param_1 + 0xc);\n      piVar5 = *(int **)(param_1 + 4);\n    }\n    else {\n      param_1 = (byte *)FUN_000370b0();\n      piVar5 = *(int **)(param_1 + 4);\n    }" (if "if") (parenthesized_expression "(DAT_00084798 == piVar5)" (( "(") (binary_expression "DAT_00084798 == piVar5" (identifier "DAT_00084798") (== "==") (identifier "piVar5")) () ")")) (compound_statement "{\n      param_1 = *(byte **)(param_1 + 0xc);\n      piVar5 = *(int **)(param_1 + 4);\n    }" ({ "{") (expression_statement "param_1 = *(byte **)(param_1 + 0xc);" (assignment_expression "param_1 = *(byte **)(param_1 + 0xc)" (identifier "param_1") (= "=") (pointer_expression "*(byte **)(param_1 + 0xc)" (* "*") (cast_expression "(byte **)(param_1 + 0xc)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "piVar5 = *(int **)(param_1 + 4);" (assignment_expression "piVar5 = *(int **)(param_1 + 4)" (identifier "piVar5") (= "=") (pointer_expression "*(int **)(param_1 + 4)" (* "*") (cast_expression "(int **)(param_1 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      param_1 = (byte *)FUN_000370b0();\n      piVar5 = *(int **)(param_1 + 4);\n    }" (else "else") (compound_statement "{\n      param_1 = (byte *)FUN_000370b0();\n      piVar5 = *(int **)(param_1 + 4);\n    }" ({ "{") (expression_statement "param_1 = (byte *)FUN_000370b0();" (assignment_expression "param_1 = (byte *)FUN_000370b0()" (identifier "param_1") (= "=") (cast_expression "(byte *)FUN_000370b0()" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000370b0()" (identifier "FUN_000370b0") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "piVar5 = *(int **)(param_1 + 4);" (assignment_expression "piVar5 = *(int **)(param_1 + 4)" (identifier "piVar5") (= "=") (pointer_expression "*(int **)(param_1 + 4)" (* "*") (cast_expression "(int **)(param_1 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}")))) (} "}"))) (if_statement "if (DAT_000849b0 - DAT_000849ac < 0x30) {\n    _obstack_newchunk(&DAT_000849a0,0x30);\n    pbVar2 = (byte *)(DAT_000849ac + 0x30);\n    pbVar6 = DAT_000849a8;\n    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;\n  }\n  else {\n    pbVar2 = (byte *)(DAT_000849ac + 0x30);\n    pbVar6 = DAT_000849a8;\n    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;\n  }" (if "if") (parenthesized_expression "(DAT_000849b0 - DAT_000849ac < 0x30)" (( "(") (binary_expression "DAT_000849b0 - DAT_000849ac < 0x30" (binary_expression "DAT_000849b0 - DAT_000849ac" (identifier "DAT_000849b0") (- "-") (identifier "DAT_000849ac")) (< "<") (number_literal "0x30")) () ")")) (compound_statement "{\n    _obstack_newchunk(&DAT_000849a0,0x30);\n    pbVar2 = (byte *)(DAT_000849ac + 0x30);\n    pbVar6 = DAT_000849a8;\n    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;\n  }" ({ "{") (expression_statement "_obstack_newchunk(&DAT_000849a0,0x30);" (call_expression "_obstack_newchunk(&DAT_000849a0,0x30)" (identifier "_obstack_newchunk") (argument_list "(&DAT_000849a0,0x30)" (( "(") (pointer_expression "&DAT_000849a0" (& "&") (identifier "DAT_000849a0")) (, ",") (number_literal "0x30") () ")"))) (; ";")) (expression_statement "pbVar2 = (byte *)(DAT_000849ac + 0x30);" (assignment_expression "pbVar2 = (byte *)(DAT_000849ac + 0x30)" (identifier "pbVar2") (= "=") (cast_expression "(byte *)(DAT_000849ac + 0x30)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_000849ac + 0x30)" (( "(") (binary_expression "DAT_000849ac + 0x30" (identifier "DAT_000849ac") (+ "+") (number_literal "0x30")) () ")")))) (; ";")) (expression_statement "pbVar6 = DAT_000849a8;" (assignment_expression "pbVar6 = DAT_000849a8" (identifier "pbVar6") (= "=") (identifier "DAT_000849a8")) (; ";")) (if_statement "if (pbVar2 != DAT_000849a8) goto LAB_0003860c;" (if "if") (parenthesized_expression "(pbVar2 != DAT_000849a8)" (( "(") (binary_expression "pbVar2 != DAT_000849a8" (identifier "pbVar2") (!= "!=") (identifier "DAT_000849a8")) () ")")) (goto_statement "goto LAB_0003860c;" (goto "goto") (statement_identifier "LAB_0003860c") (; ";"))) (} "}")) (else_clause "else {\n    pbVar2 = (byte *)(DAT_000849ac + 0x30);\n    pbVar6 = DAT_000849a8;\n    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;\n  }" (else "else") (compound_statement "{\n    pbVar2 = (byte *)(DAT_000849ac + 0x30);\n    pbVar6 = DAT_000849a8;\n    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;\n  }" ({ "{") (expression_statement "pbVar2 = (byte *)(DAT_000849ac + 0x30);" (assignment_expression "pbVar2 = (byte *)(DAT_000849ac + 0x30)" (identifier "pbVar2") (= "=") (cast_expression "(byte *)(DAT_000849ac + 0x30)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_000849ac + 0x30)" (( "(") (binary_expression "DAT_000849ac + 0x30" (identifier "DAT_000849ac") (+ "+") (number_literal "0x30")) () ")")))) (; ";")) (expression_statement "pbVar6 = DAT_000849a8;" (assignment_expression "pbVar6 = DAT_000849a8" (identifier "pbVar6") (= "=") (identifier "DAT_000849a8")) (; ";")) (if_statement "if (pbVar2 != DAT_000849a8) goto LAB_0003860c;" (if "if") (parenthesized_expression "(pbVar2 != DAT_000849a8)" (( "(") (binary_expression "pbVar2 != DAT_000849a8" (identifier "pbVar2") (!= "!=") (identifier "DAT_000849a8")) () ")")) (goto_statement "goto LAB_0003860c;" (goto "goto") (statement_identifier "LAB_0003860c") (; ";"))) (} "}")))) (expression_statement "DAT_000849c8 = DAT_000849c8 | 2;" (assignment_expression "DAT_000849c8 = DAT_000849c8 | 2" (identifier "DAT_000849c8") (= "=") (binary_expression "DAT_000849c8 | 2" (identifier "DAT_000849c8") (| "|") (number_literal "2"))) (; ";")) (expression_statement "pbVar6 = DAT_000849a8;" (assignment_expression "pbVar6 = DAT_000849a8" (identifier "pbVar6") (= "=") (identifier "DAT_000849a8")) (; ";")) (labeled_statement "LAB_0003860c:\n  DAT_000849ac = (uint)(pbVar2 + DAT_000849b8) & ~DAT_000849b8;" (statement_identifier "LAB_0003860c") (: ":") (expression_statement "DAT_000849ac = (uint)(pbVar2 + DAT_000849b8) & ~DAT_000849b8;" (assignment_expression "DAT_000849ac = (uint)(pbVar2 + DAT_000849b8) & ~DAT_000849b8" (identifier "DAT_000849ac") (= "=") (binary_expression "(uint)(pbVar2 + DAT_000849b8) & ~DAT_000849b8" (call_expression "(uint)(pbVar2 + DAT_000849b8)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(pbVar2 + DAT_000849b8)" (( "(") (binary_expression "pbVar2 + DAT_000849b8" (identifier "pbVar2") (+ "+") (identifier "DAT_000849b8")) () ")"))) (& "&") (unary_expression "~DAT_000849b8" (~ "~") (identifier "DAT_000849b8")))) (; ";"))) (if_statement "if (DAT_000849b0 - DAT_000849a4 < DAT_000849ac - DAT_000849a4) {\n    DAT_000849ac = DAT_000849b0;\n  }" (if "if") (parenthesized_expression "(DAT_000849b0 - DAT_000849a4 < DAT_000849ac - DAT_000849a4)" (( "(") (binary_expression "DAT_000849b0 - DAT_000849a4 < DAT_000849ac - DAT_000849a4" (binary_expression "DAT_000849b0 - DAT_000849a4" (identifier "DAT_000849b0") (- "-") (identifier "DAT_000849a4")) (< "<") (binary_expression "DAT_000849ac - DAT_000849a4" (identifier "DAT_000849ac") (- "-") (identifier "DAT_000849a4"))) () ")")) (compound_statement "{\n    DAT_000849ac = DAT_000849b0;\n  }" ({ "{") (expression_statement "DAT_000849ac = DAT_000849b0;" (assignment_expression "DAT_000849ac = DAT_000849b0" (identifier "DAT_000849ac") (= "=") (identifier "DAT_000849b0")) (; ";")) (} "}"))) (expression_statement "DAT_000849a8 = (byte *)DAT_000849ac;" (assignment_expression "DAT_000849a8 = (byte *)DAT_000849ac" (identifier "DAT_000849a8") (= "=") (cast_expression "(byte *)DAT_000849ac" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "DAT_000849ac"))) (; ";")) (expression_statement "*(undefined4 *)pbVar6 = *(undefined4 *)param_1;" (assignment_expression "*(undefined4 *)pbVar6 = *(undefined4 *)param_1" (pointer_expression "*(undefined4 *)pbVar6" (* "*") (cast_expression "(undefined4 *)pbVar6" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar6"))) (= "=") (pointer_expression "*(undefined4 *)param_1" (* "*") (cast_expression "(undefined4 *)param_1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1")))) (; ";")) (expression_statement "*(undefined4 *)(pbVar6 + 4) = *(undefined4 *)(param_1 + 4);" (assignment_expression "*(undefined4 *)(pbVar6 + 4) = *(undefined4 *)(param_1 + 4)" (pointer_expression "*(undefined4 *)(pbVar6 + 4)" (* "*") (cast_expression "(undefined4 *)(pbVar6 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar6 + 4)" (( "(") (binary_expression "pbVar6 + 4" (identifier "pbVar6") (+ "+") (number_literal "4")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(pbVar6 + 8) = *(undefined4 *)(param_1 + 8);" (assignment_expression "*(undefined4 *)(pbVar6 + 8) = *(undefined4 *)(param_1 + 8)" (pointer_expression "*(undefined4 *)(pbVar6 + 8)" (* "*") (cast_expression "(undefined4 *)(pbVar6 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar6 + 8)" (( "(") (binary_expression "pbVar6 + 8" (identifier "pbVar6") (+ "+") (number_literal "8")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(pbVar6 + 0xc) = *(undefined4 *)(param_1 + 0xc);" (assignment_expression "*(undefined4 *)(pbVar6 + 0xc) = *(undefined4 *)(param_1 + 0xc)" (pointer_expression "*(undefined4 *)(pbVar6 + 0xc)" (* "*") (cast_expression "(undefined4 *)(pbVar6 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar6 + 0xc)" (( "(") (binary_expression "pbVar6 + 0xc" (identifier "pbVar6") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(pbVar6 + 0x10) = *(undefined4 *)(param_1 + 0x10);" (assignment_expression "*(undefined4 *)(pbVar6 + 0x10) = *(undefined4 *)(param_1 + 0x10)" (pointer_expression "*(undefined4 *)(pbVar6 + 0x10)" (* "*") (cast_expression "(undefined4 *)(pbVar6 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar6 + 0x10)" (( "(") (binary_expression "pbVar6 + 0x10" (identifier "pbVar6") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(pbVar6 + 0x14) = *(undefined4 *)(param_1 + 0x14);" (assignment_expression "*(undefined4 *)(pbVar6 + 0x14) = *(undefined4 *)(param_1 + 0x14)" (pointer_expression "*(undefined4 *)(pbVar6 + 0x14)" (* "*") (cast_expression "(undefined4 *)(pbVar6 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar6 + 0x14)" (( "(") (binary_expression "pbVar6 + 0x14" (identifier "pbVar6") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x14)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(pbVar6 + 0x18) = *(undefined4 *)(param_1 + 0x18);" (assignment_expression "*(undefined4 *)(pbVar6 + 0x18) = *(undefined4 *)(param_1 + 0x18)" (pointer_expression "*(undefined4 *)(pbVar6 + 0x18)" (* "*") (cast_expression "(undefined4 *)(pbVar6 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar6 + 0x18)" (( "(") (binary_expression "pbVar6 + 0x18" (identifier "pbVar6") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x18)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(pbVar6 + 0x1c) = *(undefined4 *)(param_1 + 0x1c);" (assignment_expression "*(undefined4 *)(pbVar6 + 0x1c) = *(undefined4 *)(param_1 + 0x1c)" (pointer_expression "*(undefined4 *)(pbVar6 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(pbVar6 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar6 + 0x1c)" (( "(") (binary_expression "pbVar6 + 0x1c" (identifier "pbVar6") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(pbVar6 + 0x20) = *(undefined4 *)(param_1 + 0x20);" (assignment_expression "*(undefined4 *)(pbVar6 + 0x20) = *(undefined4 *)(param_1 + 0x20)" (pointer_expression "*(undefined4 *)(pbVar6 + 0x20)" (* "*") (cast_expression "(undefined4 *)(pbVar6 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar6 + 0x20)" (( "(") (binary_expression "pbVar6 + 0x20" (identifier "pbVar6") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x20)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(pbVar6 + 0x24) = *(undefined4 *)(param_1 + 0x24);" (assignment_expression "*(undefined4 *)(pbVar6 + 0x24) = *(undefined4 *)(param_1 + 0x24)" (pointer_expression "*(undefined4 *)(pbVar6 + 0x24)" (* "*") (cast_expression "(undefined4 *)(pbVar6 + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar6 + 0x24)" (( "(") (binary_expression "pbVar6 + 0x24" (identifier "pbVar6") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x24)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x24)" (( "(") (binary_expression "param_1 + 0x24" (identifier "param_1") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(pbVar6 + 0x28) = *(undefined4 *)(param_1 + 0x28);" (assignment_expression "*(undefined4 *)(pbVar6 + 0x28) = *(undefined4 *)(param_1 + 0x28)" (pointer_expression "*(undefined4 *)(pbVar6 + 0x28)" (* "*") (cast_expression "(undefined4 *)(pbVar6 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar6 + 0x28)" (( "(") (binary_expression "pbVar6 + 0x28" (identifier "pbVar6") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x28)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(pbVar6 + 0x2c) = *(undefined4 *)(param_1 + 0x2c);" (assignment_expression "*(undefined4 *)(pbVar6 + 0x2c) = *(undefined4 *)(param_1 + 0x2c)" (pointer_expression "*(undefined4 *)(pbVar6 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(pbVar6 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar6 + 0x2c)" (( "(") (binary_expression "pbVar6 + 0x2c" (identifier "pbVar6") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (expression_statement "piVar3 = (int *)(**(code **)(*(int *)(*piVar5 + 4) + 0x10c))(*piVar5);" (assignment_expression "piVar3 = (int *)(**(code **)(*(int *)(*piVar5 + 4) + 0x10c))(*piVar5)" (identifier "piVar3") (= "=") (cast_expression "(int *)(**(code **)(*(int *)(*piVar5 + 4) + 0x10c))(*piVar5)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(*(int *)(*piVar5 + 4) + 0x10c))(*piVar5)" (parenthesized_expression "(**(code **)(*(int *)(*piVar5 + 4) + 0x10c))" (( "(") (pointer_expression "**(code **)(*(int *)(*piVar5 + 4) + 0x10c)" (* "*") (pointer_expression "*(code **)(*(int *)(*piVar5 + 4) + 0x10c)" (* "*") (cast_expression "(code **)(*(int *)(*piVar5 + 4) + 0x10c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(*piVar5 + 4) + 0x10c)" (( "(") (binary_expression "*(int *)(*piVar5 + 4) + 0x10c" (pointer_expression "*(int *)(*piVar5 + 4)" (* "*") (cast_expression "(int *)(*piVar5 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar5 + 4)" (( "(") (binary_expression "*piVar5 + 4" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0x10c")) () ")"))))) () ")")) (argument_list "(*piVar5)" (( "(") (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) () ")"))))) (; ";")) (if_statement "if (piVar3 == (int *)0x0) {\n    uVar4 = bfd_get_error();\n    uVar4 = bfd_errmsg(uVar4);\n                    \n    FUN_0002aa20("bfd_make_empty_symbol: %s",uVar4);\n  }" (if "if") (parenthesized_expression "(piVar3 == (int *)0x0)" (( "(") (binary_expression "piVar3 == (int *)0x0" (identifier "piVar3") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    uVar4 = bfd_get_error();\n    uVar4 = bfd_errmsg(uVar4);\n                    \n    FUN_0002aa20("bfd_make_empty_symbol: %s",uVar4);\n  }" ({ "{") (expression_statement "uVar4 = bfd_get_error();" (assignment_expression "uVar4 = bfd_get_error()" (identifier "uVar4") (= "=") (call_expression "bfd_get_error()" (identifier "bfd_get_error") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar4 = bfd_errmsg(uVar4);" (assignment_expression "uVar4 = bfd_errmsg(uVar4)" (identifier "uVar4") (= "=") (call_expression "bfd_errmsg(uVar4)" (identifier "bfd_errmsg") (argument_list "(uVar4)" (( "(") (identifier "uVar4") () ")")))) (; ";")) (expression_statement "FUN_0002aa20("bfd_make_empty_symbol: %s",uVar4);" (call_expression "FUN_0002aa20("bfd_make_empty_symbol: %s",uVar4)" (identifier "FUN_0002aa20") (argument_list "("bfd_make_empty_symbol: %s",uVar4)" (( "(") (string_literal ""bfd_make_empty_symbol: %s"" (" """) (string_content "bfd_make_empty_symbol: %s") (" """)) (, ",") (identifier "uVar4") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar1 = piVar5[1];" (assignment_expression "iVar1 = piVar5[1]" (identifier "iVar1") (= "=") (subscript_expression "piVar5[1]" (identifier "piVar5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*(int **)(pbVar6 + 4) = piVar3;" (assignment_expression "*(int **)(pbVar6 + 4) = piVar3" (pointer_expression "*(int **)(pbVar6 + 4)" (* "*") (cast_expression "(int **)(pbVar6 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pbVar6 + 4)" (( "(") (binary_expression "pbVar6 + 4" (identifier "pbVar6") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "piVar3")) (; ";")) (expression_statement "piVar3[1] = iVar1;" (assignment_expression "piVar3[1] = iVar1" (subscript_expression "piVar3[1]" (identifier "piVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar1")) (; ";")) (expression_statement "piVar3[3] = piVar5[3] & 0xfffffeff;" (assignment_expression "piVar3[3] = piVar5[3] & 0xfffffeff" (subscript_expression "piVar3[3]" (identifier "piVar3") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "piVar5[3] & 0xfffffeff" (subscript_expression "piVar5[3]" (identifier "piVar5") ([ "[") (number_literal "3") (] "]")) (& "&") (number_literal "0xfffffeff"))) (; ";")) (expression_statement "piVar3[4] = piVar5[4];" (assignment_expression "piVar3[4] = piVar5[4]" (subscript_expression "piVar3[4]" (identifier "piVar3") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "piVar5[4]" (identifier "piVar5") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "(**(code **)(*(int *)(*piVar3 + 4) + 0xb8))(*piVar5,piVar5,*piVar3,piVar3);" (call_expression "(**(code **)(*(int *)(*piVar3 + 4) + 0xb8))(*piVar5,piVar5,*piVar3,piVar3)" (parenthesized_expression "(**(code **)(*(int *)(*piVar3 + 4) + 0xb8))" (( "(") (pointer_expression "**(code **)(*(int *)(*piVar3 + 4) + 0xb8)" (* "*") (pointer_expression "*(code **)(*(int *)(*piVar3 + 4) + 0xb8)" (* "*") (cast_expression "(code **)(*(int *)(*piVar3 + 4) + 0xb8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(*piVar3 + 4) + 0xb8)" (( "(") (binary_expression "*(int *)(*piVar3 + 4) + 0xb8" (pointer_expression "*(int *)(*piVar3 + 4)" (* "*") (cast_expression "(int *)(*piVar3 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar3 + 4)" (( "(") (binary_expression "*piVar3 + 4" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0xb8")) () ")"))))) () ")")) (argument_list "(*piVar5,piVar5,*piVar3,piVar3)" (( "(") (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (, ",") (identifier "piVar5") (, ",") (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (, ",") (identifier "piVar3") () ")"))) (; ";")) (if_statement "if (param_2 == 0) {\n    FUN_00038570(pbVar6);\n    *(byte **)(pbVar6 + 0x18) = pbVar6;\n    *(byte **)(pbVar6 + 0x1c) = pbVar6;\n    return pbVar6;\n  }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_00038570(pbVar6);\n    *(byte **)(pbVar6 + 0x18) = pbVar6;\n    *(byte **)(pbVar6 + 0x1c) = pbVar6;\n    return pbVar6;\n  }" ({ "{") (expression_statement "FUN_00038570(pbVar6);" (call_expression "FUN_00038570(pbVar6)" (identifier "FUN_00038570") (argument_list "(pbVar6)" (( "(") (identifier "pbVar6") () ")"))) (; ";")) (expression_statement "*(byte **)(pbVar6 + 0x18) = pbVar6;" (assignment_expression "*(byte **)(pbVar6 + 0x18) = pbVar6" (pointer_expression "*(byte **)(pbVar6 + 0x18)" (* "*") (cast_expression "(byte **)(pbVar6 + 0x18)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pbVar6 + 0x18)" (( "(") (binary_expression "pbVar6 + 0x18" (identifier "pbVar6") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "*(byte **)(pbVar6 + 0x1c) = pbVar6;" (assignment_expression "*(byte **)(pbVar6 + 0x1c) = pbVar6" (pointer_expression "*(byte **)(pbVar6 + 0x1c)" (* "*") (cast_expression "(byte **)(pbVar6 + 0x1c)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pbVar6 + 0x1c)" (( "(") (binary_expression "pbVar6 + 0x1c" (identifier "pbVar6") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "pbVar6")) (; ";")) (return_statement "return pbVar6;" (return "return") (identifier "pbVar6") (; ";")) (} "}"))) (expression_statement "pbVar2 = pbVar6;" (assignment_expression "pbVar2 = pbVar6" (identifier "pbVar2") (= "=") (identifier "pbVar6")) (; ";")) (if_statement "if ((DAT_00084a10 != param_1) && (pbVar2 = DAT_00084a10, *(int *)(param_1 + 0x1c) != 0)) {\n    *(byte **)(*(int *)(param_1 + 0x1c) + 0x18) = pbVar6;\n    param_1[0x1c] = 0;\n    param_1[0x1d] = 0;\n    param_1[0x1e] = 0;\n    param_1[0x1f] = 0;\n    pbVar2 = DAT_00084a10;\n  }" (if "if") (parenthesized_expression "((DAT_00084a10 != param_1) && (pbVar2 = DAT_00084a10, *(int *)(param_1 + 0x1c) != 0))" (( "(") (binary_expression "(DAT_00084a10 != param_1) && (pbVar2 = DAT_00084a10, *(int *)(param_1 + 0x1c) != 0)" (parenthesized_expression "(DAT_00084a10 != param_1)" (( "(") (binary_expression "DAT_00084a10 != param_1" (identifier "DAT_00084a10") (!= "!=") (identifier "param_1")) () ")")) (&& "&&") (parenthesized_expression "(pbVar2 = DAT_00084a10, *(int *)(param_1 + 0x1c) != 0)" (( "(") (comma_expression "pbVar2 = DAT_00084a10, *(int *)(param_1 + 0x1c) != 0" (assignment_expression "pbVar2 = DAT_00084a10" (identifier "pbVar2") (= "=") (identifier "DAT_00084a10")) (, ",") (binary_expression "*(int *)(param_1 + 0x1c) != 0" (pointer_expression "*(int *)(param_1 + 0x1c)" (* "*") (cast_expression "(int *)(param_1 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")")))) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    *(byte **)(*(int *)(param_1 + 0x1c) + 0x18) = pbVar6;\n    param_1[0x1c] = 0;\n    param_1[0x1d] = 0;\n    param_1[0x1e] = 0;\n    param_1[0x1f] = 0;\n    pbVar2 = DAT_00084a10;\n  }" ({ "{") (expression_statement "*(byte **)(*(int *)(param_1 + 0x1c) + 0x18) = pbVar6;" (assignment_expression "*(byte **)(*(int *)(param_1 + 0x1c) + 0x18) = pbVar6" (pointer_expression "*(byte **)(*(int *)(param_1 + 0x1c) + 0x18)" (* "*") (cast_expression "(byte **)(*(int *)(param_1 + 0x1c) + 0x18)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x1c) + 0x18)" (( "(") (binary_expression "*(int *)(param_1 + 0x1c) + 0x18" (pointer_expression "*(int *)(param_1 + 0x1c)" (* "*") (cast_expression "(int *)(param_1 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")")))) (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "param_1[0x1c] = 0;" (assignment_expression "param_1[0x1c] = 0" (subscript_expression "param_1[0x1c]" (identifier "param_1") ([ "[") (number_literal "0x1c") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x1d] = 0;" (assignment_expression "param_1[0x1d] = 0" (subscript_expression "param_1[0x1d]" (identifier "param_1") ([ "[") (number_literal "0x1d") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x1e] = 0;" (assignment_expression "param_1[0x1e] = 0" (subscript_expression "param_1[0x1e]" (identifier "param_1") ([ "[") (number_literal "0x1e") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x1f] = 0;" (assignment_expression "param_1[0x1f] = 0" (subscript_expression "param_1[0x1f]" (identifier "param_1") ([ "[") (number_literal "0x1f") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar2 = DAT_00084a10;" (assignment_expression "pbVar2 = DAT_00084a10" (identifier "pbVar2") (= "=") (identifier "DAT_00084a10")) (; ";")) (} "}"))) (expression_statement "DAT_00084a10 = pbVar2;" (assignment_expression "DAT_00084a10 = pbVar2" (identifier "DAT_00084a10") (= "=") (identifier "pbVar2")) (; ";")) (expression_statement "pbVar2 = pbVar6;" (assignment_expression "pbVar2 = pbVar6" (identifier "pbVar2") (= "=") (identifier "pbVar6")) (; ";")) (if_statement "if ((DAT_00084a14 != param_1) && (pbVar2 = DAT_00084a14, *(int *)(param_1 + 0x18) != 0)) {\n    *(byte **)(*(int *)(param_1 + 0x18) + 0x1c) = pbVar6;\n    pbVar2 = DAT_00084a14;\n  }" (if "if") (parenthesized_expression "((DAT_00084a14 != param_1) && (pbVar2 = DAT_00084a14, *(int *)(param_1 + 0x18) != 0))" (( "(") (binary_expression "(DAT_00084a14 != param_1) && (pbVar2 = DAT_00084a14, *(int *)(param_1 + 0x18) != 0)" (parenthesized_expression "(DAT_00084a14 != param_1)" (( "(") (binary_expression "DAT_00084a14 != param_1" (identifier "DAT_00084a14") (!= "!=") (identifier "param_1")) () ")")) (&& "&&") (parenthesized_expression "(pbVar2 = DAT_00084a14, *(int *)(param_1 + 0x18) != 0)" (( "(") (comma_expression "pbVar2 = DAT_00084a14, *(int *)(param_1 + 0x18) != 0" (assignment_expression "pbVar2 = DAT_00084a14" (identifier "pbVar2") (= "=") (identifier "DAT_00084a14")) (, ",") (binary_expression "*(int *)(param_1 + 0x18) != 0" (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    *(byte **)(*(int *)(param_1 + 0x18) + 0x1c) = pbVar6;\n    pbVar2 = DAT_00084a14;\n  }" ({ "{") (expression_statement "*(byte **)(*(int *)(param_1 + 0x18) + 0x1c) = pbVar6;" (assignment_expression "*(byte **)(*(int *)(param_1 + 0x18) + 0x1c) = pbVar6" (pointer_expression "*(byte **)(*(int *)(param_1 + 0x18) + 0x1c)" (* "*") (cast_expression "(byte **)(*(int *)(param_1 + 0x18) + 0x1c)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x18) + 0x1c)" (( "(") (binary_expression "*(int *)(param_1 + 0x18) + 0x1c" (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "pbVar2 = DAT_00084a14;" (assignment_expression "pbVar2 = DAT_00084a14" (identifier "pbVar2") (= "=") (identifier "DAT_00084a14")) (; ";")) (} "}"))) (expression_statement "DAT_00084a14 = pbVar2;" (assignment_expression "DAT_00084a14 = pbVar2" (identifier "DAT_00084a14") (= "=") (identifier "pbVar2")) (; ";")) (expression_statement "FUN_00038570(param_1);" (call_expression "FUN_00038570(param_1)" (identifier "FUN_00038570") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "*(byte **)(param_1 + 0x18) = param_1;" (assignment_expression "*(byte **)(param_1 + 0x18) = param_1" (pointer_expression "*(byte **)(param_1 + 0x18)" (* "*") (cast_expression "(byte **)(param_1 + 0x18)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(byte **)(param_1 + 0x1c) = param_1;" (assignment_expression "*(byte **)(param_1 + 0x1c) = param_1" (pointer_expression "*(byte **)(param_1 + 0x1c)" (* "*") (cast_expression "(byte **)(param_1 + 0x1c)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "FUN_00035730(pbVar6);" (call_expression "FUN_00035730(pbVar6)" (identifier "FUN_00035730") (argument_list "(pbVar6)" (( "(") (identifier "pbVar6") () ")"))) (; ";")) (return_statement "return pbVar6;" (return "return") (identifier "pbVar6") (; ";")) (} "}")))

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

type_1 * function_1(type_1 *var_1,int var_12)

{
  type_2 uVar1;
  type_1 *psVar2;
  char *var_7;
  type_3 *var_8;
  type_4 uVar5;
  type_5 var_4;
  type_1 *s;
  
  if (var_1 == (type_1 *)PTR_dot_symbol_0007af54) {
                    /* WARNING: Subroutine does not return */
    var_2("../../gas/symbols.c",0x231,"symbol_clone");
  }
  var_4 = (type_5)var_1->bsym;
  if (((type_6)var_1->sy_flags & 1) != 0) {
    if (var_3 == var_4) {
      var_1 = (var_1->sy_value).X_op_symbol;
      var_4 = (type_5)var_1->bsym;
    }
    else {
      var_1 = var_5((type_7 *)var_1);
      var_4 = (type_5)var_1->bsym;
    }
  }
  if ((type_6)((int)notes.chunk_limit - (int)notes.next_free) < 0x30) {
    var_6(&notes,0x30);
    var_7 = notes.next_free + 0x30;
    s = (type_1 *)notes.object_base;
    if (var_7 != notes.object_base) goto LAB_0003860c;
  }
  else {
    var_7 = notes.next_free + 0x30;
    s = (type_1 *)notes.object_base;
    if (var_7 != notes.object_base) goto LAB_0003860c;
  }
  notes._40_1_ = notes._40_1_ | 2;
  s = (type_1 *)notes.object_base;
LAB_0003860c:
  notes.next_free = (char *)((type_6)(var_7 + notes.alignment_mask) & ~notes.alignment_mask);
  if ((type_6)((int)notes.chunk_limit - (int)notes.chunk) <
      (type_6)((int)notes.next_free - (int)notes.chunk)) {
    notes.next_free = notes.chunk_limit;
  }
  notes.object_base = notes.next_free;
  s->sy_flags = var_1->sy_flags;
  s->bsym = var_1->bsym;
  (s->sy_value).X_add_symbol = (var_1->sy_value).X_add_symbol;
  (s->sy_value).X_op_symbol = (var_1->sy_value).X_op_symbol;
  (s->sy_value).X_add_number = (var_1->sy_value).X_add_number;
  uVar1 = (var_1->sy_value).X_md;
  *(type_8 *)&(s->sy_value).field_0xc = *(type_8 *)&(var_1->sy_value).field_0xc;
  (s->sy_value).X_md = uVar1;
  s->sy_next = var_1->sy_next;
  s->sy_previous = var_1->sy_previous;
  s->sy_frag = var_1->sy_frag;
  (s->sy_obj).local = (var_1->sy_obj).local;
  (s->sy_obj).size = (var_1->sy_obj).size;
  (s->sy_obj).versioned_name = (var_1->sy_obj).versioned_name;
  var_8 = (type_3 *)(**(type_9 **)(*(int *)(var_4->name + 4) + 0x10c))(var_4->name);
  if (var_8 == (type_3 *)0x0) {
    uVar5 = var_9();
    uVar5 = var_10(uVar5);
                    /* WARNING: Subroutine does not return */
    var_11("bfd_make_empty_symbol: %s",uVar5);
  }
  var_7 = (char *)var_4->id;
  s->bsym = var_8;
  var_8->name = var_7;
  var_8->flags = (type_6)var_4->next & 0xfffffeff;
  var_8->section = var_4->prev;
  (*var_8->the_bfd->xvec->_bfd_copy_private_symbol_data)
            ((type_10 *)var_4->name,(type_3 *)var_4,var_8->the_bfd,var_8);
  if (var_12 == 0) {
    var_13(s);
    s->sy_next = s;
    s->sy_previous = s;
    return s;
  }
  psVar2 = s;
  if ((var_14 != var_1) && (psVar2 = var_14, var_1->sy_previous != (type_11 *)0x0)) {
    var_1->sy_previous->sy_next = s;
    var_1->sy_previous = (type_11 *)0x0;
    psVar2 = var_14;
  }
  var_14 = psVar2;
  psVar2 = s;
  if ((var_15 != var_1) && (psVar2 = var_15, var_1->sy_next != (type_11 *)0x0)) {
    var_1->sy_next->sy_previous = s;
    psVar2 = var_15;
  }
  var_15 = psVar2;
  var_13(var_1);
  var_1->sy_next = var_1;
  var_1->sy_previous = var_1;
  var_16(s);
  return s;
}


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

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

byte * MASKED(byte *param_1,int param_2)

{
  int iVar1;
  byte *pbVar2;
  int *piVar3;
  undefined4 uVar4;
  int *piVar5;
  byte *pbVar6;
  
  if (param_1 == PTR_DAT_0007af54) {
                    /* WARNING: Subroutine does not return */
    FUN_0002aaa0("../../gas/symbols.c",0x231,"symbol_clone",param_1);
  }
  piVar5 = *(int **)(param_1 + 4);
  if ((*param_1 & 1) != 0) {
    if (DAT_00084798 == piVar5) {
      param_1 = *(byte **)(param_1 + 0xc);
      piVar5 = *(int **)(param_1 + 4);
    }
    else {
      param_1 = (byte *)FUN_000370b0();
      piVar5 = *(int **)(param_1 + 4);
    }
  }
  if (DAT_000849b0 - DAT_000849ac < 0x30) {
    _obstack_newchunk(&DAT_000849a0,0x30);
    pbVar2 = (byte *)(DAT_000849ac + 0x30);
    pbVar6 = DAT_000849a8;
    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;
  }
  else {
    pbVar2 = (byte *)(DAT_000849ac + 0x30);
    pbVar6 = DAT_000849a8;
    if (pbVar2 != DAT_000849a8) goto LAB_0003860c;
  }
  DAT_000849c8 = DAT_000849c8 | 2;
  pbVar6 = DAT_000849a8;
LAB_0003860c:
  DAT_000849ac = (uint)(pbVar2 + DAT_000849b8) & ~DAT_000849b8;
  if (DAT_000849b0 - DAT_000849a4 < DAT_000849ac - DAT_000849a4) {
    DAT_000849ac = DAT_000849b0;
  }
  DAT_000849a8 = (byte *)DAT_000849ac;
  *(undefined4 *)pbVar6 = *(undefined4 *)param_1;
  *(undefined4 *)(pbVar6 + 4) = *(undefined4 *)(param_1 + 4);
  *(undefined4 *)(pbVar6 + 8) = *(undefined4 *)(param_1 + 8);
  *(undefined4 *)(pbVar6 + 0xc) = *(undefined4 *)(param_1 + 0xc);
  *(undefined4 *)(pbVar6 + 0x10) = *(undefined4 *)(param_1 + 0x10);
  *(undefined4 *)(pbVar6 + 0x14) = *(undefined4 *)(param_1 + 0x14);
  *(undefined4 *)(pbVar6 + 0x18) = *(undefined4 *)(param_1 + 0x18);
  *(undefined4 *)(pbVar6 + 0x1c) = *(undefined4 *)(param_1 + 0x1c);
  *(undefined4 *)(pbVar6 + 0x20) = *(undefined4 *)(param_1 + 0x20);
  *(undefined4 *)(pbVar6 + 0x24) = *(undefined4 *)(param_1 + 0x24);
  *(undefined4 *)(pbVar6 + 0x28) = *(undefined4 *)(param_1 + 0x28);
  *(undefined4 *)(pbVar6 + 0x2c) = *(undefined4 *)(param_1 + 0x2c);
  piVar3 = (int *)(**(code **)(*(int *)(*piVar5 + 4) + 0x10c))(*piVar5);
  if (piVar3 == (int *)0x0) {
    uVar4 = bfd_get_error();
    uVar4 = bfd_errmsg(uVar4);
                    /* WARNING: Subroutine does not return */
    FUN_0002aa20("bfd_make_empty_symbol: %s",uVar4);
  }
  iVar1 = piVar5[1];
  *(int **)(pbVar6 + 4) = piVar3;
  piVar3[1] = iVar1;
  piVar3[3] = piVar5[3] & 0xfffffeff;
  piVar3[4] = piVar5[4];
  (**(code **)(*(int *)(*piVar3 + 4) + 0xb8))(*piVar5,piVar5,*piVar3,piVar3);
  if (param_2 == 0) {
    FUN_00038570(pbVar6);
    *(byte **)(pbVar6 + 0x18) = pbVar6;
    *(byte **)(pbVar6 + 0x1c) = pbVar6;
    return pbVar6;
  }
  pbVar2 = pbVar6;
  if ((DAT_00084a10 != param_1) && (pbVar2 = DAT_00084a10, *(int *)(param_1 + 0x1c) != 0)) {
    *(byte **)(*(int *)(param_1 + 0x1c) + 0x18) = pbVar6;
    param_1[0x1c] = 0;
    param_1[0x1d] = 0;
    param_1[0x1e] = 0;
    param_1[0x1f] = 0;
    pbVar2 = DAT_00084a10;
  }
  DAT_00084a10 = pbVar2;
  pbVar2 = pbVar6;
  if ((DAT_00084a14 != param_1) && (pbVar2 = DAT_00084a14, *(int *)(param_1 + 0x18) != 0)) {
    *(byte **)(*(int *)(param_1 + 0x18) + 0x1c) = pbVar6;
    pbVar2 = DAT_00084a14;
  }
  DAT_00084a14 = pbVar2;
  FUN_00038570(param_1);
  *(byte **)(param_1 + 0x18) = param_1;
  *(byte **)(param_1 + 0x1c) = param_1;
  FUN_00035730(pbVar6);
  return pbVar6;
}

